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,745 @@
1
+ ---
2
+ th:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: ต้องไม่เว้นว่าง
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: ที่อยู่
11
+ address2: ที่อยู่ 2
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
+ verification_value: เลขยืนยัน
29
+ year: ปี
30
+ spree/customer_group:
31
+ description: คำอธิบาย
32
+ name: ชื่อ
33
+ spree/gift_card:
34
+ amount_used: จำนวนที่ใช้ไป
35
+ expires_at: หมดอายุเมื่อ
36
+ spree/import:
37
+ preferred_delimiter: ตัวคั่น
38
+ spree/import_mapping:
39
+ file_column: คอลัมน์ไฟล์
40
+ schema_field: ฟิลด์สคีมา
41
+ spree/import_row:
42
+ row_number: หมายเลข
43
+ spree/inventory_unit:
44
+ state: จังหวัด
45
+ spree/invitation:
46
+ inviter: ผู้เชิญ
47
+ spree/line_item:
48
+ price: ราคา
49
+ quantity: จำนวน
50
+ spree/option_type:
51
+ filterable: กรองได้
52
+ kind: ประเภท
53
+ name: ชื่อเรียก
54
+ spree/option_value:
55
+ color_code: รหัสสี
56
+ image: รูปตัวอย่างสี
57
+ spree/order:
58
+ checkout_complete: เช็คเอ้าท์เรียบร้อย
59
+ completed_at: รายการสมบูรณ์เมื่อ
60
+ coupon_code: เลขคูปอง
61
+ created_at: วันที่สั่งสินค้า
62
+ email: อีเมลของลูกค้า
63
+ internal_note: หมายเหตุภายใน
64
+ ip_address: หลายเลขไอพี
65
+ item_count: รายการ
66
+ item_total: รวม
67
+ number: หมายเลข
68
+ payment_state: จังหวัด
69
+ shipment_state: จังหวัด
70
+ special_instructions: ข้อแนะนำเพิ่มเติม
71
+ state: จังหวัด
72
+ total: รวม
73
+ spree/order/bill_address:
74
+ address1: ชื่อถนนในใบเสร็จ
75
+ city: ชื่อตำบลในใบเสร็จ
76
+ phone: เบอร์โทรศัพท์ในใบเสร็จ
77
+ state: ชื่อจังหวัดในใบเสร็จ
78
+ spree/order/ship_address:
79
+ address1: ถนนที่จัดส่ง
80
+ city: จังหวัดที่จัดส่ง
81
+ phone: เบอร์โทรศัพท์ผู้รับ
82
+ state: จังหวัดที่จัดส่ง
83
+ spree/payment:
84
+ amount: จำนวน
85
+ number: หมายเลข
86
+ spree/payment_method:
87
+ name: ชื่อ
88
+ spree/policy:
89
+ body: เนื้อหา
90
+ owner: นโยบายสำหรับ
91
+ spree/price_list:
92
+ description: คำอธิบาย
93
+ ends_at: สิ้นสุดเมื่อ
94
+ match_policy: นโยบายการจับคู่
95
+ name: ชื่อ
96
+ priority: ลำดับความสำคัญ
97
+ starts_at: เริ่มต้นเมื่อ
98
+ status: สถานะ
99
+ spree/price_rule:
100
+ priority: ลำดับความสำคัญ
101
+ type: ประเภท
102
+ spree/product:
103
+ available_on: พร้อมเมื่อ
104
+ cost_currency: ราคาอัตราแลกเปลี่ยน
105
+ cost_price: ราคา
106
+ description: รายละเอียด
107
+ discontinue_on: เลิกจำหน่ายเมื่อ
108
+ less_than: น้อยกว่า
109
+ make_active_at: เปิดใช้งานเมื่อ
110
+ master_price: ราคาจริง
111
+ more_than: มากกว่า
112
+ name: ชื่อ
113
+ on_hand: มีสินค้า
114
+ tax_category: ประเภทภาษี
115
+ spree/promotion:
116
+ advertise: โฆษณา
117
+ code: หมายเลข
118
+ description: รายละเอียด
119
+ event_name: Event Name
120
+ expires_at: วันหมดอายุ
121
+ generate_code: สร้างรหัสคูปอง
122
+ name: ชื่อ
123
+ path: Path
124
+ promotion_category: หมวดหมู่โปรโมชัน
125
+ starts_at: เริ่มเมื่อ
126
+ usage_limit: จำกัดจำนวน
127
+ spree/promotion_category:
128
+ code: รหัส
129
+ spree/property:
130
+ name: ชื่อ
131
+ presentation: การแสดงผล
132
+ spree/role:
133
+ name: ชื่อ
134
+ spree/shipment:
135
+ number: หมายเลข
136
+ spree/state:
137
+ abbr: ตัวย่อ
138
+ name: ชื่อ
139
+ spree/store:
140
+ address: ที่อยู่
141
+ contact_phone: เบอร์โทรติดต่อ
142
+ preferred_digital_asset_authorized_clicks: จำกัดจำนวนคลิกดาวน์โหลด
143
+ preferred_digital_asset_authorized_days: จำกัดจำนวนวันดาวน์โหลด
144
+ preferred_limit_digital_download_count: จำกัดจำนวนครั้งดาวน์โหลดลิงก์ดิจิทัล
145
+ preferred_limit_digital_download_days: จำกัดจำนวนวันดาวน์โหลดลิงก์ดิจิทัล
146
+ seo_robots: SEO Robots
147
+ storefront_custom_code_body_end: โค้ดกำหนดเองก่อนปิดแท็ก body
148
+ storefront_custom_code_body_start: โค้ดกำหนดเองหลังเปิดแท็ก body
149
+ storefront_custom_code_head: โค้ดกำหนดเองในส่วนหัวของหน้า
150
+ spree/store_credit:
151
+ amount_used: จำนวนที่ใช้ไป
152
+ spree/tax_category:
153
+ description: รายละเอียด
154
+ name: ชื่อ
155
+ spree/tax_rate:
156
+ amount: อัตรา
157
+ included_in_price: รวมในราคา
158
+ show_rate_in_label: แสดงอัตรา
159
+ spree/taxon:
160
+ name: ชื่อ
161
+ permalink: Permalink
162
+ position: ตำแหน่ง
163
+ sort_order: ลำดับการจัดเรียง
164
+ spree/taxonomy:
165
+ name: ชื่อ
166
+ spree/user:
167
+ avatar: รูปโปรไฟล์
168
+ email: อีเมล
169
+ password: รหัสผ่าน
170
+ password_confirmation: ยืนยันรหัสผ่าน
171
+ spree/variant:
172
+ cost_currency: อัตราแลกเปลี่ยน
173
+ cost_price: ราคา
174
+ depth: ความลึก
175
+ height: ความสูง
176
+ price: ราคา
177
+ sku: SKU
178
+ weight: น้ำหนัก
179
+ width: ความกว้าง
180
+ spree/zone:
181
+ description: รายละเอียด
182
+ name: ชื่อ
183
+ user:
184
+ current_sign_in: เข้าสู่ระบบครั้งปัจจุบันเมื่อ
185
+ last_sign_in: เข้าสู่ระบบครั้งล่าสุดเมื่อ
186
+ sign_in_count: จำนวนครั้งที่เข้าสู่ระบบ
187
+ errors:
188
+ messages:
189
+ blank: ต้องไม่เว้นว่าง
190
+ models:
191
+ spree/allowed_origin:
192
+ attributes:
193
+ origin:
194
+ must_be_origin_only: ต้องเป็น origin (สคีมาและโฮสต์) เท่านั้น โดยไม่มี path, query หรือ fragment
195
+ spree/gift_card:
196
+ attributes:
197
+ base:
198
+ cannot_destroy_used_gift_card: ไม่สามารถลบบัตรของขวัญที่ใช้ไปแล้วได้
199
+ spree/import:
200
+ attributes:
201
+ attachment:
202
+ content_type: มีประเภทเนื้อหาที่ไม่ได้รับอนุญาต
203
+ type:
204
+ inclusion: ไม่อยู่ในรายการประเภทที่ได้รับอนุญาต
205
+ spree/market:
206
+ attributes:
207
+ base:
208
+ cannot_destroy_default_market: ไม่สามารถลบตลาดเริ่มต้นได้
209
+ cannot_destroy_last_market: ไม่สามารถลบตลาดสุดท้ายที่เหลืออยู่ได้
210
+ spree/market_country:
211
+ attributes:
212
+ country:
213
+ already_in_market: ถูกกำหนดให้กับตลาดอื่นในร้านค้านี้แล้ว
214
+ not_in_shipping_zone: ไม่ได้ครอบคลุมโดยเขตการจัดส่งใด ๆ กรุณาตั้งค่าเขตการจัดส่งก่อน
215
+ spree/payment:
216
+ attributes:
217
+ amount:
218
+ greater_than_max_amount: มากกว่าจำนวนสูงสุดที่อนุญาตคือ %{max_amount}
219
+ spree/price_list:
220
+ attributes:
221
+ ends_at:
222
+ must_be_after_starts_at: ต้องอยู่หลังเวลาเริ่มต้น
223
+ spree/product:
224
+ attributes:
225
+ base:
226
+ cannot_destroy_if_attached_to_line_items: ไม่สามารถลบสินค้าที่ถูกเพิ่มในคำสั่งซื้อที่สั่งแล้วได้ ในกรณีนี้กรุณาเลิกจำหน่ายสินค้าแทน
227
+ discontinue_on:
228
+ invalid_date_range: ต้องอยู่หลังวันที่วางจำหน่าย
229
+ spree/product_publication:
230
+ attributes:
231
+ unpublished_at:
232
+ must_be_after_published_at: ต้องอยู่หลังวันที่เผยแพร่
233
+ spree/promotion:
234
+ attributes:
235
+ expires_at:
236
+ invalid_date_range: ต้องอยู่หลังวันที่เริ่มต้น
237
+ spree/store:
238
+ attributes:
239
+ base:
240
+ cannot_destroy_only_store: ไม่สามารถลบร้านค้าเพียงร้านเดียวที่เหลืออยู่ได้
241
+ spree/store_credit:
242
+ attributes:
243
+ amount_authorized:
244
+ exceeds_total_credits: เกินยอดเครดิตทั้งหมด
245
+ amount_used:
246
+ cannot_be_greater_than_amount: ต้องไม่มากกว่าจำนวนเงิน
247
+ greater_than_zero_restrict_delete: มากกว่าศูนย์ ไม่สามารถลบเครดิตร้านค้าได้
248
+ spree/user:
249
+ attributes:
250
+ bill_address_id:
251
+ belongs_to_other_user: เป็นของผู้ใช้รายอื่น
252
+ deprecated_in_completed_order: ถูกยกเลิกการใช้งานในคำสั่งซื้อที่เสร็จสมบูรณ์แล้ว
253
+ ship_address_id:
254
+ belongs_to_other_user: เป็นของผู้ใช้รายอื่น
255
+ deprecated_in_completed_order: ถูกยกเลิกการใช้งานในคำสั่งซื้อที่เสร็จสมบูรณ์แล้ว
256
+ spree/variant:
257
+ attributes:
258
+ base:
259
+ cannot_destroy_if_attached_to_line_items: ไม่สามารถลบตัวเลือกสินค้าที่ถูกเพิ่มในคำสั่งซื้อที่สั่งแล้วได้ ในกรณีนี้กรุณาเลิกจำหน่ายแทน
260
+ spree/webhook_endpoint:
261
+ attributes:
262
+ url:
263
+ internal_address_not_allowed: ต้องไม่ชี้ไปยังที่อยู่ของเครือข่ายภายในหรือเครือข่ายส่วนตัว
264
+ models:
265
+ spree/address:
266
+ one: ที่อยู่
267
+ other: ที่อยู่
268
+ spree/classification:
269
+ one: การจัดประเภท
270
+ other: การจัดประเภท
271
+ spree/country:
272
+ one: ประเทศ
273
+ other: ประเทศ
274
+ spree/credit_card:
275
+ one: บัตรเครดิต
276
+ other: บัตรเครดิต
277
+ spree/customer_group:
278
+ one: กลุ่มลูกค้า
279
+ other: กลุ่มลูกค้า
280
+ spree/customer_group_user:
281
+ one: ผู้ใช้ในกลุ่มลูกค้า
282
+ other: ผู้ใช้ในกลุ่มลูกค้า
283
+ spree/export:
284
+ one: การส่งออก
285
+ other: การส่งออก
286
+ spree/integration:
287
+ one: การเชื่อมต่อ
288
+ other: การเชื่อมต่อ
289
+ spree/inventory_unit:
290
+ one: จำนวนในคลัง
291
+ other: จำนวนในคลัง
292
+ spree/line_item:
293
+ one: Line Item
294
+ other: Line Items
295
+ spree/option_type:
296
+ one: ประเภทตัวเลือก
297
+ other: ประเภทตัวเลือก
298
+ spree/option_value:
299
+ one: ค่าตัวเลือก
300
+ other: ค่าตัวเลือก
301
+ spree/order:
302
+ one: สั่งซื้อ
303
+ other: สั่งซื้อ
304
+ spree/payment:
305
+ one: ชำระ
306
+ other: ชำระ
307
+ spree/payment_method:
308
+ one: วิธีการชำระเงิน
309
+ other: วิธีการชำระเงิน
310
+ spree/price:
311
+ one: ราคา
312
+ other: ราคา
313
+ spree/price_list:
314
+ one: รายการราคา
315
+ other: รายการราคา
316
+ spree/price_rule:
317
+ one: กฎราคา
318
+ other: กฎราคา
319
+ spree/product:
320
+ one: สินค้า
321
+ other: สินค้า
322
+ spree/promotion:
323
+ one: โปรโมชัน
324
+ other: โปรโมชัน
325
+ spree/promotion_category:
326
+ one: หมวดหมู่โปรโมชัน
327
+ other: หมวดหมู่โปรโมชัน
328
+ spree/property:
329
+ one: คุณสมบัติ
330
+ other: คุณสมบัติ
331
+ spree/refund_reason:
332
+ one: เหตุผลการคืนเงิน
333
+ other: เหตุผลการคืนเงิน
334
+ spree/role:
335
+ one: หน้าที่
336
+ other: หน้าที่
337
+ spree/shipment:
338
+ one: การส่งสินค้า
339
+ other: การส่งสินค้า
340
+ spree/shipping_method:
341
+ one: วิธีการจัดส่ง
342
+ other: วิธีการจัดส่ง
343
+ spree/state:
344
+ one: จังหวัด
345
+ other: จังหวัด
346
+ spree/stock_location:
347
+ one: คลังสินค้า
348
+ other: คลังสินค้า
349
+ spree/stock_movement:
350
+ one: การเคลื่อนไหวของสต็อก
351
+ other: การเคลื่อนไหวของสต็อก
352
+ spree/stock_transfer:
353
+ one: การโอนสต็อก
354
+ other: การโอนสต็อก
355
+ spree/store:
356
+ one: ร้านค้า
357
+ other: ร้านค้า
358
+ spree/store_credit:
359
+ one: เครดิตร้านค้า
360
+ other: เครดิตร้านค้า
361
+ spree/tax_category:
362
+ one: ประเภทภาษี
363
+ other: ประเภทภาษี
364
+ spree/tax_rate:
365
+ one: อัตราภาษีTax Rate
366
+ other: อัตราภาษี
367
+ spree/taxon:
368
+ one: หมวดหมู่
369
+ other: หมวดหมู่
370
+ spree/taxonomy:
371
+ one: หมวดหมู่
372
+ other: หมวดหมู่
373
+ spree/user:
374
+ one: ผู้ใช้งาน
375
+ other: ผู้ใช้งาน
376
+ spree/variant:
377
+ one: ตัวแปร
378
+ other: ตัวแปร
379
+ spree/zone:
380
+ one: เขต
381
+ other: เขต
382
+ errors:
383
+ messages:
384
+ already_confirmed: ได้ทำการยืนยันแล้ว
385
+ not_found: ไม่พบ
386
+ not_locked: ไม่ได้ล๊อก
387
+ not_saved:
388
+ one: 'พบข้อผิดพลาด 1 รายการที่ทำให้ %{resource} นี้ไม่สามารถบันทึกได้:'
389
+ other: 'พบข้อผิดพลาด %{count} รายการที่ทำให้ %{resource} นี้ไม่สามารถบันทึกได้:'
390
+ number:
391
+ percentage:
392
+ format:
393
+ precision: 1
394
+ spree:
395
+ accepts_email_marketing: ยอมรับการตลาดผ่านอีเมล
396
+ account: บัญชีผู้ใช้
397
+ active: ใช้งาน
398
+ address: ที่อยู่
399
+ address1: ที่อยู่
400
+ address2: ที่อยู่ (เพิ่มเติม)
401
+ adjustment: แก้ไขรายการ
402
+ adjustment_labels:
403
+ tax_rates:
404
+ excluding_tax: "%{name}%{amount}"
405
+ including_tax: "%{name}%{amount} (รวมในราคาแล้ว)"
406
+ adjustments_deleted: ลบรายการปรับปรุงแล้ว
407
+ all: ทั้งหมด
408
+ amount: รวม
409
+ api_key_no_current_key: ไม่มี API key ที่ยืนยันตัวตนสำหรับคำขอนี้
410
+ api_key_scopes_immutable: ไม่สามารถเปลี่ยนแปลงได้หลังจากสร้างคีย์แล้ว กรุณาสร้างคีย์ใหม่ด้วยขอบเขตที่คุณต้องการและเพิกถอนคีย์นี้
411
+ availability: ความพร้อมจำหน่าย
412
+ backorderable: สามารถสั่งซื้อล่วงหน้าได้
413
+ bill_address: ที่อยู่บนใบเสร็จรับเงิน
414
+ billing_address: ที่อยู่บนใบเสร็จรับเงิน
415
+ calculator: เครื่องคิดเลข
416
+ canceled: ยกเลิกแล้ว
417
+ cannot_be_destroyed: ไม่สามารถลบคำสั่งซื้อได้
418
+ capture: capture
419
+ cart: ตะกร้าสินค้า
420
+ cart_already_updated: ตะกร้าได้รับการอัปเดตแล้ว
421
+ cart_line_item:
422
+ delivery_unavailable: ไม่สามารถจัดส่ง %{li_name} ไปยังที่อยู่ที่เลือกได้
423
+ discontinued: "%{li_name} ถูกนำออกเนื่องจากเลิกจำหน่ายแล้ว"
424
+ out_of_stock: "%{li_name} ถูกนำออกเนื่องจากสินค้าหมด"
425
+ categories: หมวดหมู่
426
+ category: ชนิด
427
+ channel: ช่องทางการขาย
428
+ channels: ช่องทางการขาย
429
+ checkout: สั่งซื้อ
430
+ checkout_requirements:
431
+ email_required: จำเป็นต้องระบุที่อยู่อีเมล
432
+ line_items_required: เพิ่มสินค้าอย่างน้อยหนึ่งรายการลงในตะกร้าของคุณ
433
+ payment_required: เพิ่มวิธีการชำระเงิน
434
+ ship_address_required: จำเป็นต้องระบุที่อยู่จัดส่ง
435
+ city: เขต หรือ อำเภอ
436
+ color_code: รหัสสี
437
+ company: บริษัท
438
+ compare_at_amount: จำนวนเงินเปรียบเทียบ
439
+ compare_at_price: ราคาเปรียบเทียบ
440
+ complete: เสร็จสิ้น
441
+ confirm: ยืนยันรหัสผ่าน
442
+ cost_price: Cost Price
443
+ count_on_hand: จำนวนในมือ
444
+ country: ประเทศ
445
+ coupon_code: หมายเลขคูปอง
446
+ coupon_code_already_applied: คูปองใบนี้ได้ถูกใช้ในรายการสั่งซื้อนี้แล้ว
447
+ coupon_code_applied: คูปองใบนี้ได้ถูกใช้สิทธิร่วมกับรายการสั่งซื้อของคุณเป็นที่เรียบร้อย
448
+ coupon_code_better_exists: คูปองที่ได้ใช้นั้นทำให้ราคาถูกลง
449
+ coupon_code_expired: คูปองหมดอายุแล้ว
450
+ coupon_code_max_usage: คูปองได้ถูกใช้เกินกำหนดแล้ว
451
+ coupon_code_not_eligible: คูปองนี้ไม่สามารถใช้กับรายการสั่งซื้อดังกล่าวได้
452
+ coupon_code_not_found: ไม่พบหมายเลขคูปองนี้ กรุณาลองใหม่อีกครั้ง
453
+ coupon_code_used: รหัสคูปองที่คุณกรอกถูกใช้ไปแล้ว กรุณาลองใหม่อีกครั้ง
454
+ created_at: สร้างเมื่อ
455
+ credit_card: บัตรเครดิต
456
+ currency: สกุลเงิน
457
+ currency_not_supported_by_store: ไม่รองรับโดยร้านค้านี้
458
+ customer: ลูกค้า
459
+ customers: ลูกค้า
460
+ default: ค่าเริ่มต้น
461
+ default_stock_location_name: ที่ตั้งร้านค้า
462
+ default_wishlist_name: รายการสิ่งที่อยากได้
463
+ delivery: จัดส่ง
464
+ depth: ลึก
465
+ description: รายละเอียด
466
+ destination: จุดหมาย
467
+ destroy: ทำลาย
468
+ digital:
469
+ digital_delivery: การจัดส่งแบบดิจิทัล
470
+ digital_assets: สินทรัพย์ดิจิทัล
471
+ discontinued: เลิกจำหน่ายแล้ว
472
+ discontinued_variants_present: รายการสินค้าบางรายการในคำสั่งซื้อนี้มีสินค้าที่ไม่มีจำหน่ายแล้ว
473
+ display_delivery_range: จัดส่งภายใน %{delivery_range} วันทำการ
474
+ draft: ฉบับร่าง
475
+ eligibility_errors:
476
+ messages:
477
+ no_matching_channel: รหัสคูปองนี้ใช้ไม่ได้กับช่องทางการขายนี้
478
+ no_matching_market: รหัสคูปองนี้ใช้ไม่ได้ในตลาดของคุณ
479
+ wrong_country: รหัสคูปองนี้ไม่สามารถใช้ได้ในประเทศของคุณ
480
+ email: อีเมล
481
+ error: ข้อผิดพลาด
482
+ error_user_destroy_with_orders: ไม่สามารถลบผู้ใช้ที่เกี่ยวข้องกับคำสั่งซื้อได้
483
+ error_user_does_not_have_any_store_credits: ผู้ใช้ไม่มีเครดิตร้านค้าที่สามารถใช้ได้
484
+ errors:
485
+ messages:
486
+ cannot_delete_default_channel: ไม่สามารถลบช่องทางเริ่มต้นได้ กรุณาเลื่อนช่องทางอื่นให้เป็นค่าเริ่มต้นก่อน
487
+ channel_store_mismatch: ต้องอยู่ในร้านค้าเดียวกัน
488
+ invalid_order_routing_rule: ไม่ใช่กฎการกำหนดเส้นทางคำสั่งซื้อที่ลงทะเบียนไว้
489
+ invalid_order_routing_strategy: ไม่ใช่กลยุทธ์การกำหนดเส้นทางคำสั่งซื้อที่ลงทะเบียนไว้
490
+ store_association_can_not_be_changed: ไม่สามารถเปลี่ยนแปลงการเชื่อมโยงร้านค้าได้
491
+ store_is_already_set: มีการตั้งค่าร้านค้าไว้แล้ว
492
+ expired: หมดอายุแล้ว
493
+ export_mailer:
494
+ export_done:
495
+ message: เยี่ยมมาก การส่งออกของคุณพร้อมแล้ว! กรุณาใช้ลิงก์ด้านล่างเพื่อดาวน์โหลด
496
+ subject: การส่งออก %{export_number} ของคุณดำเนินการเรียบร้อยแล้ว!
497
+ greeting: สวัสดีคุณ %{user_name},
498
+ field: ฟิลด์
499
+ first_name: ชื่อจริง
500
+ flat_percent: Flat Percent
501
+ flat_rate_per_order: Flat Rate (ต่อรายการสั่งซื้อ)
502
+ flexible_rate: Flexible Rate
503
+ free: ฟรี
504
+ gateway: ช่องทางการชำระเงิน
505
+ gateway_error: เกิดข้อผิดพลาดที่ช่องทางการชำระเงิน
506
+ gift_card: บัตรของขวัญ
507
+ gift_card_already_redeemed: บัตรของขวัญนี้ถูกใช้แลกไปแล้ว
508
+ gift_card_applied: ใช้บัตรของขวัญกับคำสั่งซื้อของคุณเรียบร้อยแล้ว!
509
+ gift_card_customer_not_logged_in: ไม่สามารถใช้บัตรของขวัญกับผู้ใช้ที่เป็นแขกได้
510
+ gift_card_expired: บัตรของขวัญหมดอายุแล้ว
511
+ gift_card_mismatched_currency: ไม่สามารถใช้บัตรของขวัญกับสกุลเงินปัจจุบันได้
512
+ gift_card_mismatched_customer: บัตรของขวัญนี้เชื่อมโยงกับผู้ใช้รายอื่น
513
+ gift_card_not_found: ไม่พบบัตรของขวัญ
514
+ gift_card_removed: นำบัตรของขวัญออกจากคำสั่งซื้อของคุณเรียบร้อยแล้ว
515
+ gift_card_using_store_credit_error: คุณไม่สามารถใช้บัตรของขวัญหลังจากที่ใช้เครดิตร้านค้าแล้วได้
516
+ height: สูง
517
+ i18n:
518
+ this_file_language: ภาษาไทย (TH)
519
+ idempotency_key_reused: Idempotency-Key นี้ถูกใช้ไปแล้วกับพารามิเตอร์คำขอที่แตกต่างกัน
520
+ image: รูปภาพ
521
+ import: นำเข้า
522
+ in_stock: มีสินค้าในสต็อก
523
+ internal_note: หมายเหตุภายใน
524
+ inventory: คลัง
525
+ invitation_mailer:
526
+ greeting: สวัสดีคุณ %{user_name},
527
+ invitation_accepted:
528
+ body: "%{invitee_name} ได้ยอมรับคำเชิญของคุณให้เข้าร่วม %{resource_name}"
529
+ subject: "%{invitee_name} ได้ยอมรับคำเชิญของคุณให้เข้าร่วม %{resource_name}"
530
+ invitation_email:
531
+ body: "%{inviter_name} ได้เชิญคุณให้เข้าร่วม %{resource_name}"
532
+ link_description: 'ในการยอมรับคำเชิญนี้ กรุณาคลิกที่ลิงก์ด้านล่าง:'
533
+ subject: คำเชิญให้เข้าร่วม %{resource_name}
534
+ iso: ISO Alpha-2
535
+ item: สินค้า
536
+ items_cannot_be_shipped: เราไม่สามารถส่งสินค้าดังกล่าวไปยังสถานที่ของคุณได้ กรุณาเลือกสถานที่จัดส่งอื่น
537
+ key: คีย์
538
+ kind: ประเภท
539
+ label: ป้ายกำกับ
540
+ last_name: นามสกุล
541
+ line_item: รายการสินค้า
542
+ line_items: รายการสินค้า
543
+ link: ลิงก์
544
+ locale: ภาษาและภูมิภาค
545
+ locale_not_supported_by_store: ไม่รองรับโดยร้านค้านี้
546
+ manual: ด้วยตนเอง
547
+ market: ตลาด
548
+ me_no_current_user: ไม่มีผู้ดูแลระบบที่ยืนยันตัวตนสำหรับคำขอนี้
549
+ media: สื่อ
550
+ meta_description: Meta Description
551
+ meta_keywords: Meta Keywords
552
+ metadata: Metadata
553
+ min_quantity: จำนวนต่ำสุด
554
+ month: เดือน
555
+ name: ชื่อ
556
+ new_variant: เพิ่มตัวแปรใหม่
557
+ no_cc_type: ไม่มี
558
+ none: ว่าง
559
+ number: หมายเลข
560
+ on_hand: สินค้าในคลัง
561
+ only_active_products_can_be_added_to_cart: ไม่สามารถเพิ่มสินค้าที่เป็นฉบับร่างและที่จัดเก็บแล้วลงในตะกร้าได้ กรุณาตั้งสถานะสินค้าเป็นใช้งานก่อน
562
+ open: เปิด
563
+ option_name: ชื่อตัวเลือก
564
+ option_type: ประเภทตัวเลือก
565
+ option_value: ค่าของตัวเลือก
566
+ options: ตัวเลือก
567
+ or: หรือ
568
+ order: รายการ
569
+ order_routing:
570
+ strategies:
571
+ legacy: แบบดั้งเดิม
572
+ rules: กฎ (เรียงลำดับ)
573
+ order_summary: รายการที่สั่งซื้อ
574
+ orders: รายการสั่งซื้อ
575
+ out_of_stock: สินค้าหมด
576
+ password: รหัสผ่าน
577
+ path: Path
578
+ payment: ชำระ
579
+ payment_method: วิธีชำระเงิน
580
+ payment_methods: วิธีชำระเงิน
581
+ payment_processing_failed: ไม่สามารถชำระเงินได้ กรุณาตรวจสอบข้อมูลที่คุณได้กรอกใหม่
582
+ payment_source: แหล่งที่มาของการชำระเงิน
583
+ percent: เปอร์เซ็น
584
+ percent_per_item: เปอร์เซ็นต่อชิ้น
585
+ phone: เบอร์โทรศัพท์
586
+ price: ราคา
587
+ price_range: ราคาระหว่าง
588
+ price_rules:
589
+ channel_rule:
590
+ description: กำหนดราคาตามช่องทางการขาย
591
+ customer_group_rule:
592
+ description: ใช้การกำหนดราคากับกลุ่มลูกค้าที่ระบุ
593
+ price_sack: Price Sack
594
+ prices: ราคา
595
+ privacy_policy: นโยบายความเป็นส่วนตัว
596
+ processing: กำลังประมวลผล
597
+ product: สินค้า
598
+ product_translations: การแปลสินค้า
599
+ products: สินค้า
600
+ products_cannot_be_shipped: ขณะนี้เราไม่สามารถจัดส่ง %{product_names} ไปยังตำแหน่งปัจจุบันของคุณได้ กรุณาเปลี่ยนที่อยู่จัดส่งหรือนำ %{product_names} ออกจากตะกร้าของคุณ
601
+ promotion: โปรโมชั่น
602
+ promotion_action_types:
603
+ create_adjustment:
604
+ description: Creates a promotion credit adjustment on the order
605
+ name: สร้างการปรับเปลี่ยน
606
+ create_line_items:
607
+ description: สร้างตะกร้าสินค้าด้วยจำนวนที่กำหนดจากตัวแปร
608
+ name: สร้าง line items
609
+ promotion_actions: ดำเนินการ
610
+ promotion_already_used: คุณไม่สามารถลบโปรโมชันที่ถูกใช้ไปแล้วได้
611
+ promotion_label: โปรโมชัน (%{name})
612
+ promotion_rule_types:
613
+ category:
614
+ description: คำสั่งซื้อมีสินค้าในหมวดหมู่ที่ระบุ
615
+ name: หมวดหมู่
616
+ channel:
617
+ description: จำกัดเฉพาะคำสั่งซื้อที่ทำผ่านช่องทางที่ระบุ
618
+ name: ช่องทางการขาย
619
+ country:
620
+ description: จำกัดเฉพาะคำสั่งซื้อที่มีที่อยู่จัดส่งในประเทศที่ระบุ
621
+ name: ประเทศ
622
+ currency:
623
+ description: จำกัดเฉพาะคำสั่งซื้อในสกุลเงินที่ระบุ
624
+ name: สกุลเงิน
625
+ customer:
626
+ description: ใช้ได้เฉพาะลูกค้าที่ระบุเท่านั้น
627
+ name: ลูกค้า
628
+ customer_group:
629
+ description: ใช้ได้เฉพาะลูกค้าในกลุ่มลูกค้าที่ระบุเท่านั้น
630
+ name: กลุ่มลูกค้า
631
+ customer_logged_in:
632
+ description: ใช้ได้เฉพาะลูกค้าที่เข้าสู่ระบบแล้วเท่านั้น
633
+ name: เฉพาะลูกค้าที่เข้าสู่ระบบแล้ว
634
+ first_order:
635
+ description: ต้องเป็นรายการสั่งซื้อแรกเท่านั้น
636
+ name: รายการแรก
637
+ item_total:
638
+ description: จำนวนสั่งซื้อนั้นอยู่ในเกณฑ์ดังกล่าว
639
+ name: จำนวนทั้งหมด
640
+ market:
641
+ description: จำกัดเฉพาะคำสั่งซื้อที่ทำในตลาดที่ระบุ
642
+ name: ตลาด
643
+ product:
644
+ description: รายการนั้นรวมสินค้าที่กำหนด
645
+ name: สินค้า
646
+ promotions: โปรโมชั่น
647
+ quantity: จำนวน
648
+ query: การค้นหา
649
+ reason: เหตุผล
650
+ received: ได้รับแล้ว
651
+ reference: อ้างอิง
652
+ refund: คืนเงิน
653
+ refund_amount: จำนวนเงินที่คืน
654
+ registration: ลงทะเบียน
655
+ remove: ลบ
656
+ remove_gift_card_on_completed_order_error: คุณไม่สามารถนำบัตรของขวัญออกได้หลังจากที่สั่งซื้อแล้ว
657
+ resellable: ขายต่อได้
658
+ resend: ส่งใหม่
659
+ response_code: รหัสที่ได้รับ
660
+ return: กลับ
661
+ returned: คืน
662
+ returns_policy: นโยบายการคืนสินค้า
663
+ row: แถว
664
+ rules: กฏ
665
+ say_no: ไม่
666
+ say_yes: ถูกต้อง
667
+ scope: Scope
668
+ selected_quantity_not_available: ที่เลือกของ %{item} ไม่พร้อมจำหน่าย
669
+ ship: ส่ง
670
+ ship_address: ที่อยู่���่งของ
671
+ shipment: การส่ง
672
+ shipped: ส่งแล้ว
673
+ shipping: ส่ง
674
+ shipping_address: ที่อยู่การจัดส่ง
675
+ shipping_flat_rate_per_item: อัตราสุทธิต่อชิ้น
676
+ shipping_flat_rate_per_order: อัตราสุทธิ
677
+ shipping_flexible_rate: อัตราแปรผั่นต่อชิ้น
678
+ shipping_policy: นโยบายการจัดส่ง
679
+ shipping_price_sack: Price sack
680
+ shipping_rates:
681
+ display_price:
682
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
683
+ including_tax: "%{price} (รวม %{tax_amount} %{tax_rate_name})"
684
+ source: จาก
685
+ status: สถานะ
686
+ stock_location: สถานที่ของคลังสินค้า
687
+ stock_locations: สถานที่ของคลังสินค้า
688
+ stock_transfer:
689
+ errors:
690
+ must_have_variant: คุณต้องเพิ่มตัวเลือกสินค้าอย่างน้อยหนึ่งรายการ
691
+ same_location: ต้องไม่เป็นที่ตั้งเดียวกับที่ตั้งปลายทาง
692
+ variants_unavailable: ตัวเลือกสินค้าบางรายการไม่พร้อมจำหน่ายที่ %{stock}
693
+ store: Store
694
+ store_credit:
695
+ allocated: เพิ่มแล้ว
696
+ authorized: อนุมัติแล้ว
697
+ captured: ใช้แล้ว
698
+ credit: เครดิต
699
+ eligible: มีสิทธิ์
700
+ store_credit_name: เครดิตร้านค้า
701
+ store_credit_payment_method:
702
+ currency_mismatch: สกุลเงินของเครดิตร้านค้าไม่ตรงกับสกุลเงินของคำสั่งซื้อ
703
+ insufficient_authorized_amount: ไม่สามารถเก็บเงินเกินจำนวนที่ได้รับอนุมัติได้
704
+ insufficient_funds: ยอดเครดิตร้านค้าที่เหลืออยู่ไม่เพียงพอ
705
+ successful_action: "%{action} เครดิตร้านค้าสำเร็จ"
706
+ unable_to_credit: 'ไม่สามารถเครดิตรหัส: %{auth_code}'
707
+ unable_to_find: ไม่พบเครดิตร้านค้า
708
+ unable_to_find_for_action: 'ไม่พบเครดิตร้านค้าสำหรับรหัสอนุมัติ: %{auth_code} สำหรับการดำเนินการ: %{action}'
709
+ unable_to_void: 'ไม่สามารถยกเลิกรหัส: %{auth_code}'
710
+ tags: แท็ก
711
+ tax: ภาษี
712
+ tax_category: ประเภทภาษี
713
+ terms_of_service: ข้อกำหนดในการให้บริการ
714
+ there_are_no_items_for_this_order: ไม่พบรายการสินค้าในการสั่งซื้อนี้ กรุณาเพิ่มรายการสินค้าเพื่อทำการต่อ
715
+ total: จำนวน
716
+ tracking: Tracking
717
+ tracking_number: Tracking Number
718
+ tracking_url: Tracking URL
719
+ type: ประเภท
720
+ unable_to_connect_to_gateway: ไม่สามารถติดต่อกับ Gateway
721
+ updated_at: อัปเดตเมื่อ
722
+ url: URL
723
+ user: ผู้ใช้
724
+ validation:
725
+ must_be_int: ต้องเป็นเลขจำนวนเต็ม
726
+ value: ค่า
727
+ variant: ตัวแปร
728
+ variants: ตัวแปร
729
+ verified: ยืนยันแล้ว
730
+ void: Void
731
+ webhook_mailer:
732
+ endpoint_disabled:
733
+ disabled_at_label: ปิดใช้งานเมื่อ
734
+ heading: ปลายทาง Webhook ถูกปิดใช้งาน
735
+ instructions: กรุณาตรวจสอบ URL ปลายทางและบริการ จากนั้นเปิดใช้งานใหม่ได้ที่ การตั้งค่า → นักพัฒนา → Webhooks
736
+ message: ปลายทาง Webhook "%{endpoint_name}" ถูกปิดใช้งานโดยอัตโนมัติหลังจากส่งล้มเหลวซ้ำหลายครั้ง
737
+ name_label: ชื่อ
738
+ reason_label: เหตุผล
739
+ subject: 'ปลายทาง Webhook ถูกปิดใช้งาน: %{endpoint_name}'
740
+ url_label: URL
741
+ weight: น้ำหนัก
742
+ weight_unit: หน่วยน้ำหนัก
743
+ width: กว้าง
744
+ year: ปี
745
+ zip: รหัสไปรษณีย์