spree_core 6.0.0.beta3 → 6.0.0.rc1

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