spree_core 6.0.0.beta4 → 6.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/helpers/spree/images_helper.rb +0 -57
  4. data/app/jobs/spree/base_job.rb +21 -0
  5. data/app/jobs/spree/carts/reap_expired_job.rb +2 -2
  6. data/app/jobs/spree/collections/regenerate_time_based_job.rb +6 -3
  7. data/app/jobs/spree/orders/finalize_stale_drafts_job.rb +8 -5
  8. data/app/jobs/spree/payments/cancel_unused_sessions_job.rb +61 -0
  9. data/app/jobs/spree/seller_payouts/sweep_seller_job.rb +2 -0
  10. data/app/mailers/spree/admin_user_mailer.rb +4 -19
  11. data/app/mailers/spree/base_mailer.rb +96 -13
  12. data/app/mailers/spree/email_template_mailer.rb +27 -0
  13. data/app/mailers/spree/export_mailer.rb +3 -4
  14. data/app/mailers/spree/import_mailer.rb +3 -4
  15. data/app/mailers/spree/invitation_mailer.rb +24 -7
  16. data/app/mailers/spree/seller_user_mailer.rb +4 -16
  17. data/app/mailers/spree/webhook_mailer.rb +2 -2
  18. data/app/models/concerns/spree/acted_by.rb +1 -1
  19. data/app/models/concerns/spree/admin_user_methods.rb +13 -1
  20. data/app/models/concerns/spree/api_typed.rb +91 -0
  21. data/app/models/concerns/spree/calculator/tiers.rb +76 -0
  22. data/app/models/concerns/spree/customer_methods.rb +15 -14
  23. data/app/models/concerns/spree/email_template_identity.rb +52 -0
  24. data/app/models/concerns/spree/parameterizable_name.rb +2 -0
  25. data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
  26. data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
  27. data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
  28. data/app/models/concerns/spree/preference_schema.rb +4 -12
  29. data/app/models/concerns/spree/product_scopes.rb +11 -1
  30. data/app/models/concerns/spree/provider_listing.rb +41 -0
  31. data/app/models/concerns/spree/publishable.rb +82 -14
  32. data/app/models/concerns/spree/purchase/addresses.rb +23 -10
  33. data/app/models/concerns/spree/purchase/currency.rb +1 -1
  34. data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
  35. data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
  36. data/app/models/concerns/spree/purchase/locale.rb +1 -1
  37. data/app/models/concerns/spree/purchase/payment_processing.rb +7 -3
  38. data/app/models/concerns/spree/purchase/purchase_order.rb +2 -2
  39. data/app/models/concerns/spree/purchase/totals.rb +49 -1
  40. data/app/models/concerns/spree/receivable.rb +1 -1
  41. data/app/models/concerns/spree/searchable.rb +0 -4
  42. data/app/models/concerns/spree/secret_preferences.rb +59 -0
  43. data/app/models/concerns/spree/single_store_resource.rb +1 -1
  44. data/app/models/concerns/spree/stores/email_branding.rb +31 -0
  45. data/app/models/concerns/spree/type_labels.rb +38 -0
  46. data/app/models/concerns/spree/typed_adjustment_line.rb +1 -1
  47. data/app/models/concerns/spree/typed_associations.rb +6 -0
  48. data/app/models/spree/address.rb +11 -1
  49. data/app/models/spree/adjusters/promotion.rb +1 -15
  50. data/app/models/spree/allowed_origin.rb +0 -1
  51. data/app/models/spree/api_key.rb +5 -6
  52. data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
  53. data/app/models/spree/base.rb +70 -22
  54. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -3
  55. data/app/models/spree/calculator/flat_rate.rb +1 -3
  56. data/app/models/spree/calculator/flexi_rate.rb +1 -3
  57. data/app/models/spree/calculator/percent_on_line_item.rb +1 -1
  58. data/app/models/spree/calculator/price_sack.rb +1 -3
  59. data/app/models/spree/calculator/shipping/digital_delivery.rb +1 -3
  60. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -3
  61. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -3
  62. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -3
  63. data/app/models/spree/calculator/shipping/per_item.rb +1 -3
  64. data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
  65. data/app/models/spree/calculator/tiered_flat_rate.rb +6 -23
  66. data/app/models/spree/calculator/tiered_percent.rb +7 -25
  67. data/app/models/spree/cart.rb +78 -18
  68. data/app/models/spree/channel/gating.rb +1 -1
  69. data/app/models/spree/channel.rb +4 -4
  70. data/app/models/spree/claim.rb +21 -1
  71. data/app/models/spree/claim_line_item.rb +41 -6
  72. data/app/models/spree/collection.rb +0 -1
  73. data/app/models/spree/collection_rule.rb +5 -21
  74. data/app/models/spree/commission_line.rb +1 -1
  75. data/app/models/spree/commission_rate.rb +2 -3
  76. data/app/models/spree/commission_rate_value.rb +1 -1
  77. data/app/models/spree/commission_rule.rb +4 -11
  78. data/app/models/spree/commission_rules/product_rule.rb +1 -1
  79. data/app/models/spree/company_invitation.rb +1 -0
  80. data/app/models/spree/consent_record.rb +0 -1
  81. data/app/models/spree/credit_card.rb +1 -1
  82. data/app/models/spree/current.rb +23 -0
  83. data/app/models/spree/custom_field.rb +2 -2
  84. data/app/models/spree/custom_field_definition.rb +9 -23
  85. data/app/models/spree/custom_fields/boolean.rb +1 -1
  86. data/app/models/spree/custom_fields/json.rb +1 -1
  87. data/app/models/spree/data_feed/google.rb +0 -2
  88. data/app/models/spree/data_request.rb +1 -1
  89. data/app/models/spree/delivery_method.rb +30 -13
  90. data/app/models/spree/delivery_method_rule.rb +4 -11
  91. data/app/models/spree/delivery_rate.rb +4 -5
  92. data/app/models/spree/delivery_rate_provider/base.rb +1 -0
  93. data/app/models/spree/delivery_zone.rb +0 -1
  94. data/app/models/spree/delivery_zone_member.rb +4 -4
  95. data/app/models/spree/digital_asset.rb +7 -0
  96. data/app/models/spree/digital_asset_provider/base.rb +2 -0
  97. data/app/models/spree/digital_link.rb +2 -5
  98. data/app/models/spree/discount.rb +1 -1
  99. data/app/models/spree/email_template.rb +25 -0
  100. data/app/models/spree/email_template_draft.rb +13 -0
  101. data/app/models/spree/email_template_revision.rb +17 -0
  102. data/app/models/spree/email_templates/entry.rb +118 -0
  103. data/app/models/spree/email_templates/sample_record.rb +16 -0
  104. data/app/models/spree/emails/branding.rb +80 -0
  105. data/app/models/spree/exchange.rb +15 -1
  106. data/app/models/spree/exchange_line_item.rb +121 -5
  107. data/app/models/spree/export.rb +0 -1
  108. data/app/models/spree/exports/products.rb +10 -1
  109. data/app/models/spree/exports/report.rb +1 -1
  110. data/app/models/spree/fee.rb +4 -2
  111. data/app/models/spree/fulfillment.rb +53 -27
  112. data/app/models/spree/fulfillment_changer.rb +2 -2
  113. data/app/models/spree/fulfillment_item.rb +0 -4
  114. data/app/models/spree/fulfillment_provider/base.rb +1 -0
  115. data/app/models/spree/gateway/bogus.rb +4 -0
  116. data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
  117. data/app/models/spree/gateway.rb +5 -1
  118. data/app/models/spree/gift_card.rb +12 -1
  119. data/app/models/spree/gift_card_batch.rb +0 -1
  120. data/app/models/spree/import.rb +2 -7
  121. data/app/models/spree/import_mapping.rb +1 -2
  122. data/app/models/spree/import_row.rb +2 -2
  123. data/app/models/spree/import_schemas/products.rb +1 -0
  124. data/app/models/spree/integration.rb +8 -18
  125. data/app/models/spree/invitation.rb +5 -5
  126. data/app/models/spree/line_item.rb +13 -2
  127. data/app/models/spree/locale.rb +11 -8
  128. data/app/models/spree/market.rb +1 -0
  129. data/app/models/spree/newsletter_subscriber.rb +3 -0
  130. data/app/models/spree/order.rb +56 -138
  131. data/app/models/spree/order_group.rb +11 -2
  132. data/app/models/spree/order_inventory.rb +10 -5
  133. data/app/models/spree/order_promotion.rb +1 -1
  134. data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
  135. data/app/models/spree/order_routing/strategy/base.rb +4 -2
  136. data/app/models/spree/order_routing/strategy/rules.rb +1 -1
  137. data/app/models/spree/order_routing_rule.rb +6 -22
  138. data/app/models/spree/package_type.rb +1 -2
  139. data/app/models/spree/payment/gateway_options.rb +14 -52
  140. data/app/models/spree/payment/processing.rb +2 -4
  141. data/app/models/spree/payment.rb +20 -5
  142. data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
  143. data/app/models/spree/payment_method/store_credit.rb +4 -4
  144. data/app/models/spree/payment_method.rb +36 -4
  145. data/app/models/spree/payment_session.rb +5 -1
  146. data/app/models/spree/payment_setup_session.rb +1 -0
  147. data/app/models/spree/payout_provider/base.rb +3 -1
  148. data/app/models/spree/pickup_point_provider/base.rb +2 -0
  149. data/app/models/spree/price_list.rb +1 -2
  150. data/app/models/spree/price_rules/channel_rule.rb +1 -1
  151. data/app/models/spree/price_rules/customer_group_rule.rb +1 -1
  152. data/app/models/spree/product.rb +31 -7
  153. data/app/models/spree/product_submission.rb +0 -12
  154. data/app/models/spree/product_type.rb +0 -1
  155. data/app/models/spree/promotion/actions/create_line_items.rb +27 -17
  156. data/app/models/spree/promotion/rules/category.rb +0 -4
  157. data/app/models/spree/promotion/rules/channel.rb +0 -4
  158. data/app/models/spree/promotion/rules/country.rb +0 -4
  159. data/app/models/spree/promotion/rules/currency.rb +0 -4
  160. data/app/models/spree/promotion/rules/customer_group.rb +0 -4
  161. data/app/models/spree/promotion/rules/first_order.rb +0 -4
  162. data/app/models/spree/promotion/rules/item_total.rb +4 -8
  163. data/app/models/spree/promotion/rules/market.rb +0 -4
  164. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
  165. data/app/models/spree/promotion/rules/option_value.rb +0 -3
  166. data/app/models/spree/promotion/rules/product.rb +0 -4
  167. data/app/models/spree/promotion/rules/user.rb +0 -4
  168. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
  169. data/app/models/spree/promotion.rb +35 -6
  170. data/app/models/spree/promotion_action.rb +7 -14
  171. data/app/models/spree/promotion_action_line_item.rb +1 -1
  172. data/app/models/spree/promotion_handler/coupon.rb +59 -27
  173. data/app/models/spree/promotion_rule.rb +7 -14
  174. data/app/models/spree/purchase_order.rb +1 -0
  175. data/app/models/spree/quantity_rule.rb +1 -1
  176. data/app/models/spree/refund.rb +28 -3
  177. data/app/models/spree/return.rb +30 -2
  178. data/app/models/spree/return_line_item.rb +65 -14
  179. data/app/models/spree/role.rb +7 -7
  180. data/app/models/spree/saved_report.rb +1 -1
  181. data/app/models/spree/seller.rb +2 -1
  182. data/app/models/spree/seller_payout.rb +7 -0
  183. data/app/models/spree/seller_requirement.rb +4 -12
  184. data/app/models/spree/seller_requirement_custom_field.rb +1 -2
  185. data/app/models/spree/seller_requirement_submission.rb +2 -2
  186. data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
  187. data/app/models/spree/seller_transfer.rb +5 -0
  188. data/app/models/spree/shipping_label.rb +1 -0
  189. data/app/models/spree/stock/availability_validator.rb +2 -2
  190. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  191. data/app/models/spree/stock/packer.rb +2 -2
  192. data/app/models/spree/stock/splitter/weight.rb +1 -1
  193. data/app/models/spree/stock_level/custom_events.rb +6 -0
  194. data/app/models/spree/stock_level.rb +1 -1
  195. data/app/models/spree/stock_movement.rb +1 -1
  196. data/app/models/spree/stock_receipt_item.rb +1 -1
  197. data/app/models/spree/stock_reservation.rb +2 -2
  198. data/app/models/spree/stock_transfer.rb +4 -2
  199. data/app/models/spree/store.rb +33 -7
  200. data/app/models/spree/store_credit.rb +8 -9
  201. data/app/models/spree/store_credit_event.rb +5 -5
  202. data/app/models/spree/tax_exemption_certificate.rb +2 -0
  203. data/app/models/spree/tax_identifier.rb +3 -1
  204. data/app/models/spree/tax_line.rb +53 -3
  205. data/app/models/spree/tax_provider/base.rb +71 -14
  206. data/app/models/spree/tax_provider/internal.rb +59 -33
  207. data/app/models/spree/tax_provider/recorded_share.rb +114 -0
  208. data/app/models/spree/tax_rate.rb +1 -2
  209. data/app/models/spree/taxonomy.rb +0 -1
  210. data/app/models/spree/variant.rb +4 -3
  211. data/app/models/spree/variant_media.rb +1 -1
  212. data/app/models/spree/webhook_endpoint.rb +10 -13
  213. data/app/models/spree/wishlist.rb +1 -6
  214. data/app/models/spree/wishlist_item/custom_events.rb +6 -0
  215. data/app/presenters/spree/csv/customer_presenter.rb +1 -1
  216. data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
  217. data/app/presenters/spree/csv/order_line_item_presenter.rb +1 -1
  218. data/app/presenters/spree/csv/product_variant_presenter.rb +42 -12
  219. data/app/serializers/spree/emails/base_serializer.rb +14 -0
  220. data/app/serializers/spree/emails/export_serializer.rb +13 -0
  221. data/app/serializers/spree/emails/import_serializer.rb +19 -0
  222. data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
  223. data/app/serializers/spree/emails/store_serializer.rb +31 -0
  224. data/app/serializers/spree/emails/user_serializer.rb +12 -0
  225. data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
  226. data/app/services/spree/carts/create.rb +8 -2
  227. data/app/services/spree/carts/destroy.rb +2 -2
  228. data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
  229. data/app/services/spree/carts/split_by_seller.rb +1 -1
  230. data/app/services/spree/carts/update.rb +19 -5
  231. data/app/services/spree/catalogs/set_product_terms.rb +1 -1
  232. data/app/services/spree/categories/add_products.rb +13 -31
  233. data/app/services/spree/categories/remove_products.rb +12 -51
  234. data/app/services/spree/checkout/advance.rb +1 -4
  235. data/app/services/spree/collections/add_products.rb +10 -23
  236. data/app/services/spree/collections/remove_products.rb +7 -43
  237. data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
  238. data/app/services/spree/data_requests/create.rb +1 -1
  239. data/app/services/spree/deliveries/destroy.rb +2 -2
  240. data/app/services/spree/email_templates/check.rb +58 -0
  241. data/app/services/spree/email_templates/no_sample_record.rb +7 -0
  242. data/app/services/spree/email_templates/preview.rb +99 -0
  243. data/app/services/spree/emails/file_system.rb +23 -0
  244. data/app/services/spree/emails/filters.rb +84 -0
  245. data/app/services/spree/emails/liquid_context.rb +48 -0
  246. data/app/services/spree/emails/rendered_email.rb +14 -0
  247. data/app/services/spree/emails/renderer.rb +125 -0
  248. data/app/services/spree/emails/template.rb +51 -0
  249. data/app/services/spree/emails/template_data.rb +23 -0
  250. data/app/services/spree/emails/template_resolver.rb +109 -0
  251. data/app/services/spree/emails/text_converter.rb +72 -0
  252. data/app/services/spree/emails/translation_inliner.rb +134 -0
  253. data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
  254. data/app/services/spree/imports/row_processors/product_variant.rb +65 -34
  255. data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
  256. data/app/services/spree/locales.rb +4 -5
  257. data/app/services/spree/newsletter/subscribe.rb +8 -12
  258. data/app/services/spree/orders/build_fulfillments.rb +3 -2
  259. data/app/services/spree/orders/create.rb +2 -1
  260. data/app/services/spree/orders/discounts/create.rb +7 -4
  261. data/app/services/spree/orders/discounts/destroy.rb +1 -0
  262. data/app/services/spree/orders/discounts/update.rb +1 -0
  263. data/app/services/spree/orders/fees/create.rb +1 -0
  264. data/app/services/spree/orders/fees/destroy.rb +1 -0
  265. data/app/services/spree/orders/fees/update.rb +1 -0
  266. data/app/services/spree/orders/remove_line_item.rb +13 -3
  267. data/app/services/spree/orders/update.rb +10 -6
  268. data/app/services/spree/orders/update_item.rb +6 -3
  269. data/app/services/spree/orders/update_statuses.rb +3 -1
  270. data/app/services/spree/product_memberships.rb +61 -0
  271. data/app/services/spree/returns/eligibility_validator.rb +1 -1
  272. data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
  273. data/app/services/spree/seeds/commission_rates.rb +1 -1
  274. data/app/services/spree/seeds/digital_delivery.rb +1 -1
  275. data/app/services/spree/seeds/payment_methods.rb +2 -2
  276. data/app/services/spree/seeds/saved_reports.rb +3 -3
  277. data/app/services/spree/sellers/requirements.rb +1 -2
  278. data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
  279. data/app/services/spree/shipping_labels/store_file.rb +3 -3
  280. data/app/services/spree/stock_levels/correct.rb +3 -3
  281. data/app/services/spree/stock_reservations/reserve.rb +2 -3
  282. data/app/services/spree/store_credits/apply.rb +15 -13
  283. data/app/services/spree/stores/provision_defaults.rb +15 -14
  284. data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
  285. data/app/views/layouts/spree/base_mailer.html.erb +2 -43
  286. data/app/views/layouts/spree/base_mailer.liquid +79 -0
  287. data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
  288. data/app/views/spree/export_mailer/export_done.liquid +12 -0
  289. data/app/views/spree/import_mailer/import_done.liquid +15 -0
  290. data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
  291. data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
  292. data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
  293. data/app/views/spree/shared/_mailer_button.html.erb +4 -5
  294. data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
  295. data/app/views/spree/shared/_summary_row.liquid +8 -0
  296. data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
  297. data/app/workflows/spree/carts/add_item.rb +4 -4
  298. data/app/workflows/spree/carts/complete.rb +13 -3
  299. data/app/workflows/spree/carts/merge.rb +1 -1
  300. data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
  301. data/app/workflows/spree/carts/upsert_items.rb +18 -9
  302. data/app/workflows/spree/claims/approve.rb +5 -22
  303. data/app/workflows/spree/claims/cancel.rb +5 -21
  304. data/app/workflows/spree/claims/create.rb +15 -0
  305. data/app/workflows/spree/claims/deny.rb +7 -0
  306. data/app/workflows/spree/claims/resolve.rb +34 -31
  307. data/app/workflows/spree/customers/anonymize.rb +3 -4
  308. data/app/workflows/spree/customers/create.rb +1 -1
  309. data/app/workflows/spree/data_requests/fulfill.rb +2 -2
  310. data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
  311. data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
  312. data/app/workflows/spree/email_templates/publish.rb +70 -0
  313. data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
  314. data/app/workflows/spree/email_templates/revert.rb +29 -0
  315. data/app/workflows/spree/email_templates/save_draft.rb +85 -0
  316. data/app/workflows/spree/exchanges/approve.rb +5 -22
  317. data/app/workflows/spree/exchanges/cancel.rb +5 -21
  318. data/app/workflows/spree/exchanges/create.rb +6 -0
  319. data/app/workflows/spree/exchanges/fulfill.rb +75 -51
  320. data/app/workflows/spree/exchanges/receive.rb +6 -65
  321. data/app/workflows/spree/fulfillments/cancel.rb +1 -1
  322. data/app/workflows/spree/fulfillments/create.rb +51 -47
  323. data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
  324. data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
  325. data/app/workflows/spree/fulfillments/replacements.rb +59 -0
  326. data/app/workflows/spree/gift_cards/apply.rb +2 -2
  327. data/app/workflows/spree/orders/add_item.rb +5 -1
  328. data/app/workflows/spree/orders/cancel.rb +3 -3
  329. data/app/workflows/spree/orders/complete.rb +16 -8
  330. data/app/workflows/spree/payments/process.rb +2 -2
  331. data/app/workflows/spree/post_sale/approval.rb +35 -0
  332. data/app/workflows/spree/post_sale/cancellation.rb +44 -0
  333. data/app/workflows/spree/post_sale/receipt.rb +92 -0
  334. data/app/workflows/spree/products/nested_attributes.rb +1 -1
  335. data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
  336. data/app/workflows/spree/purchase_orders/close.rb +3 -31
  337. data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
  338. data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
  339. data/app/workflows/spree/purchase_orders/receive.rb +1 -1
  340. data/app/workflows/spree/purchase_orders/update.rb +5 -34
  341. data/app/workflows/spree/receivables/closing_short.rb +46 -0
  342. data/app/workflows/spree/receivables/draft_editing.rb +48 -0
  343. data/app/workflows/spree/refunds/create.rb +5 -2
  344. data/app/workflows/spree/refunds/order_payments.rb +14 -2
  345. data/app/workflows/spree/refunds/tax_credit.rb +67 -0
  346. data/app/workflows/spree/returns/approve.rb +5 -22
  347. data/app/workflows/spree/returns/cancel.rb +5 -22
  348. data/app/workflows/spree/returns/create.rb +8 -0
  349. data/app/workflows/spree/returns/receive.rb +5 -76
  350. data/app/workflows/spree/returns/refund.rb +31 -8
  351. data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
  352. data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
  353. data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
  354. data/app/workflows/spree/shipping_labels/record.rb +5 -5
  355. data/app/workflows/spree/shipping_labels/refund.rb +2 -2
  356. data/app/workflows/spree/stock_receipts/recording.rb +4 -4
  357. data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
  358. data/app/workflows/spree/stock_transfers/close.rb +3 -30
  359. data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
  360. data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
  361. data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
  362. data/app/workflows/spree/stock_transfers/receive.rb +1 -1
  363. data/app/workflows/spree/stock_transfers/update.rb +5 -33
  364. data/config/i18n-tasks.yml +32 -18
  365. data/config/initializers/alba.rb +7 -0
  366. data/config/language_names.csv +264 -0
  367. data/config/locales/ar.yml +811 -0
  368. data/config/locales/be.yml +855 -0
  369. data/config/locales/bg.yml +723 -0
  370. data/config/locales/ca.yml +689 -0
  371. data/config/locales/cs.yml +855 -0
  372. data/config/locales/da.yml +771 -0
  373. data/config/locales/de-CH.yml +248 -0
  374. data/config/locales/de.yml +835 -0
  375. data/config/locales/el.yml +769 -0
  376. data/config/locales/en.yml +37 -503
  377. data/config/locales/es-CL.yml +301 -0
  378. data/config/locales/es-EC.yml +186 -0
  379. data/config/locales/es-MX.yml +334 -0
  380. data/config/locales/es.yml +831 -0
  381. data/config/locales/et.yml +644 -0
  382. data/config/locales/fa.yml +709 -0
  383. data/config/locales/fi.yml +771 -0
  384. data/config/locales/fr.yml +830 -0
  385. data/config/locales/hu.yml +751 -0
  386. data/config/locales/id.yml +756 -0
  387. data/config/locales/it.yml +833 -0
  388. data/config/locales/ja.yml +726 -0
  389. data/config/locales/km.yml +759 -0
  390. data/config/locales/ko.yml +575 -0
  391. data/config/locales/ku.yml +753 -0
  392. data/config/locales/lt.yml +821 -0
  393. data/config/locales/lv.yml +685 -0
  394. data/config/locales/nb.yml +824 -0
  395. data/config/locales/ne.yml +823 -0
  396. data/config/locales/nl.yml +826 -0
  397. data/config/locales/pl.yml +835 -0
  398. data/config/locales/pt-BR.yml +547 -0
  399. data/config/locales/pt.yml +636 -0
  400. data/config/locales/ro.yml +750 -0
  401. data/config/locales/ru.yml +834 -0
  402. data/config/locales/sk.yml +680 -0
  403. data/config/locales/sl-SI.yml +600 -0
  404. data/config/locales/sv.yml +827 -0
  405. data/config/locales/th.yml +745 -0
  406. data/config/locales/tr.yml +777 -0
  407. data/config/locales/uk.yml +836 -0
  408. data/config/locales/vi.yml +768 -0
  409. data/config/locales/zh-CN.yml +786 -0
  410. data/config/locales/zh-TW.yml +834 -0
  411. data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
  412. data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
  413. data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
  414. data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
  415. data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
  416. data/lib/generators/spree/dummy/templates/rails/test.rb +7 -0
  417. data/lib/spree/checkout/default_requirements.rb +37 -13
  418. data/lib/spree/core/configuration.rb +1 -1
  419. data/lib/spree/core/controller_helpers/store.rb +1 -1
  420. data/lib/spree/core/dependencies.rb +5 -4
  421. data/lib/spree/core/emails/escaped_output.rb +60 -0
  422. data/lib/spree/core/engine.rb +48 -167
  423. data/lib/spree/core/permissions/default_catalog.rb +5 -0
  424. data/lib/spree/core/preferences/json_conversion.rb +182 -0
  425. data/lib/spree/core/preferences/masking.rb +4 -1
  426. data/lib/spree/core/preferences/preferable.rb +137 -83
  427. data/lib/spree/core/preferences/preferable_class_methods.rb +81 -146
  428. data/lib/spree/core/previews/import_preview.rb +10 -0
  429. data/lib/spree/core/tax/provider_error.rb +37 -0
  430. data/lib/spree/core/version.rb +1 -1
  431. data/lib/spree/core.rb +85 -370
  432. data/lib/spree/emails/editable_templates.rb +82 -0
  433. data/lib/spree/events/catalog.rb +189 -0
  434. data/lib/spree/events.rb +21 -1
  435. data/lib/spree/hooks.rb +0 -17
  436. data/lib/spree/i18n.rb +32 -15
  437. data/lib/spree/reporting/adapters/live.rb +6 -6
  438. data/lib/spree/reporting/default_vocabulary.rb +22 -10
  439. data/lib/spree/reporting/hydration.rb +1 -1
  440. data/lib/spree/reporting/query.rb +8 -0
  441. data/lib/spree/reporting/schema.rb +10 -10
  442. data/lib/spree/testing_support/editable_email_templates.rb +61 -0
  443. data/lib/spree/testing_support/emails.rb +22 -0
  444. data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
  445. data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
  446. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  447. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  448. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  449. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  450. data/lib/spree/testing_support/i18n.rb +3 -94
  451. data/lib/spree/testing_support/lifecycle_events.rb +1 -1
  452. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  453. data/lib/spree/testing_support/preferences.rb +0 -5
  454. data/lib/spree/testing_support/store.rb +9 -1
  455. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +45 -0
  456. data/lib/tasks/categories_and_collections.rake +3 -3
  457. data/lib/tasks/core.rake +6 -4
  458. data/lib/tasks/media.rake +3 -3
  459. data/lib/tasks/package_types.rake +1 -1
  460. data/lib/tasks/preferences_json.rake +101 -0
  461. data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
  462. metadata +188 -44
  463. data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
  464. data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
  465. data/app/models/spree/base_analytics_event_handler.rb +0 -54
  466. data/app/models/spree/invitations/store.rb +0 -6
  467. data/app/models/spree/preference.rb +0 -14
  468. data/app/models/spree/promotion_handler/page.rb +0 -25
  469. data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
  470. data/app/models/spree/stock/differentiator.rb +0 -45
  471. data/app/presenters/spree/filters/options_presenter.rb +0 -47
  472. data/app/services/spree/carts/empty.rb +0 -42
  473. data/app/services/spree/country_to_timezone.rb +0 -273
  474. data/app/services/spree/payments/create.rb +0 -92
  475. data/app/validators/spree/url_validator.rb +0 -23
  476. data/app/views/active_storage/blobs/_blob.html.erb +0 -14
  477. data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
  478. data/app/views/spree/export_mailer/export_done.html.erb +0 -7
  479. data/app/views/spree/import_mailer/import_done.html.erb +0 -12
  480. data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
  481. data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
  482. data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
  483. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
  484. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
  485. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
  486. data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
  487. data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
  488. data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
  489. data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
  490. data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
  491. data/app/workflows/spree/returns/purchase_label.rb +0 -32
  492. data/lib/spree/analytics.rb +0 -11
  493. data/lib/spree/core/preferences/scoped_store.rb +0 -34
  494. data/lib/spree/core/preferences/store.rb +0 -105
  495. data/lib/spree/translation_migrations.rb +0 -52
@@ -0,0 +1,575 @@
1
+ ---
2
+ ko:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: 을(를) 입력해 주세요
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ company: 회사
11
+ label: 주소 이름
12
+ spree/customer_group:
13
+ description: 설명
14
+ name: 이름
15
+ spree/gift_card:
16
+ amount_used: 사용 금액
17
+ expires_at: 만료일
18
+ spree/import:
19
+ preferred_delimiter: 구분 기호
20
+ spree/import_mapping:
21
+ file_column: 파일 열
22
+ schema_field: 스키마 필드
23
+ spree/import_row:
24
+ row_number: 번호
25
+ spree/invitation:
26
+ inviter: 초대한 사람
27
+ spree/option_type:
28
+ filterable: 필터 가능
29
+ kind: 종류
30
+ spree/option_value:
31
+ color_code: 색상 코드
32
+ image: 스와치 이미지
33
+ spree/order:
34
+ internal_note: 내부 메모
35
+ item_count: 품목
36
+ spree/payment:
37
+ number: 번호
38
+ spree/policy:
39
+ body: 본문
40
+ owner: 정책 대상
41
+ spree/price_list:
42
+ description: 설명
43
+ ends_at: 종료일
44
+ match_policy: 일치 정책
45
+ name: 이름
46
+ priority: 우선순위
47
+ starts_at: 시작일
48
+ status: 상태
49
+ spree/price_rule:
50
+ priority: 우선순위
51
+ type: 유형
52
+ spree/product:
53
+ discontinue_on: 단종일
54
+ less_than: 미만
55
+ make_active_at: 활성화 시점
56
+ more_than: 초과
57
+ spree/promotion:
58
+ generate_code: 쿠폰 코드 생성
59
+ promotion_category: 프로모션 카테고리
60
+ spree/promotion_category:
61
+ code: 코드
62
+ spree/shipment:
63
+ number: 번호
64
+ spree/store:
65
+ address: 주소
66
+ contact_phone: 연락처 전화번호
67
+ preferred_digital_asset_authorized_clicks: 다운로드 횟수 제한
68
+ preferred_digital_asset_authorized_days: 다운로드 기간 제한
69
+ preferred_limit_digital_download_count: 디지털 링크 다운로드 횟수 제한
70
+ preferred_limit_digital_download_days: 디지털 링크 다운로드 기간 제한
71
+ seo_robots: SEO 로봇
72
+ storefront_custom_code_body_end: body 태그 닫기 전 커스텀 코드
73
+ storefront_custom_code_body_start: body 태그 연 후 커스텀 코드
74
+ storefront_custom_code_head: 페이지 head의 커스텀 코드
75
+ spree/store_credit:
76
+ amount_used: 사용 금액
77
+ spree/taxon:
78
+ sort_order: 정렬 순서
79
+ spree/user:
80
+ avatar: 프로필 사진
81
+ user:
82
+ current_sign_in: 현재 로그인 시각
83
+ last_sign_in: 마지막 로그인 시각
84
+ sign_in_count: 로그인 횟수
85
+ errors:
86
+ messages:
87
+ blank: 을(를) 입력해 주세요
88
+ models:
89
+ spree/allowed_origin:
90
+ attributes:
91
+ origin:
92
+ must_be_origin_only: 은(는) 경로, 쿼리 또는 프래그먼트가 없는 출처(스킴 및 호스트)여야 합니다
93
+ spree/gift_card:
94
+ attributes:
95
+ base:
96
+ cannot_destroy_used_gift_card: 사용된 기프트 카드는 삭제할 수 없습니다
97
+ spree/import:
98
+ attributes:
99
+ attachment:
100
+ content_type: 은(는) 허용되지 않는 콘텐츠 유형입니다
101
+ type:
102
+ inclusion: 은(는) 허용된 유형 목록에 포함되어 있지 않습니다
103
+ spree/market:
104
+ attributes:
105
+ base:
106
+ cannot_destroy_default_market: 기본 마켓은 삭제할 수 없습니다.
107
+ cannot_destroy_last_market: 유일한 마켓은 삭제할 수 없습니다.
108
+ spree/market_country:
109
+ attributes:
110
+ country:
111
+ already_in_market: 은(는) 이미 이 스토어의 다른 마켓에 할당되어 있습니다
112
+ not_in_shipping_zone: 은(는) 어떤 배송 구역에도 포함되어 있지 않습니다. 먼저 배송 구역을 설정해 주세요.
113
+ spree/payment:
114
+ attributes:
115
+ amount:
116
+ greater_than_max_amount: 은(는) 허용된 최대 금액 %{max_amount}을(를) 초과합니다
117
+ spree/price_list:
118
+ attributes:
119
+ ends_at:
120
+ must_be_after_starts_at: 은(는) 시작일 이후여야 합니다
121
+ spree/product:
122
+ attributes:
123
+ base:
124
+ cannot_destroy_if_attached_to_line_items: 주문에 추가된 상품은 삭제할 수 없습니다. 이런 경우에는 상품을 단종 처리해 주세요.
125
+ discontinue_on:
126
+ invalid_date_range: 은(는) 판매 가능일 이후여야 합니다
127
+ spree/product_publication:
128
+ attributes:
129
+ unpublished_at:
130
+ must_be_after_published_at: 은(는) 게시일 이후여야 합니다
131
+ spree/promotion:
132
+ attributes:
133
+ expires_at:
134
+ invalid_date_range: 은(는) 시작일 이후여야 합니다
135
+ spree/store:
136
+ attributes:
137
+ base:
138
+ cannot_destroy_only_store: 유일한 스토어는 삭제할 수 없습니다.
139
+ spree/store_credit:
140
+ attributes:
141
+ amount_authorized:
142
+ exceeds_total_credits: 총 적립금을 초과합니다.
143
+ amount_used:
144
+ cannot_be_greater_than_amount: 금액을 초과할 수 없습니다.
145
+ greater_than_zero_restrict_delete: 은(는) 0보다 큽니다. 적립금을 삭제할 수 없습니다.
146
+ spree/user:
147
+ attributes:
148
+ bill_address_id:
149
+ belongs_to_other_user: 은(는) 다른 사용자에 속해 있습니다
150
+ deprecated_in_completed_order: 은(는) 완료된 주문에서 더 이상 사용되지 않습니다
151
+ ship_address_id:
152
+ belongs_to_other_user: 은(는) 다른 사용자에 속해 있습니다
153
+ deprecated_in_completed_order: 은(는) 완료된 주문에서 더 이상 사용되지 않습니다
154
+ spree/variant:
155
+ attributes:
156
+ base:
157
+ cannot_destroy_if_attached_to_line_items: 주문에 추가된 옵션은 삭제할 수 없습니다. 이런 경우에는 옵션을 단종 처리해 주세요.
158
+ spree/webhook_endpoint:
159
+ attributes:
160
+ url:
161
+ internal_address_not_allowed: 은(는) 내부 또는 사설 네트워크 주소를 가리켜서는 안 됩니다
162
+ models:
163
+ spree/address:
164
+ one: 주소
165
+ other: 주소
166
+ spree/classification:
167
+ one: 분류
168
+ other: 분류
169
+ spree/country:
170
+ one: 국가
171
+ other: 국가
172
+ spree/credit_card:
173
+ one: 신용카드
174
+ other: 신용카드
175
+ spree/customer_group:
176
+ one: 고객 그룹
177
+ other: 고객 그룹
178
+ spree/customer_group_user:
179
+ one: 고객 그룹 사용자
180
+ other: 고객 그룹 사용자
181
+ spree/export:
182
+ one: 내보내기
183
+ other: 내보내기
184
+ spree/integration:
185
+ one: 연동
186
+ other: 연동
187
+ spree/inventory_unit:
188
+ one: 재고 단위
189
+ other: 재고 단위
190
+ spree/line_item:
191
+ one: 주문 품목
192
+ other: 주문 품목
193
+ spree/option_type:
194
+ one: 옵션 유형
195
+ other: 옵션 유형
196
+ spree/option_value:
197
+ one: 옵션 값
198
+ other: 옵션 값
199
+ spree/order:
200
+ one: 주문
201
+ other: 주문
202
+ spree/payment:
203
+ one: 결제
204
+ other: 결제
205
+ spree/payment_method:
206
+ one: 결제 수단
207
+ other: 결제 수단
208
+ spree/price:
209
+ one: 가격
210
+ other: 가격
211
+ spree/price_list:
212
+ one: 가격표
213
+ other: 가격표
214
+ spree/price_rule:
215
+ one: 가격 규칙
216
+ other: 가격 규칙
217
+ spree/product:
218
+ one: 상품
219
+ other: 상품
220
+ spree/promotion:
221
+ one: 프로모션
222
+ other: 프로모션
223
+ spree/promotion_category:
224
+ one: 프로모션 카테고리
225
+ other: 프로모션 카테고리
226
+ spree/property:
227
+ one: 속성
228
+ other: 속성
229
+ spree/refund_reason:
230
+ one: 환불 사유
231
+ other: 환불 사유
232
+ spree/role:
233
+ one: 역할
234
+ other: 역할
235
+ spree/shipment:
236
+ one: 배송
237
+ other: 배송
238
+ spree/shipping_method:
239
+ one: 배송 방법
240
+ other: 배송 방법
241
+ spree/state:
242
+ one: 주/도
243
+ other: 주/도
244
+ spree/stock_location:
245
+ one: 재고 위치
246
+ other: 재고 위치
247
+ spree/stock_movement:
248
+ one: 재고 이동
249
+ other: 재고 이동
250
+ spree/stock_transfer:
251
+ one: 재고 전송
252
+ other: 재고 전송
253
+ spree/store:
254
+ one: 스토어
255
+ other: 스토어
256
+ spree/store_credit:
257
+ one: 적립금
258
+ other: 적립금
259
+ spree/tax_category:
260
+ one: 세금 카테고리
261
+ other: 세금 카테고리
262
+ spree/tax_rate:
263
+ one: 세율
264
+ other: 세율
265
+ spree/taxon:
266
+ one: 카테고리
267
+ other: 카테고리
268
+ spree/taxonomy:
269
+ one: 카테고리
270
+ other: 카테고리
271
+ spree/user:
272
+ one: 사용자
273
+ other: 사용자
274
+ spree/variant:
275
+ one: 옵션
276
+ other: 옵션
277
+ spree/zone:
278
+ one: 구역
279
+ other: 구역
280
+ errors:
281
+ messages:
282
+ not_saved:
283
+ one: "%{resource}을(를) 저장하지 못하도록 하는 오류가 1개 있습니다:"
284
+ other: "%{resource}을(를) 저장하지 못하도록 하는 오류가 %{count}개 있습니다:"
285
+ number:
286
+ percentage:
287
+ format:
288
+ precision: 1
289
+ spree:
290
+ accepts_email_marketing: 이메일 마케팅 수신 동의
291
+ account: 계정
292
+ active: 활성
293
+ address: 주소
294
+ adjustment: 정산
295
+ adjustment_labels:
296
+ tax_rates:
297
+ excluding_tax: "%{name}%{amount}"
298
+ including_tax: "%{name}%{amount} (가격에 포함됨)"
299
+ adjustments_deleted: 조정 항목 삭제됨
300
+ admin_user_mailer:
301
+ password_reset_email:
302
+ action: 비밀번호 재설정
303
+ expiry_notice: 이 비밀번호 재설정 링크는 곧 만료됩니다. 본인이 요청하지 않았다면 별도의 조치가 필요하지 않습니다.
304
+ greeting: "%{name}님, 안녕하세요."
305
+ ignore_notice: 비밀번호 재설정을 요청하지 않으셨다면 이 이메일을 무시하셔도 됩니다. 비밀번호는 변경되지 않습니다.
306
+ instructions: "%{store_name} 관리자 계정의 비밀번호 재설정 요청을 받았습니다. 아래 버튼을 클릭하여 새 비밀번호를 설정하세요."
307
+ subject: 비밀번호 재설정 안내
308
+ all: 전체
309
+ amount: 액수
310
+ api_key_no_current_key: 이 요청을 인증한 API 키가 없습니다
311
+ api_key_scopes_immutable: 은(는) 키 생성 후 변경할 수 없습니다. 필요한 스코프로 새 키를 생성하고 이 키를 폐기하세요
312
+ availability: 재고 상태
313
+ bill_address: 청구서 주소
314
+ billing_address: 청구서 주소
315
+ calculator: 계산기
316
+ canceled: 취소됨
317
+ cannot_be_destroyed: 주문을 삭제할 수 없습니다.
318
+ capture: 캡쳐
319
+ cart: 장바구니
320
+ cart_already_updated: 장바구니가 이미 업데이트되었습니다.
321
+ cart_line_item:
322
+ delivery_unavailable: "%{li_name} 항목은 선택한 주소로 배송할 수 없습니다"
323
+ discontinued: "%{li_name}이(가) 단종되어 제거되었습니다"
324
+ out_of_stock: "%{li_name}이(가) 품절되어 제거되었습니다"
325
+ channel: 판매 채널
326
+ channels: 판매 채널
327
+ checkout_requirements:
328
+ email_required: 이메일 주소는 필수입니다
329
+ line_items_required: 장바구니에 상품을 하나 이상 추가하세요
330
+ payment_required: 결제 수단을 추가하세요
331
+ ship_address_required: 배송 주소는 필수입니다
332
+ color_code: 색상 코드
333
+ compare_at_amount: 비교 금액
334
+ compare_at_price: 비교 가격
335
+ complete: 완료
336
+ confirm: 확인
337
+ cost_price: 비용
338
+ country: 국가
339
+ coupon_code: 쿠폰 코드
340
+ coupon_code_used: 입력하신 쿠폰 코드는 이미 사용되었습니다. 다시 시도해 주세요.
341
+ credit_card: 신용카드
342
+ currency_not_supported_by_store: 은(는) 이 스토어에서 지원되지 않습니다
343
+ customer: 고객
344
+ customers: 고객
345
+ default: 기본
346
+ default_stock_location_name: 매장 위치
347
+ default_wishlist_name: 위시리스트
348
+ depth: 높이
349
+ description: 설명
350
+ destroy: 삭제
351
+ digital:
352
+ digital_delivery: 디지털 배송
353
+ digital_assets: 디지털 자산
354
+ discontinued: 단종됨
355
+ discontinued_variants_present: 이 주문의 일부 품목에 더 이상 판매하지 않는 상품이 포함되어 있습니다.
356
+ display_delivery_range: 영업일 기준 %{delivery_range}일 내 배송
357
+ draft: 초안
358
+ eligibility_errors:
359
+ messages:
360
+ no_matching_channel: 이 쿠폰 코드는 해당 판매 채널에서 사용할 수 없습니다.
361
+ no_matching_market: 이 쿠폰 코드는 고객님의 마켓에서 사용할 수 없습니다.
362
+ wrong_country: 이 쿠폰 코드는 귀하의 국가에서 사용할 수 없습니다
363
+ email: 이메일
364
+ error: 에러
365
+ error_user_destroy_with_orders: 주문이 연결된 사용자는 삭제할 수 없습니다
366
+ error_user_does_not_have_any_store_credits: 사용자에게 사용 가능한 적립금이 없습니다
367
+ errors:
368
+ messages:
369
+ cannot_delete_default_channel: 기본 채널은 삭제할 수 없습니다. 먼저 다른 채널을 기본으로 지정하세요.
370
+ channel_store_mismatch: 은(는) 동일한 스토어에 속해야 합니다
371
+ invalid_order_routing_rule: 은(는) 등록된 주문 라우팅 규칙이 아닙니다
372
+ invalid_order_routing_strategy: 은(는) 등록된 주문 라우팅 전략이 아닙니다
373
+ store_association_can_not_be_changed: 스토어 연결은 변경할 수 없습니다
374
+ store_is_already_set: 스토어가 이미 설정되어 있습니다
375
+ expired: 만료됨
376
+ export_mailer:
377
+ export_done:
378
+ message: 수고하셨습니다. 내보내기가 준비되었습니다! 아래 링크를 사용하여 다운로드하세요.
379
+ subject: 내보내기 %{export_number}이(가) 성공적으로 처리되었습니다!
380
+ greeting: 안녕하세요 %{user_name}님,
381
+ field: 필드
382
+ first_name: 이름
383
+ free: 무료
384
+ gateway: 게이트웨이
385
+ gateway_error: 게이트웨이 에러
386
+ gift_card: 기프트 카드
387
+ gift_card_already_redeemed: 기프트 카드가 이미 사용되었습니다.
388
+ gift_card_applied: 기프트 카드가 주문에 성공적으로 적용되었습니다!
389
+ gift_card_customer_not_logged_in: 기프트 카드는 비회원으로 적용할 수 없습니다.
390
+ gift_card_expired: 기프트 카드가 만료되었습니다.
391
+ gift_card_mismatched_currency: 기프트 카드를 현재 통화로 적용할 수 없습니다.
392
+ gift_card_mismatched_customer: 이 기프트 카드는 다른 사용자와 연결되어 있습니다.
393
+ gift_card_not_found: 기프트 카드를 찾을 수 없습니다.
394
+ gift_card_removed: 기프트 카드가 주문에서 성공적으로 제거되었습니다
395
+ gift_card_using_store_credit_error: 적립금을 적용한 후에는 기프트 카드를 적용할 수 없습니다.
396
+ height: 세로
397
+ i18n:
398
+ this_file_language: 한국어 (KO)
399
+ idempotency_key_reused: 이 Idempotency-Key는 이미 다른 요청 매개변수와 함께 사용되었습니다.
400
+ image: 이미지
401
+ import: 가져오기
402
+ in_stock: 재고 있음
403
+ internal_note: 내부 메모
404
+ inventory: 인벤토리
405
+ invitation_mailer:
406
+ greeting: 안녕하세요 %{user_name}님,
407
+ invitation_accepted:
408
+ body: "%{invitee_name}님이 %{resource_name} 참여 초대를 수락했습니다"
409
+ subject: "%{invitee_name}님이 %{resource_name} 참여 초대를 수락했습니다"
410
+ invitation_email:
411
+ body: "%{inviter_name}님이 %{resource_name}에 참여하도록 귀하를 초대했습니다"
412
+ link_description: '이 초대를 수락하려면 아래 링크를 클릭하세요:'
413
+ subject: "%{resource_name} 참여 초대"
414
+ iso: ISO Alpha-2
415
+ item: 아이템
416
+ key: 키
417
+ kind: 종류
418
+ label: 라벨
419
+ last_name: 성
420
+ line_item: 주문 품목
421
+ line_items: 주문 품목
422
+ link: 링크
423
+ locale: 로케일
424
+ locale_not_supported_by_store: 은(는) 이 스토어에서 지원되지 않습니다
425
+ manual: 수동
426
+ market: 마켓
427
+ me_no_current_user: 이 요청을 인증한 관리자 사용자가 없습니다
428
+ media: 미디어
429
+ meta_description: 메타 설명
430
+ meta_keywords: 메타 키워드
431
+ metadata: 메타데이터
432
+ min_quantity: 최소 수량
433
+ name: 이름
434
+ new_variant: 새 품종
435
+ no_cc_type: 해당 없음
436
+ none: 없음
437
+ number: 번호
438
+ on_hand: 재고
439
+ only_active_products_can_be_added_to_cart: 초안 및 보관된 상품은 장바구니에 추가할 수 없습니다. 먼저 상품을 활성 상태로 설정하세요.
440
+ option_name: 옵션 이름
441
+ option_type: 옵션 타입
442
+ option_value: 옵션 값
443
+ options: 옵션
444
+ or: 또는
445
+ order: 주문
446
+ order_routing:
447
+ strategies:
448
+ legacy: 레거시
449
+ rules: 규칙 (순서대로)
450
+ order_summary: 주문 요약
451
+ orders: 주문
452
+ out_of_stock: 품절
453
+ password: 비밀번호
454
+ path: 경로
455
+ payment: 지불
456
+ payment_method: 결제 방법
457
+ payment_methods: 결제 방법
458
+ payment_processing_failed: 결제 중에 문제가 발생했습니다. 잠시 후에 다시 해보시기 바랍니다.
459
+ payment_source: 결제 출처
460
+ phone: 전화번호
461
+ price: 가격
462
+ price_rules:
463
+ channel_rule:
464
+ description: 판매 채널에 따라 가격을 적용합니다
465
+ customer_group_rule:
466
+ description: 특정 고객 그룹에 가격 적용
467
+ prices: 가격
468
+ privacy_policy: 개인정보처리방침
469
+ processing: 처리 중
470
+ product: 상품
471
+ product_translations: 상품 번역
472
+ products: 상품
473
+ products_cannot_be_shipped: 현재 %{product_names}을(를) 귀하의 위치로 배송할 수 없습니다. 배송 주소를 변경하거나 장바구니에서 %{product_names}을(를) 제거해 주세요.
474
+ promotion_already_used: 이미 적용된 프로모션은 삭제할 수 없습니다
475
+ promotion_label: 프로모션 (%{name})
476
+ promotion_rule_types:
477
+ category:
478
+ description: 지정된 카테고리의 상품이 주문에 포함됨
479
+ name: 카테고리
480
+ channel:
481
+ description: 지정된 채널을 통해 접수된 주문으로 제한
482
+ name: 채널
483
+ country:
484
+ description: 특정 국가의 배송 주소가 있는 주문으로 제한
485
+ name: 국가
486
+ currency:
487
+ description: 특정 통화의 주문으로 제한
488
+ name: 통화
489
+ customer:
490
+ description: 지정된 고객에게만 제공
491
+ name: 고객
492
+ customer_group:
493
+ description: 지정된 고객 그룹의 고객에게만 제공
494
+ name: 고객 그룹
495
+ customer_logged_in:
496
+ description: 로그인한 고객에게만 제공
497
+ name: 로그인한 고객만
498
+ first_order:
499
+ name: 첫 주문
500
+ market:
501
+ description: 지정된 마켓에서 접수된 주문으로 제한
502
+ name: 마켓
503
+ query: 쿼리
504
+ reason: 이유
505
+ refund_amount: 환불 금액
506
+ registration: 등록
507
+ remove: 삭제
508
+ remove_gift_card_on_completed_order_error: 주문이 완료된 후에는 기프트 카드를 제거할 수 없습니다
509
+ resellable: 재판매 가능
510
+ resend: 재발송
511
+ response_code: 응답 코드
512
+ returns_policy: 반품 정책
513
+ row: 행
514
+ rules: 규칙
515
+ scope: 범위
516
+ selected_quantity_not_available: 선택한 %{item}을(를) 사용할 수 없습니다.
517
+ ship_address: 배송 주소
518
+ shipment: 배송
519
+ shipped: 배송됨
520
+ shipping: 배송료
521
+ shipping_address: 배송 주소
522
+ shipping_policy: 배송 정책
523
+ shipping_rates:
524
+ display_price:
525
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
526
+ including_tax: "%{price} (%{tax_amount} %{tax_rate_name} 포함)"
527
+ status: 상태
528
+ stock_transfer:
529
+ errors:
530
+ must_have_variant: 옵션을 하나 이상 추가해야 합니다
531
+ same_location: 은(는) 목적지 위치와 동일할 수 없습니다
532
+ variants_unavailable: 일부 옵션은 %{stock}에서 사용할 수 없습니다
533
+ store: 상점
534
+ store_credit:
535
+ allocated: 추가됨
536
+ authorized: 승인됨
537
+ captured: 사용됨
538
+ credit: 적립
539
+ eligible: 사용 가능
540
+ store_credit_name: 적립금
541
+ store_credit_payment_method:
542
+ currency_mismatch: 적립금 통화가 주문 통화와 일치하지 않습니다
543
+ insufficient_authorized_amount: 승인된 금액보다 많이 청구할 수 없습니다
544
+ insufficient_funds: 남은 적립금이 충분하지 않습니다
545
+ successful_action: 적립금 %{action} 성공
546
+ unable_to_credit: '코드를 적립할 수 없습니다: %{auth_code}'
547
+ unable_to_find: 적립금을 찾을 수 없습니다
548
+ unable_to_find_for_action: 작업 %{action}에 대한 인증 코드 %{auth_code}의 적립금을 찾을 수 없습니다
549
+ unable_to_void: '코드를 무효화할 수 없습니다: %{auth_code}'
550
+ tags: 태그
551
+ tax: 세금
552
+ tax_category: 세금 분류
553
+ terms_of_service: 이용약관
554
+ total: 합계
555
+ updated_at: 수정일
556
+ url: URL
557
+ user: 사용자
558
+ value: 값
559
+ variants: 품종
560
+ verified: 인증됨
561
+ webhook_mailer:
562
+ endpoint_disabled:
563
+ disabled_at_label: 비활성화 시각
564
+ heading: 웹훅 엔드포인트 비활성화됨
565
+ instructions: 엔드포인트 URL과 서비스를 확인한 후 설정 → 개발자 → 웹훅에서 다시 활성화하세요.
566
+ message: 웹훅 엔드포인트 "%{endpoint_name}"이(가) 반복적인 전송 실패로 인해 자동으로 비활성화되었습니다.
567
+ name_label: 이름
568
+ reason_label: 사유
569
+ subject: '웹훅 엔드포인트 비활성화됨: %{endpoint_name}'
570
+ url_label: URL
571
+ weight: 무게
572
+ weight_unit: 무게 단위
573
+ width: 가로
574
+ year: 년
575
+ zip: 우편번호