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,756 @@
1
+ ---
2
+ id:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: tidak boleh kosong
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Alamat
11
+ address2: Alamat (lanjutan)
12
+ city: Kota
13
+ company: Perusahaan
14
+ country: Negara
15
+ label: Nama alamat
16
+ phone: Telepon
17
+ state: Provinsi
18
+ spree/country:
19
+ iso: ISO
20
+ iso3: ISO3
21
+ iso_name: Nama ISO
22
+ name: Nama
23
+ numcode: Kode ISO
24
+ spree/credit_card:
25
+ base: Basis
26
+ cc_type: Tipe
27
+ month: Bulan
28
+ name: Nama
29
+ number: Nomor
30
+ verification_value: Kode Verifikasi
31
+ year: Tahun
32
+ spree/customer_group:
33
+ description: Deskripsi
34
+ name: Nama
35
+ spree/gift_card:
36
+ amount_used: Jumlah terpakai
37
+ expires_at: Kedaluwarsa pada
38
+ spree/import:
39
+ preferred_delimiter: Pembatas
40
+ spree/import_mapping:
41
+ file_column: Kolom File
42
+ schema_field: Bidang Skema
43
+ spree/import_row:
44
+ row_number: Nomor
45
+ spree/inventory_unit:
46
+ state: Status
47
+ spree/invitation:
48
+ inviter: Pengundang
49
+ spree/line_item:
50
+ price: Harga
51
+ quantity: Kuantitas
52
+ spree/option_type:
53
+ filterable: Dapat difilter
54
+ kind: Jenis
55
+ name: Nama
56
+ spree/option_value:
57
+ color_code: Kode Warna
58
+ image: Gambar Swatch
59
+ spree/order:
60
+ checkout_complete: Checkout Selesai
61
+ completed_at: Terpenuhi Saat
62
+ considered_risky: Dianggap berisiko
63
+ coupon_code: Kode Kupon
64
+ created_at: Tanggal Pemesanan
65
+ email: E-mail Pelanggan
66
+ internal_note: Catatan Internal
67
+ ip_address: Alamat IP
68
+ item_count: Item
69
+ item_total: Total Barang
70
+ number: Nomor
71
+ payment_state: Status Pembayaran
72
+ shipment_state: Status Pengiriman
73
+ special_instructions: Instruksi Tambahan
74
+ state: State
75
+ total: Total
76
+ spree/order/bill_address:
77
+ address1: Alamat penagihan nama jalan
78
+ city: Alamat penagihan kota
79
+ phone: Alamat penagihan nomor telepon
80
+ state: Alamat penagihan nama propinsi
81
+ spree/order/ship_address:
82
+ address1: Alamat pengiriman nama jalan
83
+ city: Alamat pengiriman kota
84
+ phone: Alamat pengirimian telepon
85
+ state: Alamat pengiriman provinsi
86
+ spree/payment:
87
+ amount: Jumlah
88
+ number: Nomor
89
+ spree/payment_method:
90
+ name: Nama
91
+ spree/policy:
92
+ body: Isi
93
+ owner: Kebijakan untuk
94
+ spree/price_list:
95
+ description: Deskripsi
96
+ ends_at: Berakhir Pada
97
+ match_policy: Kebijakan Pencocokan
98
+ name: Nama
99
+ priority: Prioritas
100
+ starts_at: Dimulai Pada
101
+ status: Status
102
+ spree/price_rule:
103
+ priority: Prioritas
104
+ type: Tipe
105
+ spree/product:
106
+ available_on: Tersedia Pada
107
+ cost_currency: Kurs Biaya
108
+ cost_price: Harga Pengeluaran
109
+ description: Deskripsi
110
+ discontinue_on: Dihentikan Pada
111
+ less_than: Kurang dari
112
+ make_active_at: Aktifkan Pada
113
+ master_price: Harga Master
114
+ more_than: Lebih dari
115
+ name: Nama
116
+ on_hand: Yang Tersedia
117
+ tax_category: Kategori Pajak
118
+ spree/promotion:
119
+ advertise: Iklan
120
+ code: Kode
121
+ description: Deskripsi
122
+ event_name: Nama Event
123
+ expires_at: Berakhir Pada
124
+ generate_code: Buat kode kupon
125
+ name: Nama
126
+ path: Path
127
+ promotion_category: Kategori Promosi
128
+ starts_at: Mulai Pada
129
+ usage_limit: Batas Penggunaan
130
+ spree/promotion_category:
131
+ code: Kode
132
+ name: Nama
133
+ spree/property:
134
+ name: Nama
135
+ presentation: Presentasi
136
+ spree/role:
137
+ name: Nama
138
+ spree/shipment:
139
+ number: Nomor
140
+ spree/state:
141
+ abbr: Singkatan
142
+ name: Nama
143
+ spree/store:
144
+ address: Alamat
145
+ contact_phone: Telepon Kontak
146
+ name: Nama
147
+ preferred_digital_asset_authorized_clicks: Batas klik unduhan
148
+ preferred_digital_asset_authorized_days: Batas hari unduhan
149
+ preferred_limit_digital_download_count: Batasi jumlah unduhan tautan digital
150
+ preferred_limit_digital_download_days: Batasi hari unduhan tautan digital
151
+ seo_robots: SEO Robots
152
+ seo_title: Judul SEO
153
+ storefront_custom_code_body_end: Kode Kustom sebelum tag penutup body
154
+ storefront_custom_code_body_start: Kode Kustom setelah tag pembuka body
155
+ storefront_custom_code_head: Kode Kustom di head halaman
156
+ spree/store_credit:
157
+ amount_used: Jumlah terpakai
158
+ spree/tax_category:
159
+ description: Deskripsi
160
+ name: Nama
161
+ spree/tax_rate:
162
+ amount: Persentase
163
+ included_in_price: Termasuk dalam Harga
164
+ show_rate_in_label: Tunjukan persentase di label
165
+ spree/taxon:
166
+ name: Nama
167
+ permalink: Permalink
168
+ position: Posisi
169
+ sort_order: Urutan Sortir
170
+ spree/taxonomy:
171
+ name: Nama
172
+ spree/user:
173
+ avatar: Avatar
174
+ email: Email
175
+ password: Kata Sandi
176
+ password_confirmation: Konfirmasi Kata Sandi
177
+ spree/variant:
178
+ cost_currency: Kurs Biaya
179
+ cost_price: Harga Pengeluaran
180
+ depth: Kedalaman
181
+ height: Ketinggian
182
+ price: Harga
183
+ sku: SKU
184
+ weight: Berat
185
+ width: Lebar
186
+ spree/zone:
187
+ description: Deskripsi
188
+ name: Nama
189
+ user:
190
+ current_sign_in: Masuk saat ini pada
191
+ last_sign_in: Masuk terakhir pada
192
+ sign_in_count: Jumlah login
193
+ errors:
194
+ messages:
195
+ blank: tidak boleh kosong
196
+ models:
197
+ spree/allowed_origin:
198
+ attributes:
199
+ origin:
200
+ must_be_origin_only: harus berupa origin (skema dan host) tanpa path, query, atau fragment
201
+ spree/gift_card:
202
+ attributes:
203
+ base:
204
+ cannot_destroy_used_gift_card: Tidak dapat menghapus kartu hadiah yang sudah terpakai
205
+ spree/import:
206
+ attributes:
207
+ attachment:
208
+ content_type: memiliki tipe konten yang tidak diizinkan
209
+ type:
210
+ inclusion: tidak termasuk dalam daftar tipe yang diizinkan
211
+ spree/market:
212
+ attributes:
213
+ base:
214
+ cannot_destroy_default_market: Tidak dapat menghapus pasar default.
215
+ cannot_destroy_last_market: Tidak dapat menghapus satu-satunya pasar.
216
+ spree/market_country:
217
+ attributes:
218
+ country:
219
+ already_in_market: sudah ditetapkan ke pasar lain di toko ini
220
+ not_in_shipping_zone: tidak tercakup oleh zona pengiriman mana pun. Silakan siapkan zona pengiriman terlebih dahulu.
221
+ spree/payment:
222
+ attributes:
223
+ amount:
224
+ greater_than_max_amount: lebih besar dari jumlah maksimum yang diizinkan sebesar %{max_amount}
225
+ spree/price_list:
226
+ attributes:
227
+ ends_at:
228
+ must_be_after_starts_at: harus setelah waktu mulai
229
+ spree/product:
230
+ attributes:
231
+ base:
232
+ cannot_destroy_if_attached_to_line_items: Tidak dapat menghapus Produk yang ditambahkan ke Pesanan yang telah dibuat. Dalam kasus seperti itu, silakan hentikan produk tersebut.
233
+ discontinue_on:
234
+ invalid_date_range: harus setelah tanggal tersedia
235
+ spree/product_publication:
236
+ attributes:
237
+ unpublished_at:
238
+ must_be_after_published_at: harus setelah tanggal publikasi
239
+ spree/promotion:
240
+ attributes:
241
+ expires_at:
242
+ invalid_date_range: harus setelah tanggal mulai
243
+ spree/store:
244
+ attributes:
245
+ base:
246
+ cannot_destroy_only_store: Tidak dapat menghapus satu-satunya Toko.
247
+ spree/store_credit:
248
+ attributes:
249
+ amount_authorized:
250
+ exceeds_total_credits: Melebihi total kredit.
251
+ amount_used:
252
+ cannot_be_greater_than_amount: Tidak boleh lebih besar dari jumlah.
253
+ greater_than_zero_restrict_delete: lebih besar dari nol. Tidak dapat menghapus kredit toko.
254
+ spree/user:
255
+ attributes:
256
+ bill_address_id:
257
+ belongs_to_other_user: milik pengguna lain
258
+ deprecated_in_completed_order: tidak digunakan lagi pada pesanan yang telah selesai
259
+ ship_address_id:
260
+ belongs_to_other_user: milik pengguna lain
261
+ deprecated_in_completed_order: tidak digunakan lagi pada pesanan yang telah selesai
262
+ spree/variant:
263
+ attributes:
264
+ base:
265
+ cannot_destroy_if_attached_to_line_items: Tidak dapat menghapus Varian yang ditambahkan ke Pesanan yang telah dibuat. Dalam kasus seperti itu, silakan hentikan varian tersebut.
266
+ spree/webhook_endpoint:
267
+ attributes:
268
+ url:
269
+ internal_address_not_allowed: tidak boleh mengarah ke alamat jaringan internal atau privat
270
+ models:
271
+ spree/address:
272
+ one: Alamat
273
+ other: Alamat lainnya
274
+ spree/classification:
275
+ one: Klasifikasi
276
+ other: Klasifikasi
277
+ spree/country:
278
+ one: Negara
279
+ other: Negara lainnya
280
+ spree/credit_card:
281
+ one: Kartu Kredit
282
+ other: Kartu kredit lainnya
283
+ spree/customer_group:
284
+ one: Grup Pelanggan
285
+ other: Grup Pelanggan
286
+ spree/customer_group_user:
287
+ one: Pengguna Grup Pelanggan
288
+ other: Pengguna Grup Pelanggan
289
+ spree/export:
290
+ one: Ekspor
291
+ other: Ekspor
292
+ spree/integration:
293
+ one: Integrasi
294
+ other: Integrasi
295
+ spree/inventory_unit:
296
+ one: Satuan Unit
297
+ other: Satuan Unit lainnya
298
+ spree/line_item:
299
+ one: Barang
300
+ other: Barang lainnya
301
+ spree/option_type:
302
+ one: Tipe Opsi
303
+ other: Tipe Opsi
304
+ spree/option_value:
305
+ one: Nilai Opsi
306
+ other: Nilai Opsi
307
+ spree/order:
308
+ one: Pemesanan
309
+ other: Pemesanan lainnya
310
+ spree/payment:
311
+ one: Pembayaran
312
+ other: Pembayaran lainnya
313
+ spree/payment_method:
314
+ one: Metode Pembayaran
315
+ other: Metode Pembayaran
316
+ spree/price:
317
+ one: Harga
318
+ other: Harga
319
+ spree/price_list:
320
+ one: Daftar Harga
321
+ other: Daftar Harga
322
+ spree/price_rule:
323
+ one: Aturan Harga
324
+ other: Aturan Harga
325
+ spree/product:
326
+ one: Produk
327
+ other: Produk lainnya
328
+ spree/promotion:
329
+ one: Promosi
330
+ other: Promosi
331
+ spree/promotion_category:
332
+ one: Kategori Promosi
333
+ other: Kategori Promosi
334
+ spree/property:
335
+ one: Properti
336
+ other: Properti lainnya
337
+ spree/refund_reason:
338
+ one: Alasan Pengembalian Dana
339
+ other: Alasan Pengembalian Dana
340
+ spree/role:
341
+ one: Peran
342
+ other: Peran lainnya
343
+ spree/shipment:
344
+ one: Pengiriman
345
+ other: Pengiriman lainnya
346
+ spree/shipping_method:
347
+ one: Metode Pengiriman
348
+ other: Metode Pengiriman
349
+ spree/state:
350
+ one: Provinsi
351
+ other: Provinsi lainnya
352
+ spree/stock_location:
353
+ one: Lokasi Stok
354
+ other: Lokasi Stok
355
+ spree/stock_movement:
356
+ one: Pergerakan Stok
357
+ other: Pergerakan Stok
358
+ spree/stock_transfer:
359
+ one: Transfer Stok
360
+ other: Transfer Stok
361
+ spree/store:
362
+ one: Toko
363
+ other: Toko
364
+ spree/store_credit:
365
+ one: Kredit Toko
366
+ other: Kredit Toko
367
+ spree/tax_category:
368
+ one: Kategori Pajak
369
+ other: Kategori Pajak lainnya
370
+ spree/tax_rate:
371
+ one: Persentase Pajak
372
+ other: Persentase Pajak lainnya
373
+ spree/taxon:
374
+ one: Takson
375
+ other: Takson lainnya
376
+ spree/taxonomy:
377
+ one: Taksonomi
378
+ other: Taksonomi lainnya
379
+ spree/user:
380
+ one: Pengguna
381
+ other: Pengguna lainnya
382
+ spree/variant:
383
+ one: Varian
384
+ other: Varian lainnya
385
+ spree/zone:
386
+ one: Wilayah
387
+ other: Wilayah-wilayah
388
+ errors:
389
+ messages:
390
+ already_confirmed: telah dikonfirmasi.
391
+ not_found: tidak ditemukan
392
+ not_locked: tidak terkunci
393
+ not_saved:
394
+ one: '1 kesalahan menghalangi %{resource} ini untuk disimpan:'
395
+ other: "%{count} kesalahan menghalangi %{resource} ini untuk disimpan:"
396
+ number:
397
+ percentage:
398
+ format:
399
+ precision: 1
400
+ spree:
401
+ accepts_email_marketing: Menerima pemasaran email
402
+ account: Akun
403
+ active: Aktif
404
+ address: Alamat
405
+ address1: Alamat
406
+ address2: Alamat (lanjutan)
407
+ adjustment: Penyesuaian
408
+ adjustment_labels:
409
+ tax_rates:
410
+ excluding_tax: "%{name}%{amount}"
411
+ including_tax: "%{name}%{amount} (Termasuk dalam Harga)"
412
+ adjustments_deleted: Penyesuaian Dihapus
413
+ all: Semua
414
+ amount: Jumlah
415
+ api_key_no_current_key: Tidak ada kunci API yang mengautentikasi permintaan ini
416
+ api_key_scopes_immutable: tidak dapat diubah setelah kunci dibuat; buat kunci baru dengan scope yang Anda butuhkan dan cabut kunci ini
417
+ approver: Disetujui oleh
418
+ authorized: Otorisasi
419
+ availability: ketersediaan
420
+ bill_address: Alamat Tagihan
421
+ billing_address: Alamat Penagihan
422
+ calculator: Kalkulator
423
+ canceled: Dibatalkan
424
+ canceler: Dibatalkan oleh
425
+ cannot_be_destroyed: Pesanan tidak dapat dihapus.
426
+ capture: Ambil
427
+ cart: Keranjang belanja
428
+ cart_already_updated: Keranjang sudah diperbarui.
429
+ cart_line_item:
430
+ delivery_unavailable: "%{li_name} tidak dapat dikirim ke alamat yang dipilih"
431
+ discontinued: "%{li_name} dihapus karena telah dihentikan"
432
+ out_of_stock: "%{li_name} dihapus karena telah habis terjual"
433
+ categories: Kategori
434
+ category: Kategori
435
+ channel: Saluran penjualan
436
+ channels: Saluran penjualan
437
+ checkout: Checkout
438
+ checkout_requirements:
439
+ email_required: Alamat email wajib diisi
440
+ line_items_required: Tambahkan setidaknya satu item ke keranjang Anda
441
+ payment_required: Tambahkan metode pembayaran
442
+ ship_address_required: Alamat pengiriman wajib diisi
443
+ city: Kota
444
+ color_code: Kode Warna
445
+ company: Perusahaan
446
+ compare_at_amount: Bandingkan dengan jumlah
447
+ compare_at_price: Bandingkan dengan harga
448
+ complete: Selesai
449
+ confirm: Yakin
450
+ cost_price: Harga Pokok
451
+ country: Negara
452
+ coupon_code: Kode kupon
453
+ coupon_code_already_applied: Kode kupon suda diaplikasikan ke pemesanan ini sebelumnya.
454
+ coupon_code_applied: Kode kupon sudah digunakan pada pemesanan anda
455
+ coupon_code_better_exists: Penggunaan kode kupon sebelumnya menghasilkan pembelian yang lebih baik
456
+ coupon_code_expired: Kode kupon ini telah berakhir masa aktifnya.
457
+ coupon_code_max_usage: Pemakaian kode kupon telah melewati batas
458
+ coupon_code_not_eligible: Kode kupon tidak bisa digunakan untuk pemesanan ini.
459
+ coupon_code_not_found: Kode kupon yang Anda masukkan tidak tersedia. Silahkan dicoba kembali.
460
+ coupon_code_used: Kode kupon yang Anda masukkan sudah digunakan. Silakan coba lagi.
461
+ created_at: Dibuat Saat
462
+ credit_card: Kartu Kredit
463
+ currency: Mata Uang
464
+ currency_not_supported_by_store: tidak didukung oleh toko ini
465
+ customer: Pelanggan
466
+ customers: Pelanggan
467
+ default: Nilai Awal
468
+ default_stock_location_name: Lokasi toko
469
+ default_wishlist_name: Daftar Keinginan
470
+ delivery: Pengiriman
471
+ depth: Kedalaman
472
+ description: Deskripsi
473
+ destination: Tujuan
474
+ destroy: Hapus
475
+ details: Detail
476
+ digital:
477
+ digital_delivery: Pengiriman Digital
478
+ digital_assets: Aset digital
479
+ discontinued: Dihentikan
480
+ discontinued_variants_present: Beberapa item baris dalam pesanan ini memiliki produk yang tidak lagi tersedia.
481
+ display_delivery_range: Pengiriman dalam %{delivery_range} hari kerja
482
+ draft: Draf
483
+ eligibility_errors:
484
+ messages:
485
+ no_matching_channel: Kode kupon ini tidak berlaku untuk saluran penjualan ini.
486
+ no_matching_market: Kode kupon ini tidak berlaku di pasar Anda.
487
+ wrong_country: Kode kupon ini tidak berlaku di negara Anda
488
+ email: Email
489
+ error: kesalahan
490
+ error_user_destroy_with_orders: Pengguna yang terkait dengan pesanan tidak dapat dihapus
491
+ error_user_does_not_have_any_store_credits: Pengguna tidak memiliki Kredit Toko yang tersedia
492
+ errors:
493
+ messages:
494
+ cannot_delete_default_channel: Saluran default tidak dapat dihapus. Jadikan saluran lain sebagai default terlebih dahulu.
495
+ channel_store_mismatch: harus termasuk dalam toko yang sama
496
+ invalid_order_routing_rule: bukan aturan perutean pesanan yang terdaftar
497
+ invalid_order_routing_strategy: bukan strategi perutean pesanan yang terdaftar
498
+ store_association_can_not_be_changed: Asosiasi toko tidak dapat diubah
499
+ store_is_already_set: Toko sudah ditetapkan
500
+ expired: Kedaluwarsa
501
+ export_mailer:
502
+ export_done:
503
+ message: Kerja bagus, ekspor Anda sudah siap! Silakan gunakan tautan di bawah ini untuk mengunduhnya.
504
+ subject: Ekspor Anda %{export_number} berhasil diproses!
505
+ greeting: Hai %{user_name},
506
+ field: Bidang
507
+ first_name: Nama Depan
508
+ flat_percent: Persentase Tetap
509
+ flat_rate_per_order: Tarif Tetap (per pemesanan)
510
+ flexible_rate: Tarif Fleksibel
511
+ free: Gratis
512
+ gateway: Gateway
513
+ gateway_error: Kesalahan Gateway
514
+ gift_card: Kartu Hadiah
515
+ gift_card_already_redeemed: Kartu Hadiah sudah ditukarkan.
516
+ gift_card_applied: Kartu Hadiah berhasil diterapkan ke pesanan Anda!
517
+ gift_card_customer_not_logged_in: Kartu Hadiah tidak dapat diterapkan dengan pengguna tamu.
518
+ gift_card_expired: Kartu Hadiah telah kedaluwarsa.
519
+ gift_card_mismatched_currency: Kartu Hadiah tidak dapat diterapkan dengan mata uang saat ini.
520
+ gift_card_mismatched_customer: Kartu hadiah ini terkait dengan pengguna lain.
521
+ gift_card_not_found: Kartu Hadiah tidak ditemukan.
522
+ gift_card_removed: Kartu Hadiah berhasil dihapus dari pesanan Anda
523
+ gift_card_using_store_credit_error: Anda tidak dapat menerapkan Kartu Hadiah setelah Anda menerapkan kredit toko.
524
+ height: Tinggi
525
+ i18n:
526
+ this_file_language: Indonesian (ID)
527
+ idempotency_key_reused: Idempotency-Key ini sudah digunakan dengan parameter permintaan yang berbeda.
528
+ image: Gambar
529
+ import: Impor
530
+ in_stock: Tersedia
531
+ internal_note: Catatan Internal
532
+ inventory: Inventori
533
+ invitation_mailer:
534
+ greeting: Hai %{user_name},
535
+ invitation_accepted:
536
+ body: "%{invitee_name} telah menerima undangan Anda untuk bergabung dengan %{resource_name}"
537
+ subject: "%{invitee_name} telah menerima undangan Anda untuk bergabung dengan %{resource_name}"
538
+ invitation_email:
539
+ body: "%{inviter_name} telah mengundang Anda untuk bergabung dengan %{resource_name}"
540
+ link_description: 'Untuk menerima undangan ini, silakan klik tautan di bawah ini:'
541
+ subject: Undangan untuk bergabung dengan %{resource_name}
542
+ iso: ISO Alpha-2
543
+ item: Barang
544
+ key: Kunci
545
+ kind: Jenis
546
+ label: Label
547
+ last_name: Nama Belakang
548
+ line_item: Item Baris
549
+ line_items: Item baris
550
+ link: Tautan
551
+ locale: Lokal
552
+ locale_not_supported_by_store: tidak didukung oleh toko ini
553
+ manual: Manual
554
+ market: Pasar
555
+ me_no_current_user: Tidak ada pengguna admin yang mengautentikasi permintaan ini
556
+ media: Media
557
+ meta_description: Deskripsi Meta
558
+ meta_keywords: Kata Kunci Meta
559
+ meta_title: Judul Meta
560
+ metadata: Metadata
561
+ min_quantity: Jumlah Min
562
+ month: Bulan
563
+ name: Nama
564
+ new_variant: Variasi Baru
565
+ no_cc_type: T/A
566
+ none: Tidak ada
567
+ number: Nomor
568
+ on_hand: Stok yang tersedia
569
+ only_active_products_can_be_added_to_cart: Produk draf dan diarsipkan tidak dapat ditambahkan ke keranjang, silakan tandai produk sebagai aktif terlebih dahulu.
570
+ open: Buka
571
+ option_name: Nama opsi
572
+ option_type: Pilihan tipe
573
+ option_value: Pilihan nilai
574
+ options: Pilihan
575
+ or: Atau
576
+ order: Pemesanan
577
+ order_routing:
578
+ strategies:
579
+ legacy: Lama
580
+ rules: Aturan (terurut)
581
+ order_summary: Rekap pemesanan
582
+ orders: Pemesanan
583
+ out_of_stock: Stok habis
584
+ password: Kata sandi
585
+ path: Path
586
+ payment: Pembayaran
587
+ payment_method: Metode Pembayaran
588
+ payment_methods: Metode Pembayaran
589
+ payment_processing_failed: Pembayaran tidak dapat diproses, silahkan periksa rincian yang anda masukan
590
+ payment_source: Sumber pembayaran
591
+ percent: Persen
592
+ percent_per_item: Persentase per barang
593
+ phone: Telepon
594
+ price: Harga
595
+ price_range: Batasan Harga
596
+ price_rules:
597
+ channel_rule:
598
+ description: Terapkan harga berdasarkan saluran penjualan
599
+ customer_group_rule:
600
+ description: Terapkan harga ke grup pelanggan tertentu
601
+ price_sack: price sack
602
+ prices: Harga
603
+ privacy_policy: Kebijakan Privasi
604
+ processing: Memproses
605
+ product: Produk
606
+ product_translations: Terjemahan Produk
607
+ products: Produk
608
+ products_cannot_be_shipped: Kami tidak dapat mengirim %{product_names} ke lokasi Anda saat ini. Silakan ubah alamat pengiriman Anda atau hapus %{product_names} dari keranjang Anda.
609
+ promotion: Promosi
610
+ promotion_action_types:
611
+ create_adjustment:
612
+ description: Membuat penyesuaian kredit promosi pada pembelian
613
+ name: Membuat penyesuaian
614
+ create_line_items:
615
+ description: Penuhi keranjang belanja dengan kuantitas varian yang telah ditentukan
616
+ name: Tambah barang baru
617
+ promotion_actions: Aksi
618
+ promotion_already_used: Anda tidak dapat menghapus promosi yang sudah diterapkan
619
+ promotion_label: Promosi (%{name})
620
+ promotion_rule_types:
621
+ category:
622
+ description: Pesanan mencakup produk dalam kategori tertentu
623
+ name: Kategori
624
+ channel:
625
+ description: Batasi untuk pesanan yang dibuat melalui saluran tertentu
626
+ name: Saluran
627
+ country:
628
+ description: Batasi pada pesanan dengan alamat pengiriman di negara tertentu
629
+ name: Negara
630
+ currency:
631
+ description: Batasi pada pesanan dalam mata uang tertentu
632
+ name: Mata Uang
633
+ customer:
634
+ description: Tersedia hanya untuk pelanggan tertentu
635
+ name: Pelanggan
636
+ customer_group:
637
+ description: Tersedia hanya untuk pelanggan dalam grup pelanggan tertentu
638
+ name: Grup Pelanggan
639
+ customer_logged_in:
640
+ description: Tersedia hanya untuk pelanggan yang masuk
641
+ name: Hanya pelanggan yang masuk
642
+ first_order:
643
+ description: Harus pemesanan pertama Pelanggan
644
+ name: Pemesanan Pertama
645
+ item_total:
646
+ description: Total Pemesanan memenuhi kriteria-kriteria ini
647
+ name: Total Barang
648
+ market:
649
+ description: Batasi untuk pesanan yang dibuat di pasar tertentu
650
+ name: Pasar
651
+ product:
652
+ description: Pemesanan berisi produk spesifik
653
+ name: Produk
654
+ promotions: Promosi
655
+ quantity: Jumlah
656
+ query: Kueri
657
+ reason: Sebab
658
+ received: Telah diterima
659
+ reference: Referensi
660
+ refund: Pengembalian Uang
661
+ refund_amount: Jumlah Pengembalian Dana
662
+ registration: Pendaftaran
663
+ rejected: Penolakan
664
+ remove: Menghapus
665
+ remove_gift_card_on_completed_order_error: Anda tidak dapat menghapus kartu hadiah setelah pesanan dibuat
666
+ resellable: Dapat dijual kembali
667
+ resend: Kirim Ulang
668
+ response_code: Kode Respon
669
+ return: Kembali
670
+ returned: Telah Dikembalikan
671
+ returns_policy: Kebijakan Pengembalian
672
+ row: Baris
673
+ rules: Aturan
674
+ say_no: Tidak
675
+ say_yes: Ya
676
+ scope: Cakupan
677
+ selected_quantity_not_available: terpilih dari %{item} tidak tersedia.
678
+ ship: Kirim
679
+ ship_address: Alamat Kirim
680
+ shipment: Pengiriman
681
+ shipped: Dikirim
682
+ shipping: Mengirimkan
683
+ shipping_address: Alamat Pengiriman
684
+ shipping_flat_rate_per_item: Tarif flat per barang
685
+ shipping_flat_rate_per_order: Tarif flat
686
+ shipping_flexible_rate: Tarif fleksible per paket barang
687
+ shipping_policy: Kebijakan Pengiriman
688
+ shipping_price_sack: Harga sack Pengiriman
689
+ shipping_rates:
690
+ display_price:
691
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
692
+ including_tax: "%{price} (termasuk %{tax_amount} %{tax_rate_name})"
693
+ sku: SKU
694
+ slug: Slug
695
+ source: Sumber
696
+ status: Status
697
+ stock_location: Lokasi Stok
698
+ stock_locations: Lokasi Stok
699
+ stock_transfer:
700
+ errors:
701
+ must_have_variant: Anda harus menambahkan setidaknya satu varian
702
+ same_location: tidak boleh sama dengan lokasi tujuan
703
+ variants_unavailable: Beberapa varian tidak tersedia di %{stock}
704
+ store: Toko
705
+ store_credit:
706
+ allocated: Ditambahkan
707
+ authorized: Diotorisasi
708
+ captured: Terpakai
709
+ credit: Kredit
710
+ eligible: Memenuhi syarat
711
+ store_credit_name: Kredit Toko
712
+ store_credit_payment_method:
713
+ currency_mismatch: Mata uang kredit toko tidak cocok dengan mata uang pesanan
714
+ insufficient_authorized_amount: Tidak dapat menangkap lebih dari jumlah yang diotorisasi
715
+ insufficient_funds: Sisa jumlah kredit toko tidak mencukupi
716
+ successful_action: "%{action} kredit toko berhasil"
717
+ unable_to_credit: 'Tidak dapat mengkreditkan kode: %{auth_code}'
718
+ unable_to_find: Tidak dapat menemukan kredit toko
719
+ unable_to_find_for_action: 'Tidak dapat menemukan kredit toko untuk kode otorisasi: %{auth_code} untuk tindakan: %{action}'
720
+ unable_to_void: 'Tidak dapat membatalkan kode: %{auth_code}'
721
+ success: Sukses
722
+ tags: Tag
723
+ tax: Pajak
724
+ tax_category: Kategori Pajak
725
+ terms_of_service: Ketentuan Layanan
726
+ there_are_no_items_for_this_order: Tidak ada barang dalam pemesanan ini
727
+ total: Total
728
+ tracking: Pelacakan
729
+ tracking_number: Nomor Pelacakan
730
+ type: Tipe
731
+ unable_to_connect_to_gateway: Tidak dapat berkoneksi dengan gateway.
732
+ updated_at: Diperbarui pada
733
+ url: URL
734
+ user: Pengguna
735
+ validation:
736
+ must_be_int: Harus berupa integer
737
+ value: Nilai
738
+ variant: Varian
739
+ variants: Varian
740
+ verified: Terverifikasi
741
+ void: Batalkan
742
+ webhook_mailer:
743
+ endpoint_disabled:
744
+ disabled_at_label: Dinonaktifkan pada
745
+ heading: Endpoint Webhook Dinonaktifkan
746
+ instructions: Silakan periksa URL endpoint dan layanan, lalu aktifkan kembali di Pengaturan → Pengembang → Webhook.
747
+ message: Endpoint webhook "%{endpoint_name}" telah dinonaktifkan secara otomatis setelah kegagalan pengiriman berulang.
748
+ name_label: Nama
749
+ reason_label: Alasan
750
+ subject: 'Endpoint webhook dinonaktifkan: %{endpoint_name}'
751
+ url_label: URL
752
+ weight: Berat
753
+ weight_unit: Satuan berat
754
+ width: Lebar
755
+ year: Tahun
756
+ zip: Kode Pos