spree_core 6.0.0.beta4 → 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,834 @@
1
+ ---
2
+ ru:
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/country:
19
+ iso: ISO
20
+ iso3: ISO3
21
+ iso_name: ISO-имя
22
+ name: Название
23
+ numcode: ISO-код
24
+ spree/credit_card:
25
+ cc_type: Тип кредитной карты
26
+ month: Месяц
27
+ number: Номер
28
+ verification_value: Значение проверки
29
+ year: Год
30
+ spree/customer_group:
31
+ description: Описание
32
+ name: Название
33
+ spree/gift_card:
34
+ amount_used: Использованная сумма
35
+ expires_at: Истекает
36
+ spree/import:
37
+ preferred_delimiter: Разделитель
38
+ spree/import_mapping:
39
+ file_column: Столбец файла
40
+ schema_field: Поле схемы
41
+ spree/import_row:
42
+ row_number: Номер
43
+ spree/inventory_unit:
44
+ state: Состояние
45
+ spree/invitation:
46
+ inviter: Пригласивший
47
+ spree/line_item:
48
+ price: Цена
49
+ quantity: Кол-во
50
+ spree/option_type:
51
+ filterable: Фильтруемый
52
+ kind: Тип
53
+ name: Название
54
+ spree/option_value:
55
+ color_code: Код цвета
56
+ image: Изображение образца
57
+ spree/order:
58
+ checkout_complete: Оформление заказа завершено
59
+ completed_at: Завершено
60
+ considered_risky: Статус риска
61
+ coupon_code: Код купона
62
+ created_at: Дата заказа
63
+ email: E-mail покупателя
64
+ internal_note: Внутренняя заметка
65
+ ip_address: IP-адрес
66
+ item_count: Товары
67
+ item_total: Итого по товарам
68
+ number: Номер
69
+ payment_state: Состояние оплаты
70
+ shipment_state: Состояние доставки
71
+ special_instructions: Специальные инструкции
72
+ state: Состояние
73
+ total: Итого по заказу
74
+ spree/order/bill_address:
75
+ address1: Улица
76
+ city: Город
77
+ phone: Телефон
78
+ state: Область/Регион
79
+ spree/order/ship_address:
80
+ address1: Улица
81
+ city: Город
82
+ phone: Телефон
83
+ state: Область/Регион
84
+ spree/payment:
85
+ amount: Количество
86
+ number: Номер
87
+ spree/payment_method:
88
+ name: Название
89
+ spree/policy:
90
+ body: Текст
91
+ owner: Политика для
92
+ spree/price_list:
93
+ description: Описание
94
+ ends_at: Дата окончания
95
+ match_policy: Правило соответствия
96
+ name: Название
97
+ priority: Приоритет
98
+ starts_at: Дата начала
99
+ status: Статус
100
+ spree/price_rule:
101
+ priority: Приоритет
102
+ type: Тип
103
+ spree/product:
104
+ available_on: Доступен с
105
+ cost_currency: Валюта
106
+ cost_price: Себестоимость
107
+ description: Описание
108
+ discontinue_on: Снять с продажи
109
+ less_than: Меньше чем
110
+ make_active_at: Активировать
111
+ master_price: Цена
112
+ more_than: Больше чем
113
+ name: Название
114
+ on_hand: На складе
115
+ tax_category: Категория налогов
116
+ spree/promotion:
117
+ advertise: Рекламировать
118
+ code: Код
119
+ description: Описание
120
+ event_name: Название события
121
+ expires_at: Истекает в
122
+ generate_code: Сгенерировать промокод
123
+ name: Название
124
+ path: Путь
125
+ promotion_category: Категория акции
126
+ starts_at: Начинается
127
+ usage_limit: Лимит использования
128
+ spree/promotion_category:
129
+ code: Код
130
+ name: Название
131
+ spree/property:
132
+ name: Название
133
+ presentation: Представление
134
+ spree/role:
135
+ name: Название
136
+ spree/shipment:
137
+ number: Номер
138
+ spree/state:
139
+ abbr: Аббревиатура
140
+ name: Название
141
+ spree/store:
142
+ address: Адрес
143
+ contact_phone: Контактный телефон
144
+ mail_from_address: Отсылать почту как
145
+ meta_description: Meta-описание
146
+ meta_keywords: Meta ключевые слова
147
+ name: Название сайта
148
+ preferred_digital_asset_authorized_clicks: Лимит скачиваний (кликов)
149
+ preferred_digital_asset_authorized_days: Лимит скачиваний (дней)
150
+ preferred_limit_digital_download_count: Ограничить количество скачиваний цифровых ссылок
151
+ preferred_limit_digital_download_days: Ограничить срок скачивания цифровых ссылок (дней)
152
+ seo_robots: SEO Robots
153
+ seo_title: SEO-заголовок
154
+ storefront_custom_code_body_end: Пользовательский код перед закрывающим тегом body
155
+ storefront_custom_code_body_start: Пользовательский код после открывающего тега body
156
+ storefront_custom_code_head: Пользовательский код в head страницы
157
+ url: URL-адрес сайта
158
+ spree/store_credit:
159
+ amount_used: Использованная сумма
160
+ spree/tax_category:
161
+ description: Описание
162
+ name: Название
163
+ spree/tax_rate:
164
+ amount: Ставка
165
+ included_in_price: Включено в цену
166
+ show_rate_in_label: Показывать ставку в метке
167
+ spree/taxon:
168
+ name: Название
169
+ permalink: Постоянная ссылка
170
+ position: Позиция
171
+ sort_order: Порядок сортировки
172
+ spree/taxonomy:
173
+ name: Название
174
+ spree/user:
175
+ avatar: Аватар
176
+ email: Email
177
+ password: Пароль
178
+ password_confirmation: Подтверждение пароля
179
+ spree/variant:
180
+ cost_currency: Валюта
181
+ cost_price: Себестоимость
182
+ depth: Толщина
183
+ height: Высота
184
+ price: Цена
185
+ sku: Артикул
186
+ weight: Вес
187
+ width: Ширина
188
+ spree/zone:
189
+ description: Описание
190
+ name: Название
191
+ user:
192
+ current_sign_in: Текущий вход в
193
+ last_sign_in: Последний вход в
194
+ sign_in_count: Количество входов
195
+ errors:
196
+ messages:
197
+ blank: не может быть пустым
198
+ models:
199
+ spree/allowed_origin:
200
+ attributes:
201
+ origin:
202
+ must_be_origin_only: должен быть источником (схема и хост) без пути, запроса или фрагмента
203
+ spree/credit_card:
204
+ attributes:
205
+ base:
206
+ card_expired: Срок действия карты истек
207
+ spree/gift_card:
208
+ attributes:
209
+ base:
210
+ cannot_destroy_used_gift_card: Невозможно удалить использованную подарочную карту
211
+ spree/import:
212
+ attributes:
213
+ attachment:
214
+ content_type: имеет недопустимый тип содержимого
215
+ type:
216
+ inclusion: не входит в список допустимых типов
217
+ spree/market:
218
+ attributes:
219
+ base:
220
+ cannot_destroy_default_market: Невозможно удалить рынок по умолчанию.
221
+ cannot_destroy_last_market: Невозможно удалить единственный рынок.
222
+ spree/market_country:
223
+ attributes:
224
+ country:
225
+ already_in_market: уже назначена другому рынку в этом магазине
226
+ not_in_shipping_zone: не охвачена ни одной зоной доставки. Сначала настройте зону доставки.
227
+ spree/payment:
228
+ attributes:
229
+ amount:
230
+ greater_than_max_amount: превышает допустимую максимальную сумму %{max_amount}
231
+ spree/price_list:
232
+ attributes:
233
+ ends_at:
234
+ must_be_after_starts_at: должна быть позже даты начала
235
+ spree/product:
236
+ attributes:
237
+ base:
238
+ cannot_destroy_if_attached_to_line_items: Невозможно удалить товары, добавленные в размещённые заказы. В таких случаях снимите их с продажи.
239
+ discontinue_on:
240
+ invalid_date_range: должна быть позже даты появления в продаже
241
+ spree/product_publication:
242
+ attributes:
243
+ unpublished_at:
244
+ must_be_after_published_at: должна быть позже даты публикации
245
+ spree/promotion:
246
+ attributes:
247
+ expires_at:
248
+ invalid_date_range: должна быть позже даты начала
249
+ spree/store:
250
+ attributes:
251
+ base:
252
+ cannot_destroy_only_store: Невозможно удалить единственный магазин.
253
+ spree/store_credit:
254
+ attributes:
255
+ amount_authorized:
256
+ exceeds_total_credits: Превышает общую сумму кредита.
257
+ amount_used:
258
+ cannot_be_greater_than_amount: Не может превышать сумму.
259
+ greater_than_zero_restrict_delete: больше нуля. Невозможно удалить кредит магазина.
260
+ spree/user:
261
+ attributes:
262
+ bill_address_id:
263
+ belongs_to_other_user: принадлежит другому пользователю
264
+ deprecated_in_completed_order: устарел в завершённом заказе
265
+ ship_address_id:
266
+ belongs_to_other_user: принадлежит другому пользователю
267
+ deprecated_in_completed_order: устарел в завершённом заказе
268
+ spree/variant:
269
+ attributes:
270
+ base:
271
+ cannot_destroy_if_attached_to_line_items: Невозможно удалить варианты, добавленные в размещённые заказы. В таких случаях снимите их с продажи.
272
+ spree/webhook_endpoint:
273
+ attributes:
274
+ url:
275
+ internal_address_not_allowed: не должен указывать на внутренний или частный сетевой адрес
276
+ models:
277
+ spree/address:
278
+ many: Адресов
279
+ one: Адрес
280
+ other: Адреса
281
+ spree/classification:
282
+ one: Классификация
283
+ other: Классификации
284
+ spree/country:
285
+ many: Стран
286
+ one: Страна
287
+ other: Страны
288
+ spree/credit_card:
289
+ many: Кредитных карт
290
+ one: Кредитная карта
291
+ other: Кредитные карты
292
+ spree/customer_group:
293
+ one: Группа клиентов
294
+ other: Группы клиентов
295
+ spree/customer_group_user:
296
+ one: Пользователь группы клиентов
297
+ other: Пользователи группы клиентов
298
+ spree/export:
299
+ one: Экспорт
300
+ other: Экспорты
301
+ spree/integration:
302
+ one: Интеграция
303
+ other: Интеграции
304
+ spree/inventory_unit:
305
+ many: Единиц
306
+ one: Единица
307
+ other: Единицы
308
+ spree/line_item:
309
+ many: Позиций
310
+ one: Позиция
311
+ other: Позиции
312
+ spree/option_type:
313
+ many: Товарных опций
314
+ one: Товарная опция
315
+ other: Товарные опции
316
+ spree/option_value:
317
+ one: Значение опции
318
+ other: Значения опций
319
+ spree/order:
320
+ many: Заказов
321
+ one: Заказ
322
+ other: Заказы
323
+ spree/payment:
324
+ many: Платежей
325
+ one: Платёж
326
+ other: Платежи
327
+ spree/payment_method:
328
+ many: Способов оплаты
329
+ one: Способ оплаты
330
+ other: Способы оплаты
331
+ spree/price:
332
+ one: Цена
333
+ other: Цены
334
+ spree/price_list:
335
+ one: Прайс-лист
336
+ other: Прайс-листы
337
+ spree/price_rule:
338
+ one: Правило цены
339
+ other: Правила цен
340
+ spree/product:
341
+ many: Товаров
342
+ one: Товар
343
+ other: Товары
344
+ spree/promotion:
345
+ many: Акций
346
+ one: Акция
347
+ other: Акции
348
+ spree/promotion_category:
349
+ many: Категорий акций
350
+ one: Категория акций
351
+ other: Категории акций
352
+ spree/property:
353
+ many: Свойств
354
+ one: Свойство
355
+ other: Свойства
356
+ spree/refund_reason:
357
+ many: Причин возврата
358
+ one: Причина возврата
359
+ other: Причины возврата
360
+ spree/role:
361
+ many: Ролей
362
+ one: Роль
363
+ other: Роли
364
+ spree/shipment:
365
+ many: Доставок
366
+ one: Доставка
367
+ other: Доставки
368
+ spree/shipping_method:
369
+ many: Cпособов доставки
370
+ one: Cпособ доставки
371
+ other: Cпособы доставки
372
+ spree/state:
373
+ many: Областей/Регионов
374
+ one: Область/Регион
375
+ other: Области/Регионы
376
+ spree/stock_location:
377
+ many: Расположений складов
378
+ one: Расположение склада
379
+ other: Расположения складов
380
+ spree/stock_movement:
381
+ one: Движение склада
382
+ other: Движения склада
383
+ spree/stock_transfer:
384
+ many: Перемещений по складам
385
+ one: Перемещение по складам
386
+ other: Перемещения по складам
387
+ spree/store:
388
+ one: Магазин
389
+ other: Магазины
390
+ spree/store_credit:
391
+ one: Кредит магазина
392
+ other: Кредиты магазина
393
+ spree/tax_category:
394
+ many: Категорий налогов
395
+ one: Категория налогов
396
+ other: Категории налогов
397
+ spree/tax_rate:
398
+ many: Ставок налога
399
+ one: Ставка налога
400
+ other: Ставки налога
401
+ spree/taxon:
402
+ many: Таксонов
403
+ one: Таксон
404
+ other: Таксона
405
+ spree/taxonomy:
406
+ few: Таксономий
407
+ many: Таксономий
408
+ one: Таксономия
409
+ other: Таксономии
410
+ spree/user:
411
+ many: Пользователей
412
+ one: Пользователь
413
+ other: Пользователя
414
+ spree/variant:
415
+ many: Вариантов
416
+ one: Вариант
417
+ other: Варианта
418
+ spree/zone:
419
+ many: Зон
420
+ one: Зона
421
+ other: Зоны
422
+ errors:
423
+ messages:
424
+ already_confirmed: уже был подтвержден
425
+ not_found: не найден
426
+ not_locked: не был заблокирован
427
+ not_saved:
428
+ many: "%{count} ошибок препятствуют сохранению %{resource}:"
429
+ one: 'Одна ошибка препятствует сохранению %{resource}:'
430
+ other: "%{count} ошибки препятствуют сохранению %{resource}:"
431
+ number:
432
+ percentage:
433
+ format:
434
+ precision: 1
435
+ spree:
436
+ accepts_email_marketing: Согласен на email-рассылку
437
+ account: Учетная запись
438
+ active: Активен
439
+ address: Адрес
440
+ address1: Адрес
441
+ address2: адрес (продолж.)
442
+ adjustment: Корректировка
443
+ adjustment_labels:
444
+ tax_rates:
445
+ including_tax: "%{name}%{amount} (включено в цену)"
446
+ adjustments_deleted: Корректировки удалены
447
+ admin_user_mailer:
448
+ password_reset_email:
449
+ action: Сбросить пароль
450
+ expiry_notice: Срок действия этой ссылки для сброса пароля скоро истечёт. Если вы не запрашивали сброс, никаких действий не требуется.
451
+ greeting: Здравствуйте, %{name}!
452
+ ignore_notice: Если вы не запрашивали сброс пароля, можете спокойно проигнорировать это письмо. Ваш пароль не будет изменён.
453
+ instructions: Мы получили запрос на сброс пароля для вашей учётной записи администратора %{store_name}. Нажмите кнопку ниже, чтобы задать новый пароль.
454
+ subject: Инструкции по сбросу пароля
455
+ all: все
456
+ amount: Сумма
457
+ api_key_no_current_key: Запрос не аутентифицирован ни одним API-ключом
458
+ api_key_scopes_immutable: не могут быть изменены после создания ключа; создайте новый ключ с нужными правами и отзовите этот
459
+ approver: Подтвердил(а)
460
+ authorized: Одобренные
461
+ availability: доступность
462
+ backorderable: Возможен предзаказ
463
+ backordered: Предзаказано
464
+ bill_address: Платёжный адрес
465
+ billing_address: Платёжный адрес
466
+ calculator: Калькулятор
467
+ canceled: Отменён
468
+ canceler: Отменивший
469
+ cannot_be_destroyed: Невозможно удалить заказ.
470
+ capture: Провести платёж
471
+ cart: Корзина
472
+ cart_already_updated: Корзина уже обновлена.
473
+ cart_line_item:
474
+ delivery_unavailable: "%{li_name} не может быть доставлен по выбранному адресу"
475
+ discontinued: "%{li_name} удалён, так как снят с продажи"
476
+ out_of_stock: "%{li_name} удалён, так как распродан"
477
+ categories: Категории
478
+ category: Категория
479
+ channel: Канал продаж
480
+ channels: Каналы продаж
481
+ checkout: Оформление заказа
482
+ checkout_requirements:
483
+ email_required: Требуется адрес электронной почты
484
+ line_items_required: Добавьте хотя бы один товар в корзину
485
+ payment_required: Добавьте способ оплаты
486
+ ship_address_required: Требуется адрес доставки
487
+ city: Город
488
+ color_code: Код цвета
489
+ company: Компания
490
+ compare_at_amount: Сравнительная сумма
491
+ compare_at_price: Сравнительная цена
492
+ complete: Завершено
493
+ confirm: Подтвердить
494
+ cost_price: Себестоимость
495
+ count_on_hand: Наличие
496
+ country: Страна
497
+ coupon_code: Код купона
498
+ coupon_code_already_applied: Скидочный купон уже был применен к этому заказу
499
+ coupon_code_applied: Купон успешно применен к Вашему заказу.
500
+ coupon_code_better_exists: Предыдущий купон выгоднее
501
+ coupon_code_expired: Код купона истек
502
+ coupon_code_max_usage: Лимит использования кода купона превышен
503
+ coupon_code_not_eligible: Это скидочный купон не отвечает требованиям для этого заказа
504
+ coupon_code_not_found: Скидочный купон не существует. Пожалуйста, попробуйте еще раз.
505
+ coupon_code_used: Введённый промокод уже был использован. Попробуйте снова.
506
+ created_at: Создано в
507
+ credit_card: Кредитная карта
508
+ currency: Валюта
509
+ currency_not_supported_by_store: не поддерживается этим магазином
510
+ customer: Клиент
511
+ customers: Клиенты
512
+ default: По умолчанию
513
+ default_stock_location_name: Местоположение магазина
514
+ default_wishlist_name: Список желаний
515
+ delivery: Доставка
516
+ depth: Глубина
517
+ description: Описание
518
+ destination: Назначение
519
+ destroy: Удалить
520
+ details: Описание товара
521
+ digital:
522
+ digital_delivery: Цифровая доставка
523
+ digital_assets: Цифровые ресурсы
524
+ discontinued: Снято с продажи
525
+ discontinued_variants_present: Некоторые позиции в этом заказе содержат товары, которые больше недоступны.
526
+ display_delivery_range: Доставка за %{delivery_range} рабочих дней
527
+ draft: Черновик
528
+ eligibility_errors:
529
+ messages:
530
+ has_excluded_product: В вашей корзине корзине находится продукт препятствующий применению скидочного купона.
531
+ item_total_less_than: Скидочный купон не может быть применён к заказу с итоговой суммой меньше %{amount}.
532
+ item_total_less_than_or_equal: Скидочный купон не может быть применён к заказу с итоговой суммой меньше или равной %{amount}.
533
+ item_total_more_than: Скидочный купон не может быть применён к заказу с итоговой суммой больше %{amount}.
534
+ item_total_more_than_or_equal: Скидочный купон не может быть применён к заказу с итоговой суммой больше или равной %{amount}.
535
+ limit_once_per_user: Скидочный купон может быть применён только один раз.
536
+ missing_product: Скидочный купон не может быть применён, так как в вашем заказе нет необходимых товаров.
537
+ missing_taxon: Перед применением этого промокода необходимо добавить товар из всех применимых категорий.
538
+ no_applicable_products: Перед применением этого промокода необходимо добавить подходящий товар.
539
+ no_matching_channel: Этот промокод недействителен для данного канала продаж.
540
+ no_matching_market: Этот промокод недействителен на вашем рынке.
541
+ no_matching_taxons: Перед применением этого промокода необходимо добавить товар из подходящей категории.
542
+ no_user_or_email_specified: Перед применением этого промокода необходимо войти в систему или указать свой email.
543
+ no_user_specified: Вам нужно войти на сайт, чтобы применить скидочный купон.
544
+ not_first_order: Этот купон может быть применён только к первому заказу.
545
+ wrong_country: Этот промокод недействителен в вашей стране
546
+ email: Электронная почта
547
+ error: ошибка
548
+ error_user_destroy_with_orders: Пользователя, связанного с заказами, нельзя удалить
549
+ error_user_does_not_have_any_store_credits: У пользователя нет доступных кредитов магазина
550
+ errors:
551
+ messages:
552
+ cannot_delete_default_channel: Канал по умолчанию нельзя удалить. Сначала назначьте другой канал по умолчанию.
553
+ channel_store_mismatch: должен принадлежать тому же магазину
554
+ invalid_order_routing_rule: не является зарегистрированным правилом маршрутизации заказов
555
+ invalid_order_routing_strategy: не является зарегистрированной стратегией маршрутизации заказов
556
+ store_association_can_not_be_changed: Связь с магазином нельзя изменить
557
+ store_is_already_set: Магазин уже назначен
558
+ expired: Истёк
559
+ export_mailer:
560
+ export_done:
561
+ message: Отличная работа, ваш экспорт готов! Воспользуйтесь ссылкой ниже, чтобы его скачать.
562
+ subject: Ваш экспорт %{export_number} успешно обработан!
563
+ greeting: Здравствуйте, %{user_name},
564
+ field: Поле
565
+ first_name: Имя
566
+ flat_percent: Фиксированный процент
567
+ flat_rate_per_order: Фиксированная ставка (за заказ)
568
+ flexible_rate: Гибкая ставка
569
+ free: Бесплатно
570
+ gateway: Платежный шлюз
571
+ gateway_error: Ошибка платежного шлюза
572
+ gift_card: Подарочная карта
573
+ gift_card_already_redeemed: Подарочная карта уже использована.
574
+ gift_card_applied: Подарочная карта успешно применена к вашему заказу!
575
+ gift_card_customer_not_logged_in: Подарочную карту нельзя применить в режиме гостя.
576
+ gift_card_expired: Срок действия подарочной карты истёк.
577
+ gift_card_mismatched_currency: Подарочную карту нельзя применить с текущей валютой.
578
+ gift_card_mismatched_customer: Эта подарочная карта связана с другим пользователем.
579
+ gift_card_not_found: Подарочная карта не найдена.
580
+ gift_card_removed: Подарочная карта успешно удалена из вашего заказа
581
+ gift_card_using_store_credit_error: Подарочную карту нельзя применить после применения кредита магазина.
582
+ height: Высота
583
+ i18n:
584
+ this_file_language: Russian (RU)
585
+ idempotency_key_reused: Этот ключ идемпотентности (Idempotency-Key) уже использовался с другими параметрами запроса.
586
+ image: Изображение
587
+ import: Импорт
588
+ in_stock: В наличии
589
+ inactive: Не активен
590
+ incomplete: В процессе
591
+ insufficient_stock_lines_present: Недостаточно товара на складе
592
+ internal_note: Внутренняя заметка
593
+ inventory: Товарная номенклатура
594
+ invitation_mailer:
595
+ greeting: Здравствуйте, %{user_name},
596
+ invitation_accepted:
597
+ body: "%{invitee_name} принял ваше приглашение присоединиться к %{resource_name}"
598
+ subject: "%{invitee_name} принял ваше приглашение присоединиться к %{resource_name}"
599
+ invitation_email:
600
+ body: "%{inviter_name} пригласил вас присоединиться к %{resource_name}"
601
+ link_description: 'Чтобы принять это приглашение, нажмите на ссылку ниже:'
602
+ subject: Приглашение присоединиться к %{resource_name}
603
+ iso: ISO Alpha-2
604
+ item: Наименование
605
+ items_cannot_be_shipped: К сожалению мы не можем доставить ваш товар на указанный адрес. Пожалуйста введите другой адрес.
606
+ key: Ключ
607
+ kind: Тип
608
+ label: Метка
609
+ last_name: Фамилия
610
+ line_item: Товарная позиция
611
+ line_items: Товарные позиции
612
+ link: Ссылка
613
+ locale: Язык
614
+ locale_not_supported_by_store: не поддерживается этим магазином
615
+ manual: Вручную
616
+ market: Рынок
617
+ me_no_current_user: Запрос не аутентифицирован ни одним администратором
618
+ media: Медиа
619
+ meta_description: Описание
620
+ meta_keywords: Ключевые слова
621
+ meta_title: Метаданные заголовок
622
+ metadata: Метаданные
623
+ min_quantity: Мин. количество
624
+ month: Месяц
625
+ name: Наименование
626
+ new_variant: Новый вариант
627
+ no_cc_type: Н/Д
628
+ no_payment_found: Не найден способ оплаты
629
+ none: Ни одного
630
+ number: Номер
631
+ on_hand: в наличии
632
+ only_active_products_can_be_added_to_cart: Черновики и архивные товары нельзя добавить в корзину, сначала сделайте товар активным.
633
+ open: Открыто
634
+ option_name: Название опции
635
+ option_type: Товарная опция
636
+ option_value: Возможное значение опции
637
+ options: Опции
638
+ or: или
639
+ order: Заказ
640
+ order_canceled: Заказ отменён
641
+ order_routing:
642
+ strategies:
643
+ legacy: Устаревшая
644
+ rules: Правила (по порядку)
645
+ order_summary: Сводка по заказу
646
+ orders: Заказы
647
+ out_of_stock: Нет в наличии
648
+ password: Пароль
649
+ path: Путь
650
+ payment: Платеж
651
+ payment_method: Способ оплаты
652
+ payment_method_not_supported: Этот способ оплаты не поддерживается
653
+ payment_methods: Способы оплаты
654
+ payment_processing_failed: Невозможно произвести платёж, пожалуйста, проверьте введённую информацию
655
+ payment_source: Источник платежа
656
+ pending: В ожидании
657
+ percent: Процент
658
+ percent_per_item: Процент с каждой единицы товара
659
+ phone: Телефон
660
+ price: Цена
661
+ price_range: Ценовой диапазон
662
+ price_rules:
663
+ channel_rule:
664
+ description: Применять цены в зависимости от канала продаж
665
+ customer_group_rule:
666
+ description: Применять ценообразование к определённым группам клиентов
667
+ price_sack: Price Sack
668
+ prices: Цены
669
+ privacy_policy: Политика конфиденциальности
670
+ processing: Обработка
671
+ product: Товар
672
+ product_translations: Переводы товаров
673
+ products: Товары
674
+ products_cannot_be_shipped: В данный момент мы не можем доставить %{product_names} по вашему текущему адресу. Измените адрес доставки или удалите %{product_names} из корзины.
675
+ promotion: Промо-акция
676
+ promotion_action_types:
677
+ create_adjustment:
678
+ description: Создаёт промо-корректировки для заказа
679
+ name: Создать корректировку
680
+ create_item_adjustments:
681
+ description: Скидка на определенные продукты
682
+ name: Скидка на продукт
683
+ create_line_items:
684
+ description: Добавить продукт в корзину
685
+ name: Добавить продукт
686
+ free_shipping:
687
+ description: Бесплатная доставка
688
+ name: Бесплатная доставка
689
+ promotion_actions: Акции
690
+ promotion_already_used: Нельзя удалить акцию, которая уже была применена
691
+ promotion_rule_types:
692
+ category:
693
+ description: Заказ включает товары из указанных категорий
694
+ name: Категории
695
+ channel:
696
+ description: Ограничить заказами, оформленными через указанные каналы продаж
697
+ name: Каналы продаж
698
+ country:
699
+ description: Ограничить заказами с адресом доставки в определённой стране
700
+ name: Страна
701
+ currency:
702
+ description: Ограничить заказами в определённой валюте
703
+ name: Валюта
704
+ customer:
705
+ description: Доступно только указанным клиентам
706
+ name: Клиенты
707
+ customer_group:
708
+ description: Доступно только клиентам из указанных групп клиентов
709
+ name: Группа(ы) клиентов
710
+ customer_logged_in:
711
+ description: Доступно только авторизованным клиентам
712
+ name: Только авторизованные клиенты
713
+ first_order:
714
+ description: Должен быть первым заказом покупателя
715
+ name: Первый заказ
716
+ item_total:
717
+ description: Сумма заказа соответствует следующим критериям
718
+ name: Сумма заказа
719
+ market:
720
+ description: Ограничить заказами, оформленными на указанных рынках
721
+ name: Рынки
722
+ one_use_per_user:
723
+ description: Каждый пользователь может использовать только 1 раз
724
+ name: 1 в 1 руки
725
+ option_value:
726
+ description: Заказ содержит товары с заданными опциями
727
+ name: Товарные опции
728
+ product:
729
+ description: Заказ содержит указанные товары
730
+ name: Товары
731
+ promotions: Промо-акции
732
+ quantity: Количество
733
+ query: Запрос
734
+ reason: Причина
735
+ received: Получен
736
+ reference: Ссылка
737
+ refund: Возврат
738
+ refund_amount: Сумма возврата
739
+ registration: Регистрация
740
+ remove: Убрать
741
+ remove_gift_card_on_completed_order_error: Нельзя удалить подарочную карту после оформления заказа
742
+ resellable: Пригодно для перепродажи
743
+ resend: Отправить повторно
744
+ response_code: Код ответа
745
+ return: возвратить
746
+ returned: Возвращенные
747
+ returns_policy: Политика возврата
748
+ row: Строка
749
+ rules: Правила
750
+ say_no: Нет
751
+ say_yes: Да
752
+ scope: Фильтр
753
+ selected_quantity_not_available: товара %{item} недостаточно.
754
+ ship: доставка
755
+ ship_address: Адрес доставки
756
+ shipment: Отправка
757
+ shipped: Отправлено
758
+ shipping: Доставка
759
+ shipping_address: Адрес доставки
760
+ shipping_flat_rate_per_item: Фиксированная ставка за единицу товара
761
+ shipping_flat_rate_per_order: Фиксированная ставка
762
+ shipping_flexible_rate: Гибкая ставка за единицу товара
763
+ shipping_policy: Политика доставки
764
+ shipping_price_sack: Подсчет стоимости доставки
765
+ shipping_rates:
766
+ display_price:
767
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
768
+ including_tax: "%{price} (вкл. %{tax_amount} %{tax_rate_name})"
769
+ sku: Артикул
770
+ slug: Ссылка
771
+ source: Источник
772
+ status: Статус
773
+ stock_location: Расположение склада
774
+ stock_locations: Адреса складов
775
+ stock_transfer:
776
+ errors:
777
+ must_have_variant: Необходимо добавить хотя бы один вариант
778
+ same_location: не может совпадать с местом назначения
779
+ variants_unavailable: Некоторые варианты недоступны на %{stock}
780
+ store: В магазин
781
+ store_credit:
782
+ allocated: Добавлено
783
+ authorized: Авторизовано
784
+ captured: Использовано
785
+ credit: Кредит
786
+ eligible: Доступно
787
+ store_credit_name: Баланс
788
+ store_credit_payment_method:
789
+ currency_mismatch: Валюта кредита магазина не совпадает с валютой заказа
790
+ insufficient_authorized_amount: Невозможно списать больше авторизованной суммы
791
+ insufficient_funds: Оставшейся суммы кредита магазина недостаточно
792
+ successful_action: 'Успешная операция с кредитом магазина: %{action}'
793
+ unable_to_credit: 'Невозможно зачислить по коду: %{auth_code}'
794
+ unable_to_find: Не удалось найти кредит магазина
795
+ unable_to_find_for_action: 'Не удалось найти кредит магазина по коду авторизации: %{auth_code} для операции: %{action}'
796
+ unable_to_void: 'Невозможно отменить по коду: %{auth_code}'
797
+ success: Успех
798
+ tags: Тэги
799
+ tax: Налог
800
+ tax_category: Категория налогов
801
+ terms_of_service: Условия использования
802
+ there_are_no_items_for_this_order: В этом заказе нет товаров. Добавьте товары, чтобы продолжить, пожалуйста.
803
+ total: Итого
804
+ track_inventory: Отслеживать наличие
805
+ tracking: Отслеживание
806
+ tracking_number: Трекинговый номер
807
+ tracking_url: Трекинговый URL
808
+ type: Тип
809
+ unable_to_connect_to_gateway: Не удалось подключиться к платёжному шлюзу.
810
+ updated_at: Обновлено
811
+ url: URL
812
+ user: Пользователь
813
+ validation:
814
+ must_be_int: должно быть целым числом
815
+ value: Значение
816
+ variant: Вариант
817
+ variants: Варианты
818
+ verified: Подтверждено
819
+ void: Аннулировать
820
+ webhook_mailer:
821
+ endpoint_disabled:
822
+ disabled_at_label: Отключено в
823
+ heading: Конечная точка вебхука отключена
824
+ instructions: Проверьте URL и сервис конечной точки, затем снова включите её в разделе Настройки → Разработчики → Вебхуки.
825
+ message: Конечная точка вебхука «%{endpoint_name}» была автоматически отключена после повторяющихся сбоев доставки.
826
+ name_label: Название
827
+ reason_label: Причина
828
+ subject: 'Конечная точка вебхука отключена: %{endpoint_name}'
829
+ url_label: URL
830
+ weight: Вес
831
+ weight_unit: Единица веса
832
+ width: Ширина
833
+ year: Год
834
+ zip: Индекс