spree_core 6.0.0.beta3 → 6.0.0.rc1

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 (495) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  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/seller_payouts/sweep_seller_job.rb +2 -0
  10. data/app/mailers/spree/admin_user_mailer.rb +4 -19
  11. data/app/mailers/spree/base_mailer.rb +96 -13
  12. data/app/mailers/spree/email_template_mailer.rb +27 -0
  13. data/app/mailers/spree/export_mailer.rb +3 -4
  14. data/app/mailers/spree/import_mailer.rb +3 -4
  15. data/app/mailers/spree/invitation_mailer.rb +24 -7
  16. data/app/mailers/spree/seller_user_mailer.rb +4 -16
  17. data/app/mailers/spree/webhook_mailer.rb +2 -2
  18. data/app/models/concerns/spree/acted_by.rb +1 -1
  19. data/app/models/concerns/spree/admin_user_methods.rb +13 -1
  20. data/app/models/concerns/spree/api_typed.rb +91 -0
  21. data/app/models/concerns/spree/calculator/tiers.rb +76 -0
  22. data/app/models/concerns/spree/customer_methods.rb +15 -14
  23. data/app/models/concerns/spree/email_template_identity.rb +52 -0
  24. data/app/models/concerns/spree/parameterizable_name.rb +2 -0
  25. data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
  26. data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
  27. data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
  28. data/app/models/concerns/spree/preference_schema.rb +4 -12
  29. data/app/models/concerns/spree/product_scopes.rb +11 -1
  30. data/app/models/concerns/spree/provider_listing.rb +41 -0
  31. data/app/models/concerns/spree/publishable.rb +82 -14
  32. data/app/models/concerns/spree/purchase/addresses.rb +23 -10
  33. data/app/models/concerns/spree/purchase/currency.rb +1 -1
  34. data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
  35. data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
  36. data/app/models/concerns/spree/purchase/locale.rb +1 -1
  37. data/app/models/concerns/spree/purchase/payment_processing.rb +7 -3
  38. data/app/models/concerns/spree/purchase/purchase_order.rb +2 -2
  39. data/app/models/concerns/spree/purchase/totals.rb +49 -1
  40. data/app/models/concerns/spree/receivable.rb +1 -1
  41. data/app/models/concerns/spree/searchable.rb +0 -4
  42. data/app/models/concerns/spree/secret_preferences.rb +59 -0
  43. data/app/models/concerns/spree/single_store_resource.rb +1 -1
  44. data/app/models/concerns/spree/stores/email_branding.rb +31 -0
  45. data/app/models/concerns/spree/type_labels.rb +38 -0
  46. data/app/models/concerns/spree/typed_adjustment_line.rb +1 -1
  47. data/app/models/concerns/spree/typed_associations.rb +6 -0
  48. data/app/models/spree/address.rb +11 -1
  49. data/app/models/spree/adjusters/promotion.rb +1 -15
  50. data/app/models/spree/allowed_origin.rb +0 -1
  51. data/app/models/spree/api_key.rb +5 -6
  52. data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
  53. data/app/models/spree/base.rb +70 -22
  54. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -3
  55. data/app/models/spree/calculator/flat_rate.rb +1 -3
  56. data/app/models/spree/calculator/flexi_rate.rb +1 -3
  57. data/app/models/spree/calculator/percent_on_line_item.rb +1 -1
  58. data/app/models/spree/calculator/price_sack.rb +1 -3
  59. data/app/models/spree/calculator/shipping/digital_delivery.rb +1 -3
  60. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -3
  61. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -3
  62. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -3
  63. data/app/models/spree/calculator/shipping/per_item.rb +1 -3
  64. data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
  65. data/app/models/spree/calculator/tiered_flat_rate.rb +6 -23
  66. data/app/models/spree/calculator/tiered_percent.rb +7 -25
  67. data/app/models/spree/cart.rb +78 -18
  68. data/app/models/spree/channel/gating.rb +1 -1
  69. data/app/models/spree/channel.rb +4 -4
  70. data/app/models/spree/claim.rb +21 -1
  71. data/app/models/spree/claim_line_item.rb +41 -6
  72. data/app/models/spree/collection.rb +0 -1
  73. data/app/models/spree/collection_rule.rb +5 -21
  74. data/app/models/spree/commission_line.rb +1 -1
  75. data/app/models/spree/commission_rate.rb +2 -3
  76. data/app/models/spree/commission_rate_value.rb +1 -1
  77. data/app/models/spree/commission_rule.rb +4 -11
  78. data/app/models/spree/commission_rules/product_rule.rb +1 -1
  79. data/app/models/spree/company_invitation.rb +1 -0
  80. data/app/models/spree/consent_record.rb +0 -1
  81. data/app/models/spree/credit_card.rb +1 -1
  82. data/app/models/spree/current.rb +23 -0
  83. data/app/models/spree/custom_field.rb +2 -2
  84. data/app/models/spree/custom_field_definition.rb +9 -23
  85. data/app/models/spree/custom_fields/boolean.rb +1 -1
  86. data/app/models/spree/custom_fields/json.rb +1 -1
  87. data/app/models/spree/data_feed/google.rb +0 -2
  88. data/app/models/spree/data_request.rb +1 -1
  89. data/app/models/spree/delivery_method.rb +30 -13
  90. data/app/models/spree/delivery_method_rule.rb +4 -11
  91. data/app/models/spree/delivery_rate.rb +4 -5
  92. data/app/models/spree/delivery_rate_provider/base.rb +1 -0
  93. data/app/models/spree/delivery_zone.rb +0 -1
  94. data/app/models/spree/delivery_zone_member.rb +4 -4
  95. data/app/models/spree/digital_asset.rb +7 -0
  96. data/app/models/spree/digital_asset_provider/base.rb +2 -0
  97. data/app/models/spree/digital_link.rb +2 -5
  98. data/app/models/spree/discount.rb +1 -1
  99. data/app/models/spree/email_template.rb +25 -0
  100. data/app/models/spree/email_template_draft.rb +13 -0
  101. data/app/models/spree/email_template_revision.rb +17 -0
  102. data/app/models/spree/email_templates/entry.rb +118 -0
  103. data/app/models/spree/email_templates/sample_record.rb +16 -0
  104. data/app/models/spree/emails/branding.rb +80 -0
  105. data/app/models/spree/exchange.rb +15 -1
  106. data/app/models/spree/exchange_line_item.rb +121 -5
  107. data/app/models/spree/export.rb +0 -1
  108. data/app/models/spree/exports/products.rb +10 -1
  109. data/app/models/spree/exports/report.rb +1 -1
  110. data/app/models/spree/fee.rb +4 -2
  111. data/app/models/spree/fulfillment.rb +53 -27
  112. data/app/models/spree/fulfillment_changer.rb +2 -2
  113. data/app/models/spree/fulfillment_item.rb +0 -4
  114. data/app/models/spree/fulfillment_provider/base.rb +1 -0
  115. data/app/models/spree/gateway/bogus.rb +4 -0
  116. data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
  117. data/app/models/spree/gateway.rb +5 -1
  118. data/app/models/spree/gift_card.rb +12 -1
  119. data/app/models/spree/gift_card_batch.rb +0 -1
  120. data/app/models/spree/import.rb +2 -7
  121. data/app/models/spree/import_mapping.rb +1 -2
  122. data/app/models/spree/import_row.rb +2 -2
  123. data/app/models/spree/import_schemas/products.rb +1 -0
  124. data/app/models/spree/integration.rb +8 -18
  125. data/app/models/spree/invitation.rb +5 -5
  126. data/app/models/spree/line_item.rb +13 -2
  127. data/app/models/spree/locale.rb +11 -8
  128. data/app/models/spree/market.rb +1 -0
  129. data/app/models/spree/newsletter_subscriber.rb +3 -0
  130. data/app/models/spree/order.rb +56 -138
  131. data/app/models/spree/order_group.rb +11 -2
  132. data/app/models/spree/order_inventory.rb +10 -5
  133. data/app/models/spree/order_promotion.rb +1 -1
  134. data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
  135. data/app/models/spree/order_routing/strategy/base.rb +4 -2
  136. data/app/models/spree/order_routing/strategy/rules.rb +1 -1
  137. data/app/models/spree/order_routing_rule.rb +6 -22
  138. data/app/models/spree/package_type.rb +1 -2
  139. data/app/models/spree/payment/gateway_options.rb +14 -52
  140. data/app/models/spree/payment/processing.rb +2 -4
  141. data/app/models/spree/payment.rb +20 -5
  142. data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
  143. data/app/models/spree/payment_method/store_credit.rb +4 -4
  144. data/app/models/spree/payment_method.rb +36 -4
  145. data/app/models/spree/payment_session.rb +5 -1
  146. data/app/models/spree/payment_setup_session.rb +1 -0
  147. data/app/models/spree/payout_provider/base.rb +3 -1
  148. data/app/models/spree/pickup_point_provider/base.rb +2 -0
  149. data/app/models/spree/price_list.rb +1 -2
  150. data/app/models/spree/price_rules/channel_rule.rb +1 -1
  151. data/app/models/spree/price_rules/customer_group_rule.rb +1 -1
  152. data/app/models/spree/product.rb +31 -7
  153. data/app/models/spree/product_submission.rb +0 -12
  154. data/app/models/spree/product_type.rb +0 -1
  155. data/app/models/spree/promotion/actions/create_line_items.rb +27 -17
  156. data/app/models/spree/promotion/rules/category.rb +0 -4
  157. data/app/models/spree/promotion/rules/channel.rb +0 -4
  158. data/app/models/spree/promotion/rules/country.rb +0 -4
  159. data/app/models/spree/promotion/rules/currency.rb +0 -4
  160. data/app/models/spree/promotion/rules/customer_group.rb +0 -4
  161. data/app/models/spree/promotion/rules/first_order.rb +0 -4
  162. data/app/models/spree/promotion/rules/item_total.rb +4 -8
  163. data/app/models/spree/promotion/rules/market.rb +0 -4
  164. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
  165. data/app/models/spree/promotion/rules/option_value.rb +0 -3
  166. data/app/models/spree/promotion/rules/product.rb +0 -4
  167. data/app/models/spree/promotion/rules/user.rb +0 -4
  168. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
  169. data/app/models/spree/promotion.rb +35 -6
  170. data/app/models/spree/promotion_action.rb +7 -14
  171. data/app/models/spree/promotion_action_line_item.rb +1 -1
  172. data/app/models/spree/promotion_handler/coupon.rb +59 -27
  173. data/app/models/spree/promotion_rule.rb +7 -14
  174. data/app/models/spree/purchase_order.rb +1 -0
  175. data/app/models/spree/quantity_rule.rb +1 -1
  176. data/app/models/spree/refund.rb +28 -3
  177. data/app/models/spree/return.rb +30 -2
  178. data/app/models/spree/return_line_item.rb +65 -14
  179. data/app/models/spree/role.rb +7 -7
  180. data/app/models/spree/saved_report.rb +1 -1
  181. data/app/models/spree/seller.rb +2 -1
  182. data/app/models/spree/seller_payout.rb +7 -0
  183. data/app/models/spree/seller_requirement.rb +4 -12
  184. data/app/models/spree/seller_requirement_custom_field.rb +1 -2
  185. data/app/models/spree/seller_requirement_submission.rb +2 -2
  186. data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
  187. data/app/models/spree/seller_transfer.rb +5 -0
  188. data/app/models/spree/shipping_label.rb +1 -0
  189. data/app/models/spree/stock/availability_validator.rb +2 -2
  190. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  191. data/app/models/spree/stock/packer.rb +2 -2
  192. data/app/models/spree/stock/splitter/weight.rb +1 -1
  193. data/app/models/spree/stock_level/custom_events.rb +6 -0
  194. data/app/models/spree/stock_level.rb +1 -1
  195. data/app/models/spree/stock_movement.rb +1 -1
  196. data/app/models/spree/stock_receipt_item.rb +1 -1
  197. data/app/models/spree/stock_reservation.rb +2 -2
  198. data/app/models/spree/stock_transfer.rb +4 -2
  199. data/app/models/spree/store.rb +33 -7
  200. data/app/models/spree/store_credit.rb +8 -9
  201. data/app/models/spree/store_credit_event.rb +5 -5
  202. data/app/models/spree/tax_exemption_certificate.rb +2 -0
  203. data/app/models/spree/tax_identifier.rb +3 -1
  204. data/app/models/spree/tax_line.rb +53 -3
  205. data/app/models/spree/tax_provider/base.rb +71 -14
  206. data/app/models/spree/tax_provider/internal.rb +59 -33
  207. data/app/models/spree/tax_provider/recorded_share.rb +114 -0
  208. data/app/models/spree/tax_rate.rb +1 -2
  209. data/app/models/spree/taxonomy.rb +0 -1
  210. data/app/models/spree/variant.rb +4 -3
  211. data/app/models/spree/variant_media.rb +1 -1
  212. data/app/models/spree/webhook_endpoint.rb +10 -13
  213. data/app/models/spree/wishlist.rb +1 -6
  214. data/app/models/spree/wishlist_item/custom_events.rb +6 -0
  215. data/app/presenters/spree/csv/customer_presenter.rb +1 -1
  216. data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
  217. data/app/presenters/spree/csv/order_line_item_presenter.rb +1 -1
  218. data/app/presenters/spree/csv/product_variant_presenter.rb +42 -12
  219. data/app/serializers/spree/emails/base_serializer.rb +14 -0
  220. data/app/serializers/spree/emails/export_serializer.rb +13 -0
  221. data/app/serializers/spree/emails/import_serializer.rb +19 -0
  222. data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
  223. data/app/serializers/spree/emails/store_serializer.rb +31 -0
  224. data/app/serializers/spree/emails/user_serializer.rb +12 -0
  225. data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
  226. data/app/services/spree/carts/create.rb +8 -2
  227. data/app/services/spree/carts/destroy.rb +2 -2
  228. data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
  229. data/app/services/spree/carts/split_by_seller.rb +1 -1
  230. data/app/services/spree/carts/update.rb +19 -5
  231. data/app/services/spree/catalogs/set_product_terms.rb +1 -1
  232. data/app/services/spree/categories/add_products.rb +13 -31
  233. data/app/services/spree/categories/remove_products.rb +12 -51
  234. data/app/services/spree/checkout/advance.rb +1 -4
  235. data/app/services/spree/collections/add_products.rb +10 -23
  236. data/app/services/spree/collections/remove_products.rb +7 -43
  237. data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
  238. data/app/services/spree/data_requests/create.rb +1 -1
  239. data/app/services/spree/deliveries/destroy.rb +2 -2
  240. data/app/services/spree/email_templates/check.rb +58 -0
  241. data/app/services/spree/email_templates/no_sample_record.rb +7 -0
  242. data/app/services/spree/email_templates/preview.rb +99 -0
  243. data/app/services/spree/emails/file_system.rb +23 -0
  244. data/app/services/spree/emails/filters.rb +84 -0
  245. data/app/services/spree/emails/liquid_context.rb +48 -0
  246. data/app/services/spree/emails/rendered_email.rb +14 -0
  247. data/app/services/spree/emails/renderer.rb +125 -0
  248. data/app/services/spree/emails/template.rb +51 -0
  249. data/app/services/spree/emails/template_data.rb +23 -0
  250. data/app/services/spree/emails/template_resolver.rb +109 -0
  251. data/app/services/spree/emails/text_converter.rb +72 -0
  252. data/app/services/spree/emails/translation_inliner.rb +134 -0
  253. data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
  254. data/app/services/spree/imports/row_processors/product_variant.rb +65 -34
  255. data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
  256. data/app/services/spree/locales.rb +4 -5
  257. data/app/services/spree/newsletter/subscribe.rb +8 -12
  258. data/app/services/spree/orders/build_fulfillments.rb +3 -2
  259. data/app/services/spree/orders/create.rb +2 -1
  260. data/app/services/spree/orders/discounts/create.rb +7 -4
  261. data/app/services/spree/orders/discounts/destroy.rb +1 -0
  262. data/app/services/spree/orders/discounts/update.rb +1 -0
  263. data/app/services/spree/orders/fees/create.rb +1 -0
  264. data/app/services/spree/orders/fees/destroy.rb +1 -0
  265. data/app/services/spree/orders/fees/update.rb +1 -0
  266. data/app/services/spree/orders/remove_line_item.rb +13 -3
  267. data/app/services/spree/orders/update.rb +10 -6
  268. data/app/services/spree/orders/update_item.rb +6 -3
  269. data/app/services/spree/orders/update_statuses.rb +3 -1
  270. data/app/services/spree/product_memberships.rb +61 -0
  271. data/app/services/spree/returns/eligibility_validator.rb +1 -1
  272. data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
  273. data/app/services/spree/seeds/commission_rates.rb +1 -1
  274. data/app/services/spree/seeds/digital_delivery.rb +1 -1
  275. data/app/services/spree/seeds/payment_methods.rb +2 -2
  276. data/app/services/spree/seeds/saved_reports.rb +3 -3
  277. data/app/services/spree/sellers/requirements.rb +1 -2
  278. data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
  279. data/app/services/spree/shipping_labels/store_file.rb +3 -3
  280. data/app/services/spree/stock_levels/correct.rb +3 -3
  281. data/app/services/spree/stock_reservations/reserve.rb +2 -3
  282. data/app/services/spree/store_credits/apply.rb +15 -13
  283. data/app/services/spree/stores/provision_defaults.rb +15 -14
  284. data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
  285. data/app/views/layouts/spree/base_mailer.html.erb +2 -43
  286. data/app/views/layouts/spree/base_mailer.liquid +79 -0
  287. data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
  288. data/app/views/spree/export_mailer/export_done.liquid +12 -0
  289. data/app/views/spree/import_mailer/import_done.liquid +15 -0
  290. data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
  291. data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
  292. data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
  293. data/app/views/spree/shared/_mailer_button.html.erb +4 -5
  294. data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
  295. data/app/views/spree/shared/_summary_row.liquid +8 -0
  296. data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
  297. data/app/workflows/spree/carts/add_item.rb +4 -4
  298. data/app/workflows/spree/carts/complete.rb +13 -3
  299. data/app/workflows/spree/carts/merge.rb +1 -1
  300. data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
  301. data/app/workflows/spree/carts/upsert_items.rb +18 -9
  302. data/app/workflows/spree/claims/approve.rb +5 -22
  303. data/app/workflows/spree/claims/cancel.rb +5 -21
  304. data/app/workflows/spree/claims/create.rb +15 -0
  305. data/app/workflows/spree/claims/deny.rb +7 -0
  306. data/app/workflows/spree/claims/resolve.rb +34 -31
  307. data/app/workflows/spree/customers/anonymize.rb +3 -4
  308. data/app/workflows/spree/customers/create.rb +1 -1
  309. data/app/workflows/spree/data_requests/fulfill.rb +2 -2
  310. data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
  311. data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
  312. data/app/workflows/spree/email_templates/publish.rb +70 -0
  313. data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
  314. data/app/workflows/spree/email_templates/revert.rb +29 -0
  315. data/app/workflows/spree/email_templates/save_draft.rb +85 -0
  316. data/app/workflows/spree/exchanges/approve.rb +5 -22
  317. data/app/workflows/spree/exchanges/cancel.rb +5 -21
  318. data/app/workflows/spree/exchanges/create.rb +6 -0
  319. data/app/workflows/spree/exchanges/fulfill.rb +75 -51
  320. data/app/workflows/spree/exchanges/receive.rb +6 -65
  321. data/app/workflows/spree/fulfillments/cancel.rb +1 -1
  322. data/app/workflows/spree/fulfillments/create.rb +51 -47
  323. data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
  324. data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
  325. data/app/workflows/spree/fulfillments/replacements.rb +59 -0
  326. data/app/workflows/spree/gift_cards/apply.rb +2 -2
  327. data/app/workflows/spree/orders/add_item.rb +5 -1
  328. data/app/workflows/spree/orders/cancel.rb +3 -3
  329. data/app/workflows/spree/orders/complete.rb +16 -8
  330. data/app/workflows/spree/payments/process.rb +2 -2
  331. data/app/workflows/spree/post_sale/approval.rb +35 -0
  332. data/app/workflows/spree/post_sale/cancellation.rb +44 -0
  333. data/app/workflows/spree/post_sale/receipt.rb +92 -0
  334. data/app/workflows/spree/products/nested_attributes.rb +1 -1
  335. data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
  336. data/app/workflows/spree/purchase_orders/close.rb +3 -31
  337. data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
  338. data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
  339. data/app/workflows/spree/purchase_orders/receive.rb +1 -1
  340. data/app/workflows/spree/purchase_orders/update.rb +5 -34
  341. data/app/workflows/spree/receivables/closing_short.rb +46 -0
  342. data/app/workflows/spree/receivables/draft_editing.rb +48 -0
  343. data/app/workflows/spree/refunds/create.rb +5 -2
  344. data/app/workflows/spree/refunds/order_payments.rb +14 -2
  345. data/app/workflows/spree/refunds/tax_credit.rb +67 -0
  346. data/app/workflows/spree/returns/approve.rb +5 -22
  347. data/app/workflows/spree/returns/cancel.rb +5 -22
  348. data/app/workflows/spree/returns/create.rb +8 -0
  349. data/app/workflows/spree/returns/receive.rb +5 -76
  350. data/app/workflows/spree/returns/refund.rb +31 -8
  351. data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
  352. data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
  353. data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
  354. data/app/workflows/spree/shipping_labels/record.rb +5 -5
  355. data/app/workflows/spree/shipping_labels/refund.rb +2 -2
  356. data/app/workflows/spree/stock_receipts/recording.rb +4 -4
  357. data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
  358. data/app/workflows/spree/stock_transfers/close.rb +3 -30
  359. data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
  360. data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
  361. data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
  362. data/app/workflows/spree/stock_transfers/receive.rb +1 -1
  363. data/app/workflows/spree/stock_transfers/update.rb +5 -33
  364. data/config/i18n-tasks.yml +32 -18
  365. data/config/initializers/alba.rb +7 -0
  366. data/config/language_names.csv +264 -0
  367. data/config/locales/ar.yml +811 -0
  368. data/config/locales/be.yml +855 -0
  369. data/config/locales/bg.yml +723 -0
  370. data/config/locales/ca.yml +689 -0
  371. data/config/locales/cs.yml +855 -0
  372. data/config/locales/da.yml +771 -0
  373. data/config/locales/de-CH.yml +248 -0
  374. data/config/locales/de.yml +835 -0
  375. data/config/locales/el.yml +769 -0
  376. data/config/locales/en.yml +37 -503
  377. data/config/locales/es-CL.yml +301 -0
  378. data/config/locales/es-EC.yml +186 -0
  379. data/config/locales/es-MX.yml +334 -0
  380. data/config/locales/es.yml +831 -0
  381. data/config/locales/et.yml +644 -0
  382. data/config/locales/fa.yml +709 -0
  383. data/config/locales/fi.yml +771 -0
  384. data/config/locales/fr.yml +830 -0
  385. data/config/locales/hu.yml +751 -0
  386. data/config/locales/id.yml +756 -0
  387. data/config/locales/it.yml +833 -0
  388. data/config/locales/ja.yml +726 -0
  389. data/config/locales/km.yml +759 -0
  390. data/config/locales/ko.yml +575 -0
  391. data/config/locales/ku.yml +753 -0
  392. data/config/locales/lt.yml +821 -0
  393. data/config/locales/lv.yml +685 -0
  394. data/config/locales/nb.yml +824 -0
  395. data/config/locales/ne.yml +823 -0
  396. data/config/locales/nl.yml +826 -0
  397. data/config/locales/pl.yml +835 -0
  398. data/config/locales/pt-BR.yml +547 -0
  399. data/config/locales/pt.yml +636 -0
  400. data/config/locales/ro.yml +750 -0
  401. data/config/locales/ru.yml +834 -0
  402. data/config/locales/sk.yml +680 -0
  403. data/config/locales/sl-SI.yml +600 -0
  404. data/config/locales/sv.yml +827 -0
  405. data/config/locales/th.yml +745 -0
  406. data/config/locales/tr.yml +777 -0
  407. data/config/locales/uk.yml +836 -0
  408. data/config/locales/vi.yml +768 -0
  409. data/config/locales/zh-CN.yml +786 -0
  410. data/config/locales/zh-TW.yml +834 -0
  411. data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
  412. data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
  413. data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
  414. data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
  415. data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
  416. data/lib/generators/spree/dummy/templates/rails/test.rb +7 -0
  417. data/lib/spree/checkout/default_requirements.rb +37 -13
  418. data/lib/spree/core/configuration.rb +1 -1
  419. data/lib/spree/core/controller_helpers/store.rb +1 -1
  420. data/lib/spree/core/dependencies.rb +5 -4
  421. data/lib/spree/core/emails/escaped_output.rb +60 -0
  422. data/lib/spree/core/engine.rb +48 -167
  423. data/lib/spree/core/permissions/default_catalog.rb +5 -0
  424. data/lib/spree/core/preferences/json_conversion.rb +182 -0
  425. data/lib/spree/core/preferences/masking.rb +4 -1
  426. data/lib/spree/core/preferences/preferable.rb +137 -83
  427. data/lib/spree/core/preferences/preferable_class_methods.rb +81 -146
  428. data/lib/spree/core/previews/import_preview.rb +10 -0
  429. data/lib/spree/core/tax/provider_error.rb +37 -0
  430. data/lib/spree/core/version.rb +1 -1
  431. data/lib/spree/core.rb +85 -370
  432. data/lib/spree/emails/editable_templates.rb +82 -0
  433. data/lib/spree/events/catalog.rb +189 -0
  434. data/lib/spree/events.rb +21 -1
  435. data/lib/spree/hooks.rb +0 -17
  436. data/lib/spree/i18n.rb +32 -15
  437. data/lib/spree/reporting/adapters/live.rb +6 -6
  438. data/lib/spree/reporting/default_vocabulary.rb +22 -10
  439. data/lib/spree/reporting/hydration.rb +1 -1
  440. data/lib/spree/reporting/query.rb +8 -0
  441. data/lib/spree/reporting/schema.rb +10 -10
  442. data/lib/spree/testing_support/editable_email_templates.rb +61 -0
  443. data/lib/spree/testing_support/emails.rb +22 -0
  444. data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
  445. data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
  446. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  447. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  448. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  449. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  450. data/lib/spree/testing_support/i18n.rb +3 -94
  451. data/lib/spree/testing_support/lifecycle_events.rb +1 -1
  452. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  453. data/lib/spree/testing_support/preferences.rb +0 -5
  454. data/lib/spree/testing_support/store.rb +9 -1
  455. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +45 -0
  456. data/lib/tasks/categories_and_collections.rake +3 -3
  457. data/lib/tasks/core.rake +6 -4
  458. data/lib/tasks/media.rake +3 -3
  459. data/lib/tasks/package_types.rake +1 -1
  460. data/lib/tasks/preferences_json.rake +101 -0
  461. data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
  462. metadata +188 -44
  463. data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
  464. data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
  465. data/app/models/spree/base_analytics_event_handler.rb +0 -54
  466. data/app/models/spree/invitations/store.rb +0 -6
  467. data/app/models/spree/preference.rb +0 -14
  468. data/app/models/spree/promotion_handler/page.rb +0 -25
  469. data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
  470. data/app/models/spree/stock/differentiator.rb +0 -45
  471. data/app/presenters/spree/filters/options_presenter.rb +0 -47
  472. data/app/services/spree/carts/empty.rb +0 -42
  473. data/app/services/spree/country_to_timezone.rb +0 -273
  474. data/app/services/spree/payments/create.rb +0 -92
  475. data/app/validators/spree/url_validator.rb +0 -23
  476. data/app/views/active_storage/blobs/_blob.html.erb +0 -14
  477. data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
  478. data/app/views/spree/export_mailer/export_done.html.erb +0 -7
  479. data/app/views/spree/import_mailer/import_done.html.erb +0 -12
  480. data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
  481. data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
  482. data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
  483. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
  484. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
  485. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
  486. data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
  487. data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
  488. data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
  489. data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
  490. data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
  491. data/app/workflows/spree/returns/purchase_label.rb +0 -32
  492. data/lib/spree/analytics.rb +0 -11
  493. data/lib/spree/core/preferences/scoped_store.rb +0 -34
  494. data/lib/spree/core/preferences/store.rb +0 -105
  495. data/lib/spree/translation_migrations.rb +0 -52
@@ -0,0 +1,855 @@
1
+ ---
2
+ be:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: не можа быць пустым
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Адрас
11
+ address2: Адрас (працяг.)
12
+ city: Населены пункт
13
+ company: Кампанія
14
+ country: Краіна
15
+ label: Назва адраса
16
+ phone: Тэлефон
17
+ state: Вобласць/Рэгіён
18
+ spree/calculator/tiered_flat_rate:
19
+ preferred_base_amount: Базавая сума
20
+ preferred_tiers: Узроўні
21
+ spree/calculator/tiered_percent:
22
+ preferred_base_percent: Базавы адсотак
23
+ preferred_tiers: Узроўні
24
+ spree/country:
25
+ iso: ISO
26
+ iso3: ISO3
27
+ iso_name: Назва згодна ISO
28
+ name: Назва
29
+ numcode: Код ISO
30
+ spree/credit_card:
31
+ cc_type: Тып
32
+ month: Месяц
33
+ name: Назва
34
+ number: Нумар
35
+ verification_value: Код праверкі (CVV/CVC)
36
+ year: Год
37
+ spree/customer_group:
38
+ description: Апісанне
39
+ name: Назва
40
+ spree/gift_card:
41
+ amount_used: Выкарыстаная сума
42
+ expires_at: Тэрмін дзеяння да
43
+ spree/import:
44
+ preferred_delimiter: Падзяляльнік
45
+ spree/import_mapping:
46
+ file_column: Слупок файла
47
+ schema_field: Поле схемы
48
+ spree/import_row:
49
+ row_number: Нумар
50
+ spree/inventory_unit:
51
+ state: Стан
52
+ spree/invitation:
53
+ inviter: Запрашальнік
54
+ spree/line_item:
55
+ price: Цана
56
+ quantity: Колькасць
57
+ spree/option_type:
58
+ filterable: Магчыма фільтраваць
59
+ kind: Тып
60
+ name: Назва
61
+ spree/option_value:
62
+ color_code: Код колеру
63
+ image: Выява ўзору
64
+ spree/order:
65
+ checkout_complete: Афармленне замовы завершана
66
+ completed_at: Завершана
67
+ considered_risky: Лічыцца рызыкоўным
68
+ coupon_code: Код купона
69
+ created_at: Дата замовы
70
+ email: E-mail пакупніка
71
+ internal_note: Унутраная нататка
72
+ ip_address: IP-адрас
73
+ item_count: Тавары
74
+ item_total: Разам
75
+ number: Нумар
76
+ payment_state: Стан аплаты
77
+ shipment_state: Стан дастаўкі
78
+ special_instructions: Дадатковыя інструкцыі
79
+ state: Стан
80
+ total: Усяго
81
+ spree/order/bill_address:
82
+ address1: Вуліца
83
+ city: Горад
84
+ phone: Тэлефон
85
+ state: Вобласць/Рэгіён
86
+ spree/order/ship_address:
87
+ address1: Вуліца
88
+ city: Горад
89
+ phone: Тэлефон
90
+ state: Вобласць/Рэгіён
91
+ spree/payment:
92
+ amount: Сума
93
+ number: Нумар
94
+ spree/payment_method:
95
+ name: Назва
96
+ spree/policy:
97
+ body: Змест
98
+ owner: Палітыка для
99
+ spree/price_list:
100
+ description: Апісанне
101
+ ends_at: Заканчваецца
102
+ match_policy: Палітыка супастаўлення
103
+ name: Назва
104
+ priority: Прыярытэт
105
+ starts_at: Пачынаецца
106
+ status: Статус
107
+ spree/price_rule:
108
+ priority: Прыярытэт
109
+ type: Тып
110
+ spree/product:
111
+ available_on: Даступны з
112
+ cost_currency: Валюта
113
+ cost_price: Сабекошт
114
+ description: Апісанне
115
+ discontinue_on: Спыніць продаж
116
+ less_than: Менш за
117
+ make_active_at: Зрабіць актыўным
118
+ master_price: Цана
119
+ more_than: Больш за
120
+ name: Назва
121
+ on_hand: У наяўнасці
122
+ tax_category: Падатковая катэгорыя
123
+ spree/promotion:
124
+ advertise: Рэкламаваць
125
+ code: Код купона
126
+ description: Апісанне
127
+ event_name: Назва падзеі
128
+ expires_at: Дата завяршэння прома-акцыі
129
+ generate_code: Згенераваць купонны код
130
+ name: Назва
131
+ path: Шлях
132
+ promotion_category: Катэгорыя акцыі
133
+ starts_at: Дата пачатку прома-акцыі
134
+ usage_limit: Ліміт выкарыстання
135
+ spree/promotion_category:
136
+ code: Код
137
+ name: Назва
138
+ spree/property:
139
+ name: Назва
140
+ presentation: Адлюстраваць як
141
+ spree/role:
142
+ name: Назва
143
+ spree/shipment:
144
+ number: Нумар
145
+ spree/state:
146
+ abbr: Абрэвіятура
147
+ name: Назва
148
+ spree/store:
149
+ address: Адрас
150
+ contact_phone: Кантактны тэлефон
151
+ mail_from_address: Адсылаць пошту як
152
+ meta_description: Метаапісанне
153
+ meta_keywords: Ключавыя словы
154
+ name: Назва сайта
155
+ preferred_digital_asset_authorized_clicks: Ліміт спампоўванняў
156
+ preferred_digital_asset_authorized_days: Ліміт дзён для спампоўвання
157
+ preferred_limit_digital_download_count: Абмежаваць колькасць спампоўванняў лічбавых спасылак
158
+ preferred_limit_digital_download_days: Абмежаваць дні спампоўвання лічбавых спасылак
159
+ seo_robots: SEO Robots
160
+ seo_title: SEO-загаловак
161
+ storefront_custom_code_body_end: Карыстальніцкі код перад закрыццём тэга body
162
+ storefront_custom_code_body_start: Карыстальніцкі код пасля адкрыцця тэга body
163
+ storefront_custom_code_head: Карыстальніцкі код у загалоўку старонкі
164
+ url: URL сайта
165
+ spree/store_credit:
166
+ amount_used: Выкарыстаная сума
167
+ spree/tax_category:
168
+ description: Апісанне
169
+ name: Назва
170
+ spree/tax_rate:
171
+ amount: Стаўка падатку
172
+ included_in_price: Уключана ў кошт
173
+ show_rate_in_label: Паказваць стаўку ў пазнацы
174
+ spree/taxon:
175
+ name: Назва
176
+ permalink: Пастаянная спасылка
177
+ position: Пазіцыя
178
+ sort_order: Парадак сартавання
179
+ spree/taxonomy:
180
+ name: Назва
181
+ spree/user:
182
+ avatar: Аватар
183
+ email: Email
184
+ password: Пароль
185
+ password_confirmation: Пацвярджэнне пароля
186
+ spree/variant:
187
+ cost_currency: Валюта
188
+ cost_price: Сабекошт
189
+ depth: Глыбіня
190
+ height: Вышыня
191
+ price: Цана
192
+ sku: Артыкул
193
+ weight: Вага
194
+ width: Шырыня
195
+ spree/zone:
196
+ description: Апісанне
197
+ name: Назва
198
+ user:
199
+ current_sign_in: Бягучы ўваход
200
+ last_sign_in: Апошні ўваход
201
+ sign_in_count: Колькасць уваходаў
202
+ errors:
203
+ messages:
204
+ blank: не можа быць пустым
205
+ models:
206
+ spree/allowed_origin:
207
+ attributes:
208
+ origin:
209
+ must_be_origin_only: павінен быць крыніцай (схема і хост) без шляху, запыту або фрагмента
210
+ spree/classification:
211
+ attributes:
212
+ taxon_id:
213
+ already_linked: ужо прывязаны да дадзенага тавару
214
+ spree/credit_card:
215
+ attributes:
216
+ base:
217
+ card_expired: Тэрмін дзеяння карткі скончыўся
218
+ expiry_invalid: Тэрмін дзеяння няправільны
219
+ spree/gift_card:
220
+ attributes:
221
+ base:
222
+ cannot_destroy_used_gift_card: Немагчыма выдаліць выкарыстаную падарункавую карту
223
+ spree/import:
224
+ attributes:
225
+ attachment:
226
+ content_type: мае недазволены тып змесціва
227
+ type:
228
+ inclusion: не ўваходзіць у спіс дазволеных тыпаў
229
+ spree/line_item:
230
+ attributes:
231
+ currency:
232
+ must_match_order_currency: Павінна адпавядаць валюце замовы
233
+ spree/market:
234
+ attributes:
235
+ base:
236
+ cannot_destroy_default_market: Немагчыма выдаліць рынак па змаўчанні.
237
+ cannot_destroy_last_market: Немагчыма выдаліць адзіны рынак.
238
+ spree/market_country:
239
+ attributes:
240
+ country:
241
+ already_in_market: ужо прызначана іншаму рынку ў гэтай краме
242
+ not_in_shipping_zone: не ахоплена ніводнай зонай дастаўкі. Калі ласка, спачатку наладзьце зону дастаўкі.
243
+ spree/payment:
244
+ attributes:
245
+ amount:
246
+ greater_than_max_amount: перавышае дазволеную максімальную суму %{max_amount}
247
+ spree/price_list:
248
+ attributes:
249
+ ends_at:
250
+ must_be_after_starts_at: павінна быць пазней за пачатак
251
+ spree/product:
252
+ attributes:
253
+ base:
254
+ cannot_destroy_if_attached_to_line_items: Немагчыма выдаліць тавары, дададзеныя ў аформленыя заказы. У такіх выпадках спыніце іх продаж.
255
+ discontinue_on:
256
+ invalid_date_range: павінна быць пазней за дату даступнасці
257
+ spree/product_publication:
258
+ attributes:
259
+ unpublished_at:
260
+ must_be_after_published_at: павінна быць пазней за дату публікацыі
261
+ spree/promotion:
262
+ attributes:
263
+ expires_at:
264
+ invalid_date_range: павінна быць пазней за дату пачатку
265
+ spree/refund:
266
+ attributes:
267
+ amount:
268
+ greater_than_allowed: больш за дазволеную суму.
269
+ spree/store:
270
+ attributes:
271
+ base:
272
+ cannot_destroy_only_store: Немагчыма выдаліць адзіную краму.
273
+ spree/store_credit:
274
+ attributes:
275
+ amount_authorized:
276
+ exceeds_total_credits: Перавышае агульную суму крэдыту.
277
+ amount_used:
278
+ cannot_be_greater_than_amount: Не можа быць больш за суму.
279
+ greater_than_zero_restrict_delete: больш за нуль. Немагчыма выдаліць крэдыт крамы.
280
+ spree/user:
281
+ attributes:
282
+ bill_address_id:
283
+ belongs_to_other_user: належыць іншаму карыстальніку
284
+ deprecated_in_completed_order: састарэлы ў завершаным заказе
285
+ ship_address_id:
286
+ belongs_to_other_user: належыць іншаму карыстальніку
287
+ deprecated_in_completed_order: састарэлы ў завершаным заказе
288
+ spree/variant:
289
+ attributes:
290
+ base:
291
+ cannot_destroy_if_attached_to_line_items: Немагчыма выдаліць варыянты, дададзеныя ў аформленыя заказы. У такіх выпадках спыніце іх продаж.
292
+ spree/webhook_endpoint:
293
+ attributes:
294
+ url:
295
+ internal_address_not_allowed: не павінен указваць на ўнутраны або прыватны сеткавы адрас
296
+ models:
297
+ spree/address:
298
+ many: Адрасоў
299
+ one: Адрас
300
+ other: Адрасы
301
+ spree/classification:
302
+ one: Класіфікацыя
303
+ other: Класіфікацыі
304
+ spree/country:
305
+ many: Краін
306
+ one: Краіна
307
+ other: Краіны
308
+ spree/credit_card:
309
+ many: Крэдытных картак
310
+ one: Крэдытная картка
311
+ other: Крэдытныя карткі
312
+ spree/customer_group:
313
+ one: Група кліентаў
314
+ other: Групы кліентаў
315
+ spree/customer_group_user:
316
+ one: Карыстальнік групы кліентаў
317
+ other: Карыстальнікі групы кліентаў
318
+ spree/export:
319
+ one: Экспарт
320
+ other: Экспарты
321
+ spree/integration:
322
+ one: Інтэграцыя
323
+ other: Інтэграцыі
324
+ spree/inventory_unit:
325
+ many: Адзінак
326
+ one: Адзінка
327
+ other: Адзінкі
328
+ spree/line_item:
329
+ many: Пазіцый
330
+ one: Пазіцыя
331
+ other: Пазіцыі
332
+ spree/option_type:
333
+ many: Характарыстык
334
+ one: Характарыстыка
335
+ other: Характарыстыкі
336
+ spree/option_value:
337
+ many: Значэнні характарыстык
338
+ one: Значэнне характарыстыкі
339
+ other: Значэнні характарыстык
340
+ spree/order:
341
+ many: Заказаў
342
+ one: Заказ
343
+ other: Заказы
344
+ spree/payment:
345
+ many: Плацяжоў
346
+ one: Плацёж
347
+ other: Плацяжы
348
+ spree/payment_method:
349
+ many: Спосабаў аплаты
350
+ one: Спосаб аплаты
351
+ other: Спосабы аплаты
352
+ spree/price:
353
+ one: Цана
354
+ other: Цэны
355
+ spree/price_list:
356
+ one: Прайс-ліст
357
+ other: Прайс-лісты
358
+ spree/price_rule:
359
+ one: Цэнавае правіла
360
+ other: Цэнавыя правілы
361
+ spree/product:
362
+ many: Тавараў
363
+ one: Тавар
364
+ other: Тавары
365
+ spree/promotion:
366
+ many: Акцый
367
+ one: Акцыя
368
+ other: Акцыі
369
+ spree/promotion_category:
370
+ many: Катэгорый акцый
371
+ one: Катэгорыя акцый
372
+ other: Катэгорыі акцый
373
+ spree/property:
374
+ many: Уласцівасцей
375
+ one: Уласцівасць
376
+ other: Уласцівасці
377
+ spree/refund_reason:
378
+ many: Прычын вяртання
379
+ one: Прычына вяртання
380
+ other: Прычыны вяртання
381
+ spree/role:
382
+ many: Роляў
383
+ one: Роля
384
+ other: Ролі
385
+ spree/shipment:
386
+ many: Даставак
387
+ one: Дастаўка
388
+ other: Дастаўкі
389
+ spree/shipping_method:
390
+ many: Спосабаў дастаўкі
391
+ one: Спосаб дастаўкі
392
+ other: Спосабы дастаўкі
393
+ spree/state:
394
+ many: Абласцей/Рэгіёнаў
395
+ one: Вобласць/Рэгіён
396
+ other: Вобласці/Рэгіёны
397
+ spree/stock_location:
398
+ many: Складоў
399
+ one: Склада
400
+ other: Складоў
401
+ spree/stock_movement:
402
+ one: Рух тавару
403
+ other: Рухі тавару
404
+ spree/stock_transfer:
405
+ many: Перасоўванне тавараў
406
+ one: Перасоўванне тавара
407
+ other: Перасоўванні тавараў
408
+ spree/store:
409
+ one: Крама
410
+ other: Крамы
411
+ spree/store_credit:
412
+ one: Крэдыт крамы
413
+ other: Крэдыты крамы
414
+ spree/tax_category:
415
+ many: Катэгорый падаткаў
416
+ one: Катэгорыя падаткаў
417
+ other: Катэгорыі падаткаў
418
+ spree/tax_rate:
419
+ many: Ставак падатку
420
+ one: Стаўка падатку
421
+ other: Стаўкі падатку
422
+ spree/taxon:
423
+ many: Таксоны
424
+ one: Таксон
425
+ other: Таксонаў
426
+ spree/taxonomy:
427
+ many: Таксанамій
428
+ one: Таксанамія
429
+ other: Таксанамій
430
+ spree/user:
431
+ many: Карыстальнікаў
432
+ one: Карыстальнік
433
+ other: Карыстальнікі
434
+ spree/variant:
435
+ many: Варыянтаў
436
+ one: Варыянт
437
+ other: Варыянты
438
+ spree/zone:
439
+ many: Зоны
440
+ one: Зона
441
+ other: Зоны
442
+ errors:
443
+ messages:
444
+ already_confirmed: быў ужо пацверджаны
445
+ not_found: не знойдзены
446
+ not_locked: не быў заблакаваны
447
+ not_saved:
448
+ many: "%{count} памылак перашкаджаюць захаванню %{resource}:"
449
+ one: 'Адна памылка перашкаджае захаванню %{resource}:'
450
+ other: "%{count} памылкі перашкаджаюць захаванню %{resource}:"
451
+ number:
452
+ percentage:
453
+ format:
454
+ precision: 1
455
+ spree:
456
+ accept: Прыняць
457
+ accepted: Прынята
458
+ accepts_email_marketing: Згаджаецца на email-рассылкі
459
+ account: Уліковы запіс
460
+ active: Актыўны
461
+ address: Адрас
462
+ address1: Адрас
463
+ address2: адрас (працяг.)
464
+ adjustment: Карэкціроўка
465
+ adjustment_labels:
466
+ tax_rates:
467
+ excluding_tax: "%{name}%{amount}"
468
+ including_tax: "%{name}%{amount} (уключана ў цану)"
469
+ adjustments_deleted: Карэкціроўкі выдалены
470
+ all: усе
471
+ amount: Сума
472
+ api_key_no_current_key: Ні адзін API-ключ не аўтэнтыфікаваў гэты запыт
473
+ api_key_scopes_immutable: немагчыма змяніць пасля стварэння ключа; стварыце новы ключ з патрэбнымі вобласцямі і адкліч гэты
474
+ approver: Пацвердзіў(ла)
475
+ authorized: Аўтарызаваны
476
+ availability: даступнасць
477
+ backorderable: Магчыма прадзамова
478
+ backordered: Прадзамоўлена
479
+ bill_address: Адрас плацяжа
480
+ billing_address: Адрас плацяжа
481
+ calculator: Калькулятар
482
+ canceled: Скасавана
483
+ canceler: Адмяніў
484
+ cannot_be_destroyed: Заказ немагчыма выдаліць.
485
+ capture: Правесці плацёж
486
+ cart: Кошык
487
+ cart_already_updated: Кошык ужо абноўлены.
488
+ cart_line_item:
489
+ delivery_unavailable: "%{li_name} не можа быць дастаўлены на абраны адрас"
490
+ discontinued: "%{li_name} быў выдалены, бо яго продаж спынены"
491
+ out_of_stock: "%{li_name} быў выдалены, бо ён распрададзены"
492
+ categories: Катэгорыі
493
+ category: Катэгорыя
494
+ channel: Канал продажаў
495
+ channels: Каналы продажаў
496
+ checkout: Афармленне заказу
497
+ checkout_requirements:
498
+ email_required: Неабходны адрас электроннай пошты
499
+ line_items_required: Дадайце хаця б адзін тавар у кошык
500
+ payment_required: Дадайце спосаб аплаты
501
+ ship_address_required: Неабходны адрас дастаўкі
502
+ city: Горад
503
+ color_code: Код колеру
504
+ company: Кампанія
505
+ compare_at_amount: Сума для параўнання
506
+ compare_at_price: Цана для параўнання
507
+ complete: Завершана
508
+ confirm: Пацвердзіць
509
+ cost_price: Сабекошт
510
+ count_on_hand: Наяўнасць
511
+ country: Краіна
512
+ coupon_code: Код купона
513
+ coupon_code_already_applied: Зніжкавы купон ужо быў ужыты да гэтай замовы
514
+ coupon_code_applied: Купон паспяхова ўжыты да Вашага заказу.
515
+ coupon_code_better_exists: Папярэдні купон больш выгадны
516
+ coupon_code_expired: Код купона скончыўся
517
+ coupon_code_max_usage: Ліміт выкарыстання кода купона перавышаны
518
+ coupon_code_not_eligible: Гэта зніжкавы купон не адказвае патрабаванням для гэтай замовы
519
+ coupon_code_not_found: Зніжкавы купон не існуе. Калі ласка, паспрабуйце яшчэ раз.
520
+ coupon_code_unknown_error: Уведзены купон нельга прымяніць у гэты раз.
521
+ coupon_code_used: Уведзены купонны код ужо быў выкарыстаны. Калі ласка, паспрабуйце зноў.
522
+ created_at: Створана ў
523
+ credit_card: Крэдытная картка
524
+ currency: Валюта
525
+ currency_not_supported_by_store: не падтрымліваецца гэтай крамай
526
+ customer: Кліент
527
+ customers: Кліенты
528
+ default: Па змаўчанні
529
+ default_stock_location_name: Месцазнаходжанне крамы
530
+ default_wishlist_name: Спіс жаданняў
531
+ delivery: Дастаўка
532
+ depth: Глыбіня
533
+ description: Апісанне
534
+ destination: Прызначэнне
535
+ destroy: Выдаліць
536
+ details: Апісанне тавара
537
+ digital:
538
+ digital_delivery: Лічбавая дастаўка
539
+ digital_assets: Лічбавыя актывы
540
+ discontinued: Продаж спынены
541
+ discontinued_variants_present: Некаторыя пазіцыі ў гэтым заказе ўтрымліваюць тавары, якія больш недаступныя.
542
+ display_delivery_range: Дастаўка за %{delivery_range} працоўных дзён
543
+ draft: Чарнавік
544
+ eligibility_errors:
545
+ messages:
546
+ has_excluded_product: У кошыку ёсць тавар, які не дазваляе прымяніць код купона.
547
+ item_total_less_than: Гэты код купона нельга прымяніць да заказах на суму да %{amount}.
548
+ item_total_less_than_or_equal: Гэты купон нельга прымяніць да заказаў на суму да %{amount}.
549
+ item_total_more_than: Гэты код купона нельга прымяніць да заказаў на суму больш %{amount}.
550
+ item_total_more_than_or_equal: Гэты код купона нельга прымяніць да заказаў на суму ўключна ад %{amount}.
551
+ limit_once_per_user: Гэты код купона можна выкарыстоўваць толькі адзін раз.
552
+ missing_product: Гэты код купона нельга прымяніць, таму што ў кошыку няма ўсіх неабходных тавараў.
553
+ missing_taxon: Неабходна дадаць тавар усіх акцыйных катэгорый, каб прымяніць гэты код купона.
554
+ no_applicable_products: Трэба дадаць акцыйны тавар, каб прымяніць код купона.
555
+ no_matching_channel: Гэты прамакод не дзейнічае для дадзенага канала продажаў.
556
+ no_matching_market: Гэты прамакод не дзейнічае на вашым рынку.
557
+ no_matching_taxons: Дадайце тавар з акцыйнай катэгорыі, каб прымяніць гэты код купона.
558
+ no_user_or_email_specified: Увайдзiце або увядзіце e-mail, каб прымяніць гэты код купона.
559
+ no_user_specified: Каб прымяніць гэты купон.
560
+ not_first_order: Гэты код купона можна ўжыць толькі да вашай першай замовы.
561
+ wrong_country: Гэты купонны код не дзейнічае ў вашай краіне
562
+ email: Электронная пошта
563
+ error: памылка
564
+ error_user_destroy_with_orders: Немагчыма выдаліць карыстальніка, звязанага з заказамі
565
+ error_user_does_not_have_any_store_credits: У карыстальніка няма даступных крэдытаў крамы
566
+ errors:
567
+ messages:
568
+ cannot_delete_default_channel: Немагчыма выдаліць канал па змаўчанні. Спачатку прызначце іншы канал каналам па змаўчанні.
569
+ channel_store_mismatch: павінен належаць той жа краме
570
+ invalid_order_routing_rule: не з'яўляецца зарэгістраваным правілам маршрутызацыі заказаў
571
+ invalid_order_routing_strategy: не з'яўляецца зарэгістраванай стратэгіяй маршрутызацыі заказаў
572
+ store_association_can_not_be_changed: Прывязку да крамы немагчыма змяніць
573
+ store_is_already_set: Крама ўжо ўсталявана
574
+ expired: Тэрмін дзеяння скончыўся
575
+ export_mailer:
576
+ export_done:
577
+ message: Выдатна, ваш экспарт гатовы! Калі ласка, скарыстайцеся спасылкай ніжэй, каб спампаваць яго.
578
+ subject: Ваш экспарт %{export_number} паспяхова апрацаваны!
579
+ greeting: Прывітанне, %{user_name}!
580
+ field: Поле
581
+ first_name: Імя
582
+ flat_percent: Фіксаваны адсотак
583
+ flat_rate_per_order: Фіксаваная стаўка (за заказ)
584
+ flexible_rate: Гібкая стаўка
585
+ free: Бясплатна
586
+ gateway: Аплатны шлюз
587
+ gateway_error: Памылка плацёжнага шлюза
588
+ gift_card: Падарункавая карта
589
+ gift_card_already_redeemed: Падарункавая карта ўжо была пагашана.
590
+ gift_card_applied: Падарункавая карта паспяхова прымянёна да вашага заказу!
591
+ gift_card_customer_not_logged_in: Падарункавую карту немагчыма прымяніць для госця.
592
+ gift_card_expired: Тэрмін дзеяння падарункавай карты скончыўся.
593
+ gift_card_mismatched_currency: Падарункавую карту немагчыма прымяніць з бягучай валютай.
594
+ gift_card_mismatched_customer: Гэта падарункавая карта звязана з іншым карыстальнікам.
595
+ gift_card_not_found: Падарункавая карта не знойдзена.
596
+ gift_card_removed: Падарункавая карта паспяхова выдалена з вашага заказу
597
+ gift_card_using_store_credit_error: Вы не можаце прымяніць падарункавую карту пасля таго, як прымянілі крэдыт крамы.
598
+ height: Вышыня
599
+ i18n:
600
+ this_file_language: Belarusian (BE)
601
+ idempotency_key_reused: Гэты Idempotency-Key ужо быў выкарыстаны з іншымі параметрамі запыту.
602
+ image: Малюнак
603
+ import: Імпарт
604
+ in_stock: У наяўнасці
605
+ inactive: Неактыўны
606
+ incomplete: Няпоўны
607
+ insufficient_stock_lines_present: Некаторыя пазіцыі гэтай замовы маюць недастатковае колькасць.
608
+ internal_note: Унутраная нататка
609
+ inventory: Таварная наменклатура
610
+ invitation_mailer:
611
+ greeting: Прывітанне, %{user_name}!
612
+ invitation_accepted:
613
+ body: "%{invitee_name} прыняў ваша запрашэнне далучыцца да %{resource_name}"
614
+ subject: "%{invitee_name} прыняў ваша запрашэнне далучыцца да %{resource_name}"
615
+ invitation_email:
616
+ body: "%{inviter_name} запрасіў вас далучыцца да %{resource_name}"
617
+ link_description: 'Каб прыняць гэта запрашэнне, націсніце на спасылку ніжэй:'
618
+ subject: Запрашэнне далучыцца да %{resource_name}
619
+ iso: ISO Alpha-2
620
+ item: Найменне
621
+ items_cannot_be_shipped: К сожалению мы не можем доставить ваш товар на указанный адрес. Пожалуйста введите другой адрес.
622
+ key: Ключ
623
+ kind: Тып
624
+ label: Метка
625
+ last_name: Прозвішча
626
+ line_item: Пазіцыя заказу
627
+ line_items: Пазіцыі заказу
628
+ link: Спасылка
629
+ locale: Лакаль
630
+ locale_not_supported_by_store: не падтрымліваецца гэтай крамай
631
+ manual: Уручную
632
+ market: Рынак
633
+ me_no_current_user: Ні адзін адміністратар не аўтэнтыфікаваў гэты запыт
634
+ media: Медыя
635
+ meta_description: Метаапісанне
636
+ meta_keywords: Ключавыя словы
637
+ meta_title: Метазаголовок
638
+ metadata: Метаданные
639
+ min_quantity: Мін. колькасць
640
+ month: Месяц
641
+ name: Найменне
642
+ new_variant: Новы варыянт
643
+ no_cc_type: Н/Д
644
+ no_payment_found: Не знойдзена плацяжоў
645
+ none: Няма
646
+ number: Нумар
647
+ on_hand: У наяўнасці
648
+ only_active_products_can_be_added_to_cart: Чарнавыя і архіўныя тавары немагчыма дадаць у кошык, калі ласка, спачатку зрабіце тавар актыўным.
649
+ open: Адкрыць
650
+ option_name: Назва опцыі
651
+ option_type: Таварная опцыя
652
+ option_value: Магчымае значэнне опцыі
653
+ options: Опцыі
654
+ or: ці
655
+ order: Заказ
656
+ order_canceled: Заказ адменены
657
+ order_routing:
658
+ strategies:
659
+ legacy: Састарэлая
660
+ rules: Правілы (па парадку)
661
+ order_summary: Зводка па замове
662
+ orders: Заказы
663
+ out_of_stock: Няма ў наяўнасці
664
+ password: Пароль
665
+ path: Шлях
666
+ payment: Плацёж
667
+ payment_method: Спосаб аплаты
668
+ payment_method_not_supported: Гэты спосаб аплаты не падтрымліваецца
669
+ payment_methods: Спосабы аплаты
670
+ payment_processing_failed: Немагчыма зрабіць плацёж, калі ласка, праверце ўведзеную інфармацыю
671
+ payment_source: Крыніца аплаты
672
+ pending: У чаканні
673
+ percent: Працэнт
674
+ percent_per_item: Працэнт з кожнай адзінкі тавару
675
+ phone: Тэлефон
676
+ price: Цана
677
+ price_range: Цэнавы дыяпазон
678
+ price_rules:
679
+ channel_rule:
680
+ description: Прымяняць цэнаўтварэнне ў залежнасці ад канала продажаў
681
+ customer_group_rule:
682
+ description: Прымяняць цэны да пэўных груп кліентаў
683
+ price_sack: Цэнавы мяшок
684
+ prices: Цэны
685
+ privacy_policy: Палітыка прыватнасці
686
+ processing: Апрацоўка
687
+ product: Тавар
688
+ product_translations: Пераклады тавараў
689
+ products: Тавары
690
+ products_cannot_be_shipped: На дадзены момант мы не можам даставіць %{product_names} у ваша бягучае месцазнаходжанне. Калі ласка, змяніце адрас дастаўкі або выдаліце %{product_names} з кошыка.
691
+ promotion: Прома-акцыя
692
+ promotion_action_types:
693
+ create_adjustment:
694
+ description: Стварае прома-карэкціроўкі для замовы
695
+ name: Стварыць карэкціроўку
696
+ create_item_adjustments:
697
+ description: Стварае крэдытныя карэкціроўкі на пазіцыю замовы
698
+ name: Стварыць карэкціроўкі на пазіцыю
699
+ create_line_items:
700
+ description: Запаўняе кошык названай колькасцю пазіцый
701
+ name: Стварыць элемент замовы
702
+ free_shipping:
703
+ description: Робіць дастаўку замовы бясплатнай
704
+ name: Бясплатная дастаўка
705
+ promotion_actions: Дзеянні
706
+ promotion_already_used: Вы не можаце выдаліць акцыю, якая ўжо была прымянёна
707
+ promotion_label: Акцыя (%{name})
708
+ promotion_rule_types:
709
+ category:
710
+ description: Заказ уключае тавары з указаных катэгорый
711
+ name: Катэгорыі
712
+ channel:
713
+ description: Абмежаваць заказамі, аформленымі праз указаныя каналы
714
+ name: Каналы
715
+ country:
716
+ description: Абмежаваць заказамі з адрасам дастаўкі ў пэўнай краіне
717
+ name: Краіна
718
+ currency:
719
+ description: Абмежаваць заказамі ў пэўнай валюце
720
+ name: Валюта
721
+ customer:
722
+ description: Даступна толькі для ўказаных кліентаў
723
+ name: Кліенты
724
+ customer_group:
725
+ description: Даступна толькі для кліентаў з указанай(-ых) групы(груп) кліентаў
726
+ name: Група(-ы) кліентаў
727
+ customer_logged_in:
728
+ description: Даступна толькі для кліентаў, якія ўвайшлі ў сістэму
729
+ name: Толькі для кліентаў, якія ўвайшлі ў сістэму
730
+ first_order:
731
+ description: Павінен быць першым заказам пакупніка
732
+ name: Першы заказ
733
+ item_total:
734
+ description: Сума замовы адпавядае наступным крытэрам
735
+ name: Сума заказ
736
+ market:
737
+ description: Абмежаваць заказамі, аформленымі на ўказаных рынках
738
+ name: Рынкі
739
+ one_use_per_user:
740
+ description: Толькі адна на карыстальніка
741
+ name: Адна на карыстальніка
742
+ option_value:
743
+ description: Выбранае значэнне опцыі
744
+ name: Опцыі
745
+ product:
746
+ description: Заказ уключае ўказаныя тавары
747
+ name: Тавары
748
+ promotions: Прома-акцыі
749
+ quantity: Колькасць
750
+ query: Запыт
751
+ reason: Прычына
752
+ received: Атрыманы
753
+ reference: Ссылка
754
+ refund: Вяртанне
755
+ refund_amount: Сума вяртання
756
+ refunds: Вяртанне
757
+ registration: Рэгістрацыя
758
+ rejected: Адхілена
759
+ remove: Прыбраць
760
+ remove_gift_card_on_completed_order_error: Вы не можаце выдаліць падарункавую карту пасля таго, як заказ быў аформлены
761
+ resellable: Можна перапрадаваць
762
+ resend: Адаслаць паўторна
763
+ response_code: Код адказу
764
+ return: Вярнуць
765
+ returned: Вернутыя
766
+ returns_policy: Палітыка вяртанняў
767
+ row: Радок
768
+ rules: Правілы
769
+ say_no: Не
770
+ say_yes: Так
771
+ scope: Фільтр
772
+ selected_quantity_not_available: тавару %{item} недастаткова.
773
+ ship: дастаўка
774
+ ship_address: Адрас дастаўкі
775
+ shipment: Адпраўка
776
+ shipped: Адпраўлена
777
+ shipping: Дастаўка
778
+ shipping_address: Адрас дастаўкі
779
+ shipping_flat_rate_per_item: Фіксаваная стаўка за адзінку тавару
780
+ shipping_flat_rate_per_order: Фіксаваная стаўка
781
+ shipping_flexible_rate: Гнуткая стаўка за адзінку тавару
782
+ shipping_policy: Палітыка дастаўкі
783
+ shipping_price_sack: Падлік кошту дастаўкі
784
+ shipping_rates:
785
+ display_price:
786
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
787
+ including_tax: "%{price} (уключ. %{tax_amount} %{tax_rate_name})"
788
+ sku: Артыкул
789
+ slug: Спасылка
790
+ source: Крыніца
791
+ status: Статус
792
+ stock_location: Размяшчэнне склада
793
+ stock_locations: Адрасы складоў
794
+ stock_transfer:
795
+ errors:
796
+ must_have_variant: Вы павінны дадаць хаця б адзін варыянт
797
+ same_location: не можа супадаць з месцам прызначэння
798
+ variants_unavailable: Некаторыя варыянты недаступныя ў %{stock}
799
+ store: У краму
800
+ store_credit:
801
+ allocated: Дададзена
802
+ authorized: Аўтарызавана
803
+ captured: Выкарыстана
804
+ credit: Крэдыт
805
+ eligible: Прыдатна
806
+ store_credit_name: Крэдыт крамы
807
+ store_credit_payment_method:
808
+ currency_mismatch: Валюта крэдыту крамы не супадае з валютай заказу
809
+ insufficient_authorized_amount: Немагчыма спісаць больш за аўтарызаваную суму
810
+ insufficient_funds: Астатак крэдыту крамы недастатковы
811
+ successful_action: 'Паспяховая аперацыя з крэдытам крамы: %{action}'
812
+ unable_to_credit: 'Немагчыма залічыць код: %{auth_code}'
813
+ unable_to_find: Не ўдалося знайсці крэдыт крамы
814
+ unable_to_find_for_action: 'Не ўдалося знайсці крэдыт крамы для кода аўтарызацыі: %{auth_code} для дзеяння: %{action}'
815
+ unable_to_void: 'Немагчыма анулiраваць код: %{auth_code}'
816
+ success: Поспех
817
+ tags: Тэгі
818
+ tax: Падатак
819
+ tax_category: Катэгорыя падаткаў
820
+ terms_of_service: Умовы абслугоўвання
821
+ there_are_no_items_for_this_order: У гэтай замове няма тавараў. Дадайце тавары, каб працягнуць, калі ласка.
822
+ tiered_flat_rate: Шматузроўневая фіксаваная стаўка
823
+ tiered_percent: Шматузроўневы працэнт
824
+ total: Усяго
825
+ track_inventory: Адсочваць наяўнасць
826
+ tracking: Адсочванне
827
+ tracking_number: Трэкінгавы нумар
828
+ tracking_url: Трэкінгавы URL
829
+ type: Тып
830
+ unable_to_connect_to_gateway: Не атрымалася падлучыцца да аплатнага шлюза.
831
+ updated_at: Абноўлена
832
+ url: URL
833
+ user: Карыстальнік
834
+ validation:
835
+ must_be_int: павінен быць цэлым лікам
836
+ value: Значэнне
837
+ variant: Варыянт
838
+ variants: Варыянты
839
+ verified: Праверана
840
+ void: Ануляваць
841
+ webhook_mailer:
842
+ endpoint_disabled:
843
+ disabled_at_label: Адключана
844
+ heading: Канчатковы пункт вебхука адключаны
845
+ instructions: Калі ласка, праверце URL канчатковага пункта і сэрвіс, затым зноў уключыце яго ў Налады → Распрацоўшчыкі → Вебхукі.
846
+ message: Канчатковы пункт вебхука «%{endpoint_name}» быў аўтаматычна адключаны пасля паўторных збояў дастаўкі.
847
+ name_label: Назва
848
+ reason_label: Прычына
849
+ subject: 'Канчатковы пункт вебхука адключаны: %{endpoint_name}'
850
+ url_label: URL
851
+ weight: Вага
852
+ weight_unit: Адзінка вагі
853
+ width: Шырыня
854
+ year: Год
855
+ zip: Індэкс