spree_core 6.0.0.beta4 → 6.0.0.rc2

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