spree_core 4.1.13 → 4.2.0.rc4

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 (150) 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 +45 -34
  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 +8 -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/payments.rb +10 -2
  32. data/app/models/spree/payment.rb +18 -4
  33. data/app/models/spree/payment/processing.rb +2 -2
  34. data/app/models/spree/payment_method.rb +3 -3
  35. data/app/models/spree/preferences/store.rb +1 -1
  36. data/app/models/spree/price.rb +25 -6
  37. data/app/models/spree/product.rb +29 -9
  38. data/app/models/spree/promotion.rb +10 -15
  39. data/app/models/spree/promotion/rules/product.rb +2 -1
  40. data/app/models/spree/promotion/rules/user.rb +2 -1
  41. data/app/models/spree/promotion_handler/coupon.rb +1 -1
  42. data/app/models/spree/promotion_handler/promotion_duplicator.rb +9 -3
  43. data/app/models/spree/refund.rb +2 -2
  44. data/app/models/spree/reimbursement.rb +2 -0
  45. data/app/models/spree/return_item/eligibility_validator/default.rb +0 -2
  46. data/app/models/spree/return_item/eligibility_validator/{r_m_a_required.rb → rma_required.rb} +0 -0
  47. data/app/models/spree/shipment.rb +3 -6
  48. data/app/models/spree/shipping_method.rb +1 -5
  49. data/app/models/spree/shipping_rate.rb +2 -11
  50. data/app/models/spree/stock/availability_validator.rb +3 -4
  51. data/app/models/spree/stock_item.rb +1 -5
  52. data/app/models/spree/stock_location.rb +13 -2
  53. data/app/models/spree/store.rb +51 -2
  54. data/app/models/spree/store_credit.rb +1 -1
  55. data/app/models/spree/variant.rb +16 -10
  56. data/app/models/spree/zone.rb +17 -4
  57. data/app/presenters/spree/variant_presenter.rb +9 -1
  58. data/app/presenters/spree/variants/option_types_presenter.rb +1 -0
  59. data/app/services/spree/account/addresses/create.rb +6 -1
  60. data/app/services/spree/account/addresses/{base.rb → helper.rb} +1 -3
  61. data/app/services/spree/account/addresses/update.rb +6 -1
  62. data/app/services/spree/compare_line_items.rb +4 -2
  63. data/app/sorters/spree/base_sorter.rb +35 -0
  64. data/app/sorters/spree/orders/sort.rb +1 -37
  65. data/app/sorters/spree/products/sort.rb +9 -32
  66. data/app/validators/email_validator.rb +1 -1
  67. data/app/views/layouts/spree/base_mailer.html.erb +45 -40
  68. data/app/views/spree/order_mailer/cancel_email.html.erb +19 -25
  69. data/app/views/spree/order_mailer/cancel_email.text.erb +24 -2
  70. data/app/views/spree/order_mailer/confirm_email.html.erb +18 -65
  71. data/app/views/spree/order_mailer/confirm_email.text.erb +2 -1
  72. data/app/views/spree/order_mailer/store_owner_notification_email.html.erb +23 -0
  73. data/app/views/spree/order_mailer/store_owner_notification_email.text.erb +38 -0
  74. data/app/views/spree/reimbursement_mailer/reimbursement_email.html.erb +53 -58
  75. data/app/views/spree/reimbursement_mailer/reimbursement_email.text.erb +3 -1
  76. data/app/views/spree/shared/_base_mailer_footer.html.erb +6 -14
  77. data/app/views/spree/shared/_base_mailer_header.html.erb +12 -32
  78. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +293 -625
  79. data/app/views/spree/shared/_purchased_items_table.html.erb +60 -0
  80. data/app/views/spree/shared/purchased_items_table/_adjustment.html.erb +13 -0
  81. data/app/views/spree/shared/purchased_items_table/_line_item.html.erb +27 -0
  82. data/app/views/spree/shared/purchased_items_table/_subtotal.html.erb +13 -0
  83. data/app/views/spree/shared/purchased_items_table/_total.html.erb +13 -0
  84. data/app/views/spree/shipment_mailer/shipped_email.html.erb +31 -36
  85. data/app/views/spree/shipment_mailer/shipped_email.text.erb +2 -1
  86. data/config/initializers/assets.rb +1 -0
  87. data/config/initializers/inflections.rb +3 -0
  88. data/config/initializers/rails61_fixes.rb +3 -0
  89. data/config/locales/en.yml +145 -19
  90. data/db/default/spree/countries.rb +10 -4
  91. data/db/default/spree/states.rb +42 -5
  92. data/db/default/spree/stores.rb +17 -12
  93. data/db/default/spree/zones.rb +5 -2
  94. data/db/migrate/20130326175857_add_stock_location_to_rma.rb +1 -1
  95. data/db/migrate/20140309033438_create_store_from_preferences.rb +1 -1
  96. data/db/migrate/20191017121054_add_supported_currencies_to_store.rb +10 -0
  97. data/db/migrate/20200102141311_add_social_to_spree_stores.rb +3 -0
  98. data/db/migrate/20200308210757_add_default_locale_to_spree_store.rb +7 -0
  99. data/db/migrate/20200310145140_add_customer_support_email_to_spree_store.rb +7 -0
  100. data/db/migrate/20200421095017_add_compare_at_amount_to_spree_prices.rb +7 -0
  101. data/db/migrate/20200423123001_add_default_country_id_to_spree_store.rb +9 -0
  102. data/db/migrate/20200430072209_add_footer_fields_to_spree_stores.rb +8 -0
  103. data/db/migrate/20200513154939_add_show_property_to_spree_product_properties.rb +5 -0
  104. data/db/migrate/20200607161221_add_store_owner_order_notification_delivered_to_spree_orders.rb +7 -0
  105. data/db/migrate/20200607161222_add_new_order_notifications_email_to_spree_stores.rb +7 -0
  106. data/db/migrate/20200610113542_add_label_to_spree_addresses.rb +5 -0
  107. data/db/migrate/20200826075557_add_unique_index_on_taxon_id_and_product_id_to_spree_products_taxons.rb +5 -0
  108. data/db/migrate/20201006110150_add_checkout_zone_field_to_store.rb +12 -0
  109. data/db/migrate/20201012091259_add_filterable_column_to_spree_option_types.rb +6 -0
  110. data/db/migrate/20201013084504_add_seo_robots_to_spree_stores.rb +5 -0
  111. data/db/migrate/20201127084048_add_default_country_kind_to_spree_zones.rb +5 -0
  112. data/db/migrate/20210112193440_remove_contact_email_from_spree_stores.rb +5 -0
  113. data/db/migrate/20210114182625_create_spree_payment_methods_stores.rb +10 -0
  114. data/db/migrate/20210114220232_migrate_data_payment_methods_stores.rb +15 -0
  115. data/db/migrate/20210117112551_remove_store_id_from_spree_payment_methods.rb +5 -0
  116. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/backend/all.js +0 -2
  117. data/lib/generators/spree/install/templates/vendor/assets/javascripts/spree/frontend/all.js +0 -2
  118. data/lib/generators/spree/mailers_preview/mailers_preview_generator.rb +23 -0
  119. data/lib/generators/spree/mailers_preview/templates/mailers/previews/order_preview.rb +13 -0
  120. data/lib/generators/spree/mailers_preview/templates/mailers/previews/reimbursement_preview.rb +5 -0
  121. data/lib/generators/spree/mailers_preview/templates/mailers/previews/shipment_preview.rb +5 -0
  122. data/lib/generators/spree/mailers_preview/templates/mailers/previews/user_preview.rb +11 -0
  123. data/lib/spree/core.rb +2 -0
  124. data/lib/spree/core/controller_helpers/common.rb +1 -0
  125. data/lib/spree/core/controller_helpers/currency_helpers.rb +15 -0
  126. data/lib/spree/core/controller_helpers/order.rb +9 -4
  127. data/lib/spree/core/controller_helpers/store.rb +16 -1
  128. data/lib/spree/core/importer/order.rb +9 -9
  129. data/lib/spree/core/product_filters.rb +3 -3
  130. data/lib/spree/core/version.rb +1 -1
  131. data/lib/spree/i18n.rb +7 -21
  132. data/lib/spree/permitted_attributes.rb +8 -5
  133. data/lib/spree/service_module.rb +6 -2
  134. data/lib/spree/testing_support/authorization_helpers.rb +7 -4
  135. data/lib/spree/testing_support/capybara_config.rb +1 -1
  136. data/lib/spree/testing_support/factories/promotion_factory.rb +29 -17
  137. data/lib/spree/testing_support/factories/shipment_factory.rb +7 -9
  138. data/lib/spree/testing_support/factories/store_factory.rb +11 -8
  139. data/lib/spree/testing_support/factories/zone_factory.rb +16 -13
  140. data/lib/spree/testing_support/i18n.rb +1 -1
  141. data/lib/spree/testing_support/order_walkthrough.rb +8 -3
  142. data/lib/spree/testing_support/rspec_retry_config.rb +10 -0
  143. data/spree_core.gemspec +10 -8
  144. data/vendor/assets/javascripts/cleave.js +1669 -0
  145. metadata +105 -30
  146. data/app/views/spree/order_mailer/_adjustment.html.erb +0 -8
  147. data/app/views/spree/order_mailer/_subtotal.html.erb +0 -8
  148. data/app/views/spree/order_mailer/_total.html.erb +0 -8
  149. data/lib/spree/i18n/base.rb +0 -17
  150. 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_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