comable-core 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +97 -0
  4. data/app/assets/javascripts/comable/application.js +13 -0
  5. data/app/assets/stylesheets/comable/application.css +13 -0
  6. data/app/controllers/concerns/comable/permitted_attributes.rb +15 -0
  7. data/app/helpers/comable/application_helper.rb +84 -0
  8. data/app/helpers/comable/products_helper.rb +82 -0
  9. data/app/mailers/comable/order_mailer.rb +18 -0
  10. data/app/models/comable/ability.rb +18 -0
  11. data/app/models/comable/address.rb +39 -0
  12. data/app/models/comable/category.rb +72 -0
  13. data/app/models/comable/image.rb +15 -0
  14. data/app/models/comable/order.rb +121 -0
  15. data/app/models/comable/order/associations.rb +22 -0
  16. data/app/models/comable/order/callbacks.rb +43 -0
  17. data/app/models/comable/order/morrisable.rb +20 -0
  18. data/app/models/comable/order/scopes.rb +17 -0
  19. data/app/models/comable/order/validations.rb +39 -0
  20. data/app/models/comable/order_item.rb +98 -0
  21. data/app/models/comable/order_item/csvable.rb +32 -0
  22. data/app/models/comable/page.rb +30 -0
  23. data/app/models/comable/payment.rb +87 -0
  24. data/app/models/comable/payment_method.rb +27 -0
  25. data/app/models/comable/product.rb +55 -0
  26. data/app/models/comable/product/csvable.rb +20 -0
  27. data/app/models/comable/shipment.rb +85 -0
  28. data/app/models/comable/shipment_method.rb +9 -0
  29. data/app/models/comable/stock.rb +71 -0
  30. data/app/models/comable/stock/csvable.rb +26 -0
  31. data/app/models/comable/store.rb +30 -0
  32. data/app/models/comable/theme.rb +25 -0
  33. data/app/models/comable/tracker.rb +17 -0
  34. data/app/models/comable/user.rb +130 -0
  35. data/app/models/concerns/comable/cart_owner.rb +94 -0
  36. data/app/models/concerns/comable/checkout.rb +85 -0
  37. data/app/models/concerns/comable/importable.rb +67 -0
  38. data/app/models/concerns/comable/liquidable.rb +12 -0
  39. data/app/models/concerns/comable/product/search.rb +41 -0
  40. data/app/models/concerns/comable/ransackable.rb +38 -0
  41. data/app/models/concerns/comable/role_owner.rb +15 -0
  42. data/app/models/concerns/comable/sku_choice.rb +19 -0
  43. data/app/models/concerns/comable/sku_item.rb +17 -0
  44. data/app/uploaders/image_uploader.rb +7 -0
  45. data/app/views/comable/order_mailer/complete.text.erb +42 -0
  46. data/config/initializers/comma.rb +8 -0
  47. data/config/locales/en.yml +424 -0
  48. data/config/locales/ja.yml +425 -0
  49. data/db/migrate/20131214194807_create_comable_products.rb +15 -0
  50. data/db/migrate/20140120032559_create_comable_users.rb +46 -0
  51. data/db/migrate/20140502060116_create_comable_stocks.rb +14 -0
  52. data/db/migrate/20140723175431_create_comable_orders.rb +20 -0
  53. data/db/migrate/20140723175810_create_comable_order_items.rb +19 -0
  54. data/db/migrate/20140817194104_create_comable_payment_methods.rb +13 -0
  55. data/db/migrate/20140921191416_create_comable_shipment_methods.rb +11 -0
  56. data/db/migrate/20140926063541_create_comable_stores.rb +11 -0
  57. data/db/migrate/20141024025526_create_comable_addresses.rb +17 -0
  58. data/db/migrate/20150111031228_create_comable_categories.rb +10 -0
  59. data/db/migrate/20150111031229_create_comable_products_categories.rb +8 -0
  60. data/db/migrate/20150112173706_create_comable_images.rb +9 -0
  61. data/db/migrate/20150423095210_create_comable_shipments.rb +13 -0
  62. data/db/migrate/20150511171940_create_comable_payments.rb +12 -0
  63. data/db/migrate/20150513185230_create_comable_trackers.rb +12 -0
  64. data/db/migrate/20150519080729_create_comable_pages.rb +17 -0
  65. data/db/migrate/20150612143226_create_comable_themes.rb +15 -0
  66. data/db/migrate/20150612143445_add_theme_id_to_comable_stores.rb +7 -0
  67. data/db/seeds.rb +5 -0
  68. data/db/seeds/comable/users.rb +51 -0
  69. data/lib/comable/core.rb +48 -0
  70. data/lib/comable/core/configuration.rb +22 -0
  71. data/lib/comable/core/engine.rb +50 -0
  72. data/lib/comable/deprecator.rb +26 -0
  73. data/lib/comable/payment_provider.rb +14 -0
  74. data/lib/comable/payment_provider/base.rb +42 -0
  75. data/lib/comable/payment_provider/general.rb +15 -0
  76. data/lib/comable/state_machine_patch.rb +32 -0
  77. data/lib/comma_extractor_extentions.rb +31 -0
  78. data/lib/generators/comable/install/install_generator.rb +133 -0
  79. data/lib/generators/comable/install/templates/config/initializers/comable.rb +31 -0
  80. data/lib/tasks/comable_tasks.rake +4 -0
  81. metadata +346 -0
@@ -0,0 +1,38 @@
1
+ module Comable
2
+ module Ransackable
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ attr_reader :_ransack_options
7
+
8
+ def ransack_options(options = nil)
9
+ if options
10
+ @_ransack_options = options
11
+ else
12
+ @_ransack_options || {}
13
+ end
14
+ end
15
+
16
+ def ransackable_attribute?
17
+ klass.ransackable_attributes(auth_object).include? str
18
+ end
19
+
20
+ def ransackable_attributes(_auth_object = nil)
21
+ ransackable_attributes_options = ransack_options[:ransackable_attributes] || {}
22
+ if ransackable_attributes_options[:only]
23
+ [ransackable_attributes_options[:only]].flatten.map(&:to_s)
24
+ else
25
+ column_names + _ransackers.keys - [ransackable_attributes_options[:except]].flatten.map(&:to_s)
26
+ end
27
+ end
28
+
29
+ def ransackable_association?
30
+ klass.ransackable_associations(auth_object).include? str
31
+ end
32
+
33
+ def ransackable_associations(_auth_object = nil)
34
+ reflect_on_all_associations.map { |a| a.name.to_s }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,15 @@
1
+ module Comable
2
+ module RoleOwner
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ extend Enumerize
7
+
8
+ enumerize :role, in: %i(
9
+ admin
10
+ reporter
11
+ customer
12
+ ), default: :customer, predicates: true, scope: true
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module Comable
2
+ #
3
+ # SKU選択肢
4
+ # 商品と注文明細にSKU選択肢としての機能を付与するためのモジュール
5
+ #
6
+ module SkuChoice
7
+ def name_with_sku
8
+ return name unless sku?
9
+ name + "(#{sku_name})"
10
+ end
11
+
12
+ def sku_name
13
+ return unless sku?
14
+ sku_name = sku_h_choice_name
15
+ sku_name += '/' + sku_v_choice_name if sku_v_choice_name.present?
16
+ sku_name
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ module Comable
2
+ #
3
+ # SKU項目
4
+ # 商品と注文明細にSKU項目としての機能を付与するためのモジュール
5
+ #
6
+ module SkuItem
7
+ def sku_h?
8
+ sku_h_item_name.present?
9
+ end
10
+
11
+ def sku_v?
12
+ sku_v_item_name.present?
13
+ end
14
+
15
+ alias_method :sku?, :sku_h?
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ class ImageUploader < CarrierWave::Uploader::Base
2
+ storage :file
3
+
4
+ def store_dir
5
+ "#{model.class.to_s.underscore}/#{model.id}"
6
+ end
7
+ end
@@ -0,0 +1,42 @@
1
+ <%= subject_for(@order) %>
2
+ <%= "#{@order.class.human_attribute_name(:code)}: #{@order.code}" %>
3
+ ----------------------------------------------------------------------
4
+
5
+ <%= Comable.t('order_mailer.complete.dear', name: @order.bill_full_name) %>
6
+
7
+ <%= Comable.t('order_mailer.complete.introductions', store_name: current_store.name) %>
8
+
9
+ <%- shipment = @order.shipment %>
10
+ <%- if shipment %>
11
+ <%= @order.class.human_attribute_name(:shipment_method) %>:
12
+ <%= shipment.name %>
13
+ <%- end %>
14
+
15
+ <%= @order.class.human_attribute_name(:ship_address) %>:
16
+ <%= name_with_honorific @order.ship_full_name %>
17
+
18
+ ======================================================================
19
+
20
+ <%= Comable::Order.model_name.human %>
21
+
22
+ <%= "#{@order.class.human_attribute_name(:code)}: #{@order.code}" %>
23
+ <%= "#{@order.class.human_attribute_name(:completed_at)}: #{I18n.l @order.completed_at.to_date}" %>
24
+
25
+ <%- @order.order_items.each do |order_item| %>
26
+ <%= name_with_quantity order_item.name_with_sku, order_item.quantity %>
27
+ <%= number_to_currency order_item.subtotal_price %>
28
+
29
+ <%- end %>
30
+ ----------------------------------------------------------------------
31
+
32
+ <%= "#{@order.class.human_attribute_name(:item_total_price)}: #{number_to_currency @order.item_total_price}" %>
33
+ <%= "#{@order.class.human_attribute_name(:payment_fee)}: #{number_to_currency @order.payment_fee}" %>
34
+ <%= "#{@order.class.human_attribute_name(:shipment_fee)}: #{number_to_currency @order.shipment_fee}" %>
35
+
36
+ <%= "#{@order.class.human_attribute_name(:total_price)}: #{number_to_currency @order.total_price}" %>
37
+
38
+ <%= "#{@order.class.human_attribute_name(:payment_method)}: #{@order.payment.name}\n" if @order.payment -%>
39
+
40
+ ======================================================================
41
+
42
+ <%= Comable.t('order_mailer.complete.outroductions', store_name: current_store.name) %>
@@ -0,0 +1,8 @@
1
+ # from https://github.com/comma-csv/comma/pull/50#issuecomment-22819269
2
+ Comma::HeaderExtractor.value_humanizer = lambda do |value, model_class|
3
+ if value.is_a?(String) || !model_class.respond_to?(:human_attribute_name)
4
+ Comma::HeaderExtractor::DEFAULT_VALUE_HUMANIZER.call(value, model_class)
5
+ else
6
+ model_class.human_attribute_name(value)
7
+ end
8
+ end
@@ -0,0 +1,424 @@
1
+ en:
2
+ comable:
3
+ cart: 'Cart'
4
+ shopping_cart: 'Shopping Cart'
5
+ checkout: 'Checkout'
6
+ show_cart: 'Show Cart'
7
+ search: 'Search'
8
+ category: 'Category'
9
+ my_account: 'My Account'
10
+ sign_in: 'Login'
11
+ sign_out: 'Logout'
12
+ guest: 'Guest'
13
+ guest_order: 'Guest Checkout'
14
+ add_to_cart: 'Add to Cart'
15
+ browse_related_products: 'Browse related products'
16
+ reorder: 'Buy it Again'
17
+ change_email_or_password: 'Change email address or password'
18
+ edit_your_address_book: 'Edit your address book'
19
+ address_book: 'Address book'
20
+ order_history: 'Order history'
21
+ next_step: 'Continue'
22
+ use_this_address: 'Use this address'
23
+ complete_order: 'Place your order'
24
+ use_as_billing_address: 'Use as Billing Address'
25
+ use_as_shipping_address: 'Use as Shipping Address'
26
+ new_billing_address: 'New billing address'
27
+ new_shipping_address: 'New shiping address'
28
+ edit_billing_address: 'Edit billing address'
29
+ edit_shipping_address: 'Edit shiping address'
30
+ other_addresses: 'Other addresses'
31
+ new_address: 'New address'
32
+ successful: 'Successful'
33
+ failure: 'Failure'
34
+ products: 'Products'
35
+ pages: 'Pages'
36
+ home: 'Home'
37
+ support: 'Support'
38
+ sample_header: 'Sample text'
39
+ sample_subheader: 'This is sample text.'
40
+ sample_text: 'Please write your message here.'
41
+ default_store_name: 'K&B style'
42
+
43
+ price: &price
44
+ 'Price'
45
+ quantity: &quantity
46
+ 'Quantity'
47
+ item_total_price: &item_total_price
48
+ 'Item total'
49
+ item_total_quantity: &item_total_quantity
50
+ 'Item total quantity'
51
+ soldout:
52
+ 'Soldout'
53
+ honorific: &honorific
54
+ 'Dear %{name}'
55
+
56
+ checkout_flow:
57
+ sign_in: 'Login'
58
+ address_and_payment: 'Address & Payment'
59
+ confirm: 'Confirm'
60
+ complete: 'Place Order'
61
+
62
+ actions:
63
+ new: 'New'
64
+ edit: 'Edit'
65
+ create: 'Create'
66
+ update: 'Update'
67
+ destroy: 'Destroy'
68
+ cancel: 'Cancel'
69
+ continue: 'Continue'
70
+
71
+ errors:
72
+ messages:
73
+ out_of_stock: '(%{name}) was Sold Out.'
74
+ out_of_stocks: 'Sold Out Items.'
75
+ product_not_found: '%{name} could not be found or has been deleted.'
76
+ products_not_found: 'This item could not be found or has been deleted.'
77
+
78
+ carts:
79
+ added: 'An item is added to Cart'
80
+ empty: 'Cart is empty.'
81
+ updated: 'Cart Updated'
82
+ invalid: 'Cart Errored'
83
+
84
+ orders:
85
+ success: 'Your order has been placed.'
86
+ failure: 'Your order has failed. Please check your order again.'
87
+
88
+ order_mailer:
89
+ complete:
90
+ subject: 'Your %{store_name} order has been placed (Order: %{order_code})'
91
+ dear: *honorific
92
+ introductions: |-
93
+ Thank you for shopping with %{store_name}.
94
+ Your order items:
95
+ outroductions: |-
96
+ We hope to see you again soon.
97
+ %{store_name}
98
+
99
+ admin:
100
+ not_found: 'Record not found.'
101
+ general: 'General'
102
+ images: 'Images'
103
+ main_image: 'Main image'
104
+ sub_image: 'Sub image'
105
+ home: 'Home'
106
+ product: 'Product'
107
+ index: 'List'
108
+ search: 'Search'
109
+ back_to_store: 'Back to Store'
110
+ confirmation_to_remove_product: 'This operation cannot be undone. Would you like to proceed?'
111
+ confirmation_to_remove_stock: 'This operation cannot be undone. Would you like to proceed?'
112
+ confirmation_to_remove_page: 'This operation cannot be undone. Would you like to proceed?'
113
+ you_can_drag_and_drop: 'Edit the category tree by drag-and-drop.'
114
+ you_can_right_click: 'Open the context menu by right click.'
115
+ link_to_add_new_node: 'Add a new category from the following link: '
116
+ link_to_add_new_stock: 'Add a new stock from the following link: '
117
+ check_this_product_in_frontend: 'Check this product in Store'
118
+ preview: 'preview'
119
+ note: 'NOTE:'
120
+ results: 'results'
121
+ times: 'times'
122
+ more: 'More'
123
+ access_denied: 'Access denied'
124
+ order_count: 'Order count'
125
+ new_orders: 'New Order'
126
+ new_users: 'New User'
127
+ sales: 'Sales'
128
+ better_than_last_week: 'Better than last week (%{percentage}%)'
129
+ edit_profile: 'Edit profile'
130
+ please_fill_when_using_sku: 'Please fill the text fielde when using sku.'
131
+ operation: 'Operation'
132
+ stocks: 'Stocks'
133
+ clear_search_conditions: 'Clear search conditions'
134
+ add_search_condition: 'Add search condition'
135
+ remove_search_condition: '×'
136
+ advanced_search: 'Advanced search'
137
+ bill: 'Billing address'
138
+ ship: 'Shipping address'
139
+ add_sub_image: 'Add a sub image'
140
+ sign_in: 'Login'
141
+ sign_out: 'Logout'
142
+ export_to_csv: 'Export to CSV'
143
+ export_to_excel: 'Export to Excel'
144
+ import: 'Import from file...'
145
+ unknown_file_type: 'Unknown file type: %{filename}'
146
+ is_not_exists: 'is not exists.'
147
+ ship: 'Ship'
148
+ help: 'Help'
149
+ tracker_code_help_introduction: |-
150
+ You can embed a Tracking ID, Order Information and many others by using a special symbol to Tracking code.
151
+ For example, you can embed Total Price of the order by writing <code>{{order.total_price}}</code>.
152
+ It will outputs as <code>1500</code> on the actual page.
153
+ tracker_code_help_additional: '<code>order.order_items</code> is Array. And you can retrieve the following information from each element.'
154
+ list_of_usable_variables: 'Available variables are as follows.'
155
+ mote_infomation_for_syntax: 'For more information about the syntax please refer to the following page:'
156
+ help_of_store_email: 'This field will be used as sender of mail that send to customers. The mail will not be sent when the field is empty.'
157
+ files: 'Files'
158
+ use_this_theme: 'Use this theme'
159
+ available_assigns: 'Available assigns'
160
+ available_assigns_in_all_pages: 'Available assigns in all pages'
161
+ available_filters: 'Available filters'
162
+ about_sintax: 'About sintax'
163
+ please_see_following_page_for_syntax: 'Please see the following page for the syntax:'
164
+ please_select_file_form_directory_tree_to_edit: 'Please select a file form the directory tree to edit.'
165
+ here_editor_will_be_displayed_and_you_can_edit_file: 'Here the editor will be displayed, you can edit file.'
166
+ nav:
167
+ dashboard: 'Dashboard'
168
+ order: 'Orders'
169
+ product: 'Products'
170
+ stock: 'Stocks'
171
+ category: 'Categories'
172
+ page: 'Pages'
173
+ user: 'Users'
174
+ general_settings: 'General settings'
175
+ store: 'Store'
176
+ shipment_method: 'Shipment methods'
177
+ payment_method: 'Payment methods'
178
+ tracker: 'Tracker'
179
+ theme: 'Theme'
180
+ products:
181
+ detail: 'Product details'
182
+ list: 'Product list'
183
+ orders:
184
+ detail: 'Order details'
185
+ cart: 'Cart infomation'
186
+ user: 'User details'
187
+ shipment: 'Shipment fee'
188
+ payment: 'Payment charge'
189
+ users:
190
+ detail: 'User details'
191
+ edit: 'Editing user'
192
+ new_orders: 'Recently orders (%{count})'
193
+ pages:
194
+ general: 'General'
195
+ seo: 'SEO'
196
+ visibility: 'publishing/closed'
197
+ published: 'Published'
198
+ unpublished: 'Unpublished'
199
+ stores:
200
+ edit: 'Editing store'
201
+ shipment_methods:
202
+ edit: 'Editing shipment method'
203
+ payment_methods:
204
+ edit: 'Editing payment method'
205
+ actions:
206
+ index: 'List'
207
+ new: 'New'
208
+ edit: 'Edit'
209
+ update: 'Update'
210
+ destroy: 'Destroy'
211
+ save: 'Save'
212
+ cancel: 'Cancel'
213
+ property: 'property'
214
+ categories:
215
+ new_node: 'New category'
216
+
217
+ sample:
218
+ suede_dress: 'Suede Dress'
219
+ girly_coat: 'Double Button Girly Coat'
220
+ fur_gloves: 'Fur Gloves with Side Stitching'
221
+ leather_boots: 'Leather Boots'
222
+ clothing: 'Clothing'
223
+ color: 'Color'
224
+ size: 'Size'
225
+ navy: 'Navy'
226
+ beige: 'Beige'
227
+ black_cat: 'Balck Cat'
228
+ credit_card: 'Credit Card'
229
+
230
+ activerecord:
231
+ state_machines:
232
+ comable/order:
233
+ state:
234
+ states:
235
+ cart: 'Cart'
236
+ orderer: 'Billing address'
237
+ delivery: 'Shipping address'
238
+ shipment: 'Shipment method'
239
+ payment: 'Payment method'
240
+ confirm: 'Order confirmed'
241
+ completed: 'Order placed'
242
+ canceled: 'Canceled'
243
+ resumed: 'Resumed'
244
+ events:
245
+ cancel: 'Cancel'
246
+ resume: 'Resume'
247
+ comable/payment:
248
+ state:
249
+ states:
250
+ pending: 'Pending'
251
+ ready: 'Authorized'
252
+ completed: 'Completed'
253
+ canceled: 'Canceled'
254
+ resumed: 'Resumed'
255
+ comable/shipment:
256
+ state:
257
+ states:
258
+ pending: 'Pending'
259
+ ready: 'Ready'
260
+ completed: 'Completed'
261
+ canceled: 'Canceled'
262
+ resumed: 'Resumed'
263
+
264
+ models:
265
+ comable/order: 'Orders'
266
+ comable/order_items: 'Order items'
267
+
268
+ attributes:
269
+ comable/user:
270
+ id: 'ID'
271
+ email: 'Email address'
272
+ password: 'Password'
273
+ password_confirmation: 'Password (confirmation)'
274
+ current_password: 'Current password'
275
+ bill_address: 'Billing address'
276
+ ship_address: 'Shipping address'
277
+ bill_full_name: 'Full name of the billing address'
278
+ orders: 'Orders'
279
+ role: 'Role'
280
+ sign_in_count: 'Sign in count'
281
+ current_sign_in_at: 'Current sign in at'
282
+ last_sign_in_at: 'Last sign in at'
283
+ current_sign_in_ip: 'Current sign in ip'
284
+ last_sign_in_ip: 'Last sign in ip'
285
+ comable/order:
286
+ id: 'ID'
287
+ code: 'Order number'
288
+ email: 'Email address'
289
+ bill_address: 'Billing address'
290
+ ship_address: 'Shipping address'
291
+ payment_method: 'Payment method'
292
+ shipment_method: 'Shipment method'
293
+ payment_fee: 'Payment fee'
294
+ shipment_fee: 'Shipment fee'
295
+ item_total_price: 'Item total'
296
+ total_price: 'Total'
297
+ order_items: 'Order items'
298
+ completed_at: 'Completed at'
299
+ state: 'State'
300
+ bill_address: 'Billing address'
301
+ ship_address: 'Shipping adress'
302
+ bill_full_name: 'Full name of the billing address'
303
+ order_items: 'Order items'
304
+ user_id: 'User ID'
305
+ guest_token: 'Guest token'
306
+ payment_state: 'Payment state'
307
+ shipment_state: 'Shipment state'
308
+ comable/order_item: &comable_order_item
309
+ quantity: *quantity
310
+ price: *price
311
+ product: 'Product'
312
+ subtotal_price: 'Subtotal'
313
+ name: 'Product name'
314
+ code: 'SKU code'
315
+ sku_h_choice_name: 'SKU Horizontal item name'
316
+ sku_v_choice_name: 'SKU Vertical item name'
317
+ sku_h_choice_name: 'SKU Horizontal choice name'
318
+ sku_v_choice_name: 'SKU Vertical choice name'
319
+ order: 'Order'
320
+ comable/address: &comable_address
321
+ full_name: 'Full name'
322
+ family_name: 'Last name'
323
+ first_name: 'First name'
324
+ state_name: 'State name'
325
+ zip_code: 'Zip code'
326
+ city: 'City'
327
+ detail: 'Detail'
328
+ phone_number: 'Phone number'
329
+ comable/product:
330
+ id: 'ID'
331
+ code: 'Code'
332
+ name: 'Name'
333
+ price: 'Price'
334
+ caption: 'Caption'
335
+ categories: 'Categories'
336
+ sku_h_item_name: 'SKU Horizontal item name'
337
+ sku_v_item_name: 'SKU Vertical item name'
338
+ comable/stock:
339
+ id: 'ID'
340
+ code: 'SKU Code'
341
+ quantity: 'Quantity'
342
+ sku_h_choice_name: 'SKU Horizontal choice name'
343
+ sku_v_choice_name: 'SKU Vertical choice name'
344
+ product: 'Product'
345
+ product_code: 'Product code'
346
+ comable/store:
347
+ name: 'Name'
348
+ meta_keywords: 'Meta keywords'
349
+ meta_description: 'Meta description'
350
+ email: 'Email'
351
+ comable/shipment_method:
352
+ name: 'Name'
353
+ fee: 'Fee'
354
+ activated_flag: 'Activated'
355
+ traking_url: 'Tracking URL'
356
+ comable/payment_method:
357
+ name: 'Name'
358
+ payment_provider: 'Oayment provider'
359
+ fee: 'Fee'
360
+ enable_price: 'Enable price range'
361
+ comable/tracker:
362
+ activated_flag: 'Activated'
363
+ name: 'Name'
364
+ tracker_id: 'Tracker ID'
365
+ code: 'Code'
366
+ place: 'Place'
367
+ comable/order/order_items:
368
+ <<: *comable_order_item
369
+ comable/order/bill_address:
370
+ <<: *comable_address
371
+ comable/order/ship_address:
372
+ <<: *comable_address
373
+ comable/payment:
374
+ id: 'ID'
375
+ order_id: 'Order ID'
376
+ payment_method_id: 'Payment method ID'
377
+ fee: 'Fee'
378
+ state: 'Status'
379
+ completed_at: 'Completed at'
380
+ comable/shipment:
381
+ id: 'ID'
382
+ order_id: 'Order ID'
383
+ shipment_method_id: 'Shipment method ID'
384
+ fee: 'Fee'
385
+ state: 'Status'
386
+ tracking_number: 'Tracking number'
387
+ completed_at: 'Completed at'
388
+ comable/page:
389
+ id: 'ID'
390
+ title: 'Title'
391
+ content: 'Content'
392
+ seo: 'SEO'
393
+ page_title: 'PageTitle'
394
+ meta_description: 'Meta Description'
395
+ meta_keywords: 'Meta Keywords'
396
+ slug: 'Slug'
397
+ published_at: 'Published at'
398
+ created_at: 'Created at'
399
+ updated_at: 'Updated at'
400
+ enumerize:
401
+ comable/user:
402
+ role:
403
+ customer: 'Customer'
404
+ reporter: 'Reporter'
405
+ admin: 'Administrator'
406
+ comable/tracker:
407
+ place:
408
+ everywhere: 'Everywhere'
409
+ checkout: 'Checkout'
410
+
411
+ views:
412
+ pagination:
413
+ first: "&laquo; First"
414
+ last: "Last &raquo;"
415
+ next: "Next &rsaquo;"
416
+ previous: "&lsaquo; Previous"
417
+ truncate: "&hellip;"
418
+
419
+ ransack:
420
+ predicates:
421
+ gteq: 'Greater than or equal to'
422
+ lteq: 'Less than or equal to'
423
+ eq_any_splitted: 'Exact match'
424
+ cont_any_splitted: 'Partial match'