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,771 @@
1
+ ---
2
+ fi:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: ei voi olla tyhjä
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Lähiosoite
11
+ address2: Lähiosoite (jatkuu)
12
+ city: Postitoimipaikka
13
+ company: Yritys
14
+ country: Maa
15
+ label: Osoitteen nimi
16
+ phone: Puhelin
17
+ state: Osavaltio tai maakunta
18
+ spree/country:
19
+ iso: ISO
20
+ iso3: ISO3
21
+ iso_name: ISO-nimi
22
+ name: Nimi
23
+ numcode: ISO-koodi
24
+ spree/credit_card:
25
+ cc_type: Tyyppi
26
+ month: Kuukausi
27
+ number: Numero
28
+ verification_value: Tarkistuskoodi
29
+ year: Vuosi
30
+ spree/customer_group:
31
+ description: Kuvaus
32
+ name: Nimi
33
+ spree/gift_card:
34
+ amount_used: Käytetty määrä
35
+ expires_at: Vanhenee
36
+ spree/import:
37
+ preferred_delimiter: Erotin
38
+ spree/import_mapping:
39
+ file_column: Tiedoston sarake
40
+ schema_field: Skeeman kenttä
41
+ spree/import_row:
42
+ row_number: Numero
43
+ spree/inventory_unit:
44
+ state: Tila
45
+ spree/invitation:
46
+ inviter: Kutsuja
47
+ spree/line_item:
48
+ price: Hinta
49
+ quantity: Määrä
50
+ spree/option_type:
51
+ filterable: Suodatettava
52
+ kind: Tyyppi
53
+ name: Nimi
54
+ spree/option_value:
55
+ color_code: Värikoodi
56
+ image: Värimallin kuva
57
+ spree/order:
58
+ checkout_complete: Tilaus valmis
59
+ completed_at: Valmistui
60
+ considered_risky: Riskialttius
61
+ coupon_code: Kupongin koodi
62
+ created_at: Tilauspäivä
63
+ email: Sähköposti
64
+ internal_note: Sisäinen huomautus
65
+ ip_address: IP-osoite
66
+ item_count: Tuotteet
67
+ item_total: Tuotteet yhteensä
68
+ number: Numero
69
+ payment_state: Maksun tila
70
+ shipment_state: Toimituksen tila
71
+ special_instructions: Erityisohjeet
72
+ state: Tila
73
+ total: Yhteensä
74
+ spree/order/bill_address:
75
+ address1: Maksajan katuosoite
76
+ city: Maksajan postitoimipaikka
77
+ phone: Maksajan puhelinnumero
78
+ state: Maksajan osavaltio tai maakunta
79
+ spree/order/ship_address:
80
+ address1: Vastaanottajan katuosoite
81
+ city: Vastaanottajan postitoimipaikka
82
+ phone: Vastaanottajan puhelinnumero
83
+ state: Vastaanottajan maakunta
84
+ spree/payment:
85
+ amount: Summa
86
+ number: Numero
87
+ spree/payment_method:
88
+ name: Nimi
89
+ spree/policy:
90
+ body: Sisältö
91
+ owner: Käytäntö kohteelle
92
+ spree/price_list:
93
+ description: Kuvaus
94
+ ends_at: Päättyy
95
+ match_policy: Vastaavuussääntö
96
+ name: Nimi
97
+ priority: Prioriteetti
98
+ starts_at: Alkaa
99
+ status: Tila
100
+ spree/price_rule:
101
+ priority: Prioriteetti
102
+ type: Tyyppi
103
+ spree/product:
104
+ available_on: Saatavilla
105
+ cost_currency: Maksuvaluutta
106
+ cost_price: Inventaarihinta
107
+ description: Kuvaus
108
+ discontinue_on: Poistetaan käytöstä
109
+ less_than: Vähemmän kuin
110
+ make_active_at: Aktivoidaan
111
+ master_price: Master-hinta
112
+ more_than: Enemmän kuin
113
+ name: Nimi
114
+ on_hand: Varastossa
115
+ tax_category: Verokanta
116
+ spree/promotion:
117
+ advertise: Mainosta
118
+ code: Koodi
119
+ description: Kuvaus
120
+ event_name: Kampanjan nimi
121
+ expires_at: Viimeistään
122
+ generate_code: Luo alennuskoodi
123
+ name: Nimi
124
+ path: Polku
125
+ promotion_category: Kampanjaluokka
126
+ starts_at: Alkaa
127
+ usage_limit: Käyttöraja
128
+ spree/promotion_category:
129
+ code: Koodi
130
+ name: Kampanjakategoria
131
+ spree/property:
132
+ name: Nimi
133
+ presentation: Julkinen nimi
134
+ spree/role:
135
+ name: Nimi
136
+ spree/shipment:
137
+ number: Numero
138
+ spree/state:
139
+ abbr: Lyhenne
140
+ name: Nimi
141
+ spree/store:
142
+ address: Osoite
143
+ contact_phone: Yhteyspuhelin
144
+ preferred_digital_asset_authorized_clicks: Latausten napsautusten raja
145
+ preferred_digital_asset_authorized_days: Latauspäivien raja
146
+ preferred_limit_digital_download_count: Rajoita digitaalisten linkkien latausmäärää
147
+ preferred_limit_digital_download_days: Rajoita digitaalisten linkkien latauspäiviä
148
+ seo_robots: SEO-robotit
149
+ storefront_custom_code_body_end: Mukautettu koodi ennen sulkevaa body-tunnistetta
150
+ storefront_custom_code_body_start: Mukautettu koodi avaavan body-tunnisteen jälkeen
151
+ storefront_custom_code_head: Mukautettu koodi sivun headissa
152
+ spree/store_credit:
153
+ amount_used: Käytetty määrä
154
+ spree/tax_category:
155
+ description: Kuvaus
156
+ name: Nimi
157
+ spree/tax_rate:
158
+ amount: Aste
159
+ included_in_price: Sisältyy hintaan
160
+ show_rate_in_label: Näytä veroprosentti hinnoissa
161
+ spree/taxon:
162
+ name: Nimi
163
+ permalink: Siisti url
164
+ position: Sijainti
165
+ sort_order: Järjestys
166
+ spree/taxonomy:
167
+ name: Nimi
168
+ spree/user:
169
+ avatar: Profiilikuva
170
+ email: Sähköpostiosoite
171
+ password: Salasana
172
+ password_confirmation: Vahvista salasana
173
+ spree/variant:
174
+ cost_currency: Maksuvaluutta
175
+ cost_price: Inventaarihinta
176
+ depth: Syvyys
177
+ height: Korkeus
178
+ price: Hinta
179
+ sku: SKU
180
+ weight: Paino
181
+ width: Leveys
182
+ spree/zone:
183
+ description: Kuvaus
184
+ name: Nimi
185
+ user:
186
+ current_sign_in: Nykyinen kirjautuminen
187
+ last_sign_in: Viimeisin kirjautuminen
188
+ sign_in_count: Kirjautumisten määrä
189
+ errors:
190
+ messages:
191
+ blank: ei voi olla tyhjä
192
+ models:
193
+ spree/allowed_origin:
194
+ attributes:
195
+ origin:
196
+ must_be_origin_only: on oltava alkuperä (skeema ja isäntä) ilman polkua, kyselyä tai fragmenttia
197
+ spree/credit_card:
198
+ attributes:
199
+ base:
200
+ card_expired: Kortti on vanhentunut
201
+ spree/gift_card:
202
+ attributes:
203
+ base:
204
+ cannot_destroy_used_gift_card: Käytettyä lahjakorttia ei voi poistaa
205
+ spree/import:
206
+ attributes:
207
+ attachment:
208
+ content_type: sisältää sisältötyypin, jota ei sallita
209
+ type:
210
+ inclusion: ei sisälly sallittujen tyyppien luetteloon
211
+ spree/market:
212
+ attributes:
213
+ base:
214
+ cannot_destroy_default_market: Oletusmarkkinaa ei voi poistaa.
215
+ cannot_destroy_last_market: Ainoaa markkinaa ei voi poistaa.
216
+ spree/market_country:
217
+ attributes:
218
+ country:
219
+ already_in_market: on jo määritetty toiselle markkinalle tässä kaupassa
220
+ not_in_shipping_zone: ei kuulu mihinkään toimitusalueeseen. Määritä ensin toimitusalue.
221
+ spree/payment:
222
+ attributes:
223
+ amount:
224
+ greater_than_max_amount: on suurempi kuin sallittu enimmäismäärä %{max_amount}
225
+ spree/price_list:
226
+ attributes:
227
+ ends_at:
228
+ must_be_after_starts_at: on oltava alkamisajan jälkeen
229
+ spree/product:
230
+ attributes:
231
+ base:
232
+ cannot_destroy_if_attached_to_line_items: Tuotteita, jotka on lisätty tehtyihin tilauksiin, ei voi poistaa. Poista ne tällöin käytöstä.
233
+ discontinue_on:
234
+ invalid_date_range: on oltava saatavuuspäivän jälkeen
235
+ spree/product_publication:
236
+ attributes:
237
+ unpublished_at:
238
+ must_be_after_published_at: on oltava julkaisupäivän jälkeen
239
+ spree/promotion:
240
+ attributes:
241
+ expires_at:
242
+ invalid_date_range: on oltava alkamispäivän jälkeen
243
+ spree/store:
244
+ attributes:
245
+ base:
246
+ cannot_destroy_only_store: Ainoaa kauppaa ei voi poistaa.
247
+ spree/store_credit:
248
+ attributes:
249
+ amount_authorized:
250
+ exceeds_total_credits: Ylittää kokonaishyvitykset.
251
+ amount_used:
252
+ cannot_be_greater_than_amount: Ei voi olla suurempi kuin määrä.
253
+ greater_than_zero_restrict_delete: on suurempi kuin nolla. Kauppahyvitystä ei voi poistaa.
254
+ spree/user:
255
+ attributes:
256
+ bill_address_id:
257
+ belongs_to_other_user: kuuluu toiselle käyttäjälle
258
+ deprecated_in_completed_order: vanhentunut valmiissa tilauksessa
259
+ ship_address_id:
260
+ belongs_to_other_user: kuuluu toiselle käyttäjälle
261
+ deprecated_in_completed_order: vanhentunut valmiissa tilauksessa
262
+ spree/variant:
263
+ attributes:
264
+ base:
265
+ cannot_destroy_if_attached_to_line_items: Variantteja, jotka on lisätty tehtyihin tilauksiin, ei voi poistaa. Poista ne tällöin käytöstä.
266
+ spree/webhook_endpoint:
267
+ attributes:
268
+ url:
269
+ internal_address_not_allowed: ei saa osoittaa sisäiseen tai yksityiseen verkko-osoitteeseen
270
+ models:
271
+ spree/address:
272
+ one: Osoite
273
+ other: Osoitteet
274
+ spree/classification:
275
+ one: Luokitus
276
+ other: Luokitukset
277
+ spree/country:
278
+ one: Maa
279
+ other: Maat
280
+ spree/credit_card:
281
+ one: Luottokortti
282
+ other: Luottokortit
283
+ spree/customer_group:
284
+ one: Asiakasryhmä
285
+ other: Asiakasryhmät
286
+ spree/customer_group_user:
287
+ one: Asiakasryhmän käyttäjä
288
+ other: Asiakasryhmän käyttäjät
289
+ spree/export:
290
+ one: Vienti
291
+ other: Viennit
292
+ spree/integration:
293
+ one: Integraatio
294
+ other: Integraatiot
295
+ spree/inventory_unit:
296
+ one: Myyntiyksikkö
297
+ other: Myyntiyksikköä
298
+ spree/line_item:
299
+ one: Tuoterivi
300
+ other: Tuoterivit
301
+ spree/option_type:
302
+ one: Valintatyyppi
303
+ other: Valintatyypit
304
+ spree/option_value:
305
+ one: Valinnan arvo
306
+ other: Valinnan arvot
307
+ spree/order:
308
+ one: Tilaus
309
+ other: Tilaukset
310
+ spree/payment:
311
+ one: Maksu
312
+ other: Maksut
313
+ spree/payment_method:
314
+ one: Maksutapa
315
+ other: Maksutavat
316
+ spree/price:
317
+ one: Hinta
318
+ other: Hinnat
319
+ spree/price_list:
320
+ one: Hinnasto
321
+ other: Hinnastot
322
+ spree/price_rule:
323
+ one: Hintasääntö
324
+ other: Hintasäännöt
325
+ spree/product:
326
+ one: Tuote
327
+ other: Tuotteet
328
+ spree/promotion:
329
+ one: Kampanja
330
+ other: Kampanjat
331
+ spree/promotion_category:
332
+ one: Kampanjakategoria
333
+ other: Kampanjakategoriat
334
+ spree/property:
335
+ one: Ominaisuus
336
+ other: Ominaisuudet
337
+ spree/refund_reason:
338
+ one: Hyvityksen syy
339
+ other: Hyvityksen syyt
340
+ spree/role:
341
+ one: Rooli
342
+ other: Roolit
343
+ spree/shipment:
344
+ one: Toimitus
345
+ other: Toimitukset
346
+ spree/shipping_method:
347
+ one: Toimitustapa
348
+ other: Toimitustavat
349
+ spree/state:
350
+ one: Osavalitio
351
+ other: Osavaltiot
352
+ spree/stock_location:
353
+ one: Varasto
354
+ other: Varastot
355
+ spree/stock_movement:
356
+ one: Varastotapahtuma
357
+ other: Varastotapahtumat
358
+ spree/stock_transfer:
359
+ one: Varastosiirto
360
+ other: Varastosiirrot
361
+ spree/store:
362
+ one: Kauppa
363
+ other: Kaupat
364
+ spree/store_credit:
365
+ one: Kauppahyvitys
366
+ other: Kauppahyvitykset
367
+ spree/tax_category:
368
+ one: Verokanta
369
+ other: Verokannat
370
+ spree/tax_rate:
371
+ one: Veroaste
372
+ other: Veroasteet
373
+ spree/taxon:
374
+ one: Taksoni
375
+ other: Taksonit
376
+ spree/taxonomy:
377
+ one: Taksonomia
378
+ other: Taksonomiat
379
+ spree/user:
380
+ one: Käyttäjä
381
+ other: Käyttäjät
382
+ spree/variant:
383
+ one: Variantti
384
+ other: Variantit
385
+ spree/zone:
386
+ one: Alue
387
+ other: Alueet
388
+ errors:
389
+ messages:
390
+ already_confirmed: on jo vahvistettu
391
+ not_found: ei löytynyt
392
+ not_locked: ei ollut lukittu
393
+ not_saved:
394
+ one: 'Yksi virhe esti kohteen %{resource} tallennuksen:'
395
+ other: "%{count} virhettä estivät kohteen %{resource} tallennuksen:"
396
+ number:
397
+ percentage:
398
+ format:
399
+ precision: 1
400
+ spree:
401
+ accepts_email_marketing: Hyväksyy sähköpostimarkkinoinnin
402
+ account: Tili
403
+ active: Käytössä
404
+ address: Osoite
405
+ address1: Osoite
406
+ address2: Osoite (jatkuu)
407
+ adjustment: Hintamuutos
408
+ adjustment_labels:
409
+ tax_rates:
410
+ excluding_tax: "%{name}%{amount}"
411
+ including_tax: "%{name}%{amount} (sisältyy hintaan)"
412
+ adjustments_deleted: Mukautukset poistettu
413
+ all: Kaikki
414
+ amount: Määrä
415
+ api_key_no_current_key: Mikään API-avain ei todentanut tätä pyyntöä
416
+ api_key_scopes_immutable: ei voi muuttaa avaimen luonnin jälkeen; luo uusi avain tarvitsemillasi käyttöoikeuksilla ja peruuta tämä
417
+ approver: Hyväksyjä
418
+ authorized: Valtuutettu
419
+ availability: saatavuus
420
+ backorderable: Jälkitoimitus sallittu
421
+ backordered: Jälkitoimituksessa
422
+ bill_address: Laskun osoite
423
+ billing_address: Laskutusosoite
424
+ calculator: Laskin
425
+ canceled: Peruutettu
426
+ cannot_be_destroyed: Tilausta ei voi poistaa.
427
+ capture: Kuittaa maksetuksi
428
+ cart: Ostoskori
429
+ cart_already_updated: Ostoskori on jo päivitetty.
430
+ cart_line_item:
431
+ delivery_unavailable: Tuotetta %{li_name} ei voi toimittaa valittuun osoitteeseen
432
+ discontinued: "%{li_name} poistettiin, koska se poistettiin käytöstä"
433
+ out_of_stock: "%{li_name} poistettiin, koska se on loppuunmyyty"
434
+ categories: Kategoriat
435
+ category: Kategoria
436
+ channel: Myyntikanava
437
+ channels: Myyntikanavat
438
+ checkout: Kassa
439
+ checkout_requirements:
440
+ email_required: Sähköpostiosoite vaaditaan
441
+ line_items_required: Lisää vähintään yksi tuote ostoskoriin
442
+ payment_required: Lisää maksutapa
443
+ ship_address_required: Toimitusosoite vaaditaan
444
+ city: Postitoimipaikka
445
+ color_code: Värikoodi
446
+ company: Yritys
447
+ compare_at_amount: Vertailumäärä
448
+ compare_at_price: Vertailuhinta
449
+ complete: valmis
450
+ confirm: Vahvista
451
+ cost_price: Kustannushinta
452
+ count_on_hand: Määrä varastossa
453
+ country: Maa
454
+ coupon_code: Tarjouskoodi
455
+ coupon_code_already_applied: Kampanjakoodi on jo käytössä tällä tilauksella
456
+ coupon_code_applied: Tarjouskoodi lisättiin onnistuneesti tilaukseesi.
457
+ coupon_code_better_exists: Aiemmin aktivoitu kampanjakoodi antaa paremman edun.
458
+ coupon_code_expired: Kampanjakoodi ei ole enää voimassa
459
+ coupon_code_max_usage: Kaikki kampanjakoodit on jo käytetty
460
+ coupon_code_not_eligible: Kampanjakoodi ei ole käytettävissä tälle tilaukselle
461
+ coupon_code_not_found: Näppäilemääsi kampanjakoodia ei löytynyt. Yritä uudelleen.
462
+ coupon_code_used: Antamasi alennuskoodi on jo käytetty. Yritä uudelleen.
463
+ created_at: Luotu
464
+ credit_card: Luottokortti
465
+ currency: Valuutta
466
+ currency_not_supported_by_store: ei ole tämän kaupan tukema
467
+ customer: Asiakas
468
+ customers: Asiakkaat
469
+ default: Oletus
470
+ default_stock_location_name: Myymälän sijainti
471
+ default_wishlist_name: Toivelista
472
+ delivery: Toimitus
473
+ depth: Syvyys
474
+ description: Kuvaus
475
+ destination: Kohde
476
+ destroy: Tuhoa
477
+ details: Tuotetiedot
478
+ digital:
479
+ digital_delivery: Digitaalinen toimitus
480
+ digital_assets: Digitaaliset resurssit
481
+ discontinued: Poistettu käytöstä
482
+ discontinued_variants_present: Joillakin tämän tilauksen riveillä on tuotteita, jotka eivät ole enää saatavilla.
483
+ display_delivery_range: Toimitus %{delivery_range} arkipäivässä
484
+ draft: Luonnos
485
+ eligibility_errors:
486
+ messages:
487
+ no_matching_channel: Tämä kuponkikoodi ei ole voimassa tässä myyntikanavassa.
488
+ no_matching_market: Tämä kuponkikoodi ei ole voimassa markkina-alueellasi.
489
+ wrong_country: Tämä alennuskoodi ei kelpaa maassasi
490
+ email: Sähköposti
491
+ error: virhe
492
+ error_user_destroy_with_orders: Tilauksiin liitettyä käyttäjää ei voi poistaa
493
+ error_user_does_not_have_any_store_credits: Käyttäjällä ei ole käytettävissä olevia kauppahyvityksiä
494
+ errors:
495
+ messages:
496
+ cannot_delete_default_channel: Oletuskanavaa ei voi poistaa. Korota ensin toinen kanava oletukseksi.
497
+ channel_store_mismatch: on kuuluttava samaan kauppaan
498
+ invalid_order_routing_rule: ei ole rekisteröity tilausten reititityssääntö
499
+ invalid_order_routing_strategy: ei ole rekisteröity tilausten reititysstrategia
500
+ store_association_can_not_be_changed: Kaupan liitosta ei voi muuttaa
501
+ store_is_already_set: Kauppa on jo asetettu
502
+ expired: Vanhentunut
503
+ export_mailer:
504
+ export_done:
505
+ message: Hyvää työtä, vientisi on valmis! Käytä alla olevaa linkkiä ladataksesi sen.
506
+ subject: Vientisi %{export_number} käsiteltiin onnistuneesti!
507
+ greeting: Hei %{user_name},
508
+ field: Kenttä
509
+ first_name: Etunimi
510
+ flat_percent: Kiinteä prosentti
511
+ flat_rate_per_order: Kiinteä hinta (per tilaus)
512
+ flexible_rate: Joustava hinta
513
+ free: Ilmainen
514
+ gateway: Yhdyskäytävä
515
+ gateway_error: Virhe yhdyskäytävässä
516
+ gift_card: Lahjakortti
517
+ gift_card_already_redeemed: Lahjakortti on jo lunastettu.
518
+ gift_card_applied: Lahjakortti lisättiin onnistuneesti tilaukseesi!
519
+ gift_card_customer_not_logged_in: Lahjakorttia ei voi käyttää vieraskäyttäjänä.
520
+ gift_card_expired: Lahjakortti on vanhentunut.
521
+ gift_card_mismatched_currency: Lahjakorttia ei voi käyttää nykyisellä valuutalla.
522
+ gift_card_mismatched_customer: Tämä lahjakortti on liitetty toiseen käyttäjään.
523
+ gift_card_not_found: Lahjakorttia ei löytynyt.
524
+ gift_card_removed: Lahjakortti poistettiin onnistuneesti tilauksestasi
525
+ gift_card_using_store_credit_error: Lahjakorttia ei voi käyttää sen jälkeen, kun kauppahyvitys on otettu käyttöön.
526
+ height: Korkeus
527
+ i18n:
528
+ this_file_language: Suomi (FI)
529
+ idempotency_key_reused: Tätä Idempotency-Key-avainta on jo käytetty eri pyyntöparametreilla.
530
+ image: Kuva
531
+ import: Tuo
532
+ in_stock: Varastossa
533
+ internal_note: Sisäinen huomautus
534
+ inventory: Varasto
535
+ invitation_mailer:
536
+ greeting: Hei %{user_name},
537
+ invitation_accepted:
538
+ body: "%{invitee_name} on hyväksynyt kutsusi liittyä kohteeseen %{resource_name}"
539
+ subject: "%{invitee_name} on hyväksynyt kutsusi liittyä kohteeseen %{resource_name}"
540
+ invitation_email:
541
+ body: "%{inviter_name} on kutsunut sinut liittymään kohteeseen %{resource_name}"
542
+ link_description: 'Hyväksy tämä kutsu napsauttamalla alla olevaa linkkiä:'
543
+ subject: Kutsu liittyä kohteeseen %{resource_name}
544
+ iso: ISO Alpha-2
545
+ item: Tuote
546
+ items_cannot_be_shipped: Toimituskulujen laskeminen näille tuotteille ei onnistunut.
547
+ key: Avain
548
+ kind: Tyyppi
549
+ label: Nimike
550
+ last_name: Sukunimi
551
+ line_item: Rivituote
552
+ line_items: Rivituotteet
553
+ link: Linkki
554
+ locale: Kieliasetus
555
+ locale_not_supported_by_store: ei ole tämän kaupan tukema
556
+ manual: Manuaalinen
557
+ market: Markkina
558
+ me_no_current_user: Mikään hallintakäyttäjä ei todentanut tätä pyyntöä
559
+ media: Media
560
+ meta_description: Meta-kuvaus
561
+ meta_keywords: Meta-avainsanat
562
+ metadata: Metadata
563
+ min_quantity: Vähimmäismäärä
564
+ month: Kuukausi
565
+ name: Nimi
566
+ new_variant: Uusi variantti
567
+ no_cc_type: Ei saatavilla
568
+ no_payment_found: Virhe. Maksua ei löytynyt.
569
+ none: Ei yhtäkään
570
+ number: Numero
571
+ on_hand: Saatavilla
572
+ only_active_products_can_be_added_to_cart: Luonnos- ja arkistoituja tuotteita ei voi lisätä ostoskoriin, merkitse tuote ensin aktiiviseksi.
573
+ open: Avaa
574
+ option_name: Valinnan nimi
575
+ option_type: Valintatyyppi
576
+ option_value: Valinta-arvo
577
+ options: Valinnat
578
+ or: tai
579
+ order: Tilaus
580
+ order_routing:
581
+ strategies:
582
+ legacy: Perinteinen
583
+ rules: Säännöt (järjestyksessä)
584
+ order_summary: Tilauksen yhteenveto
585
+ orders: Tilaukset
586
+ out_of_stock: Ei saatavilla
587
+ password: Salasana
588
+ path: Polku
589
+ payment: Maksu
590
+ payment_method: Maksutapa
591
+ payment_method_not_supported: Tätä maksutapaa ei voida hyväksyä. Valitse joku toinen maksutapa.
592
+ payment_methods: Maksutavat
593
+ payment_processing_failed: Maksua ei voitu käsitellä, ole hyvä ja tarkista antamasi tiedot
594
+ payment_source: Maksulähde
595
+ percent: Prosentti
596
+ percent_per_item: Prosenttia per rivi
597
+ phone: Puhelin
598
+ price: Hinta
599
+ price_range: Price Range
600
+ price_rules:
601
+ channel_rule:
602
+ description: Käytä hinnoittelua myyntikanavan perusteella
603
+ customer_group_rule:
604
+ description: Sovella hinnoittelua tiettyihin asiakasryhmiin
605
+ price_sack: Price Sack
606
+ prices: Hinnat
607
+ privacy_policy: Tietosuojaseloste
608
+ processing: Käsitellään
609
+ product: Tuote
610
+ product_translations: Tuotteen käännökset
611
+ products: Tuotteet
612
+ products_cannot_be_shipped: Emme voi tällä hetkellä toimittaa tuotteita %{product_names} nykyiseen sijaintiisi. Vaihda toimitusosoitettasi tai poista %{product_names} ostoskoristasi.
613
+ promotion: Kampanja
614
+ promotion_action_types:
615
+ create_adjustment:
616
+ description: Luo tilaukselle hintamuutoksen kampanjan avulla
617
+ name: Uusi tilauskohtainen hintamuutos
618
+ create_item_adjustments:
619
+ description: Luo tilausriville hintamuutos kampanjan avulla
620
+ name: Uusi rivikohtainen hintamuutos
621
+ create_line_items:
622
+ description: Lisää ostoskoriin variantteja
623
+ name: Lisää tuote
624
+ free_shipping:
625
+ description: Kaikki toimitukset tilaukselle ovat ilmaisia
626
+ name: Ilmainen toimitus
627
+ promotion_actions: Toiminnot
628
+ promotion_already_used: Et voi poistaa kampanjaa, joka on jo otettu käyttöön
629
+ promotion_label: Kampanja (%{name})
630
+ promotion_rule_types:
631
+ category:
632
+ description: Tilaus sisältää tuotteita määritetyistä luokista
633
+ name: Luokat
634
+ channel:
635
+ description: Rajaa määritettyjen myyntikanavien kautta tehtyihin tilauksiin
636
+ name: Myyntikanavat
637
+ country:
638
+ description: Rajoita tilauksiin, joiden toimitusosoite on tietyssä maassa
639
+ name: Maa
640
+ currency:
641
+ description: Rajoita tilauksiin tietyssä valuutassa
642
+ name: Valuutta
643
+ customer:
644
+ description: Saatavilla vain määritetyille asiakkaille
645
+ name: Asiakkaat
646
+ customer_group:
647
+ description: Saatavilla vain määritettyihin asiakasryhmiin kuuluville asiakkaille
648
+ name: Asiakasryhmä(t)
649
+ customer_logged_in:
650
+ description: Saatavilla vain kirjautuneille asiakkaille
651
+ name: Vain kirjautuneet asiakkaat
652
+ first_order:
653
+ description: Täytyy olla asiakkaan ensimmäinen tilaus
654
+ name: Ensimmäinen tilaus
655
+ item_total:
656
+ description: Tilaus täyttää nämä kriteerit
657
+ name: Tilaus yhteensä
658
+ market:
659
+ description: Rajaa määritetyillä markkina-alueilla tehtyihin tilauksiin
660
+ name: Markkina-alueet
661
+ one_use_per_user:
662
+ description: Käyttäjäkohtainen kerta-alennus
663
+ name: Käyttäjäkohtainen kerta-alennus
664
+ option_value:
665
+ description: Tilaus sisältää tietyn tuotteen valintatyypillä
666
+ name: Valintatyyppi
667
+ product:
668
+ description: Tilaus sisältää määritellyt tuotteet
669
+ name: Tuotteet
670
+ promotions: Kampanjat
671
+ quantity: Määrä
672
+ query: Kysely
673
+ reason: Syy
674
+ received: Vastaanotettu
675
+ reference: Viite
676
+ refund: Hyvitä
677
+ refund_amount: Hyvityksen määrä
678
+ registration: Rekisteröityminen
679
+ remove: Poista
680
+ remove_gift_card_on_completed_order_error: Et voi poistaa lahjakorttia sen jälkeen, kun tilaus on tehty
681
+ resellable: Jälleenmyytävissä
682
+ resend: Lähetä uudelleen
683
+ response_code: Vastauskoodi
684
+ return: palaa
685
+ returned: Palattu
686
+ returns_policy: Palautuskäytäntö
687
+ row: Rivi
688
+ rules: Säännöt
689
+ say_no: Ei
690
+ say_yes: Kyllä
691
+ scope: Laajuus
692
+ selected_quantity_not_available: valitulle tuotteelle %{item} ei ole saatavissa
693
+ ship: toimita
694
+ ship_address: Toimitusosoite
695
+ shipment: Toimitus
696
+ shipped: Toimitettu
697
+ shipping: Toimitus
698
+ shipping_address: Toimitusosoite
699
+ shipping_flat_rate_per_item: Kiinteä hinta per pakattu tuote
700
+ shipping_flat_rate_per_order: Kiinteä hinta
701
+ shipping_flexible_rate: Joustava hinnoittelu per tuote
702
+ shipping_policy: Toimituskäytäntö
703
+ shipping_price_sack: Hintasäkki
704
+ shipping_rates:
705
+ display_price:
706
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
707
+ including_tax: "%{price} (sis. %{tax_amount} %{tax_rate_name})"
708
+ sku: SKU
709
+ source: Lähde
710
+ status: Tila
711
+ stock_location: Varaston sijainti
712
+ stock_locations: Varastot
713
+ stock_transfer:
714
+ errors:
715
+ must_have_variant: Sinun on lisättävä vähintään yksi variantti
716
+ same_location: ei voi olla sama kuin kohdesijainti
717
+ variants_unavailable: Jotkin variantit eivät ole saatavilla sijainnissa %{stock}
718
+ store: Kauppa
719
+ store_credit:
720
+ allocated: Lisätty
721
+ authorized: Valtuutettu
722
+ captured: Käytetty
723
+ credit: Hyvitys
724
+ eligible: Kelvollinen
725
+ store_credit_name: Kauppahyvitys
726
+ store_credit_payment_method:
727
+ currency_mismatch: Kauppahyvityksen valuutta ei vastaa tilauksen valuuttaa
728
+ insufficient_authorized_amount: Valtuutettua määrää enempää ei voi veloittaa
729
+ insufficient_funds: Jäljellä oleva kauppahyvityksen määrä ei riitä
730
+ successful_action: Onnistunut kauppahyvitys %{action}
731
+ unable_to_credit: 'Koodia ei voi hyvittää: %{auth_code}'
732
+ unable_to_find: Kauppahyvitystä ei löytynyt
733
+ unable_to_find_for_action: 'Kauppahyvitystä ei löytynyt valtuutuskoodille: %{auth_code} toiminnolle: %{action}'
734
+ unable_to_void: 'Koodia ei voi mitätöidä: %{auth_code}'
735
+ tags: Tunnisteet
736
+ tax: Vero
737
+ tax_category: Verokategoria
738
+ terms_of_service: Käyttöehdot
739
+ there_are_no_items_for_this_order: Tilaus ei sisällä yhtään tuotetta. Lisää tuote jatkaaksesi tästä eteenpäin.
740
+ total: Yhteensä
741
+ track_inventory: Seuraa saldoa
742
+ tracking: Seuranta
743
+ tracking_number: Seurantatunnus
744
+ tracking_url: Seurantaosoite
745
+ type: Tyyppi
746
+ unable_to_connect_to_gateway: Ei saatu yhteyttä yhdyskäytävään
747
+ updated_at: Päivitetty
748
+ url: URL
749
+ user: Käyttäjä
750
+ validation:
751
+ must_be_int: täytyy olla kokonaisluku
752
+ value: Arvo
753
+ variant: Variantti
754
+ variants: Variantit
755
+ verified: Vahvistettu
756
+ void: Hylkää
757
+ webhook_mailer:
758
+ endpoint_disabled:
759
+ disabled_at_label: Poistettu käytöstä
760
+ heading: Webhook-päätepiste poistettu käytöstä
761
+ instructions: Tarkista päätepisteen URL ja palvelu, ja ota se sitten uudelleen käyttöön kohdassa Asetukset → Kehittäjät → Webhookit.
762
+ message: Webhook-päätepiste "%{endpoint_name}" on poistettu automaattisesti käytöstä toistuvien toimitusvirheiden jälkeen.
763
+ name_label: Nimi
764
+ reason_label: Syy
765
+ subject: 'Webhook-päätepiste poistettu käytöstä: %{endpoint_name}'
766
+ url_label: URL
767
+ weight: Paino
768
+ weight_unit: Painoyksikkö
769
+ width: Leveys
770
+ year: Vuosi
771
+ zip: Postinumero