spree_core 4.1.12 → 4.2.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/spree/base_controller.rb +1 -2
  3. data/app/finders/spree/addresses/find.rb +1 -12
  4. data/app/finders/spree/base_finder.rb +14 -0
  5. data/app/finders/spree/countries/find.rb +11 -3
  6. data/app/finders/spree/credit_cards/find.rb +2 -2
  7. data/app/finders/spree/orders/find_current.rb +1 -1
  8. data/app/helpers/spree/base_helper.rb +61 -20
  9. data/app/helpers/spree/mail_helper.rb +29 -0
  10. data/app/helpers/spree/products_helper.rb +2 -1
  11. data/app/mailers/spree/base_mailer.rb +19 -5
  12. data/app/mailers/spree/order_mailer.rb +13 -4
  13. data/app/mailers/spree/reimbursement_mailer.rb +4 -2
  14. data/app/mailers/spree/shipment_mailer.rb +4 -2
  15. data/app/models/concerns/spree/default_price.rb +3 -6
  16. data/app/models/concerns/spree/user_methods.rb +11 -5
  17. data/app/models/concerns/spree/user_payment_source.rb +1 -1
  18. data/app/models/spree/ability.rb +2 -6
  19. data/app/models/spree/address.rb +17 -1
  20. data/app/models/spree/adjustment.rb +1 -0
  21. data/app/models/spree/app_configuration.rb +4 -0
  22. data/app/models/spree/app_dependencies.rb +4 -2
  23. data/app/models/spree/base.rb +5 -0
  24. data/app/models/spree/credit_card.rb +5 -0
  25. data/app/models/spree/fulfilment_changer.rb +58 -16
  26. data/app/models/spree/inventory_unit.rb +2 -7
  27. data/app/models/spree/line_item.rb +11 -7
  28. data/app/models/spree/log_entry.rb +1 -1
  29. data/app/models/spree/option_type.rb +7 -1
  30. data/app/models/spree/order.rb +27 -5
  31. data/app/models/spree/order/address_book.rb +7 -20
  32. data/app/models/spree/order/payments.rb +10 -2
  33. data/app/models/spree/payment.rb +18 -4
  34. data/app/models/spree/payment/processing.rb +2 -2
  35. data/app/models/spree/payment_method.rb +3 -3
  36. data/app/models/spree/preferences/store.rb +1 -1
  37. data/app/models/spree/price.rb +25 -6
  38. data/app/models/spree/product.rb +29 -9
  39. data/app/models/spree/promotion.rb +10 -15
  40. data/app/models/spree/promotion/rules/product.rb +2 -1
  41. data/app/models/spree/promotion/rules/user.rb +2 -1
  42. data/app/models/spree/promotion_handler/coupon.rb +2 -3
  43. data/app/models/spree/promotion_handler/promotion_duplicator.rb +9 -3
  44. data/app/models/spree/refund.rb +2 -2
  45. data/app/models/spree/reimbursement.rb +2 -0
  46. data/app/models/spree/return_item/eligibility_validator/default.rb +0 -2
  47. data/app/models/spree/return_item/eligibility_validator/{r_m_a_required.rb → rma_required.rb} +0 -0
  48. data/app/models/spree/shipment.rb +3 -6
  49. data/app/models/spree/shipping_method.rb +1 -5
  50. data/app/models/spree/shipping_rate.rb +2 -11
  51. data/app/models/spree/stock/availability_validator.rb +3 -4
  52. data/app/models/spree/stock_item.rb +1 -5
  53. data/app/models/spree/stock_location.rb +13 -2
  54. data/app/models/spree/store.rb +51 -2
  55. data/app/models/spree/store_credit.rb +1 -1
  56. data/app/models/spree/variant.rb +16 -10
  57. data/app/models/spree/zone.rb +17 -4
  58. data/app/presenters/spree/variant_presenter.rb +9 -1
  59. data/app/presenters/spree/variants/option_types_presenter.rb +1 -0
  60. data/app/services/spree/account/addresses/create.rb +6 -1
  61. data/app/services/spree/account/addresses/{base.rb → helper.rb} +1 -3
  62. data/app/services/spree/account/addresses/update.rb +6 -1
  63. data/app/services/spree/compare_line_items.rb +4 -2
  64. data/app/sorters/spree/base_sorter.rb +35 -0
  65. data/app/sorters/spree/orders/sort.rb +1 -37
  66. data/app/sorters/spree/products/sort.rb +9 -32
  67. data/app/validators/email_validator.rb +1 -1
  68. data/app/views/layouts/spree/base_mailer.html.erb +45 -40
  69. data/app/views/spree/order_mailer/cancel_email.html.erb +19 -25
  70. data/app/views/spree/order_mailer/cancel_email.text.erb +24 -2
  71. data/app/views/spree/order_mailer/confirm_email.html.erb +18 -65
  72. data/app/views/spree/order_mailer/confirm_email.text.erb +2 -1
  73. data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +23 -0
  74. data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +38 -0
  75. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +53 -58
  76. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +3 -1
  77. data/app/views/spree/shared/_base_mailer_footer.html.erb +6 -14
  78. data/app/views/spree/shared/_base_mailer_header.html.erb +12 -32
  79. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +293 -625
  80. data/app/views/spree/shared/_purchased_items_table.html.erb +60 -0
  81. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +13 -0
  82. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +27 -0
  83. data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +13 -0
  84. data/app/views/spree/shared/purchased_items_table/_total.html.erb +13 -0
  85. data/app/views/spree/shipment_mailer/shipped_email.html.erb +31 -36
  86. data/app/views/spree/shipment_mailer/shipped_email.text.erb +2 -1
  87. data/config/initializers/assets.rb +1 -0
  88. data/config/initializers/inflections.rb +3 -0
  89. data/config/initializers/rails61_fixes.rb +3 -0
  90. data/config/locales/en.yml +145 -19
  91. data/db/default/spree/countries.rb +10 -4
  92. data/db/default/spree/states.rb +42 -5
  93. data/db/default/spree/stores.rb +17 -12
  94. data/db/default/spree/zones.rb +1 -1
  95. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
  96. data/db/migrate/20140309033438_create_store_from_preferences.rb +1 -1
  97. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +10 -0
  98. data/db/migrate/20200102141311_add_social_to_spree_stores.rb +3 -0
  99. data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +7 -0
  100. data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +7 -0
  101. data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +7 -0
  102. data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +9 -0
  103. data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +8 -0
  104. data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +5 -0
  105. data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +7 -0
  106. data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +7 -0
  107. data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +5 -0
  108. data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +5 -0
  109. data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +12 -0
  110. data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -0
  111. data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +5 -0
  112. data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +5 -0
  113. data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +5 -0
  114. data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +10 -0
  115. data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +15 -0
  116. data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +5 -0
  117. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -2
  118. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -2
  119. data/lib/generators/spree/mailers_preview/mailers_preview_generator.rb +23 -0
  120. data/lib/generators/spree/mailers_preview/templates/mailers/previews/order_preview.rb +13 -0
  121. data/lib/generators/spree/mailers_preview/templates/mailers/previews/reimbursement_preview.rb +5 -0
  122. data/lib/generators/spree/mailers_preview/templates/mailers/previews/shipment_preview.rb +5 -0
  123. data/lib/generators/spree/mailers_preview/templates/mailers/previews/user_preview.rb +11 -0
  124. data/lib/spree/core.rb +2 -0
  125. data/lib/spree/core/controller_helpers/common.rb +1 -0
  126. data/lib/spree/core/controller_helpers/currency_helpers.rb +15 -0
  127. data/lib/spree/core/controller_helpers/order.rb +9 -4
  128. data/lib/spree/core/controller_helpers/store.rb +12 -1
  129. data/lib/spree/core/importer/order.rb +9 -9
  130. data/lib/spree/core/product_filters.rb +3 -3
  131. data/lib/spree/core/version.rb +1 -1
  132. data/lib/spree/i18n.rb +7 -21
  133. data/lib/spree/permitted_attributes.rb +8 -5
  134. data/lib/spree/service_module.rb +6 -2
  135. data/lib/spree/testing_support/authorization_helpers.rb +7 -4
  136. data/lib/spree/testing_support/capybara_config.rb +1 -1
  137. data/lib/spree/testing_support/factories/promotion_factory.rb +29 -17
  138. data/lib/spree/testing_support/factories/shipment_factory.rb +7 -9
  139. data/lib/spree/testing_support/factories/store_factory.rb +11 -8
  140. data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
  141. data/lib/spree/testing_support/i18n.rb +1 -1
  142. data/lib/spree/testing_support/order_walkthrough.rb +8 -3
  143. data/lib/spree/testing_support/rspec_retry_config.rb +10 -0
  144. data/spree_core.gemspec +10 -8
  145. data/vendor/assets/javascripts/cleave.js +1669 -0
  146. metadata +105 -30
  147. data/app/views/spree/order_mailer/_adjustment.html.erb +0 -8
  148. data/app/views/spree/order_mailer/_subtotal.html.erb +0 -8
  149. data/app/views/spree/order_mailer/_total.html.erb +0 -8
  150. data/lib/spree/i18n/base.rb +0 -17
  151. data/lib/spree/i18n/initializer.rb +0 -1
@@ -0,0 +1,60 @@
1
+ <table class="purchase_content">
2
+ <%= render collection: line_items, partial: 'spree/shared/purchased_items_table/line_item', as: :line_item %>
3
+ <%= render 'spree/shared/purchased_items_table/subtotal', order: order %>
4
+ <% if order.line_item_adjustments.exists? %>
5
+ <% if order.all_adjustments.promotion.eligible.exists? %>
6
+ <% order.all_adjustments.promotion.eligible.group_by(&:label).each do |label, adjustments| %>
7
+ <tr>
8
+ <td></td>
9
+ <td>
10
+ <p class="f-fallback purchase_total purchase_total--label">
11
+ <%= Spree.t(:promotion) %> <%= label %>:
12
+ </p>
13
+ </td>
14
+ <td>
15
+ <p class="f-fallback purchase_total">
16
+ <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
17
+ </p>
18
+ </td>
19
+ </tr>
20
+ <% end %>
21
+ <% end %>
22
+ <% end %>
23
+ <% order.shipments.group_by { |s| s.selected_shipping_rate&.name }.each do |name, shipments| %>
24
+ <tr>
25
+ <td></td>
26
+ <td>
27
+ <p class="f-fallback purchase_total purchase_total--label">
28
+ <%= Spree.t(:shipping) %> <%= name %>:
29
+ </p>
30
+ </td>
31
+ <td>
32
+ <p class="f-fallback purchase_total">
33
+ <%= Spree::Money.new(shipments.sum(&:discounted_cost), currency: order.currency) %>
34
+ </p>
35
+ </td>
36
+ </tr>
37
+ <% end %>
38
+ <% if order.all_adjustments.eligible.tax.exists? %>
39
+ <% order.all_adjustments.eligible.tax.group_by(&:label).each do |label, adjustments| %>
40
+ <tr>
41
+ <td></td>
42
+ <td>
43
+ <p class="f-fallback purchase_total purchase_total--label">
44
+ <%= Spree.t(:tax) %> <%= label %>:
45
+ </p>
46
+ </td>
47
+ <td>
48
+ <p class="f-fallback purchase_total">
49
+ <%= Spree::Money.new(adjustments.sum(&:amount), currency: order.currency) %>
50
+ </p>
51
+ </td>
52
+ </tr>
53
+ <% end %>
54
+ <% end %>
55
+ <% order.adjustments.eligible.each do |adjustment| %>
56
+ <% next if (adjustment.source_type == 'Spree::TaxRate') || (adjustment.amount == 0) %>
57
+ <%= render 'spree/shared/purchased_items_table/adjustment', adjustment: adjustment, order: order %>
58
+ <% end %>
59
+ <%= render 'spree/shared/purchased_items_table/total', order: order %>
60
+ </table>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td></td>
3
+ <td>
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <%= raw(adjustment.label) %>:
6
+ </p>
7
+ </td>
8
+ <td>
9
+ <p class="f-fallback purchase_total">
10
+ <%= Spree::Money.new(adjustment.amount, currency: order.currency) %>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -0,0 +1,27 @@
1
+ <tr>
2
+ <td class="purchase_image">
3
+ <% if frontend_available? %>
4
+ <%= link_to(image_tag(variant_image_url(line_item.variant)), spree.product_url(line_item.product)) %>
5
+ <% else %>
6
+ <%= image_tag(variant_image_url(line_item.variant)) %>
7
+ <% end %>
8
+ </td>
9
+ <td class="purchase_item">
10
+ <strong>
11
+ <span class="f-fallback">
12
+ <% if frontend_available? %>
13
+ <%= link_to raw(line_item.name), spree.product_url(line_item.product) %>
14
+ <% else %>
15
+ <%= raw(line_item.name) %>
16
+ <% end %>
17
+ </span>
18
+ </strong>
19
+ <p class="purchase_item--additional"><%= raw(line_item.variant.options_text) -%></p>
20
+ </td>
21
+ <td class="align-right">
22
+ <span class="f-fallback purchase_item_price">
23
+ <%= line_item.quantity %> x <%= line_item.single_money %>
24
+ <%= line_item.display_amount %>
25
+ </span>
26
+ </td>
27
+ </tr>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td class="purchase_footer" valign="middle"></td>
3
+ <td class="purchase_footer" valign="middle">
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <%= Spree.t('order_mailer.subtotal') %>
6
+ </p>
7
+ </td>
8
+ <td class="purchase_footer" valign="middle">
9
+ <p class="f-fallback purchase_total">
10
+ <%= order.display_item_total %>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -0,0 +1,13 @@
1
+ <tr>
2
+ <td></td>
3
+ <td>
4
+ <p class="f-fallback purchase_total purchase_total--label">
5
+ <strong><%= Spree.t('order_mailer.total') %></strong>
6
+ </p>
7
+ </td>
8
+ <td>
9
+ <p class="f-fallback purchase_total">
10
+ <strong><%= order.display_total %></strong>
11
+ </p>
12
+ </td>
13
+ </tr>
@@ -1,41 +1,36 @@
1
- <table class="row header">
1
+ <h1>
2
+ <%= Spree.t('shipment_mailer.shipped_email.dear_customer', name: name_for(@shipment.order)) %>
3
+ </h1>
4
+ <p>
5
+ <%= Spree.t('shipment_mailer.shipped_email.instructions', number: @shipment.order.number) %>
6
+ </p>
7
+ <table class="purchase" role="presentation">
2
8
  <tr>
3
9
  <td>
4
- <p class="lede">
5
- <%= Spree.t('shipment_mailer.shipped_email.dear_customer') %>
6
- </p>
7
- <p>
8
- <%= Spree.t('shipment_mailer.shipped_email.instructions', number: @shipment.order.number) %>
9
- </p>
10
- <p>
11
- <%= Spree.t('shipment_mailer.shipped_email.shipment_summary') %>
12
- </p>
13
- <table class="container">
14
- <tr>
15
- <td class="wrapper last">
16
- <table class="twelve columns">
17
- <%= render collection: @shipment.manifest.map(&:line_item), partial: 'spree/shared/mailer_line_item', as: :line_item %>
18
- </table>
19
- </td>
20
- </tr>
21
- </table>
22
- <p>
23
- <%= Spree.t('shipment_mailer.shipped_email.shipping_method', shipping_method: @shipment.shipping_method.name) %>
24
- </p>
25
- <% if @shipment.tracking %>
26
- <p>
27
- <%= Spree.t('shipment_mailer.shipped_email.track_information', tracking: @shipment.tracking) %>
28
- </p>
29
- <% end %>
30
- <% if @shipment.tracking_url %>
31
- <p>
32
- <%= Spree.t('shipment_mailer.shipped_email.track_link', url: link_to(@shipment.tracking_url, @shipment.tracking_url)).html_safe %>
33
- </p>
34
- <% end %>
35
- <p>
36
- <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
37
- </p>
10
+ <h3><%= Spree.t('shipment_mailer.shipped_email.shipment_summary') %></h3>
11
+ </td>
12
+ </tr>
13
+ <tr>
14
+ <td colspan="2">
15
+ <%= render 'spree/shared/purchased_items_table', line_items: @shipment.manifest.map(&:line_item), order: @shipment.order %>
38
16
  </td>
39
- <td class="expander"></td>
40
17
  </tr>
41
18
  </table>
19
+ <p>
20
+ <%= Spree.t('shipment_mailer.shipped_email.shipping_method', shipping_method: @shipment.shipping_method.name) %>
21
+ </p>
22
+ <% if @shipment.tracking %>
23
+ <p>
24
+ <%= Spree.t('shipment_mailer.shipped_email.track_information', tracking: @shipment.tracking) %>
25
+ </p>
26
+ <% end %>
27
+ <% if @shipment.tracking_url %>
28
+ <p>
29
+ <%= Spree.t('shipment_mailer.shipped_email.track_link', url: link_to(@shipment.tracking_url, @shipment.tracking_url)).html_safe %>
30
+ </p>
31
+ <% end %>
32
+ <p>
33
+ <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
34
+ <br />
35
+ <%= Spree.t('shipment_mailer.shipped_email.store_team', store_name: current_store.name) %>
36
+ </p>
@@ -1,4 +1,4 @@
1
- <%= Spree.t('shipment_mailer.shipped_email.dear_customer') %>
1
+ <%= Spree.t('shipment_mailer.shipped_email.dear_customer', name: name_for(@shipment.order)) %>
2
2
 
3
3
  <%= Spree.t('shipment_mailer.shipped_email.instructions', number: @shipment.order.number) %>
4
4
 
@@ -14,3 +14,4 @@
14
14
  <%= Spree.t('shipment_mailer.shipped_email.track_link', url: @shipment.tracking_url) if @shipment.tracking_url %>
15
15
 
16
16
  <%= Spree.t('shipment_mailer.shipped_email.thanks') %>
17
+ <%= Spree.t('shipment_mailer.shipped_email.store_team', store_name: current_store.name) %>
@@ -1 +1,2 @@
1
1
  Rails.application.config.assets.precompile += %w(logo/spree_50.png noimage/*.png)
2
+ Rails.application.config.active_storage.content_types_to_serve_as_binary.delete('image/svg+xml')
@@ -0,0 +1,3 @@
1
+ ActiveSupport::Inflector.inflections(:en) do |inflect|
2
+ inflect.acronym 'RMA'
3
+ end
@@ -0,0 +1,3 @@
1
+ if Rails::VERSION::STRING >= '6.1'
2
+ ActiveRecord::Base.has_many_inversing = false
3
+ end
@@ -6,13 +6,14 @@ en:
6
6
  attributes:
7
7
  desired_shipment:
8
8
  can_not_transfer_within_same_shipment: can not be same as current shipment
9
- not_enough_stock_at_desired_location: not enough stock in desired stock location
9
+ has_not_enough_stock_at_desired_location: has not enough stock in desired stock location
10
10
  current_shipment:
11
11
  has_already_been_shipped: has already been shipped
12
12
  can_not_have_backordered_inventory_units: has backordered inventory units
13
13
  activerecord:
14
14
  attributes:
15
15
  spree/address:
16
+ label: Address name
16
17
  address1: Address
17
18
  address2: Address (contd.)
18
19
  city: City
@@ -51,6 +52,7 @@ en:
51
52
  spree/option_type:
52
53
  name: Name
53
54
  presentation: Presentation
55
+ filterable: Filterable
54
56
  spree/order:
55
57
  checkout_complete: Checkout Complete
56
58
  completed_at: Completed At
@@ -140,7 +142,8 @@ en:
140
142
  url: Site URL
141
143
  meta_description: Meta Description
142
144
  meta_keywords: Meta Keywords
143
- seo_title: Seo Title
145
+ seo_robots: SEO Robots
146
+ seo_title: SEO Title
144
147
  name: Site Name
145
148
  mail_from_address: Mail From Address
146
149
  spree/store_credit:
@@ -453,6 +456,7 @@ en:
453
456
  acceptance_errors: Acceptance errors
454
457
  accepted: Accepted
455
458
  account: Account
459
+ account_info: Account info
456
460
  account_updated: Account updated
457
461
  action: Action
458
462
  actions:
@@ -501,10 +505,14 @@ en:
501
505
  address_book:
502
506
  other_address: "Other address"
503
507
  add_new_shipping_address: "Add new address"
504
- new_shipping_address: "New Address"
505
- edit_shipping_address: "Edit Address"
508
+ label: Address Name
509
+ address_name_label: Address Name
510
+ address_name_placeholder: Give this address a unique name (Work, Home, etc.)
511
+ new_address: "New Address"
512
+ edit_address: "Edit Address"
513
+ remove_address: Remove Address
506
514
  no_shipping_addresses_on_file: "No addresses on file"
507
- shipping_addresses: "Addresses"
515
+ addresses: "Addresses"
508
516
  successfully_created: "Address has been successfully created."
509
517
  successfully_removed: "Address has been successfully removed."
510
518
  successfully_saved: "Saved successfully"
@@ -607,13 +615,16 @@ en:
607
615
  balance_due: Balance Due
608
616
  base_amount: Base Amount
609
617
  base_percent: Base Percent
618
+ basic_information: Basic Information
610
619
  bill_address: Bill Address
611
620
  billing: Billing
612
621
  billing_address: Billing Address
613
622
  both: Both
623
+ breadcrumbs: Breadcrumbs
614
624
  calculated_reimbursements: Calculated Reimbursements
615
625
  calculator: Calculator
616
626
  calculator_settings_warning: If you are changing the calculator type, you must save first before you can edit the calculator settings
627
+ call_us_now: 'Call us now: '
617
628
  cancel: cancel
618
629
  canceled: Canceled
619
630
  canceler: Canceler
@@ -627,18 +638,20 @@ en:
627
638
  cannot_set_shipping_method_without_address: Cannot set shipping method until customer details are provided.
628
639
  capture: Capture
629
640
  capture_events: Capture events
630
- card_code: Card Code
641
+ card_code: Card Varification Code (CVC)
631
642
  card_number: Card Number
632
643
  card_type: Brand
633
644
  card_type_is: Card type is
634
645
  cart: Cart
635
646
  cart_page:
636
647
  add_promo_code: ADD PROMO CODE
648
+ change_quantity: Change quantity
637
649
  checkout: checkout
638
650
  empty_info: 'Your cart is empty.'
639
651
  header: Your shopping cart
640
652
  product: product
641
653
  quantity: quantity
654
+ remove_from_cart: Remove from cart
642
655
  title: Shopping Cart
643
656
  cart_subtotal:
644
657
  one: 'Subtotal (1 item)'
@@ -655,6 +668,8 @@ en:
655
668
  charged: Charged
656
669
  checkout: Checkout
657
670
  checkout_page:
671
+ main_navigation: Main navigation
672
+ checkout_navigation: Checkout navigation
658
673
  back_to_cart: back to the cart
659
674
  delivery_method: delivery method
660
675
  header: Checkout
@@ -674,12 +689,14 @@ en:
674
689
  close_all_adjustments: Close All Adjustments
675
690
  code: Code
676
691
  company: Company
692
+ compare_at_price: Compare at price
677
693
  complete: complete
678
694
  configuration: Configuration
679
695
  configurations: Configurations
680
696
  confirm: Confirm
681
697
  confirm_delete: Confirm Deletion
682
698
  confirm_password: Password Confirmation
699
+ contact_phone: Contact phone
683
700
  contact_us: Contact us
684
701
  continue: Continue
685
702
  continue_as_guest: Continue as a guest
@@ -725,24 +742,56 @@ en:
725
742
  credited: Credited
726
743
  credits: Credits
727
744
  currency: Currency
745
+ currencies: Currencies
728
746
  currency_settings: Currency Settings
729
747
  current: Current
730
- current_promotion_usage: ! 'Current Usage: %{count}'
748
+ current_promotion_usage: ! 'current usage: %{count}'
731
749
  customer: Customer
732
750
  customer_details: Customer Details
733
751
  customer_details_updated: Customer Details Updated
734
752
  customer_return: Customer Return
735
753
  customer_returns: Customer Returns
736
754
  customer_search: Customer Search
755
+ customer_support_email: Customer Support Email
756
+ new_order_notifications_email: New Order Notifications Email
737
757
  cut: Cut
738
758
  cvv: CVV
739
759
  cvv_response: CVV Response
740
760
  date: Date
741
761
  date_completed: Date Completed
742
762
  date_picker:
763
+ am: 'AM'
743
764
  first_day: 0
744
765
  format: ! '%Y/%m/%d'
745
- js_format: yy/mm/dd
766
+ hourAriaLabel: 'Hour'
767
+ js_format: Y/m/d
768
+ js_date_time: Y/m/d - H:i
769
+ minuteAriaLabel: 'Minute'
770
+ pm: 'PM'
771
+ rangeSeparator: ' to '
772
+ scrollTitle: 'Scroll to increment'
773
+ toggleTitle: 'Click to toggle'
774
+ weekAbbreviation: 'Wk'
775
+ yearAriaLabel: 'Year'
776
+ sun: 'Sun'
777
+ mon: 'Mon'
778
+ tue: 'Tue'
779
+ wed: 'Wed'
780
+ thu: 'Thu'
781
+ fri: 'Fri'
782
+ sat: 'Sat'
783
+ lh_jan: 'January'
784
+ lh_feb: 'February'
785
+ lh_mar: 'March'
786
+ lh_apr: 'April'
787
+ lh_may: 'May'
788
+ lh_jun: 'June'
789
+ lh_jul: 'July'
790
+ lh_aug: 'August'
791
+ lh_sep: 'September'
792
+ lh_oct: 'October'
793
+ lh_nov: 'November'
794
+ lh_dec: 'December'
746
795
  date_range: Date Range
747
796
  default: Default
748
797
  default_country_cannot_be_deleted: Default country cannot be deleted
@@ -792,6 +841,8 @@ en:
792
841
  empty_cart: Empty Cart
793
842
  enable_mail_delivery: Enable Mail Delivery
794
843
  end: End
844
+ ends_at: Ends at
845
+ ending_at: Ending at
795
846
  ending_in: Ending in
796
847
  error: error
797
848
  errors:
@@ -799,6 +850,7 @@ en:
799
850
  blank: can't be blank
800
851
  could_not_create_taxon: Could not create taxon
801
852
  no_shipping_methods_available: No shipping methods available for selected location, please change your address and try again.
853
+ cannot_remove_icon: Cannot remove image
802
854
  services:
803
855
  get_shipping_rates:
804
856
  no_shipping_address: To generate Shipping Rates Order needs to have a Shipping Address
@@ -831,22 +883,27 @@ en:
831
883
  extension: Extension
832
884
  extensions_directory: Extensions Directory
833
885
  existing_shipments: Existing shipments
886
+ facebook: Facebook
834
887
  failed_payment_attempts: Failed Payment Attempts
835
888
  filename: Filename
836
889
  fill_in_customer_info: Please fill in customer info
837
890
  filter: Filter
891
+ filterable: Filterable
838
892
  filter_results: Filter Results
839
893
  finalize: Finalize
840
894
  find_a_taxon: Find a Taxon
841
895
  finalized: Finalized
842
896
  first_item: First Item
843
897
  first_name: First Name
898
+ firstname: First Name
844
899
  first_name_begins_with: First Name Begins With
845
900
  flat_percent: Flat Percent
846
901
  flat_rate_per_order: Flat Rate
847
902
  flexible_rate: Flexible Rate
848
903
  follow_us: Follow us
904
+ footer: Footer
849
905
  forgot_password: Forgot password?
906
+ free: Free
850
907
  free_shipping: Free Shipping
851
908
  free_shipping_amount: "-"
852
909
  front_end: Front End
@@ -855,6 +912,7 @@ en:
855
912
  general: General
856
913
  general_settings: General Settings
857
914
  generate_code: Generate coupon code
915
+ get_back_to_the: Get back to the
858
916
  go_to_category: Go to category
859
917
  go_to_facebook: Go to facebook
860
918
  go_to_homepage: Go to Home Page
@@ -863,13 +921,15 @@ en:
863
921
  guest_checkout: Guest Checkout
864
922
  guest_user_account: Checkout as a Guest
865
923
  has_no_shipped_units: has no shipped units
924
+ header_banner: Header banner
866
925
  height: Height
867
926
  hide_from_subcategories_nav: Hide from subcategories navigation
868
927
  home: Home
928
+ home_page: homepage
869
929
  homepage:
870
930
  bestsellers: BESTSELLERS
871
931
  fashion_trends: FASHION TRENDS
872
- fashion_trends_note: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.
932
+ fashion_trends_note: Want to rock this season’s hottest trend in style? These are the top fashion from Summer 2020 Fashion Weeks that are coming our way this season.
873
933
  men: MEN
874
934
  new: NEW
875
935
  new_collection: NEW COLLECTION
@@ -878,7 +938,7 @@ en:
878
938
  shop_now: SHOP NOW
879
939
  sportswear: SPORTSWEAR
880
940
  streetstyle: STREETSTYLE
881
- summer_2019: Summer 2019
941
+ summer_2020: Summer 2020
882
942
  summer_collection: Summer Collection
883
943
  summer_sale: SUMMER SALE
884
944
  trending: TRENDING
@@ -889,6 +949,8 @@ en:
889
949
  available_locales: Available Locales
890
950
  fields: Fields
891
951
  language: Language
952
+ country: Country
953
+ default_country: Default Country
892
954
  localization_settings: Localization Settings
893
955
  only_incomplete: Only incomplete
894
956
  only_complete: Only complete
@@ -912,6 +974,7 @@ en:
912
974
  info_number_of_skus_not_shown:
913
975
  one: "and one other"
914
976
  other: "and %{count} others"
977
+ instagram: Instagram
915
978
  instructions_to_reset_password: Please enter your email on the form below
916
979
  insufficient_stock: Insufficient stock available, only %{on_hand} remaining
917
980
  insufficient_stock_item_quantity: Insufficient stock quantity available
@@ -919,6 +982,7 @@ en:
919
982
  intercept_email_address: Intercept Email Address
920
983
  intercept_email_instructions: Override email recipient and replace with this address.
921
984
  internal_name: Internal Name
985
+ internationalization: Internationalization
922
986
  invalid_credit_card: Invalid credit card.
923
987
  invalid_exchange_variant: Invalid exchange variant.
924
988
  invalid_payment_provider: Invalid payment provider.
@@ -929,7 +993,9 @@ en:
929
993
  inventory_error_flash_for_insufficient_quantity: An item in your cart has become unavailable.
930
994
  inventory_state: Inventory State
931
995
  is_not_available_to_shipment_address: is not available to shipment address
932
- iso_name: Iso Name
996
+ iso: ISO Alpha-2
997
+ iso3: ISO Alpha-3
998
+ iso_name: ISO Name
933
999
  issued_on: Issued On
934
1000
  item: Item
935
1001
  item_description: Item Description
@@ -946,9 +1012,11 @@ en:
946
1012
  items_reimbursed: Items reimbursed
947
1013
  join_slack: Join Slack
948
1014
  last_name: Last Name
1015
+ lastname: Last Name
949
1016
  last_name_begins_with: Last Name Begins With
950
1017
  learn_more: Learn More
951
1018
  lifetime_stats: Lifetime Stats
1019
+ limit_usage_to: Limit usage to
952
1020
  line_item_adjustments: "Line item adjustments"
953
1021
  list: List
954
1022
  loading: Loading
@@ -967,15 +1035,18 @@ en:
967
1035
  login_as_existing: Login as Existing Customer
968
1036
  login_failed: Login authentication failed.
969
1037
  login_name: Login
1038
+ logo: Logo
970
1039
  logo_alt: Brand logo
971
1040
  logout: Logout
972
1041
  look_for_similar_items: Look for similar items
973
1042
  make_refund: Make refund
974
1043
  make_sure_the_above_reimbursement_amount_is_correct: Make sure the above reimbursement amount is correct
975
1044
  mail_from_address: Mail from address
1045
+ mailer_logo: Mailer logo (JPG or PNG images only)
976
1046
  manage_promotion_categories: Manage Promotion Categories
977
1047
  manual_intervention_required: Manual intervention required
978
1048
  manage_variants: Manage Variants
1049
+ master: Master
979
1050
  master_price: Master Price
980
1051
  master_sku: Master SKU
981
1052
  match_choices:
@@ -1000,6 +1071,8 @@ en:
1000
1071
  name_on_card: Name on card
1001
1072
  name_or_sku: Name or SKU (enter at least first 3 characters of product name)
1002
1073
  nav_bar:
1074
+ admin_panel: Admin Panel
1075
+ change_country: Change country
1003
1076
  close_menu: Close menu
1004
1077
  go_to_previous_menu: Go to previous menu
1005
1078
  log_in: LOG IN
@@ -1010,6 +1083,8 @@ en:
1010
1083
  show_search: Show search
1011
1084
  show_user_menu: Show user menu
1012
1085
  sign_up: SIGN UP
1086
+ desktop: Desktop navigation
1087
+ mobile: Mobile navigation
1013
1088
  new: New
1014
1089
  new_adjustment: New Adjustment
1015
1090
  new_customer: Create new account
@@ -1053,7 +1128,9 @@ en:
1053
1128
  no_actions_added: No actions added
1054
1129
  no_address_given: No address given
1055
1130
  no_available_date_set: No available date set
1131
+ no_country: No country set
1056
1132
  no_payment_found: No payment found
1133
+ no_payment_provider_settings_message: This payment provider has no custom settings available
1057
1134
  no_pending_payments: No pending payments
1058
1135
  no_product_available:
1059
1136
  for_this_quantity: Sorry, it looks like some products are not available in selected quantity.
@@ -1076,6 +1153,8 @@ en:
1076
1153
  not_found: ! '%{resource} is not found'
1077
1154
  note: Note
1078
1155
  notice_messages:
1156
+ icon_removed: Image has been successfully removed
1157
+ prices_saved: Prices successfully saved
1079
1158
  product_cloned: Product has been cloned
1080
1159
  product_deleted: Product has been deleted
1081
1160
  product_not_cloned: "Product could not be cloned. Reason: %{error}"
@@ -1109,17 +1188,25 @@ en:
1109
1188
  order_mailer:
1110
1189
  subtotal: ! 'Subtotal:'
1111
1190
  total: ! 'Order Total:'
1191
+ store_team: '%{store_name} Team'
1112
1192
  cancel_email:
1113
- dear_customer: Dear Customer,
1193
+ dear_customer: Dear %{name},
1114
1194
  instructions: Your order has been CANCELED. Please retain this cancellation information for your records.
1115
1195
  order_summary_canceled: Order %{number} Summary [CANCELED]
1116
1196
  subject: Cancellation of Order
1197
+ thanks: Thank you for your business.
1117
1198
  confirm_email:
1118
- dear_customer: Dear Customer,
1199
+ dear_customer: Dear %{name},
1119
1200
  instructions: Please review and retain the following order information for your records.
1120
1201
  order_summary: Order %{number} Summary
1121
1202
  subject: Order Confirmation
1122
1203
  thanks: Thank you for your business.
1204
+ store_owner_notification_email:
1205
+ heading: New Order Received
1206
+ instructions: You have received a new order.
1207
+ order_summary: Order %{number} Summary
1208
+ subject: '%{store_name} received a new order'
1209
+ thanks: Thank you for your business.
1123
1210
  order_not_found: We couldn't find your order. Please try that action again.
1124
1211
  order_number: Order %{number}
1125
1212
  order_processed_successfully: Your order has been processed successfully
@@ -1148,6 +1235,7 @@ en:
1148
1235
  backordered_confirm_info: Selected item is backordered so expect delays. Are you sure you want to order it?
1149
1236
  overview: Overview
1150
1237
  package_from: package from
1238
+ page_not_found: Sorry! Page you are looking can’t be found.
1151
1239
  pagination:
1152
1240
  next_page: next page &raquo;
1153
1241
  previous_page: ! '&laquo; previous page'
@@ -1166,6 +1254,7 @@ en:
1166
1254
  payment_processing_failed: Payment could not be processed, please check the details you entered
1167
1255
  payment_processor_choose_banner_text: If you need help choosing a payment processor, please visit
1168
1256
  payment_processor_choose_link: our payments page
1257
+ payment_provider_settings: Payment Provider Settings
1169
1258
  payment_state: Payment State
1170
1259
  payment_states:
1171
1260
  balance_due: balance due
@@ -1205,7 +1294,6 @@ en:
1205
1294
  done: DONE
1206
1295
  default: DEFAULT
1207
1296
  filter_by: FILTER BY
1208
- home: Home
1209
1297
  newest_first: NEWEST FIRST
1210
1298
  no_results: No results
1211
1299
  no_results_found: No results found
@@ -1230,9 +1318,12 @@ en:
1230
1318
  preferred_reimbursement_type: Preferred Reimbursement Type
1231
1319
  presentation: Presentation
1232
1320
  preview_product: Preview Product
1321
+ preview_taxon: Preview Taxon
1233
1322
  previous: Previous
1234
1323
  previous_state_missing: "n/a"
1324
+ previously_used_card: Previously Used Cards
1235
1325
  price: Price
1326
+ prices: Prices
1236
1327
  price_range: Price Range
1237
1328
  price_sack: Price Sack
1238
1329
  process: Process
@@ -1348,6 +1439,7 @@ en:
1348
1439
  rejected: Rejected
1349
1440
  remember_me: Remember me
1350
1441
  remove: Remove
1442
+ remove_image: Remove Image
1351
1443
  rename: Rename
1352
1444
  report: Report
1353
1445
  reports: Reports
@@ -1378,8 +1470,9 @@ en:
1378
1470
  return_items_cannot_be_associated_with_multiple_orders: Return items cannot be associated with multiple orders.
1379
1471
  reimbursement_mailer:
1380
1472
  reimbursement_email:
1473
+ store_team: '%{store_name} Team'
1381
1474
  days_to_send: ! 'You have %{days} days to send back any items awaiting exchange.'
1382
- dear_customer: Dear Customer,
1475
+ dear_customer: Dear %{name},
1383
1476
  exchange_summary: Exchange Summary
1384
1477
  for: for
1385
1478
  instructions: Your reimbursement has been processed.
@@ -1417,18 +1510,24 @@ en:
1417
1510
  security_settings: Security Settings
1418
1511
  select: Select
1419
1512
  select_from_prototype: Select From Prototype
1513
+ select_a_date: Select a date
1514
+ select_a_date_range: Select a date range
1420
1515
  select_a_return_authorization_reason: Select a reason for the return authorization
1421
1516
  select_a_stock_location: Select a stock location
1422
1517
  select_a_store_credit_reason: Select a reason for the store credit
1518
+ select_an_option: Select an option
1423
1519
  select_stock: Select stock
1424
1520
  selected_quantity_not_available: ! 'selected of %{item} is not available.'
1425
1521
  send_copy_of_all_mails_to: Send Copy of All Mails To
1426
1522
  send_mails_as: Send Mails As
1427
- seo_title: SEO title
1523
+ seo: SEO
1524
+ seo_robots: SEO Robots
1525
+ seo_title: SEO Title
1428
1526
  server: Server
1429
1527
  server_error: The server returned an error
1430
1528
  settings: Settings
1431
1529
  ship: Ship
1530
+ ship_to: "Shipping to:"
1432
1531
  ship_address: Ship Address
1433
1532
  ship_total: Ship Total
1434
1533
  shipment: Shipment
@@ -1436,7 +1535,8 @@ en:
1436
1535
  shipment_details: "From %{stock_location} via %{shipping_method}"
1437
1536
  shipment_mailer:
1438
1537
  shipped_email:
1439
- dear_customer: Dear Customer,
1538
+ store_team: '%{store_name} Team'
1539
+ dear_customer: Dear %{name},
1440
1540
  instructions: Your order %{number} has been shipped
1441
1541
  shipment_summary: Shipment Summary for order
1442
1542
  shipping_method: "Shipping method: %{shipping_method}"
@@ -1480,18 +1580,24 @@ en:
1480
1580
  show_discontinued: Show Discontinued
1481
1581
  show_only_complete_orders: Only show complete orders
1482
1582
  show_only_considered_risky: Only show risky orders
1583
+ show_property: Show Property
1483
1584
  show_rate_in_label: Show rate in label
1585
+ show_store_currency_selector:
1586
+ short: Show Store selector
1587
+ long: Display the Store selector in the main nav bar of Storefront and allow users to change Store and Currency
1484
1588
  sign_up: Sign Up
1485
1589
  sku: SKU
1486
1590
  skus: SKUs
1487
1591
  slug: Slug
1488
1592
  source: Source
1593
+ social: Social
1489
1594
  special_instructions: Special Instructions
1490
1595
  split: Split
1491
1596
  spree_gateway_error_flash_for_checkout: There was a problem with your payment information. Please check your information and try again.
1492
1597
  ssl:
1493
1598
  change_protocol: "Please switch to using HTTP (rather than HTTPS) and retry this request."
1494
1599
  start: Start
1600
+ starting_from: Starts at
1495
1601
  state: State
1496
1602
  state_based: State Based
1497
1603
  states: States
@@ -1525,6 +1631,7 @@ en:
1525
1631
  reimbursed: Reimbursed
1526
1632
  resumed: Resumed
1527
1633
  returned: Returned
1634
+ shipment: Shipment
1528
1635
  shipped: Shipped
1529
1636
  void: Void
1530
1637
  states_required: States Required
@@ -1542,7 +1649,8 @@ en:
1542
1649
  stock_transfer_name: Stock Transfer
1543
1650
  stock_transfer:
1544
1651
  errors:
1545
- must_have_variant: You must add atleast one variant.
1652
+ must_have_variant: You must add at least one variant.
1653
+ variants_unavailable: "Some variants are not available on %{stock}"
1546
1654
  stock_transfers: Stock Transfers
1547
1655
  stop: Stop
1548
1656
  store: Store
@@ -1550,6 +1658,18 @@ en:
1550
1658
  unable_to_create: Unable to create store.
1551
1659
  unable_to_update: Unable to update store.
1552
1660
  unable_to_delete: Unable to delete store.
1661
+ store_form:
1662
+ code_help: "Store unique identifier, which is an abbreviated version of the store’s name (used as the layout directory name, and also helpful for separating templates by store)"
1663
+ checkout_zone_help: "Selecting a Zone will limit customers on Checkout to Addresses in Countries or States in that Zone.
1664
+ For more information <a href='https://guides.spreecommerce.org/user/configuration/configuring_geography.html#zones' target='_blank' class='alert-link'>please see documentation</a>"
1665
+ languages_help: "Install <a href='https://github.com/spree-contrib/spree_i18n target='_blank' class='alert-link'>Spree I18n extension</a> to add more languages"
1666
+ social_help: "If you want to link to your social accounts in the footer part of your website please fill below fields"
1667
+ default_country_help: "This is the Country that will be pre-selected on the Checkout Address form"
1668
+ footer_help: "This content is visible in the footer section of your Store"
1669
+ mail_from_address_help: "This is the email which will be the sender of all your Store emails (Order Confirmation, Shipment notification etc)"
1670
+ customer_support_email_help: "This email is visible to your Store visitors in the Footer section"
1671
+ new_order_notifications_email_help: "If you want to receive an email notification every time someone places an Order please provide an email address for that notification to be sent to"
1672
+ seo_robots: "Please check <a href='https://developers.google.com/search/reference/robots_meta_tag' target='_blank'>this page for more help</a>"
1553
1673
  store_set_default_button: Set as default
1554
1674
  stores: Stores
1555
1675
  store_credit_name: Store Credit
@@ -1597,6 +1717,8 @@ en:
1597
1717
  successfully_removed: ! '%{resource} has been successfully removed!'
1598
1718
  successfully_updated: ! '%{resource} has been successfully updated!'
1599
1719
  summary: Summary
1720
+ supported_currencies: Supported Currencies
1721
+ supported_currencies_long: A comma separated list of supported currencies
1600
1722
  tax: Tax
1601
1723
  tax_included: "Tax (incl.)"
1602
1724
  tax_categories: Tax Categories
@@ -1621,7 +1743,7 @@ en:
1621
1743
  taxonomy_categories_name: Categories
1622
1744
  taxonomy_edit: Edit taxonomy
1623
1745
  taxonomy_tree_error: The requested change has not been accepted and the tree has been returned to its previous state, please try again.
1624
- taxonomy_tree_instruction: ! '* Right click a child in the tree to access the menu for adding, deleting or sorting a child.'
1746
+ taxonomy_tree_instruction: ! '* Right click (or double tap on iOS device) a child in the tree to access the menu for adding, deleting or sorting a child.'
1625
1747
  taxons: Taxons
1626
1748
  test: Test
1627
1749
  test_mailer:
@@ -1657,6 +1779,7 @@ en:
1657
1779
  tree: Tree
1658
1780
  type: Type
1659
1781
  type_to_search: Type to search
1782
+ twitter: Twitter
1660
1783
  unable_to_connect_to_gateway: Unable to connect to gateway.
1661
1784
  unable_to_create_reimbursements: Unable to create reimbursements because there are items pending manual intervention.
1662
1785
  under_price: Under %{price}
@@ -1689,6 +1812,7 @@ en:
1689
1812
  value: Value
1690
1813
  variant: Variant
1691
1814
  variant_placeholder: Choose a variant
1815
+ variant_prices_search_placeholder: Search for SKU or variant name...
1692
1816
  variants: Variants
1693
1817
  version: Version
1694
1818
  void: Void
@@ -1702,5 +1826,7 @@ en:
1702
1826
  your_order_is_empty_add_product: Your order is empty, please search for and add a product above
1703
1827
  zip: Zip
1704
1828
  zipcode: Zip Code
1829
+ zipcode_required: Zip Code Required
1705
1830
  zone: Zone
1706
1831
  zones: Zones
1832
+ no_limits_zone: No Limits