spree_core 6.0.0.beta4 → 6.0.0.rc2

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 (575) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/app/helpers/spree/images_helper.rb +0 -57
  4. data/app/jobs/spree/base_job.rb +21 -0
  5. data/app/jobs/spree/carts/reap_expired_job.rb +2 -2
  6. data/app/jobs/spree/collections/regenerate_time_based_job.rb +6 -3
  7. data/app/jobs/spree/orders/finalize_stale_drafts_job.rb +8 -5
  8. data/app/jobs/spree/payments/cancel_unused_sessions_job.rb +61 -0
  9. data/app/jobs/spree/search_provider/index_job.rb +4 -0
  10. data/app/jobs/spree/seller_payouts/sweep_seller_job.rb +2 -0
  11. data/app/jobs/spree/uploads/purge_unattached_job.rb +49 -0
  12. data/app/mailers/spree/admin_user_mailer.rb +4 -19
  13. data/app/mailers/spree/base_mailer.rb +97 -13
  14. data/app/mailers/spree/email_template_mailer.rb +27 -0
  15. data/app/mailers/spree/export_mailer.rb +3 -4
  16. data/app/mailers/spree/import_mailer.rb +3 -4
  17. data/app/mailers/spree/invitation_mailer.rb +24 -7
  18. data/app/mailers/spree/seller_user_mailer.rb +4 -16
  19. data/app/mailers/spree/webhook_mailer.rb +2 -2
  20. data/app/models/concerns/spree/acted_by.rb +1 -1
  21. data/app/models/concerns/spree/admin_user_methods.rb +15 -1
  22. data/app/models/concerns/spree/api_typed.rb +91 -0
  23. data/app/models/concerns/spree/calculated_adjustments.rb +41 -13
  24. data/app/models/concerns/spree/calculator/currency_amounts.rb +1 -1
  25. data/app/models/concerns/spree/calculator/tiers.rb +63 -0
  26. data/app/models/concerns/spree/canonical_decimals.rb +61 -0
  27. data/app/models/concerns/spree/customer_methods.rb +23 -18
  28. data/app/models/concerns/spree/derived_number.rb +11 -13
  29. data/app/models/concerns/spree/email_template_identity.rb +52 -0
  30. data/app/models/concerns/spree/parameterizable_name.rb +2 -0
  31. data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
  32. data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
  33. data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
  34. data/app/models/concerns/spree/preference_schema/json_schema.rb +139 -0
  35. data/app/models/concerns/spree/preference_schema.rb +62 -32
  36. data/app/models/concerns/spree/product_scopes.rb +16 -2
  37. data/app/models/concerns/spree/provider_listing.rb +41 -0
  38. data/app/models/concerns/spree/publishable.rb +82 -14
  39. data/app/models/concerns/spree/purchase/addresses.rb +23 -10
  40. data/app/models/concerns/spree/purchase/currency.rb +1 -1
  41. data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
  42. data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
  43. data/app/models/concerns/spree/purchase/locale.rb +1 -1
  44. data/app/models/concerns/spree/purchase/payment_processing.rb +8 -4
  45. data/app/models/concerns/spree/purchase/purchase_order.rb +9 -4
  46. data/app/models/concerns/spree/purchase/store_credits.rb +36 -1
  47. data/app/models/concerns/spree/purchase/totals.rb +49 -8
  48. data/app/models/concerns/spree/ransackable_attributes.rb +46 -0
  49. data/app/models/concerns/spree/receivable.rb +1 -1
  50. data/app/models/concerns/spree/searchable.rb +0 -4
  51. data/app/models/concerns/spree/secret_preferences.rb +59 -0
  52. data/app/models/concerns/spree/signed_id_attachments.rb +54 -0
  53. data/app/models/concerns/spree/single_store_resource.rb +1 -1
  54. data/app/models/concerns/spree/stores/email_branding.rb +32 -0
  55. data/app/models/concerns/spree/stores/markets.rb +5 -2
  56. data/app/models/concerns/spree/type_labels.rb +38 -0
  57. data/app/models/concerns/spree/typed_adjustment_line.rb +5 -6
  58. data/app/models/concerns/spree/typed_associations.rb +12 -18
  59. data/app/models/concerns/spree/vat_price_calculation.rb +5 -6
  60. data/app/models/spree/address.rb +12 -2
  61. data/app/models/spree/adjusters/largest_remainder.rb +14 -1
  62. data/app/models/spree/adjusters/promotion.rb +4 -19
  63. data/app/models/spree/allowed_origin.rb +3 -1
  64. data/app/models/spree/api_key.rb +5 -6
  65. data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
  66. data/app/models/spree/base.rb +99 -22
  67. data/app/models/spree/calculator/flat_percent_item_total.rb +2 -4
  68. data/app/models/spree/calculator/flat_rate.rb +3 -5
  69. data/app/models/spree/calculator/flexi_rate.rb +4 -6
  70. data/app/models/spree/calculator/percent_on_line_item.rb +2 -2
  71. data/app/models/spree/calculator/price_sack.rb +5 -7
  72. data/app/models/spree/calculator/shipping/digital_delivery.rb +3 -5
  73. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +7 -7
  74. data/app/models/spree/calculator/shipping/flat_rate.rb +5 -7
  75. data/app/models/spree/calculator/shipping/flexi_rate.rb +4 -6
  76. data/app/models/spree/calculator/shipping/per_item.rb +3 -5
  77. data/app/models/spree/calculator/shipping/price_sack.rb +5 -7
  78. data/app/models/spree/calculator/tiered_flat_rate.rb +7 -24
  79. data/app/models/spree/calculator/tiered_percent.rb +7 -25
  80. data/app/models/spree/cart.rb +78 -18
  81. data/app/models/spree/catalog.rb +1 -0
  82. data/app/models/spree/catalog_price.rb +0 -7
  83. data/app/models/spree/catalog_price_tier.rb +0 -8
  84. data/app/models/spree/category.rb +3 -1
  85. data/app/models/spree/channel/gating.rb +3 -2
  86. data/app/models/spree/channel.rb +6 -4
  87. data/app/models/spree/claim.rb +22 -1
  88. data/app/models/spree/claim_line_item.rb +41 -6
  89. data/app/models/spree/collection.rb +2 -1
  90. data/app/models/spree/collection_rule.rb +5 -21
  91. data/app/models/spree/commission_line.rb +1 -1
  92. data/app/models/spree/commission_rate.rb +7 -4
  93. data/app/models/spree/commission_rate_value.rb +1 -1
  94. data/app/models/spree/commission_rule.rb +4 -11
  95. data/app/models/spree/commission_rules/category_rule.rb +2 -5
  96. data/app/models/spree/commission_rules/item_total_rule.rb +2 -2
  97. data/app/models/spree/commission_rules/product_rule.rb +1 -1
  98. data/app/models/spree/commission_rules/seller_rule.rb +2 -5
  99. data/app/models/spree/company.rb +1 -0
  100. data/app/models/spree/company_invitation.rb +1 -0
  101. data/app/models/spree/consent_record.rb +0 -1
  102. data/app/models/spree/credit_card.rb +1 -1
  103. data/app/models/spree/current.rb +23 -0
  104. data/app/models/spree/custom_field.rb +2 -2
  105. data/app/models/spree/custom_field_definition.rb +20 -35
  106. data/app/models/spree/custom_fields/boolean.rb +1 -1
  107. data/app/models/spree/custom_fields/json.rb +1 -1
  108. data/app/models/spree/customer_group.rb +1 -0
  109. data/app/models/spree/data_feed/google.rb +0 -2
  110. data/app/models/spree/data_request.rb +2 -1
  111. data/app/models/spree/delivery_method.rb +36 -14
  112. data/app/models/spree/delivery_method_rule.rb +4 -11
  113. data/app/models/spree/delivery_method_rules/channel_rule.rb +2 -5
  114. data/app/models/spree/delivery_method_rules/item_total_rule.rb +2 -2
  115. data/app/models/spree/delivery_profile.rb +1 -0
  116. data/app/models/spree/delivery_rate.rb +7 -8
  117. data/app/models/spree/delivery_rate_provider/base.rb +1 -0
  118. data/app/models/spree/delivery_zone.rb +1 -2
  119. data/app/models/spree/delivery_zone_member.rb +4 -4
  120. data/app/models/spree/digital_asset.rb +7 -0
  121. data/app/models/spree/digital_asset_provider/base.rb +2 -0
  122. data/app/models/spree/digital_link.rb +2 -5
  123. data/app/models/spree/discount.rb +1 -1
  124. data/app/models/spree/email_template.rb +25 -0
  125. data/app/models/spree/email_template_draft.rb +13 -0
  126. data/app/models/spree/email_template_revision.rb +17 -0
  127. data/app/models/spree/email_templates/entry.rb +118 -0
  128. data/app/models/spree/email_templates/sample_record.rb +16 -0
  129. data/app/models/spree/emails/branding.rb +80 -0
  130. data/app/models/spree/exchange.rb +16 -1
  131. data/app/models/spree/exchange_line_item.rb +121 -5
  132. data/app/models/spree/export.rb +0 -1
  133. data/app/models/spree/exports/products.rb +10 -1
  134. data/app/models/spree/exports/report.rb +3 -3
  135. data/app/models/spree/fee.rb +4 -2
  136. data/app/models/spree/file_upload.rb +155 -0
  137. data/app/models/spree/fulfillment.rb +66 -30
  138. data/app/models/spree/fulfillment_changer.rb +2 -2
  139. data/app/models/spree/fulfillment_group.rb +6 -1
  140. data/app/models/spree/fulfillment_item.rb +0 -4
  141. data/app/models/spree/fulfillment_provider/base.rb +1 -0
  142. data/app/models/spree/gateway/bogus.rb +6 -0
  143. data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
  144. data/app/models/spree/gateway.rb +6 -2
  145. data/app/models/spree/gift_card.rb +18 -8
  146. data/app/models/spree/gift_card_batch.rb +3 -5
  147. data/app/models/spree/import.rb +5 -7
  148. data/app/models/spree/import_mapping.rb +1 -2
  149. data/app/models/spree/import_row.rb +2 -2
  150. data/app/models/spree/import_schemas/products.rb +1 -0
  151. data/app/models/spree/integration.rb +9 -19
  152. data/app/models/spree/invitation.rb +5 -5
  153. data/app/models/spree/line_item.rb +15 -4
  154. data/app/models/spree/locale.rb +11 -8
  155. data/app/models/spree/market.rb +8 -2
  156. data/app/models/spree/media.rb +1 -9
  157. data/app/models/spree/newsletter_subscriber.rb +4 -0
  158. data/app/models/spree/option_type.rb +2 -1
  159. data/app/models/spree/option_value.rb +2 -1
  160. data/app/models/spree/order.rb +60 -142
  161. data/app/models/spree/order_group.rb +18 -4
  162. data/app/models/spree/order_inventory.rb +10 -5
  163. data/app/models/spree/order_promotion.rb +1 -1
  164. data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
  165. data/app/models/spree/order_routing/strategy/base.rb +4 -2
  166. data/app/models/spree/order_routing/strategy/rules.rb +1 -1
  167. data/app/models/spree/order_routing_rule.rb +6 -22
  168. data/app/models/spree/package_type.rb +2 -2
  169. data/app/models/spree/payment/gateway_options.rb +15 -53
  170. data/app/models/spree/payment/processing.rb +2 -4
  171. data/app/models/spree/payment.rb +21 -13
  172. data/app/models/spree/payment_method/check.rb +2 -0
  173. data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
  174. data/app/models/spree/payment_method/store_credit.rb +15 -13
  175. data/app/models/spree/payment_method.rb +78 -6
  176. data/app/models/spree/payment_session.rb +5 -1
  177. data/app/models/spree/payment_setup_session.rb +1 -0
  178. data/app/models/spree/payout_provider/base.rb +3 -1
  179. data/app/models/spree/pickup_point_provider/base.rb +2 -0
  180. data/app/models/spree/policy.rb +1 -0
  181. data/app/models/spree/price.rb +17 -14
  182. data/app/models/spree/price_adjustment_tier.rb +4 -0
  183. data/app/models/spree/price_list.rb +14 -9
  184. data/app/models/spree/price_rules/channel_rule.rb +3 -6
  185. data/app/models/spree/price_rules/customer_group_rule.rb +3 -6
  186. data/app/models/spree/price_rules/market_rule.rb +2 -5
  187. data/app/models/spree/price_rules/user_rule.rb +1 -3
  188. data/app/models/spree/product/channels.rb +9 -2
  189. data/app/models/spree/product.rb +54 -30
  190. data/app/models/spree/product_submission.rb +0 -12
  191. data/app/models/spree/product_type.rb +1 -1
  192. data/app/models/spree/promotion/actions/create_line_items.rb +28 -18
  193. data/app/models/spree/promotion/rules/category.rb +1 -5
  194. data/app/models/spree/promotion/rules/channel.rb +2 -9
  195. data/app/models/spree/promotion/rules/country.rb +3 -8
  196. data/app/models/spree/promotion/rules/currency.rb +1 -5
  197. data/app/models/spree/promotion/rules/customer_group.rb +2 -9
  198. data/app/models/spree/promotion/rules/first_order.rb +0 -4
  199. data/app/models/spree/promotion/rules/item_total.rb +6 -10
  200. data/app/models/spree/promotion/rules/market.rb +2 -9
  201. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
  202. data/app/models/spree/promotion/rules/option_value.rb +2 -6
  203. data/app/models/spree/promotion/rules/product.rb +1 -5
  204. data/app/models/spree/promotion/rules/user.rb +0 -4
  205. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
  206. data/app/models/spree/promotion.rb +36 -6
  207. data/app/models/spree/promotion_action.rb +7 -14
  208. data/app/models/spree/promotion_action_line_item.rb +1 -1
  209. data/app/models/spree/promotion_handler/coupon.rb +59 -27
  210. data/app/models/spree/promotion_rule.rb +7 -14
  211. data/app/models/spree/purchase_order.rb +3 -0
  212. data/app/models/spree/quantity_rule.rb +1 -1
  213. data/app/models/spree/refund.rb +41 -18
  214. data/app/models/spree/return.rb +31 -2
  215. data/app/models/spree/return_line_item.rb +65 -14
  216. data/app/models/spree/role.rb +7 -7
  217. data/app/models/spree/saved_report.rb +2 -1
  218. data/app/models/spree/search_provider/base.rb +4 -0
  219. data/app/models/spree/seller.rb +10 -2
  220. data/app/models/spree/seller_payout.rb +8 -0
  221. data/app/models/spree/seller_requirement.rb +5 -12
  222. data/app/models/spree/seller_requirement_custom_field.rb +1 -2
  223. data/app/models/spree/seller_requirement_submission.rb +3 -2
  224. data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
  225. data/app/models/spree/seller_transfer.rb +6 -0
  226. data/app/models/spree/shipping_label.rb +2 -0
  227. data/app/models/spree/stock/availability_validator.rb +2 -2
  228. data/app/models/spree/stock/estimator.rb +1 -1
  229. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  230. data/app/models/spree/stock/packer.rb +2 -2
  231. data/app/models/spree/stock/splitter/weight.rb +1 -1
  232. data/app/models/spree/stock_level/custom_events.rb +6 -0
  233. data/app/models/spree/stock_level.rb +3 -1
  234. data/app/models/spree/stock_location.rb +1 -0
  235. data/app/models/spree/stock_movement.rb +1 -1
  236. data/app/models/spree/stock_receipt_item.rb +1 -1
  237. data/app/models/spree/stock_reservation.rb +2 -2
  238. data/app/models/spree/stock_transfer.rb +6 -2
  239. data/app/models/spree/store.rb +70 -19
  240. data/app/models/spree/store_credit.rb +13 -13
  241. data/app/models/spree/store_credit_event.rb +5 -5
  242. data/app/models/spree/supplier.rb +1 -0
  243. data/app/models/spree/tax_category.rb +1 -0
  244. data/app/models/spree/tax_exemption_certificate.rb +3 -0
  245. data/app/models/spree/tax_identifier.rb +3 -1
  246. data/app/models/spree/tax_line.rb +53 -3
  247. data/app/models/spree/tax_provider/base.rb +71 -14
  248. data/app/models/spree/tax_provider/internal.rb +70 -41
  249. data/app/models/spree/tax_provider/recorded_share.rb +114 -0
  250. data/app/models/spree/tax_rate.rb +30 -8
  251. data/app/models/spree/taxon.rb +1 -1
  252. data/app/models/spree/taxonomy.rb +0 -1
  253. data/app/models/spree/update_status.rb +25 -0
  254. data/app/models/spree/variant.rb +10 -12
  255. data/app/models/spree/variant_media.rb +1 -1
  256. data/app/models/spree/webhook_delivery.rb +1 -0
  257. data/app/models/spree/webhook_endpoint.rb +46 -13
  258. data/app/models/spree/wishlist.rb +1 -6
  259. data/app/models/spree/wishlist_item/custom_events.rb +6 -0
  260. data/app/presenters/spree/csv/customer_presenter.rb +1 -1
  261. data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
  262. data/app/presenters/spree/csv/order_line_item_presenter.rb +10 -6
  263. data/app/presenters/spree/csv/price_list_price_presenter.rb +3 -8
  264. data/app/presenters/spree/csv/product_variant_presenter.rb +59 -20
  265. data/app/presenters/spree/csv/purchase_order_item_presenter.rb +1 -3
  266. data/app/serializers/spree/emails/base_serializer.rb +14 -0
  267. data/app/serializers/spree/emails/export_serializer.rb +13 -0
  268. data/app/serializers/spree/emails/import_serializer.rb +19 -0
  269. data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
  270. data/app/serializers/spree/emails/store_serializer.rb +31 -0
  271. data/app/serializers/spree/emails/user_serializer.rb +12 -0
  272. data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
  273. data/app/services/spree/carts/create.rb +8 -2
  274. data/app/services/spree/carts/destroy.rb +2 -2
  275. data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
  276. data/app/services/spree/carts/split_by_seller.rb +1 -1
  277. data/app/services/spree/carts/update.rb +22 -8
  278. data/app/services/spree/catalogs/set_product_terms.rb +1 -1
  279. data/app/services/spree/categories/add_products.rb +13 -31
  280. data/app/services/spree/categories/remove_products.rb +12 -51
  281. data/app/services/spree/checkout/advance.rb +1 -4
  282. data/app/services/spree/collections/add_products.rb +10 -23
  283. data/app/services/spree/collections/remove_products.rb +7 -43
  284. data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
  285. data/app/services/spree/data_requests/create.rb +1 -1
  286. data/app/services/spree/deliveries/destroy.rb +2 -2
  287. data/app/services/spree/email_templates/check.rb +58 -0
  288. data/app/services/spree/email_templates/no_sample_record.rb +7 -0
  289. data/app/services/spree/email_templates/preview.rb +99 -0
  290. data/app/services/spree/emails/file_system.rb +23 -0
  291. data/app/services/spree/emails/filters.rb +84 -0
  292. data/app/services/spree/emails/liquid_context.rb +48 -0
  293. data/app/services/spree/emails/rendered_email.rb +14 -0
  294. data/app/services/spree/emails/renderer.rb +125 -0
  295. data/app/services/spree/emails/template.rb +51 -0
  296. data/app/services/spree/emails/template_data.rb +23 -0
  297. data/app/services/spree/emails/template_resolver.rb +109 -0
  298. data/app/services/spree/emails/text_converter.rb +72 -0
  299. data/app/services/spree/emails/translation_inliner.rb +134 -0
  300. data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
  301. data/app/services/spree/imports/row_processors/product_variant.rb +77 -34
  302. data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
  303. data/app/services/spree/locales.rb +43 -10
  304. data/app/services/spree/newsletter/subscribe.rb +8 -12
  305. data/app/services/spree/orders/build_fulfillments.rb +3 -2
  306. data/app/services/spree/orders/create.rb +5 -4
  307. data/app/services/spree/orders/discounts/create.rb +14 -11
  308. data/app/services/spree/orders/discounts/destroy.rb +1 -0
  309. data/app/services/spree/orders/discounts/update.rb +1 -0
  310. data/app/services/spree/orders/fees/create.rb +1 -0
  311. data/app/services/spree/orders/fees/destroy.rb +1 -0
  312. data/app/services/spree/orders/fees/update.rb +1 -0
  313. data/app/services/spree/orders/remove_line_item.rb +13 -3
  314. data/app/services/spree/orders/update.rb +10 -6
  315. data/app/services/spree/orders/update_item.rb +6 -3
  316. data/app/services/spree/orders/update_statuses.rb +3 -1
  317. data/app/services/spree/prices/bulk_upsert.rb +32 -25
  318. data/app/services/spree/product_memberships.rb +61 -0
  319. data/app/services/spree/returns/eligibility_validator.rb +1 -1
  320. data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
  321. data/app/services/spree/seeds/commission_rates.rb +1 -1
  322. data/app/services/spree/seeds/digital_delivery.rb +1 -1
  323. data/app/services/spree/seeds/payment_methods.rb +2 -2
  324. data/app/services/spree/seeds/saved_reports.rb +3 -3
  325. data/app/services/spree/seeds/stores.rb +1 -1
  326. data/app/services/spree/sellers/requirements.rb +1 -2
  327. data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
  328. data/app/services/spree/shipping_labels/store_file.rb +3 -3
  329. data/app/services/spree/stock_levels/correct.rb +3 -3
  330. data/app/services/spree/stock_reservations/reserve.rb +2 -3
  331. data/app/services/spree/store_credits/apply.rb +15 -13
  332. data/app/services/spree/stores/provision_defaults.rb +23 -25
  333. data/app/services/spree/update_check.rb +160 -0
  334. data/app/services/spree/uploads/assign_stores.rb +92 -0
  335. data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
  336. data/app/validators/spree/attachment_content_type_validator.rb +19 -2
  337. data/app/validators/spree/locale_codes_validator.rb +22 -0
  338. data/app/views/layouts/spree/base_mailer.html.erb +2 -43
  339. data/app/views/layouts/spree/base_mailer.liquid +79 -0
  340. data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
  341. data/app/views/spree/export_mailer/export_done.liquid +12 -0
  342. data/app/views/spree/import_mailer/import_done.liquid +15 -0
  343. data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
  344. data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
  345. data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
  346. data/app/views/spree/shared/_mailer_button.html.erb +4 -5
  347. data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
  348. data/app/views/spree/shared/_summary_row.liquid +8 -0
  349. data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
  350. data/app/workflows/spree/carts/add_item.rb +4 -4
  351. data/app/workflows/spree/carts/complete.rb +13 -3
  352. data/app/workflows/spree/carts/merge.rb +1 -1
  353. data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
  354. data/app/workflows/spree/carts/upsert_items.rb +18 -9
  355. data/app/workflows/spree/claims/approve.rb +5 -22
  356. data/app/workflows/spree/claims/cancel.rb +5 -21
  357. data/app/workflows/spree/claims/create.rb +15 -0
  358. data/app/workflows/spree/claims/deny.rb +7 -0
  359. data/app/workflows/spree/claims/resolve.rb +34 -31
  360. data/app/workflows/spree/customers/anonymize.rb +3 -4
  361. data/app/workflows/spree/customers/create.rb +1 -1
  362. data/app/workflows/spree/data_requests/fulfill.rb +2 -2
  363. data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
  364. data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
  365. data/app/workflows/spree/email_templates/publish.rb +70 -0
  366. data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
  367. data/app/workflows/spree/email_templates/revert.rb +29 -0
  368. data/app/workflows/spree/email_templates/save_draft.rb +85 -0
  369. data/app/workflows/spree/exchanges/approve.rb +5 -22
  370. data/app/workflows/spree/exchanges/cancel.rb +5 -21
  371. data/app/workflows/spree/exchanges/create.rb +6 -0
  372. data/app/workflows/spree/exchanges/fulfill.rb +75 -51
  373. data/app/workflows/spree/exchanges/receive.rb +6 -65
  374. data/app/workflows/spree/fulfillments/cancel.rb +1 -1
  375. data/app/workflows/spree/fulfillments/create.rb +53 -49
  376. data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
  377. data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
  378. data/app/workflows/spree/fulfillments/replacements.rb +59 -0
  379. data/app/workflows/spree/gift_cards/apply.rb +2 -2
  380. data/app/workflows/spree/orders/add_item.rb +5 -1
  381. data/app/workflows/spree/orders/cancel.rb +3 -3
  382. data/app/workflows/spree/orders/complete.rb +16 -8
  383. data/app/workflows/spree/payments/capture.rb +20 -5
  384. data/app/workflows/spree/payments/process.rb +5 -3
  385. data/app/workflows/spree/post_sale/approval.rb +35 -0
  386. data/app/workflows/spree/post_sale/cancellation.rb +44 -0
  387. data/app/workflows/spree/post_sale/receipt.rb +92 -0
  388. data/app/workflows/spree/price_lists/update.rb +4 -4
  389. data/app/workflows/spree/products/nested_attributes.rb +1 -1
  390. data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
  391. data/app/workflows/spree/purchase_orders/close.rb +3 -31
  392. data/app/workflows/spree/purchase_orders/create.rb +3 -1
  393. data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
  394. data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
  395. data/app/workflows/spree/purchase_orders/receive.rb +1 -1
  396. data/app/workflows/spree/purchase_orders/update.rb +5 -34
  397. data/app/workflows/spree/receivables/closing_short.rb +46 -0
  398. data/app/workflows/spree/receivables/draft_editing.rb +48 -0
  399. data/app/workflows/spree/refunds/create.rb +5 -2
  400. data/app/workflows/spree/refunds/order_payments.rb +14 -2
  401. data/app/workflows/spree/refunds/tax_credit.rb +67 -0
  402. data/app/workflows/spree/returns/approve.rb +5 -22
  403. data/app/workflows/spree/returns/cancel.rb +5 -22
  404. data/app/workflows/spree/returns/create.rb +8 -0
  405. data/app/workflows/spree/returns/receive.rb +5 -76
  406. data/app/workflows/spree/returns/refund.rb +31 -8
  407. data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
  408. data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
  409. data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
  410. data/app/workflows/spree/shipping_labels/record.rb +7 -7
  411. data/app/workflows/spree/shipping_labels/refund.rb +2 -2
  412. data/app/workflows/spree/stock_receipts/recording.rb +4 -4
  413. data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
  414. data/app/workflows/spree/stock_transfers/close.rb +3 -30
  415. data/app/workflows/spree/stock_transfers/create.rb +3 -1
  416. data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
  417. data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
  418. data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
  419. data/app/workflows/spree/stock_transfers/receive.rb +1 -1
  420. data/app/workflows/spree/stock_transfers/update.rb +5 -33
  421. data/config/currency_exponents.json +180 -0
  422. data/config/i18n-tasks.yml +32 -18
  423. data/config/initializers/alba.rb +7 -0
  424. data/config/language_names.csv +264 -0
  425. data/config/locales/ar.yml +811 -0
  426. data/config/locales/be.yml +855 -0
  427. data/config/locales/bg.yml +723 -0
  428. data/config/locales/ca.yml +689 -0
  429. data/config/locales/content_locales.rb +9 -0
  430. data/config/locales/cs.yml +855 -0
  431. data/config/locales/da.yml +771 -0
  432. data/config/locales/de-CH.yml +248 -0
  433. data/config/locales/de.yml +835 -0
  434. data/config/locales/el.yml +769 -0
  435. data/config/locales/en.yml +47 -505
  436. data/config/locales/es-CL.yml +301 -0
  437. data/config/locales/es-EC.yml +186 -0
  438. data/config/locales/es-MX.yml +334 -0
  439. data/config/locales/es.yml +831 -0
  440. data/config/locales/et.yml +644 -0
  441. data/config/locales/fa.yml +709 -0
  442. data/config/locales/fi.yml +771 -0
  443. data/config/locales/fr.yml +830 -0
  444. data/config/locales/hu.yml +751 -0
  445. data/config/locales/id.yml +756 -0
  446. data/config/locales/it.yml +833 -0
  447. data/config/locales/ja.yml +726 -0
  448. data/config/locales/km.yml +759 -0
  449. data/config/locales/ko.yml +575 -0
  450. data/config/locales/ku.yml +753 -0
  451. data/config/locales/lt.yml +821 -0
  452. data/config/locales/lv.yml +685 -0
  453. data/config/locales/nb.yml +824 -0
  454. data/config/locales/ne.yml +823 -0
  455. data/config/locales/nl.yml +826 -0
  456. data/config/locales/pl.yml +835 -0
  457. data/config/locales/pt-BR.yml +547 -0
  458. data/config/locales/pt.yml +636 -0
  459. data/config/locales/ro.yml +750 -0
  460. data/config/locales/ru.yml +834 -0
  461. data/config/locales/sk.yml +680 -0
  462. data/config/locales/sl-SI.yml +600 -0
  463. data/config/locales/sv.yml +827 -0
  464. data/config/locales/th.yml +745 -0
  465. data/config/locales/tr.yml +777 -0
  466. data/config/locales/uk.yml +836 -0
  467. data/config/locales/vi.yml +768 -0
  468. data/config/locales/zh-CN.yml +786 -0
  469. data/config/locales/zh-TW.yml +834 -0
  470. data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
  471. data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
  472. data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
  473. data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
  474. data/db/migrate/20261009000001_change_money_columns_to_decimal_19_4.rb +116 -0
  475. data/db/migrate/20261010000001_add_store_id_to_active_storage_blobs.rb +12 -0
  476. data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
  477. data/lib/generators/spree/dummy/templates/rails/test.rb +26 -0
  478. data/lib/spree/checkout/default_requirements.rb +37 -13
  479. data/lib/spree/core/configuration.rb +19 -1
  480. data/lib/spree/core/controller_helpers/store.rb +1 -1
  481. data/lib/spree/core/dependencies.rb +5 -4
  482. data/lib/spree/core/emails/escaped_output.rb +60 -0
  483. data/lib/spree/core/engine.rb +72 -165
  484. data/lib/spree/core/permissions/default_catalog.rb +5 -0
  485. data/lib/spree/core/preferences/invalid_preferences.rb +18 -0
  486. data/lib/spree/core/preferences/json_conversion.rb +186 -0
  487. data/lib/spree/core/preferences/masking.rb +55 -2
  488. data/lib/spree/core/preferences/preferable.rb +343 -103
  489. data/lib/spree/core/preferences/preferable_class_methods.rb +188 -136
  490. data/lib/spree/core/previews/import_preview.rb +10 -0
  491. data/lib/spree/core/ransack_configuration.rb +13 -2
  492. data/lib/spree/core/tax/provider_error.rb +37 -0
  493. data/lib/spree/core/version.rb +1 -1
  494. data/lib/spree/core.rb +91 -373
  495. data/lib/spree/emails/editable_templates.rb +82 -0
  496. data/lib/spree/events/catalog.rb +189 -0
  497. data/lib/spree/events.rb +21 -1
  498. data/lib/spree/hooks.rb +0 -17
  499. data/lib/spree/i18n.rb +32 -15
  500. data/lib/spree/iso_data.rb +7 -0
  501. data/lib/spree/localized_number.rb +6 -0
  502. data/lib/spree/migrations.rb +4 -1
  503. data/lib/spree/money.rb +196 -15
  504. data/lib/spree/reporting/adapters/base.rb +7 -6
  505. data/lib/spree/reporting/adapters/live.rb +6 -6
  506. data/lib/spree/reporting/default_vocabulary.rb +22 -10
  507. data/lib/spree/reporting/hydration.rb +1 -1
  508. data/lib/spree/reporting/query.rb +8 -0
  509. data/lib/spree/reporting/registry.rb +13 -0
  510. data/lib/spree/reporting/schema.rb +10 -10
  511. data/lib/spree/testing_support/editable_email_templates.rb +61 -0
  512. data/lib/spree/testing_support/emails.rb +22 -0
  513. data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
  514. data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
  515. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  516. data/lib/spree/testing_support/factories/product_factory.rb +9 -0
  517. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  518. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  519. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  520. data/lib/spree/testing_support/i18n.rb +3 -94
  521. data/lib/spree/testing_support/lifecycle_events.rb +1 -1
  522. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  523. data/lib/spree/testing_support/preferences.rb +0 -5
  524. data/lib/spree/testing_support/store.rb +9 -1
  525. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +67 -1
  526. data/lib/spree/uploads.rb +101 -0
  527. data/lib/tasks/categories_and_collections.rake +3 -3
  528. data/lib/tasks/core.rake +6 -4
  529. data/lib/tasks/markets.rake +2 -1
  530. data/lib/tasks/media.rake +3 -3
  531. data/lib/tasks/migrate_users_to_customers.rake +23 -18
  532. data/lib/tasks/money.rake +46 -0
  533. data/lib/tasks/package_types.rake +1 -1
  534. data/lib/tasks/preferences_json.rake +101 -0
  535. data/lib/tasks/seller_sample_data.rake +2 -2
  536. data/lib/tasks/store_settings.rake +13 -6
  537. data/lib/tasks/typed_adjustments_migration.rake +1 -1
  538. data/lib/tasks/uploads.rake +19 -0
  539. data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
  540. metadata +219 -46
  541. data/app/jobs/spree/products/touch_categories_job.rb +0 -15
  542. data/app/jobs/spree/products/touch_taxons_job.rb +0 -13
  543. data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
  544. data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
  545. data/app/models/spree/base_analytics_event_handler.rb +0 -54
  546. data/app/models/spree/invitations/store.rb +0 -6
  547. data/app/models/spree/preference.rb +0 -14
  548. data/app/models/spree/promotion_handler/page.rb +0 -25
  549. data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
  550. data/app/models/spree/stock/differentiator.rb +0 -45
  551. data/app/presenters/spree/filters/options_presenter.rb +0 -47
  552. data/app/services/spree/carts/empty.rb +0 -42
  553. data/app/services/spree/country_to_timezone.rb +0 -273
  554. data/app/services/spree/payments/create.rb +0 -92
  555. data/app/validators/spree/url_validator.rb +0 -23
  556. data/app/views/active_storage/blobs/_blob.html.erb +0 -14
  557. data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
  558. data/app/views/spree/export_mailer/export_done.html.erb +0 -7
  559. data/app/views/spree/import_mailer/import_done.html.erb +0 -12
  560. data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
  561. data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
  562. data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
  563. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
  564. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
  565. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
  566. data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
  567. data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
  568. data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
  569. data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
  570. data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
  571. data/app/workflows/spree/returns/purchase_label.rb +0 -32
  572. data/lib/spree/analytics.rb +0 -11
  573. data/lib/spree/core/preferences/scoped_store.rb +0 -34
  574. data/lib/spree/core/preferences/store.rb +0 -105
  575. data/lib/spree/translation_migrations.rb +0 -52
@@ -121,8 +121,6 @@ en:
121
121
  phone: Shipping address phone
122
122
  postal_code: Shipping address zip code
123
123
  state: Shipping address state
124
- spree/page_link:
125
- open_in_new_tab: Open in new tab
126
124
  spree/payment:
127
125
  amount: Amount
128
126
  number: Number
@@ -247,11 +245,13 @@ en:
247
245
  sign_in_count: Sign in count
248
246
  errors:
249
247
  messages:
248
+ already_linked: is already linked to this product
250
249
  blank: can't be blank
251
250
  must_apply_to_products: must be a custom field definition for products
252
251
  must_belong_to_same_store: must belong to the same store
253
252
  not_registered: is not a registered provider
254
253
  spree_content_type_not_allowed: is not a file type we accept
254
+ too_many_decimals: has more than %{count} decimal places
255
255
  models:
256
256
  spree/allowed_origin:
257
257
  attributes:
@@ -259,17 +259,18 @@ en:
259
259
  must_be_origin_only: must be an origin (scheme and host) without path, query, or fragment
260
260
  spree/calculator/tiered_flat_rate:
261
261
  attributes:
262
- base:
263
- keys_should_be_positive_number: Tier keys should all be numbers larger than 0
264
262
  preferred_tiers:
265
- should_be_hash: should be a hash
263
+ should_be_list: should be a list of tiers, each with a threshold and a value
264
+ thresholds_should_be_positive_number: should all have a threshold larger than 0
265
+ thresholds_should_be_unique: should not repeat a threshold
266
+ values_should_be_number: should all have a value of 0 or more
266
267
  spree/calculator/tiered_percent:
267
268
  attributes:
268
- base:
269
- keys_should_be_positive_number: Tier keys should all be numbers larger than 0
270
- values_should_be_percent: Tier values should all be percentages between 0% and 100%
271
269
  preferred_tiers:
272
- should_be_hash: should be a hash
270
+ should_be_list: should be a list of tiers, each with a threshold and a value
271
+ thresholds_should_be_positive_number: should all have a threshold larger than 0
272
+ thresholds_should_be_unique: should not repeat a threshold
273
+ values_should_be_percent: should all have a value between 0% and 100%
273
274
  spree/catalog:
274
275
  attributes:
275
276
  base:
@@ -334,14 +335,6 @@ en:
334
335
  content_type: has not allowed content type
335
336
  type:
336
337
  inclusion: is not included in the list of allowed types
337
- spree/legacy_user:
338
- attributes:
339
- bill_address_id:
340
- belongs_to_other_user: belongs to other user
341
- deprecated_in_completed_order: deprecated in completed order
342
- ship_address_id:
343
- belongs_to_other_user: belongs to other user
344
- deprecated_in_completed_order: deprecated in completed order
345
338
  spree/line_item:
346
339
  attributes:
347
340
  currency:
@@ -389,6 +382,7 @@ en:
389
382
  base:
390
383
  duplicate_quantity: each quantity break must have its own quantity
391
384
  invalid_quantity: each quantity break must start at a whole number of units
385
+ malformed_price: a price must be a number like 16.50
392
386
  negative_price: a price cannot be below zero
393
387
  nothing_to_apply_to: has no rules, no catalog and no products, so it would apply to nothing. Add one before activating.
394
388
  price_rises_with_quantity: a quantity break cannot cost more than the price a buyer pays below it
@@ -439,12 +433,10 @@ en:
439
433
  attributes:
440
434
  company:
441
435
  must_be_legal_entity: must be a legal entity, not a division
436
+ owner:
437
+ must_be_legal_entity: must be the legal entity, not a division
442
438
  value:
443
439
  invalid: does not look like a valid %{kind} registration
444
- spree/taxon_image:
445
- attributes:
446
- attachment:
447
- not_allowed_content_type: has not allowed content type
448
440
  spree/user:
449
441
  attributes:
450
442
  bill_address_id:
@@ -479,12 +471,6 @@ en:
479
471
  spree/classification:
480
472
  one: Classification
481
473
  other: Classifications
482
- spree/cms_page:
483
- one: Page
484
- other: Pages
485
- spree/cms_section:
486
- one: Section
487
- other: Sections
488
474
  spree/country:
489
475
  one: Country
490
476
  other: Countries
@@ -521,18 +507,6 @@ en:
521
507
  spree/order:
522
508
  one: Order
523
509
  other: Orders
524
- spree/page:
525
- one: Page
526
- other: Pages
527
- spree/page_block:
528
- one: Page Block
529
- other: Page Blocks
530
- spree/page_link:
531
- one: Page Link
532
- other: Page Links
533
- spree/page_section:
534
- one: Page Section
535
- other: Page Sections
536
510
  spree/payment:
537
511
  one: Payment
538
512
  other: Payments
@@ -626,12 +600,6 @@ en:
626
600
  spree/taxonomy:
627
601
  one: Category
628
602
  other: Categories
629
- spree/theme:
630
- one: Theme
631
- other: Themes
632
- spree/tracker:
633
- one: Tracker
634
- other: Trackers
635
603
  spree/user:
636
604
  one: User
637
605
  other: Users
@@ -641,9 +609,6 @@ en:
641
609
  spree/zone:
642
610
  one: Zone
643
611
  other: Zones
644
- address_book:
645
- save: Save
646
- successfully_created: New address has been successfully created
647
612
  errors:
648
613
  messages:
649
614
  already_confirmed: was already confirmed
@@ -666,48 +631,21 @@ en:
666
631
  percentage:
667
632
  format:
668
633
  precision: 1
669
- pagination:
670
- first: "«"
671
- last: "»"
672
- next: "›"
673
- previous: "‹"
674
- truncate: "…"
675
634
  spree:
676
- abbreviation: Abbreviation
677
635
  accept: Accept
678
- acceptance_status: Acceptance status
679
636
  accepted: Accepted
680
637
  accepts_email_marketing: Accepts email marketing
681
638
  account: Account
682
- action: Action
683
- activate: Activate
684
639
  active: Active
685
- add: Add
686
- add_customers: Add Customers
687
- add_product: Add Product
688
- add_products: Add Products
689
- add_store: New Store
690
- add_store_credit: Add Store Credit
691
- added_to_cart: Added to cart successfully!
692
- additional_item: Additional Item
693
640
  address: Address
694
641
  address1: Address
695
642
  address2: Address (contd.)
696
- address_book:
697
- add_house_number: Add a house number if you have one
698
- address_not_owned_by_user: The specified address does not belong to this user.
699
- addresses: Addresses
700
- adjustable: Adjustable
701
643
  adjustment: Adjustment
702
- adjustment_amount: Amount
703
644
  adjustment_labels:
704
645
  tax_rates:
705
646
  excluding_tax: "%{name}%{amount}"
706
647
  including_tax: "%{name}%{amount} (Included in Price)"
707
- adjustment_total: Adjustment Total
708
- adjustments: Adjustments
709
648
  adjustments_deleted: Adjustments Deleted
710
- admin_locale: Admin locale
711
649
  admin_user_mailer:
712
650
  password_reset_email:
713
651
  action: Reset Password
@@ -716,68 +654,26 @@ en:
716
654
  ignore_notice: If you did not request a password reset, you can safely ignore this email. Your password will not be changed.
717
655
  instructions: We received a request to reset the password for your %{store_name} admin account. Click the button below to choose a new password.
718
656
  subject: Password Reset Instructions
719
- administration: Administration
720
- advertise: Advertise
721
657
  all: All
722
- all_products: All products
723
- allowed_origin: Allowed Origin
724
- allowed_origins: Allowed Origins
725
- alternative_phone: Alternative Phone
726
658
  amount: Amount
727
- analytics: Analytics
728
- and: and
729
- api_key: API Key
659
+ any: Any
730
660
  api_key_channel_immutable: cannot be changed after the key is created; create a new key bound to the channel you need and revoke this one
731
661
  api_key_channel_must_belong_to_store: must belong to the same store as the key
732
662
  api_key_channel_publishable_only: can only be set on publishable keys
733
663
  api_key_no_current_key: No API key authenticated this request
734
664
  api_key_scopes_immutable: cannot be changed after the key is created; create a new key with the scopes you need and revoke this one
735
- api_keys: API Keys
736
- apply: Apply
737
- apply_only_on_full_priced_items: Apply only on full priced items
738
- apply_store_credit: Apply Store Credit
739
- approve: approve
740
- approved_at: Approved at
741
665
  approver: Approver
742
- assets: Media
743
- at_symbol: "@"
744
- attachments: Attachments
745
- author: Author
746
666
  authorized: Authorized
747
- auto_capture: Auto Capture
748
667
  availability: availability
749
- available: Available
750
- available_on: Available On
751
- average_order_value: Average Order Value
752
- avs_response: AVS Response
753
- back: Back
754
- back_end: Backend
755
668
  backorderable: Backorderable
756
- backorderable_default: Backorderable default
757
669
  backordered: Backordered
758
- balance: Balance
759
- balance_due: Balance Due
760
- barcode: Barcode
761
- base_amount: Base Amount
762
- base_percent: Base Percent
763
670
  bill_address: Bill Address
764
- billing: Billing
765
671
  billing_address: Billing Address
766
- both: Both
767
- brand: Brand
768
672
  calculator: Calculator
769
- cancel: cancel
770
673
  canceled: Canceled
771
- canceled_at: Canceled at
772
674
  canceler: Canceler
773
675
  cannot_be_destroyed: Order cannot be destroyed.
774
- cannot_empty: Cannot empty order.
775
- cannot_empty_completed_order: Order has already been processed so it cannot be emptied
776
- cannot_return_more_than_bought_quantity: Cannot return more than bought quantity.
777
676
  capture: Capture
778
- capture_events: Capture events
779
- card_code: Card Verification Code (CVC)
780
- card_number: Card Number
781
677
  cart: Cart
782
678
  cart_already_updated: The cart has already been updated.
783
679
  cart_completion_in_progress: The cart is being completed. Please retry in a moment.
@@ -786,6 +682,7 @@ en:
786
682
  delivery_unavailable: "%{li_name} cannot be delivered to the selected address"
787
683
  discontinued: "%{li_name} was removed because it was discontinued"
788
684
  invalid_price: Price must be a non-negative number
685
+ not_orderable: "%{li_name} is not available to order. Remove it to continue."
789
686
  out_of_stock: "%{li_name} was removed because it was sold out"
790
687
  price_override_not_allowed: Prices cannot be changed on a placed order — use fees or discounts instead
791
688
  pricing_unavailable: Prices could not be confirmed. Please try again.
@@ -796,11 +693,8 @@ en:
796
693
  product_not_in_store: One of those products belongs to another store.
797
694
  categories: Categories
798
695
  category: Category
799
- change: Change
800
696
  channel: Sales channel
801
- channel_ids: Sales channels
802
697
  channels: Sales channels
803
- charged: Charged
804
698
  checkout: Checkout
805
699
  checkout_requirements:
806
700
  delivery_method_required: Select a delivery method for all fulfillments
@@ -810,15 +704,7 @@ en:
810
704
  payment_required: Add a payment method
811
705
  po_number_required: A purchase order number is required for this account
812
706
  ship_address_required: Shipping address is required
813
- choose_currency: Choose Currency
814
707
  city: City
815
- clear: Clear
816
- clear_all: Clear all
817
- clear_cache: Clear Cache
818
- clone: Clone
819
- close: Close
820
- closed: Closed
821
- code: Code
822
708
  collection_rule_types:
823
709
  available_on:
824
710
  description: Products published within the last N days
@@ -830,7 +716,6 @@ en:
830
716
  description: Products carrying a matching tag
831
717
  name: Tag
832
718
  color_code: Color Code
833
- colors: Colors
834
719
  commission_rule_types:
835
720
  category_rule:
836
721
  description: Charges this rate only for products in the selected categories, and anything filed beneath them
@@ -844,36 +729,16 @@ en:
844
729
  seller_rule:
845
730
  description: Charges this rate only when the seller is one of the selected
846
731
  name: Seller
847
- companies: Companies
848
732
  company: Company
849
733
  company_invitations:
850
- email_mismatch: This invitation was sent to a different email address.
851
734
  not_pending: This invitation is no longer pending and cannot be revoked.
852
735
  compare_at_amount: Compare at amount
853
736
  compare_at_price: Compare at price
854
737
  complete: complete
855
- configuration: Configuration
856
- configurations: Configurations
857
738
  confirm: Confirm
858
- contact: Contact
859
- contact_phone: Contact phone
860
- content: Content
861
- continue: Continue
862
- continue_shopping: Continue shopping
863
- copy: Copy
864
- copy_link: Copy link
865
- cost_currency: Cost Currency
866
739
  cost_price: Cost Price
867
740
  count_on_hand: Count On Hand
868
- countries: Countries
869
741
  country: Country
870
- country_name: Name
871
- country_names:
872
- CA: Canada
873
- FRA: France
874
- ITA: Italy
875
- US: United States of America
876
- coupon: Coupon
877
742
  coupon_code: Coupon code
878
743
  coupon_code_already_applied: The coupon code has already been applied to this order
879
744
  coupon_code_applied: The coupon code was successfully applied to your order.
@@ -882,60 +747,30 @@ en:
882
747
  coupon_code_max_usage: Coupon code usage limit exceeded
883
748
  coupon_code_not_eligible: This coupon code is not eligible for this order
884
749
  coupon_code_not_found: The coupon code you entered doesn't exist. Please try again.
750
+ coupon_code_unavailable: The coupon code on your cart is no longer available.
885
751
  coupon_code_unknown_error: This coupon code could not be applied to the cart at this time.
886
752
  coupon_code_used: The coupon code you entered has already been used. Please try again.
887
- coupon_codes: Coupon codes
888
- create: Create
889
- create_new: Create new
890
753
  created_at: Created at
891
- created_by: Created by
892
- credit: Credit
893
- credit_allowed: Credit allowed
894
754
  credit_card: Credit Card
895
- credit_cards: Credit Cards
896
- credit_owed: Credit Owed
897
- credited: Credited
898
- credits: Credits
899
- currencies: Currencies
900
755
  currency: Currency
901
756
  currency_not_supported_by_store: is not supported by this store
902
- current: Current
903
- current_password: Current password
904
757
  custom_field_definitions: Custom Field Definitions
905
758
  custom_fields: Custom Fields
906
759
  customer: Customer
907
760
  customer_errors:
908
761
  anonymize_failed: The erasure could not be completed and nothing was changed
909
- customer_group: Customer Group
910
- customer_groups: Customer Groups
911
- customer_support_email: Customer Support Email
912
762
  customers: Customers
913
- cut: Cut
914
- cvv: CVV
915
- cvv_response: CVV Response
916
763
  data_request_errors:
917
764
  already_anonymized: This customer's personal data has already been erased
918
765
  download_unavailable: This download link has expired or is no longer valid
919
766
  not_pending: This request has already been processed
920
- date: Date
921
- date_range: Date Range
922
767
  default: Default
923
- default_billing_address: Default billing address
924
- default_country: Default Country
925
- default_currency: Default currency
926
- default_locale: Default locale
927
- default_shipping_address: Default shipping address
928
768
  default_stock_location_name: Shop location
929
- default_tax: Default Tax
930
- default_tax_zone: Default Tax Zone
931
769
  default_wishlist_name: Wishlist
932
- delete: Delete
933
- deleted: Deleted
934
770
  deliveries:
935
771
  errors:
936
772
  delivered: This consignment has already arrived — its arrival is what the returns window counts from, so it cannot be deleted
937
773
  has_label: This delivery was created by a shipping label — refund the label instead of deleting the delivery
938
- not_found: This fulfillment has no delivery to track yet
939
774
  delivery: Delivery
940
775
  delivery_method_rule_types:
941
776
  channel_rule:
@@ -963,27 +798,14 @@ en:
963
798
  destination: Destination
964
799
  destroy: Destroy
965
800
  details: Details
966
- developers: Developers
967
801
  digital:
968
802
  digital_delivery: Digital Delivery
969
803
  digital_assets: Digital assets
970
804
  digital_assets_attachment_must_be_private: Upload the file to private storage before attaching it
971
- discontinue_on: Discontinue On
972
805
  discontinued: Discontinued
973
806
  discontinued_variants_present: Some line items in this order have products that are no longer available.
974
- discount: Discount
975
- discount_amount: Discount Amount
976
- discounts: Discounts
977
- display: Display
978
807
  display_delivery_range: Delivery in %{delivery_range} business days
979
- display_on: Display on
980
- domain: Domain
981
- done: Done
982
- download: Download
983
808
  draft: Draft
984
- duplicate: Duplicate
985
- duplicating: Duplicating
986
- edit: Edit
987
809
  eligibility_errors:
988
810
  messages:
989
811
  has_excluded_product: Your cart contains a product that prevents this coupon code from being applied.
@@ -1002,13 +824,15 @@ en:
1002
824
  no_user_specified: You need to login before applying this coupon code.
1003
825
  not_first_order: This coupon code can only be applied to your first order.
1004
826
  wrong_country: This coupon code is not eligible in your country
827
+ wrong_currency: This coupon code is not eligible for orders in this currency.
1005
828
  email: Email
1006
- email_marketing: Email marketing
1007
- emails: Emails
1008
- empty: Empty
1009
- end: End
1010
- ends_at: Ends at
1011
- enter: Enter
829
+ email_templates:
830
+ another_admin: another admin
831
+ no_sample_record: There is no %{record} in this store to preview this email with yet.
832
+ sample_needs_permission: Previewing this email shows your store's records, which needs the %{permissions} permission.
833
+ stale_draft: "%{name} saved this draft after you opened it. Reload to see their changes before saving yours."
834
+ test_email_needs_admin: A test email goes to the signed-in admin, so it needs one.
835
+ test_email_subject: "[Test] %{subject}"
1012
836
  error: error
1013
837
  error_user_destroy_with_orders: User associated with orders cannot be destroyed
1014
838
  error_user_does_not_have_any_store_credits: User does not have any Store Credits available
@@ -1039,19 +863,20 @@ en:
1039
863
  flat_fee_cannot_charge_delivery: is not available on a flat fee, which already charges for the sale the delivery belongs to — add a separate rate to charge delivery
1040
864
  integration_connection_failed: could not connect with the saved credentials
1041
865
  integration_type_not_registered: is not a registered integration
866
+ invalid_collection_rule: is not a registered collection rule
1042
867
  invalid_commission_rule: is not a commission rule kind this store has
1043
868
  invalid_commission_rule_type: "%{type} is not a commission rule kind this store has"
1044
869
  invalid_delivery_method_rule: is not a registered delivery method rule
1045
870
  invalid_json: 'must be valid JSON: %{detail}'
1046
- invalid_oauth_state: Invalid or expired authentication state. Please start the sign-in again.
1047
871
  invalid_order_routing_rule: is not a registered order routing rule
1048
872
  invalid_order_routing_strategy: is not a registered order routing strategy
1049
873
  invalid_refund_method: must be one of original_payment, store_credit
1050
874
  invalid_seller_requirement: is not a registered seller requirement
875
+ invalid_status: Invalid status
1051
876
  invalid_storefront_access: is not a valid storefront access level
1052
877
  items_not_a_list: items must be a list of objects
878
+ money_preference_too_many_decimals: has more than %{count} decimal places for %{currency}
1053
879
  must_be_greater_than_min_amount: must be greater than or equal to the minimum
1054
- must_be_origin_only: must be an origin (scheme and host) without path, query, or fragment
1055
880
  no_pickup_point_provider: this delivery method has no pickup point provider configured
1056
881
  not_cancellable: cannot be canceled once its goods have been dispatched
1057
882
  oidc_account_not_provisioned: This account is not authorized for this store. Ask an administrator for an invitation.
@@ -1064,7 +889,6 @@ en:
1064
889
  promotion_discount_not_editable: promotion discounts are managed by recalculation and cannot be edited
1065
890
  rate_provider_requires_shipping: "%{provider} quotes shipments, so this method must ship to an address"
1066
891
  rate_provider_unavailable: is not available for this store — connect its integration first
1067
- received_exceeds_expected: cannot be more than the %{expected} expected
1068
892
  refund_amount_requires_shared_payment: can only be set when the payment is shared across a split checkout
1069
893
  same_as_inviter: cannot be the same as the inviter
1070
894
  seller_delivery_method_not_shareable: only the marketplace's own delivery methods can be shared with sellers
@@ -1073,51 +897,24 @@ en:
1073
897
  stock_level_immutable: cannot be changed after the hold is taken — release the hold and take it again
1074
898
  store_association_can_not_be_changed: The store association can not be changed
1075
899
  store_is_already_set: Store is already set
900
+ unknown_calculator_type: "%{type} is not a calculator offered here"
1076
901
  unknown_custom_field_type: 'is not a known custom field type (expected one of: %{types})'
1077
902
  unknown_scopes: 'contains unknown scopes: %{scopes}'
1078
903
  unregistered_actor: is not a registered actor class
1079
904
  variant_product_mismatch: must belong to the same product as the variant
1080
- services:
1081
- get_shipping_rates:
1082
- no_line_items: To generate Shipping Rates you need to add some Line Items to Order
1083
- no_shipping_address: To generate Shipping Rates Order needs to have a Shipping Address
1084
- estimated_transit_business_days: Estimated transit business days
1085
- event: Event
1086
- excl: excl.
1087
- existing_address: Existing address
1088
- expiration: Expiration
905
+ exchange_fee_label: Exchange %{number}
1089
906
  expired: Expired
1090
- expires_at: Expires at
1091
- export: Export
1092
907
  export_mailer:
1093
908
  export_done:
1094
909
  message: Good work, your export is ready! Please use the link below to download it.
1095
910
  subject: Your export %{export_number} was successfully processed!
1096
911
  greeting: Hi %{user_name},
1097
- thanks: Thank you,
1098
- extension: Extension
1099
- facebook: Facebook
1100
- featured_image: Featured image
1101
912
  field: Field
1102
- filename: Filename
1103
- filled: Filled
1104
- filter: Filter
1105
- filterable: Filterable
1106
- finalize: Finalize
1107
- finalized: Finalized
1108
- first_item: First Item
1109
913
  first_name: First Name
1110
- firstname: First Name
1111
914
  flat_percent: Flat Percent
1112
915
  flat_rate_per_order: Flat Rate
1113
916
  flexible_rate: Flexible Rate
1114
- fonts: Fonts
1115
- footer: Footer
1116
- forbidden: Access denied
1117
917
  free: Free
1118
- free_shipping: Free Shipping
1119
- from: From
1120
- front_end: Front End
1121
918
  fulfillments:
1122
919
  errors:
1123
920
  backordered_units: This fulfillment holds backordered units and cannot be handed over yet
@@ -1125,7 +922,6 @@ en:
1125
922
  cannot_fulfill: This fulfillment cannot be fulfilled in its current status
1126
923
  cannot_mark_delivered: Only a fulfilled shipment can be marked delivered
1127
924
  cannot_purchase_label: Labels can only be bought before the fulfillment ships
1128
- cannot_resume: This fulfillment cannot be resumed in its current status
1129
925
  insufficient_quantity: Requested quantity (%{requested}) for item %{item} exceeds its unfulfilled quantity (%{available})
1130
926
  insufficient_stock_on_hand: This dispatch needs %{requested} of %{item} but only %{on_hand} are on hand at this location — correct the stock count or force the dispatch
1131
927
  invalid_cost: cost must be a non-negative number
@@ -1138,17 +934,13 @@ en:
1138
934
  order_draft: Draft orders cannot be fulfilled — complete the order first
1139
935
  order_not_completed: Fulfillments can only be created manually on completed orders
1140
936
  order_not_paid: This order is not paid for yet
1141
- provider_has_no_labels: This delivery method's provider does not produce labels
1142
937
  unknown_tracking_status: "%{status} is not a known tracking status"
1143
938
  gateway: Gateway
1144
939
  gateway_error: Gateway Error
1145
- general: General
1146
- generate_code: Generate coupon code
1147
940
  gift_card: Gift Card
1148
941
  gift_card_already_canceled: The Gift Card has already been canceled.
1149
942
  gift_card_already_redeemed: The Gift Card has already been redeemed.
1150
943
  gift_card_applied: The Gift Card was successfully applied to your order!
1151
- gift_card_batch: Gift Card Batch
1152
944
  gift_card_canceled: The Gift Card has been canceled.
1153
945
  gift_card_customer_not_logged_in: Gift Card cannot be applied with guest user.
1154
946
  gift_card_expired: The Gift Card has expired.
@@ -1160,24 +952,15 @@ en:
1160
952
  gift_card_not_found: The Gift Card was not found.
1161
953
  gift_card_removed: The Gift Card was successfully removed from your order
1162
954
  gift_card_using_store_credit_error: You can't apply the Gift Card after you applied the store credit.
1163
- gift_cards: Gift Cards
1164
- guest_checkout: Guest Checkout
1165
955
  guest_checkout_not_allowed: You must be signed in to complete checkout.
1166
- has_no_shipped_units: has no shipped units
1167
956
  height: Height
1168
- hide: Hide
1169
- home: Home
1170
957
  i18n:
1171
958
  this_file_language: English (US)
1172
- icon: Icon
1173
959
  idempotency_key_reused: This Idempotency-Key has already been used with different request parameters.
1174
960
  image: Image
1175
- images: Images
1176
- immediately: Immediately
1177
- implement_eligible_for_return: 'Must implement #eligible_for_return? for your EligibilityValidator.'
1178
- implement_requires_manual_intervention: 'Must implement #requires_manual_intervention? for your EligibilityValidator.'
1179
961
  import: Import
1180
962
  import_has_no_failed_rows: This import has no failed rows to retry.
963
+ import_invalid_number: "%{column} must be a number like 16.50, got %{value}."
1181
964
  import_mailer:
1182
965
  greeting: Hi %{user_name},
1183
966
  import_done:
@@ -1190,20 +973,12 @@ en:
1190
973
  import_not_processing: This import is not processing.
1191
974
  in_stock: In Stock
1192
975
  inactive: Inactive
1193
- incl: incl.
1194
- included_in_price: Included in Price
1195
976
  incomplete: Incomplete
1196
- instagram: Instagram
1197
- insufficient_stock: Insufficient stock available, only %{on_hand} remaining
977
+ insufficient_stock_for_reservation: "%{item} has only %{available} available"
1198
978
  insufficient_stock_lines_present: Some line items in this order have insufficient quantity.
1199
- integrations: Integrations
1200
979
  internal_note: Internal Note
1201
- internationalization: Internationalization
1202
- invalid_credit_card: Invalid credit card.
1203
- invalid_exchange_variant: Invalid exchange variant.
1204
980
  invalid_password: Invalid password.
1205
981
  inventory: Inventory
1206
- invitation_accepted: Invitation accepted!
1207
982
  invitation_already_accepted: This invitation has already been accepted.
1208
983
  invitation_expired: This invitation has expired. Invite them again to send a new one.
1209
984
  invitation_invitee_missing: This invitation has no invitee.
@@ -1216,117 +991,52 @@ en:
1216
991
  body: "%{inviter_name} has invited you to join %{resource_name}"
1217
992
  link_description: 'To accept this invitation, please click the link below:'
1218
993
  subject: Invitation to join %{resource_name}
1219
- thanks: Thank you,
1220
994
  invitation_not_acceptable: Invitation not found, expired, or already accepted.
1221
995
  invitation_role_resource_mismatch: must belong to the same store or seller as the invitation
1222
- invitations: Invitations
1223
- invited_by: Invited by
1224
996
  iso: ISO Alpha-2
1225
- iso3: ISO Alpha-3
1226
- iso_name: ISO Name
1227
997
  item: Item
1228
- item_description: Item Description
1229
- item_total: Item Total
1230
998
  items_cannot_be_shipped: We are unable to calculate shipping rates for the selected items.
1231
999
  key: Key
1232
1000
  kind: Kind
1233
1001
  label: Label
1234
- language: Language
1235
1002
  last_name: Last Name
1236
- lastname: Last Name
1237
1003
  line_item: Line Item
1238
- line_item_adjustments: Line item adjustments
1239
1004
  line_items: Line items
1240
1005
  link: Link
1241
- list: List
1242
- live: Live
1243
- loading: Loading
1244
1006
  locale: Locale
1245
1007
  locale_not_supported_by_store: is not supported by this store
1246
- location: Location
1247
- lock: Lock
1248
- logged_in_successfully: Logged in successfully
1249
- login: Login
1250
- logo: Logo
1251
- logout: Logout
1252
- logs: Logs
1253
- mail_from_address: Mail from address
1254
- mailer_logo: Mailer logo (JPG or PNG images only)
1255
- make_active_at: Make Active At
1008
+ locales_not_listed: 'includes locales Spree does not support: %{codes}'
1256
1009
  manual: Manual
1257
- manual_intervention_required: Manual intervention required
1258
1010
  market: Market
1259
- market_ids: Markets
1260
- markets: Markets
1261
- master: Master
1262
- master_price: Master Price
1263
- max: Max
1264
- max_items: Max Items
1265
- max_quantity: Max Quantity
1266
1011
  me_no_current_user: No admin user authenticated this request
1267
1012
  media: Media
1268
- memo: Memo
1269
1013
  meta_description: Meta Description
1270
1014
  meta_keywords: Meta Keywords
1271
1015
  meta_title: Meta Title
1272
1016
  metadata: Metadata
1273
- min: Min
1274
1017
  min_quantity: Min Quantity
1275
- minimal_amount: Minimal Amount
1276
1018
  month: Month
1277
- more: More
1278
- move: Move
1279
- my_account: My Account
1280
- my_orders: My Orders
1281
1019
  name: Name
1282
- name_or_sku: Name or SKU (enter at least first 3 characters of product name)
1283
- navigation: Navigation
1284
- never: Never
1285
- new: New
1286
- new_address: New address
1287
- new_image: New Image
1288
- new_order: New Order
1289
- new_order_notifications_email: New Order Notifications Email
1290
- new_price_list: New Price List
1291
- new_product: New Product
1292
- new_promotion: New Promotion
1293
- new_state: New State
1294
- new_user: New User
1295
1020
  new_variant: New Variant
1296
- newsletter_subscribers: Newsletter Subscribers
1297
- next: Next
1298
1021
  no_cc_type: N/A
1022
+ no_maximum: No maximum
1299
1023
  no_payment_found: No payment found
1300
1024
  no_refundable_payments: There is no payment left on this order to refund.
1301
- no_report_data: No report data
1302
1025
  none: None
1303
- normal_amount: Normal Amount
1304
- not: not
1305
- not_available: N/A
1306
- not_enough_stock: There is not enough inventory at the source location to complete this transfer.
1307
- not_found: "%{resource} is not found"
1308
1026
  not_received: This return cannot be refunded until its items are marked received.
1309
- note: Note
1310
1027
  nothing_to_refund: There is nothing left to refund on this return.
1311
1028
  number: Number
1312
- ok: OK
1313
1029
  on_hand: On Hand
1314
1030
  only_active_products_can_be_added_to_cart: Draft and archived products cannot be added to cart, please mark the product as active before.
1315
1031
  open: Open
1316
1032
  option_name: Option name
1317
1033
  option_type: Option Type
1318
- option_types: Option Types
1319
1034
  option_value: Option Value
1320
- option_values: Option Values
1321
- optional: Optional
1322
1035
  options: Options
1323
1036
  or: or
1324
1037
  order: Order
1325
1038
  order_canceled: Order canceled
1326
1039
  order_cannot_be_deleted: Completed orders and orders with settled payments cannot be deleted
1327
- order_not_found: We couldn't find your order. Please try that action again.
1328
- order_number: Order %{number}
1329
- order_resumed: Order resumed
1330
1040
  order_routing:
1331
1041
  strategies:
1332
1042
  legacy: Legacy
@@ -1342,34 +1052,22 @@ en:
1342
1052
  description: Fulfill from the location pinned on the order, when one is set
1343
1053
  name: Preferred location
1344
1054
  order_summary: Order Summary
1345
- order_total: Order Total
1346
1055
  orders: Orders
1347
- origin: Origin
1348
- other: Other
1349
1056
  out_of_stock: Out of Stock
1350
- outstanding_balance: Outstanding Balance
1351
1057
  package_types:
1352
1058
  default_name: Shipping box
1353
- page: Page
1354
- pages: Pages
1355
1059
  password: Password
1356
1060
  password_required_to_create_account: Password is required to create your account.
1357
1061
  path: Path
1358
- pay: Pay
1359
1062
  payment: Payment
1360
1063
  payment_method: Payment Method
1361
1064
  payment_method_not_supported: That payment method is unsupported. Please choose another one.
1362
1065
  payment_methods: Payment Methods
1363
1066
  payment_processing_failed: Payment could not be processed, please check the details you entered
1364
1067
  payment_source: Payment source
1365
- payment_state: Payment State
1366
- payment_total: Payment Total
1367
- payments: Payments
1368
1068
  pending: Pending
1369
1069
  percent: Percent
1370
1070
  percent_per_item: Percent Per Item
1371
- permalink: Permalink
1372
- permissions: Permissions
1373
1071
  permissions_catalog:
1374
1072
  groups:
1375
1073
  access: Access
@@ -1401,6 +1099,9 @@ en:
1401
1099
  dashboard:
1402
1100
  description: Sales and performance analytics
1403
1101
  label: Analytics dashboard
1102
+ email_templates:
1103
+ description: Customer email templates and the email layout
1104
+ label: Email templates
1404
1105
  fulfillments:
1405
1106
  description: Pack, ship and track order fulfillments
1406
1107
  label: Fulfillments
@@ -1443,18 +1144,10 @@ en:
1443
1144
  phone: Phone
1444
1145
  pickup:
1445
1146
  store_pickup: Store Pickup
1446
- po_document_invalid: A purchase order document must be a PDF, image or Word file of %{size} or less.
1447
- po_document_invalid_signed_id: The purchase order document reference is not valid.
1147
+ po_document_invalid: A purchase order document must be a PDF, image, Word document, spreadsheet or CSV file of %{size} or less.
1448
1148
  po_document_missing: This order has no attached purchase order document.
1449
1149
  po_document_too_large: is larger than %{size}.
1450
1150
  po_document_upload_incomplete: The purchase order document was not uploaded completely. Please try attaching it again.
1451
- policies: Policies
1452
- powered_by: Powered by
1453
- pre_tax_amount: Pre-Tax Amount
1454
- pre_tax_total: Pre-Tax Total
1455
- presentation: Presentation
1456
- preview: Preview
1457
- previous: Previous
1458
1151
  price: Price
1459
1152
  price_list_import_ambiguous_sku: More than one product in this store has the SKU %{sku}. Give each a SKU of its own before importing prices for it.
1460
1153
  price_list_import_failed: The price could not be written.
@@ -1466,7 +1159,6 @@ en:
1466
1159
  price_list_import_too_many_breaks: A variant can carry at most %{count} quantity breaks on one price list.
1467
1160
  price_list_import_unknown_sku: No product in this store has the SKU %{sku}.
1468
1161
  price_list_import_unsupported_currency: This store does not sell in %{currency}.
1469
- price_lists: Price Lists
1470
1162
  price_range: Price Range
1471
1163
  price_rules:
1472
1164
  channel_rule:
@@ -1475,19 +1167,14 @@ en:
1475
1167
  description: Apply pricing to specific customer groups
1476
1168
  price_sack: Price Sack
1477
1169
  prices: Prices
1478
- pricing: Pricing
1479
1170
  privacy_policy: Privacy Policy
1480
- process: Process
1481
1171
  processing: Processing
1482
1172
  product: Product
1483
- product_has_no_description: This product has no description
1484
- product_name: Product Name
1485
- product_properties: Product Properties
1173
+ product_import_unknown_stock_location: You have no stock location named %{name}.
1486
1174
  product_translations: Product Translations
1487
1175
  products: Products
1488
1176
  products_cannot_be_shipped: We cannot ship %{product_names} to your current location at the moment. Please change your shipping address or remove %{product_names} from your cart.
1489
1177
  promotion: Promotion
1490
- promotion_action: Promotion Action
1491
1178
  promotion_action_types:
1492
1179
  create_adjustment:
1493
1180
  description: Creates a promotion credit adjustment on the order
@@ -1503,9 +1190,7 @@ en:
1503
1190
  name: Free shipping
1504
1191
  promotion_actions: Actions
1505
1192
  promotion_already_used: You can not destroy promotion that was already applied
1506
- promotion_category: Promotion Category
1507
1193
  promotion_label: Promotion (%{name})
1508
- promotion_rule: Promotion Rule
1509
1194
  promotion_rule_types:
1510
1195
  category:
1511
1196
  description: Order includes products in specified categories
@@ -1546,13 +1231,7 @@ en:
1546
1231
  product:
1547
1232
  description: Order includes specified product(s)
1548
1233
  name: Product(s)
1549
- promotionable: Promotable
1550
1234
  promotions: Promotions
1551
- propagate_all_variants: Propagate all variants
1552
- properties: Properties
1553
- property: Property
1554
- provider: Provider
1555
- published_at: Published at
1556
1235
  purchase_order:
1557
1236
  errors:
1558
1237
  already_closed: This purchase order has already been received or cancelled
@@ -1581,33 +1260,21 @@ en:
1581
1260
  purchase_order_import_unknown_sku: No product in this store has the SKU %{sku}.
1582
1261
  purchase_order_import_unknown_supplier: This store has no supplier named %{name}. Add them first.
1583
1262
  purchase_order_import_unsupported_currency: This store does not buy in %{currency}.
1584
- qty: Qty
1585
1263
  quantity: Quantity
1586
1264
  query: Query
1587
- rate: Rate
1588
1265
  reason: Reason
1589
- receive: receive
1590
1266
  received: Received
1591
- reception_status: Reception Status
1592
1267
  reference: Reference
1593
1268
  refund: Refund
1594
1269
  refund_amount: Refund Amount
1270
+ refund_amount_negative: The refund amount cannot be negative.
1271
+ refund_amount_required: Enter an amount greater than zero, because the customer is still owed money on this return.
1595
1272
  refund_exceeds_balance: That is more than the amount still refundable.
1596
1273
  refunds: Refunds
1597
- register: Register
1598
1274
  registration: Registration
1599
- reimburse: Reimburse
1600
- reimbursed: Reimbursed
1601
- reject: Reject
1602
1275
  rejected: Rejected
1603
- remember_me: Remember me
1604
1276
  remove: Remove
1605
1277
  remove_gift_card_on_completed_order_error: You can't remove the gift card after the order was placed
1606
- rename: Rename
1607
- report: Report
1608
- report_names:
1609
- products_performance: Products performance
1610
- sales_total: Sales total
1611
1278
  reporting:
1612
1279
  dimensions:
1613
1280
  cart_channel:
@@ -1914,46 +1581,24 @@ en:
1914
1581
  partially_refunded: Partially refunded
1915
1582
  refunded: Refunded
1916
1583
  voided: Voided
1917
- reports: Reports
1918
- required: "*"
1919
- required_fields: required fields
1920
1584
  resellable: Resellable
1921
1585
  resend: Resend
1922
- reset_password: Reset my password
1923
- resource: Resource
1924
1586
  response_code: Response Code
1925
- resume: resume
1926
- resumed: Resumed
1927
1587
  return: return
1928
1588
  return_errors:
1929
1589
  outside_window: This order is outside the %{days}-day return window
1930
- return_quantity: Return Quantity
1931
1590
  returned: Returned
1932
- returns: Returns
1933
1591
  returns_policy: Returns Policy
1934
- review: Review
1935
- risk: Risk
1936
- risky: Risky
1937
1592
  role_cannot_be_deleted: This role is protected or still referenced by staff members or pending invitations and cannot be deleted
1938
- role_id: Role ID
1939
1593
  role_immutable: cannot be changed on a protected role
1940
1594
  role_permissions_not_grantable_for_audience: 'cannot be granted to a %{audience} role: %{keys}'
1941
1595
  role_permissions_unknown: 'contains unknown permissions: %{keys}'
1942
1596
  role_resource_immutable: cannot be changed once the role exists
1943
- roles: Roles
1944
1597
  row: Row
1945
1598
  rules: Rules
1946
- safe: Safe
1947
- sale: Sale
1948
- sales_total: Sales Total
1949
- saving: Saving
1950
1599
  say_no: 'No'
1951
1600
  say_yes: 'Yes'
1952
1601
  scope: Scope
1953
- scopes: Scopes
1954
- search: Search
1955
- search_by: 'Search by:'
1956
- security: Security
1957
1602
  seed:
1958
1603
  commission_rates:
1959
1604
  marketplace_default: Marketplace default
@@ -1962,8 +1607,6 @@ en:
1962
1607
  product_types:
1963
1608
  default: Default
1964
1609
  digital: Digital
1965
- select: Select
1966
- select_stock: Select stock
1967
1610
  selected_quantity_not_available: selected of %{item} is not available.
1968
1611
  seller: Seller
1969
1612
  seller_access_denied: You do not have access to this seller.
@@ -2007,9 +1650,10 @@ en:
2007
1650
  description: The address customer returns are sent to
2008
1651
  name: Returns address
2009
1652
  seller_requirements:
1653
+ custom_field_not_for_sellers: must be a custom field defined for sellers
2010
1654
  file_required: A file is required for this requirement
2011
- file_type_not_accepted: This requirement accepts %{types}
2012
1655
  incomplete: "%{name} is not complete"
1656
+ invalid_terms_effective_from: Terms effective from is not a date
2013
1657
  seller_submission_no_file: This submission has no attached file.
2014
1658
  seller_team_last_member: A seller needs at least one team member. Invite someone else before removing this one.
2015
1659
  seller_user_mailer:
@@ -2020,30 +1664,20 @@ en:
2020
1664
  ignore_notice: If you did not request a password reset, you can safely ignore this email. Your password will not be changed.
2021
1665
  instructions: We received a request to reset the password for your %{store_name} seller account. Click the button below to choose a new password.
2022
1666
  subject: Password Reset Instructions
2023
- send_consumer_transactional_emails: Send Customer Transactional Emails
2024
- seo: SEO
2025
- seo_title: SEO Title
2026
- server: Server
2027
- settings: Settings
2028
1667
  ship: Ship
2029
1668
  ship_address: Ship Address
2030
- ship_to: 'Shipping to:'
2031
- ship_total: Ship Total
2032
1669
  shipment: Shipment
2033
- shipment_adjustments: Shipment adjustments
2034
- shipment_state: Shipment State
2035
- shipments: Shipments
2036
1670
  shipped: Shipped
2037
1671
  shipping: Shipping
2038
1672
  shipping_address: Shipping Address
2039
1673
  shipping_flat_rate_per_item: Flat rate per package item
2040
1674
  shipping_flat_rate_per_order: Flat rate
2041
1675
  shipping_flexible_rate: Flexible Rate per package item
2042
- shipping_instructions: Shipping Instructions
2043
1676
  shipping_labels:
2044
1677
  errors:
2045
1678
  already_purchased: This parcel already has an active shipping label
2046
1679
  file_fetch_failed: The label file could not be fetched from the carrier (HTTP %{status})
1680
+ file_renamed: Send the uploaded label's signed id as file_signed_id
2047
1681
  file_required: An uploaded label needs a file
2048
1682
  no_file_url: The carrier did not provide a file for this label
2049
1683
  not_refund_requested: Only a label awaiting the carrier's refund decision can be confirmed refunded
@@ -2054,44 +1688,20 @@ en:
2054
1688
  return_closed: A return label can only be bought while the return is open
2055
1689
  tracking_number_required: An uploaded label needs its tracking number
2056
1690
  uploaded_not_refundable: An uploaded label was not bought through Spree and cannot be refunded — delete it instead
2057
- shipping_method: Shipping Method
2058
- shipping_methods: Shipping Methods
2059
1691
  shipping_policy: Shipping Policy
2060
1692
  shipping_price_sack: Price sack
2061
1693
  shipping_rates:
2062
1694
  display_price:
2063
1695
  excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
2064
1696
  including_tax: "%{price} (incl. %{tax_amount} %{tax_rate_name})"
2065
- shipping_zone: Shipping Zone
2066
- shopping_cart: Shopping Cart
2067
- show: Show
2068
- show_deleted: Show Deleted
2069
- show_discontinued: Show Discontinued
2070
- show_only_complete_orders: Only show complete orders
2071
- show_rate_in_label: Show rate in label
2072
- sign_up: Sign Up
2073
- site_name: Site name
2074
- size: Size
2075
1697
  sku: SKU
2076
- skus: SKUs
2077
1698
  slug: Slug
2078
- social: Social
2079
1699
  sort_a_to_z: A-Z
2080
- sort_by: Sort by
2081
1700
  sort_high_to_low: high-low
2082
1701
  sort_low_to_high: low-high
2083
1702
  sort_z_to_a: Z-A
2084
1703
  source: Source
2085
- special_instructions: Special Instructions
2086
- split: Split
2087
- square_image: Square image
2088
- start: Start
2089
- starts_at: Starts at
2090
- state: State
2091
- states: States
2092
- states_required: States Required
2093
1704
  status: Status
2094
- stock: Stock
2095
1705
  stock_level:
2096
1706
  errors:
2097
1707
  adjustment_exclusive_with_count_on_hand: Send either a count on hand or an adjustment, not both
@@ -2111,20 +1721,13 @@ en:
2111
1721
  received: Received
2112
1722
  return_restock: Return restock
2113
1723
  theft_or_loss: Theft or loss
2114
- stock_movements: Stock Movements
2115
1724
  stock_receipt:
2116
1725
  errors:
2117
1726
  nothing_counted: A line on a delivery must count at least one unit, accepted or rejected
2118
- rejection_reasons:
2119
- damaged: Damaged
2120
- expired: Expired
2121
- other: Other
2122
- wrong_item: Wrong item
2123
1727
  stock_transfer:
2124
1728
  errors:
2125
1729
  already_closed: This transfer has already been completed or cancelled
2126
1730
  in_transit_resolution_required: Choose whether the units come back to the source warehouse or are written off
2127
- invalid_quantity: Every variant must move a quantity above zero
2128
1731
  invalid_receipt_quantity: The quantities for %{variant} cannot be negative
2129
1732
  item_not_on_document: One of the lines does not belong to this transfer
2130
1733
  locations_in_different_stores: must belong to the same store as the source location
@@ -2140,7 +1743,6 @@ en:
2140
1743
  repeated_item: "%{variant} was listed more than once. Send one entry per line, with what this delivery brought"
2141
1744
  same_location: cannot be the same as the destination location
2142
1745
  variants_unavailable: Some variants are not available on %{stock}
2143
- stop: Stop
2144
1746
  store: Store
2145
1747
  store_credit:
2146
1748
  allocated: Added
@@ -2148,7 +1750,6 @@ en:
2148
1750
  captured: Used
2149
1751
  credit: Credit
2150
1752
  eligible: Eligible
2151
- store_credit_events: Store Credit Events
2152
1753
  store_credit_name: Store Credit
2153
1754
  store_credit_payment_method:
2154
1755
  currency_mismatch: Store credit currency does not match order currency
@@ -2159,19 +1760,8 @@ en:
2159
1760
  unable_to_find: Could not find store credit
2160
1761
  unable_to_find_for_action: 'Could not find store credit for auth code: %{auth_code} for action: %{action}'
2161
1762
  unable_to_void: 'Unable to void code: %{auth_code}'
2162
- store_credits: Store Credits
2163
- store_default: Default store
2164
- store_name: Store name
2165
- stores: Stores
2166
- street_address: Street Address
2167
- subscribed: Subscribed
2168
- subtotal: Subtotal
2169
- subtract: Subtract
1763
+ store_credit_using_gift_card_error: You can't apply store credit after you applied a gift card.
2170
1764
  success: Success
2171
- summary: Summary
2172
- support: Support
2173
- supported_currencies: Supported Currencies
2174
- supported_locales: Supported Locales
2175
1765
  tags: Tags
2176
1766
  tax: Tax
2177
1767
  tax_capabilities:
@@ -2188,74 +1778,36 @@ en:
2188
1778
  description: County, city and district rates are not applied — only the rates configured per country or state. Sales into US states that levy local tax will be under-collected.
2189
1779
  label: US local tax
2190
1780
  tax_category: Tax Category
2191
- tax_code: Tax Code
2192
1781
  tax_identifier_kinds:
2193
1782
  au_abn: Australian Business Number
2194
1783
  ch_vat: Swiss VAT
2195
1784
  eu_vat: EU VAT
2196
1785
  gb_vat: UK VAT
2197
1786
  us_ein: US EIN
2198
- tax_inclusive: Tax inclusive
2199
- tax_rates: Tax Rates
2200
- taxes: Taxes
2201
- taxon: Taxon
2202
- taxonomies: Categories
2203
- taxonomy: Category
2204
- taxonomy_brands_name: Brands
2205
- taxonomy_categories_name: Categories
2206
- taxonomy_collections_name: Collections
2207
- taxons: Categories
1787
+ tax_provider_unavailable: The tax service could not work out the tax to give back. Try again in a few minutes.
2208
1788
  terms_of_service: Terms of Service
2209
- test: Test
2210
- test_mode: Test Mode
2211
- theme: Theme
2212
- themes: Themes
2213
1789
  there_are_no_items_for_this_order: There are no items for this order
2214
- thumbnail: Thumbnail
2215
1790
  tiered_flat_rate: Tiered Flat Rate
2216
1791
  tiered_percent: Tiered Percent
2217
- tiers: Tiers
2218
- time: Time
2219
- timezone: Timezone
2220
- title: Title
2221
- to: To
2222
1792
  total: Total
2223
1793
  track_inventory: Track Inventory
2224
1794
  tracking: Tracking
2225
1795
  tracking_number: Tracking Number
2226
1796
  tracking_url: Tracking URL
2227
- transaction_id: Transaction ID
2228
- transfer_to_location: Transfer To
2229
- translations: Translations
2230
- tree: Tree
2231
- twitter: Twitter
2232
1797
  type: Type
2233
1798
  unable_to_connect_to_gateway: Unable to connect to gateway.
2234
- unit: Unit
2235
- unit_system: Unit system
2236
- unlimited: Unlimited
2237
- update: Update
2238
1799
  updated_at: Updated at
2239
- updating: Updating
1800
+ upload_reference_invalid: A signed reference in this request is invalid or has expired. For a file, upload it again.
1801
+ upload_wrong_visibility: must be uploaded with %{visibility} visibility
2240
1802
  url: URL
2241
- usage_limit: Usage Limit
2242
- used: Used
2243
1803
  user: User
2244
- user_ids: Users
2245
- users: Users
2246
1804
  validation:
2247
1805
  must_be_int: must be an integer
2248
- unpaid_amount_not_zero: 'Amount was not fully reimbursed. Still due: %{amount}'
2249
1806
  value: Value
2250
1807
  variant: Variant
2251
1808
  variants: Variants
2252
1809
  verified: Verified
2253
- verified_at: Verified at
2254
- version: Version
2255
- view: View
2256
- visibility: Visibility
2257
1810
  void: Void
2258
- webhook_endpoints: Webhook Endpoints
2259
1811
  webhook_mailer:
2260
1812
  endpoint_disabled:
2261
1813
  disabled_at_label: Disabled at
@@ -2266,18 +1818,8 @@ en:
2266
1818
  reason_label: Reason
2267
1819
  subject: 'Webhook endpoint disabled: %{endpoint_name}'
2268
1820
  url_label: URL
2269
- webhooks: Webhooks
2270
1821
  weight: Weight
2271
1822
  weight_unit: Weight unit
2272
1823
  width: Width
2273
- wishlist: Wishlist
2274
1824
  year: Year
2275
1825
  zip: Zip
2276
- zipcode: Zip Code
2277
- zipcode_required: Zip Code Required
2278
- zone: Zone
2279
- zone_ids: Zones
2280
- zones: Zones
2281
- views:
2282
- pagination:
2283
- truncate: Truncate