spree_core 6.0.0.beta3 → 6.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/helpers/spree/images_helper.rb +0 -57
  4. data/app/jobs/spree/base_job.rb +21 -0
  5. data/app/jobs/spree/carts/reap_expired_job.rb +2 -2
  6. data/app/jobs/spree/collections/regenerate_time_based_job.rb +6 -3
  7. data/app/jobs/spree/orders/finalize_stale_drafts_job.rb +8 -5
  8. data/app/jobs/spree/payments/cancel_unused_sessions_job.rb +61 -0
  9. data/app/jobs/spree/seller_payouts/sweep_seller_job.rb +2 -0
  10. data/app/mailers/spree/admin_user_mailer.rb +4 -19
  11. data/app/mailers/spree/base_mailer.rb +96 -13
  12. data/app/mailers/spree/email_template_mailer.rb +27 -0
  13. data/app/mailers/spree/export_mailer.rb +3 -4
  14. data/app/mailers/spree/import_mailer.rb +3 -4
  15. data/app/mailers/spree/invitation_mailer.rb +24 -7
  16. data/app/mailers/spree/seller_user_mailer.rb +4 -16
  17. data/app/mailers/spree/webhook_mailer.rb +2 -2
  18. data/app/models/concerns/spree/acted_by.rb +1 -1
  19. data/app/models/concerns/spree/admin_user_methods.rb +13 -1
  20. data/app/models/concerns/spree/api_typed.rb +91 -0
  21. data/app/models/concerns/spree/calculator/tiers.rb +76 -0
  22. data/app/models/concerns/spree/customer_methods.rb +15 -14
  23. data/app/models/concerns/spree/email_template_identity.rb +52 -0
  24. data/app/models/concerns/spree/parameterizable_name.rb +2 -0
  25. data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
  26. data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
  27. data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
  28. data/app/models/concerns/spree/preference_schema.rb +4 -12
  29. data/app/models/concerns/spree/product_scopes.rb +11 -1
  30. data/app/models/concerns/spree/provider_listing.rb +41 -0
  31. data/app/models/concerns/spree/publishable.rb +82 -14
  32. data/app/models/concerns/spree/purchase/addresses.rb +23 -10
  33. data/app/models/concerns/spree/purchase/currency.rb +1 -1
  34. data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
  35. data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
  36. data/app/models/concerns/spree/purchase/locale.rb +1 -1
  37. data/app/models/concerns/spree/purchase/payment_processing.rb +7 -3
  38. data/app/models/concerns/spree/purchase/purchase_order.rb +2 -2
  39. data/app/models/concerns/spree/purchase/totals.rb +49 -1
  40. data/app/models/concerns/spree/receivable.rb +1 -1
  41. data/app/models/concerns/spree/searchable.rb +0 -4
  42. data/app/models/concerns/spree/secret_preferences.rb +59 -0
  43. data/app/models/concerns/spree/single_store_resource.rb +1 -1
  44. data/app/models/concerns/spree/stores/email_branding.rb +31 -0
  45. data/app/models/concerns/spree/type_labels.rb +38 -0
  46. data/app/models/concerns/spree/typed_adjustment_line.rb +1 -1
  47. data/app/models/concerns/spree/typed_associations.rb +6 -0
  48. data/app/models/spree/address.rb +11 -1
  49. data/app/models/spree/adjusters/promotion.rb +1 -15
  50. data/app/models/spree/allowed_origin.rb +0 -1
  51. data/app/models/spree/api_key.rb +5 -6
  52. data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
  53. data/app/models/spree/base.rb +70 -22
  54. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -3
  55. data/app/models/spree/calculator/flat_rate.rb +1 -3
  56. data/app/models/spree/calculator/flexi_rate.rb +1 -3
  57. data/app/models/spree/calculator/percent_on_line_item.rb +1 -1
  58. data/app/models/spree/calculator/price_sack.rb +1 -3
  59. data/app/models/spree/calculator/shipping/digital_delivery.rb +1 -3
  60. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -3
  61. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -3
  62. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -3
  63. data/app/models/spree/calculator/shipping/per_item.rb +1 -3
  64. data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
  65. data/app/models/spree/calculator/tiered_flat_rate.rb +6 -23
  66. data/app/models/spree/calculator/tiered_percent.rb +7 -25
  67. data/app/models/spree/cart.rb +78 -18
  68. data/app/models/spree/channel/gating.rb +1 -1
  69. data/app/models/spree/channel.rb +4 -4
  70. data/app/models/spree/claim.rb +21 -1
  71. data/app/models/spree/claim_line_item.rb +41 -6
  72. data/app/models/spree/collection.rb +0 -1
  73. data/app/models/spree/collection_rule.rb +5 -21
  74. data/app/models/spree/commission_line.rb +1 -1
  75. data/app/models/spree/commission_rate.rb +2 -3
  76. data/app/models/spree/commission_rate_value.rb +1 -1
  77. data/app/models/spree/commission_rule.rb +4 -11
  78. data/app/models/spree/commission_rules/product_rule.rb +1 -1
  79. data/app/models/spree/company_invitation.rb +1 -0
  80. data/app/models/spree/consent_record.rb +0 -1
  81. data/app/models/spree/credit_card.rb +1 -1
  82. data/app/models/spree/current.rb +23 -0
  83. data/app/models/spree/custom_field.rb +2 -2
  84. data/app/models/spree/custom_field_definition.rb +9 -23
  85. data/app/models/spree/custom_fields/boolean.rb +1 -1
  86. data/app/models/spree/custom_fields/json.rb +1 -1
  87. data/app/models/spree/data_feed/google.rb +0 -2
  88. data/app/models/spree/data_request.rb +1 -1
  89. data/app/models/spree/delivery_method.rb +30 -13
  90. data/app/models/spree/delivery_method_rule.rb +4 -11
  91. data/app/models/spree/delivery_rate.rb +4 -5
  92. data/app/models/spree/delivery_rate_provider/base.rb +1 -0
  93. data/app/models/spree/delivery_zone.rb +0 -1
  94. data/app/models/spree/delivery_zone_member.rb +4 -4
  95. data/app/models/spree/digital_asset.rb +7 -0
  96. data/app/models/spree/digital_asset_provider/base.rb +2 -0
  97. data/app/models/spree/digital_link.rb +2 -5
  98. data/app/models/spree/discount.rb +1 -1
  99. data/app/models/spree/email_template.rb +25 -0
  100. data/app/models/spree/email_template_draft.rb +13 -0
  101. data/app/models/spree/email_template_revision.rb +17 -0
  102. data/app/models/spree/email_templates/entry.rb +118 -0
  103. data/app/models/spree/email_templates/sample_record.rb +16 -0
  104. data/app/models/spree/emails/branding.rb +80 -0
  105. data/app/models/spree/exchange.rb +15 -1
  106. data/app/models/spree/exchange_line_item.rb +121 -5
  107. data/app/models/spree/export.rb +0 -1
  108. data/app/models/spree/exports/products.rb +10 -1
  109. data/app/models/spree/exports/report.rb +1 -1
  110. data/app/models/spree/fee.rb +4 -2
  111. data/app/models/spree/fulfillment.rb +53 -27
  112. data/app/models/spree/fulfillment_changer.rb +2 -2
  113. data/app/models/spree/fulfillment_item.rb +0 -4
  114. data/app/models/spree/fulfillment_provider/base.rb +1 -0
  115. data/app/models/spree/gateway/bogus.rb +4 -0
  116. data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
  117. data/app/models/spree/gateway.rb +5 -1
  118. data/app/models/spree/gift_card.rb +12 -1
  119. data/app/models/spree/gift_card_batch.rb +0 -1
  120. data/app/models/spree/import.rb +2 -7
  121. data/app/models/spree/import_mapping.rb +1 -2
  122. data/app/models/spree/import_row.rb +2 -2
  123. data/app/models/spree/import_schemas/products.rb +1 -0
  124. data/app/models/spree/integration.rb +8 -18
  125. data/app/models/spree/invitation.rb +5 -5
  126. data/app/models/spree/line_item.rb +13 -2
  127. data/app/models/spree/locale.rb +11 -8
  128. data/app/models/spree/market.rb +1 -0
  129. data/app/models/spree/newsletter_subscriber.rb +3 -0
  130. data/app/models/spree/order.rb +56 -138
  131. data/app/models/spree/order_group.rb +11 -2
  132. data/app/models/spree/order_inventory.rb +10 -5
  133. data/app/models/spree/order_promotion.rb +1 -1
  134. data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
  135. data/app/models/spree/order_routing/strategy/base.rb +4 -2
  136. data/app/models/spree/order_routing/strategy/rules.rb +1 -1
  137. data/app/models/spree/order_routing_rule.rb +6 -22
  138. data/app/models/spree/package_type.rb +1 -2
  139. data/app/models/spree/payment/gateway_options.rb +14 -52
  140. data/app/models/spree/payment/processing.rb +2 -4
  141. data/app/models/spree/payment.rb +20 -5
  142. data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
  143. data/app/models/spree/payment_method/store_credit.rb +4 -4
  144. data/app/models/spree/payment_method.rb +36 -4
  145. data/app/models/spree/payment_session.rb +5 -1
  146. data/app/models/spree/payment_setup_session.rb +1 -0
  147. data/app/models/spree/payout_provider/base.rb +3 -1
  148. data/app/models/spree/pickup_point_provider/base.rb +2 -0
  149. data/app/models/spree/price_list.rb +1 -2
  150. data/app/models/spree/price_rules/channel_rule.rb +1 -1
  151. data/app/models/spree/price_rules/customer_group_rule.rb +1 -1
  152. data/app/models/spree/product.rb +31 -7
  153. data/app/models/spree/product_submission.rb +0 -12
  154. data/app/models/spree/product_type.rb +0 -1
  155. data/app/models/spree/promotion/actions/create_line_items.rb +27 -17
  156. data/app/models/spree/promotion/rules/category.rb +0 -4
  157. data/app/models/spree/promotion/rules/channel.rb +0 -4
  158. data/app/models/spree/promotion/rules/country.rb +0 -4
  159. data/app/models/spree/promotion/rules/currency.rb +0 -4
  160. data/app/models/spree/promotion/rules/customer_group.rb +0 -4
  161. data/app/models/spree/promotion/rules/first_order.rb +0 -4
  162. data/app/models/spree/promotion/rules/item_total.rb +4 -8
  163. data/app/models/spree/promotion/rules/market.rb +0 -4
  164. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
  165. data/app/models/spree/promotion/rules/option_value.rb +0 -3
  166. data/app/models/spree/promotion/rules/product.rb +0 -4
  167. data/app/models/spree/promotion/rules/user.rb +0 -4
  168. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
  169. data/app/models/spree/promotion.rb +35 -6
  170. data/app/models/spree/promotion_action.rb +7 -14
  171. data/app/models/spree/promotion_action_line_item.rb +1 -1
  172. data/app/models/spree/promotion_handler/coupon.rb +59 -27
  173. data/app/models/spree/promotion_rule.rb +7 -14
  174. data/app/models/spree/purchase_order.rb +1 -0
  175. data/app/models/spree/quantity_rule.rb +1 -1
  176. data/app/models/spree/refund.rb +28 -3
  177. data/app/models/spree/return.rb +30 -2
  178. data/app/models/spree/return_line_item.rb +65 -14
  179. data/app/models/spree/role.rb +7 -7
  180. data/app/models/spree/saved_report.rb +1 -1
  181. data/app/models/spree/seller.rb +2 -1
  182. data/app/models/spree/seller_payout.rb +7 -0
  183. data/app/models/spree/seller_requirement.rb +4 -12
  184. data/app/models/spree/seller_requirement_custom_field.rb +1 -2
  185. data/app/models/spree/seller_requirement_submission.rb +2 -2
  186. data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
  187. data/app/models/spree/seller_transfer.rb +5 -0
  188. data/app/models/spree/shipping_label.rb +1 -0
  189. data/app/models/spree/stock/availability_validator.rb +2 -2
  190. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  191. data/app/models/spree/stock/packer.rb +2 -2
  192. data/app/models/spree/stock/splitter/weight.rb +1 -1
  193. data/app/models/spree/stock_level/custom_events.rb +6 -0
  194. data/app/models/spree/stock_level.rb +1 -1
  195. data/app/models/spree/stock_movement.rb +1 -1
  196. data/app/models/spree/stock_receipt_item.rb +1 -1
  197. data/app/models/spree/stock_reservation.rb +2 -2
  198. data/app/models/spree/stock_transfer.rb +4 -2
  199. data/app/models/spree/store.rb +33 -7
  200. data/app/models/spree/store_credit.rb +8 -9
  201. data/app/models/spree/store_credit_event.rb +5 -5
  202. data/app/models/spree/tax_exemption_certificate.rb +2 -0
  203. data/app/models/spree/tax_identifier.rb +3 -1
  204. data/app/models/spree/tax_line.rb +53 -3
  205. data/app/models/spree/tax_provider/base.rb +71 -14
  206. data/app/models/spree/tax_provider/internal.rb +59 -33
  207. data/app/models/spree/tax_provider/recorded_share.rb +114 -0
  208. data/app/models/spree/tax_rate.rb +1 -2
  209. data/app/models/spree/taxonomy.rb +0 -1
  210. data/app/models/spree/variant.rb +4 -3
  211. data/app/models/spree/variant_media.rb +1 -1
  212. data/app/models/spree/webhook_endpoint.rb +10 -13
  213. data/app/models/spree/wishlist.rb +1 -6
  214. data/app/models/spree/wishlist_item/custom_events.rb +6 -0
  215. data/app/presenters/spree/csv/customer_presenter.rb +1 -1
  216. data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
  217. data/app/presenters/spree/csv/order_line_item_presenter.rb +1 -1
  218. data/app/presenters/spree/csv/product_variant_presenter.rb +42 -12
  219. data/app/serializers/spree/emails/base_serializer.rb +14 -0
  220. data/app/serializers/spree/emails/export_serializer.rb +13 -0
  221. data/app/serializers/spree/emails/import_serializer.rb +19 -0
  222. data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
  223. data/app/serializers/spree/emails/store_serializer.rb +31 -0
  224. data/app/serializers/spree/emails/user_serializer.rb +12 -0
  225. data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
  226. data/app/services/spree/carts/create.rb +8 -2
  227. data/app/services/spree/carts/destroy.rb +2 -2
  228. data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
  229. data/app/services/spree/carts/split_by_seller.rb +1 -1
  230. data/app/services/spree/carts/update.rb +19 -5
  231. data/app/services/spree/catalogs/set_product_terms.rb +1 -1
  232. data/app/services/spree/categories/add_products.rb +13 -31
  233. data/app/services/spree/categories/remove_products.rb +12 -51
  234. data/app/services/spree/checkout/advance.rb +1 -4
  235. data/app/services/spree/collections/add_products.rb +10 -23
  236. data/app/services/spree/collections/remove_products.rb +7 -43
  237. data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
  238. data/app/services/spree/data_requests/create.rb +1 -1
  239. data/app/services/spree/deliveries/destroy.rb +2 -2
  240. data/app/services/spree/email_templates/check.rb +58 -0
  241. data/app/services/spree/email_templates/no_sample_record.rb +7 -0
  242. data/app/services/spree/email_templates/preview.rb +99 -0
  243. data/app/services/spree/emails/file_system.rb +23 -0
  244. data/app/services/spree/emails/filters.rb +84 -0
  245. data/app/services/spree/emails/liquid_context.rb +48 -0
  246. data/app/services/spree/emails/rendered_email.rb +14 -0
  247. data/app/services/spree/emails/renderer.rb +125 -0
  248. data/app/services/spree/emails/template.rb +51 -0
  249. data/app/services/spree/emails/template_data.rb +23 -0
  250. data/app/services/spree/emails/template_resolver.rb +109 -0
  251. data/app/services/spree/emails/text_converter.rb +72 -0
  252. data/app/services/spree/emails/translation_inliner.rb +134 -0
  253. data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
  254. data/app/services/spree/imports/row_processors/product_variant.rb +65 -34
  255. data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
  256. data/app/services/spree/locales.rb +4 -5
  257. data/app/services/spree/newsletter/subscribe.rb +8 -12
  258. data/app/services/spree/orders/build_fulfillments.rb +3 -2
  259. data/app/services/spree/orders/create.rb +2 -1
  260. data/app/services/spree/orders/discounts/create.rb +7 -4
  261. data/app/services/spree/orders/discounts/destroy.rb +1 -0
  262. data/app/services/spree/orders/discounts/update.rb +1 -0
  263. data/app/services/spree/orders/fees/create.rb +1 -0
  264. data/app/services/spree/orders/fees/destroy.rb +1 -0
  265. data/app/services/spree/orders/fees/update.rb +1 -0
  266. data/app/services/spree/orders/remove_line_item.rb +13 -3
  267. data/app/services/spree/orders/update.rb +10 -6
  268. data/app/services/spree/orders/update_item.rb +6 -3
  269. data/app/services/spree/orders/update_statuses.rb +3 -1
  270. data/app/services/spree/product_memberships.rb +61 -0
  271. data/app/services/spree/returns/eligibility_validator.rb +1 -1
  272. data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
  273. data/app/services/spree/seeds/commission_rates.rb +1 -1
  274. data/app/services/spree/seeds/digital_delivery.rb +1 -1
  275. data/app/services/spree/seeds/payment_methods.rb +2 -2
  276. data/app/services/spree/seeds/saved_reports.rb +3 -3
  277. data/app/services/spree/sellers/requirements.rb +1 -2
  278. data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
  279. data/app/services/spree/shipping_labels/store_file.rb +3 -3
  280. data/app/services/spree/stock_levels/correct.rb +3 -3
  281. data/app/services/spree/stock_reservations/reserve.rb +2 -3
  282. data/app/services/spree/store_credits/apply.rb +15 -13
  283. data/app/services/spree/stores/provision_defaults.rb +15 -14
  284. data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
  285. data/app/views/layouts/spree/base_mailer.html.erb +2 -43
  286. data/app/views/layouts/spree/base_mailer.liquid +79 -0
  287. data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
  288. data/app/views/spree/export_mailer/export_done.liquid +12 -0
  289. data/app/views/spree/import_mailer/import_done.liquid +15 -0
  290. data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
  291. data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
  292. data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
  293. data/app/views/spree/shared/_mailer_button.html.erb +4 -5
  294. data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
  295. data/app/views/spree/shared/_summary_row.liquid +8 -0
  296. data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
  297. data/app/workflows/spree/carts/add_item.rb +4 -4
  298. data/app/workflows/spree/carts/complete.rb +13 -3
  299. data/app/workflows/spree/carts/merge.rb +1 -1
  300. data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
  301. data/app/workflows/spree/carts/upsert_items.rb +18 -9
  302. data/app/workflows/spree/claims/approve.rb +5 -22
  303. data/app/workflows/spree/claims/cancel.rb +5 -21
  304. data/app/workflows/spree/claims/create.rb +15 -0
  305. data/app/workflows/spree/claims/deny.rb +7 -0
  306. data/app/workflows/spree/claims/resolve.rb +34 -31
  307. data/app/workflows/spree/customers/anonymize.rb +3 -4
  308. data/app/workflows/spree/customers/create.rb +1 -1
  309. data/app/workflows/spree/data_requests/fulfill.rb +2 -2
  310. data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
  311. data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
  312. data/app/workflows/spree/email_templates/publish.rb +70 -0
  313. data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
  314. data/app/workflows/spree/email_templates/revert.rb +29 -0
  315. data/app/workflows/spree/email_templates/save_draft.rb +85 -0
  316. data/app/workflows/spree/exchanges/approve.rb +5 -22
  317. data/app/workflows/spree/exchanges/cancel.rb +5 -21
  318. data/app/workflows/spree/exchanges/create.rb +6 -0
  319. data/app/workflows/spree/exchanges/fulfill.rb +75 -51
  320. data/app/workflows/spree/exchanges/receive.rb +6 -65
  321. data/app/workflows/spree/fulfillments/cancel.rb +1 -1
  322. data/app/workflows/spree/fulfillments/create.rb +51 -47
  323. data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
  324. data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
  325. data/app/workflows/spree/fulfillments/replacements.rb +59 -0
  326. data/app/workflows/spree/gift_cards/apply.rb +2 -2
  327. data/app/workflows/spree/orders/add_item.rb +5 -1
  328. data/app/workflows/spree/orders/cancel.rb +3 -3
  329. data/app/workflows/spree/orders/complete.rb +16 -8
  330. data/app/workflows/spree/payments/process.rb +2 -2
  331. data/app/workflows/spree/post_sale/approval.rb +35 -0
  332. data/app/workflows/spree/post_sale/cancellation.rb +44 -0
  333. data/app/workflows/spree/post_sale/receipt.rb +92 -0
  334. data/app/workflows/spree/products/nested_attributes.rb +1 -1
  335. data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
  336. data/app/workflows/spree/purchase_orders/close.rb +3 -31
  337. data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
  338. data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
  339. data/app/workflows/spree/purchase_orders/receive.rb +1 -1
  340. data/app/workflows/spree/purchase_orders/update.rb +5 -34
  341. data/app/workflows/spree/receivables/closing_short.rb +46 -0
  342. data/app/workflows/spree/receivables/draft_editing.rb +48 -0
  343. data/app/workflows/spree/refunds/create.rb +5 -2
  344. data/app/workflows/spree/refunds/order_payments.rb +14 -2
  345. data/app/workflows/spree/refunds/tax_credit.rb +67 -0
  346. data/app/workflows/spree/returns/approve.rb +5 -22
  347. data/app/workflows/spree/returns/cancel.rb +5 -22
  348. data/app/workflows/spree/returns/create.rb +8 -0
  349. data/app/workflows/spree/returns/receive.rb +5 -76
  350. data/app/workflows/spree/returns/refund.rb +31 -8
  351. data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
  352. data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
  353. data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
  354. data/app/workflows/spree/shipping_labels/record.rb +5 -5
  355. data/app/workflows/spree/shipping_labels/refund.rb +2 -2
  356. data/app/workflows/spree/stock_receipts/recording.rb +4 -4
  357. data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
  358. data/app/workflows/spree/stock_transfers/close.rb +3 -30
  359. data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
  360. data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
  361. data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
  362. data/app/workflows/spree/stock_transfers/receive.rb +1 -1
  363. data/app/workflows/spree/stock_transfers/update.rb +5 -33
  364. data/config/i18n-tasks.yml +32 -18
  365. data/config/initializers/alba.rb +7 -0
  366. data/config/language_names.csv +264 -0
  367. data/config/locales/ar.yml +811 -0
  368. data/config/locales/be.yml +855 -0
  369. data/config/locales/bg.yml +723 -0
  370. data/config/locales/ca.yml +689 -0
  371. data/config/locales/cs.yml +855 -0
  372. data/config/locales/da.yml +771 -0
  373. data/config/locales/de-CH.yml +248 -0
  374. data/config/locales/de.yml +835 -0
  375. data/config/locales/el.yml +769 -0
  376. data/config/locales/en.yml +37 -503
  377. data/config/locales/es-CL.yml +301 -0
  378. data/config/locales/es-EC.yml +186 -0
  379. data/config/locales/es-MX.yml +334 -0
  380. data/config/locales/es.yml +831 -0
  381. data/config/locales/et.yml +644 -0
  382. data/config/locales/fa.yml +709 -0
  383. data/config/locales/fi.yml +771 -0
  384. data/config/locales/fr.yml +830 -0
  385. data/config/locales/hu.yml +751 -0
  386. data/config/locales/id.yml +756 -0
  387. data/config/locales/it.yml +833 -0
  388. data/config/locales/ja.yml +726 -0
  389. data/config/locales/km.yml +759 -0
  390. data/config/locales/ko.yml +575 -0
  391. data/config/locales/ku.yml +753 -0
  392. data/config/locales/lt.yml +821 -0
  393. data/config/locales/lv.yml +685 -0
  394. data/config/locales/nb.yml +824 -0
  395. data/config/locales/ne.yml +823 -0
  396. data/config/locales/nl.yml +826 -0
  397. data/config/locales/pl.yml +835 -0
  398. data/config/locales/pt-BR.yml +547 -0
  399. data/config/locales/pt.yml +636 -0
  400. data/config/locales/ro.yml +750 -0
  401. data/config/locales/ru.yml +834 -0
  402. data/config/locales/sk.yml +680 -0
  403. data/config/locales/sl-SI.yml +600 -0
  404. data/config/locales/sv.yml +827 -0
  405. data/config/locales/th.yml +745 -0
  406. data/config/locales/tr.yml +777 -0
  407. data/config/locales/uk.yml +836 -0
  408. data/config/locales/vi.yml +768 -0
  409. data/config/locales/zh-CN.yml +786 -0
  410. data/config/locales/zh-TW.yml +834 -0
  411. data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
  412. data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
  413. data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
  414. data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
  415. data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
  416. data/lib/generators/spree/dummy/templates/rails/test.rb +7 -0
  417. data/lib/spree/checkout/default_requirements.rb +37 -13
  418. data/lib/spree/core/configuration.rb +1 -1
  419. data/lib/spree/core/controller_helpers/store.rb +1 -1
  420. data/lib/spree/core/dependencies.rb +5 -4
  421. data/lib/spree/core/emails/escaped_output.rb +60 -0
  422. data/lib/spree/core/engine.rb +48 -167
  423. data/lib/spree/core/permissions/default_catalog.rb +5 -0
  424. data/lib/spree/core/preferences/json_conversion.rb +182 -0
  425. data/lib/spree/core/preferences/masking.rb +4 -1
  426. data/lib/spree/core/preferences/preferable.rb +137 -83
  427. data/lib/spree/core/preferences/preferable_class_methods.rb +81 -146
  428. data/lib/spree/core/previews/import_preview.rb +10 -0
  429. data/lib/spree/core/tax/provider_error.rb +37 -0
  430. data/lib/spree/core/version.rb +1 -1
  431. data/lib/spree/core.rb +85 -370
  432. data/lib/spree/emails/editable_templates.rb +82 -0
  433. data/lib/spree/events/catalog.rb +189 -0
  434. data/lib/spree/events.rb +21 -1
  435. data/lib/spree/hooks.rb +0 -17
  436. data/lib/spree/i18n.rb +32 -15
  437. data/lib/spree/reporting/adapters/live.rb +6 -6
  438. data/lib/spree/reporting/default_vocabulary.rb +22 -10
  439. data/lib/spree/reporting/hydration.rb +1 -1
  440. data/lib/spree/reporting/query.rb +8 -0
  441. data/lib/spree/reporting/schema.rb +10 -10
  442. data/lib/spree/testing_support/editable_email_templates.rb +61 -0
  443. data/lib/spree/testing_support/emails.rb +22 -0
  444. data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
  445. data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
  446. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  447. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  448. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  449. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  450. data/lib/spree/testing_support/i18n.rb +3 -94
  451. data/lib/spree/testing_support/lifecycle_events.rb +1 -1
  452. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  453. data/lib/spree/testing_support/preferences.rb +0 -5
  454. data/lib/spree/testing_support/store.rb +9 -1
  455. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +45 -0
  456. data/lib/tasks/categories_and_collections.rake +3 -3
  457. data/lib/tasks/core.rake +6 -4
  458. data/lib/tasks/media.rake +3 -3
  459. data/lib/tasks/package_types.rake +1 -1
  460. data/lib/tasks/preferences_json.rake +101 -0
  461. data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
  462. metadata +188 -44
  463. data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
  464. data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
  465. data/app/models/spree/base_analytics_event_handler.rb +0 -54
  466. data/app/models/spree/invitations/store.rb +0 -6
  467. data/app/models/spree/preference.rb +0 -14
  468. data/app/models/spree/promotion_handler/page.rb +0 -25
  469. data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
  470. data/app/models/spree/stock/differentiator.rb +0 -45
  471. data/app/presenters/spree/filters/options_presenter.rb +0 -47
  472. data/app/services/spree/carts/empty.rb +0 -42
  473. data/app/services/spree/country_to_timezone.rb +0 -273
  474. data/app/services/spree/payments/create.rb +0 -92
  475. data/app/validators/spree/url_validator.rb +0 -23
  476. data/app/views/active_storage/blobs/_blob.html.erb +0 -14
  477. data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
  478. data/app/views/spree/export_mailer/export_done.html.erb +0 -7
  479. data/app/views/spree/import_mailer/import_done.html.erb +0 -12
  480. data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
  481. data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
  482. data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
  483. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
  484. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
  485. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
  486. data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
  487. data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
  488. data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
  489. data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
  490. data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
  491. data/app/workflows/spree/returns/purchase_label.rb +0 -32
  492. data/lib/spree/analytics.rb +0 -11
  493. data/lib/spree/core/preferences/scoped_store.rb +0 -34
  494. data/lib/spree/core/preferences/store.rb +0 -105
  495. data/lib/spree/translation_migrations.rb +0 -52
@@ -0,0 +1,827 @@
1
+ ---
2
+ sv:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: får inte vara tomt
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Adress
11
+ address2: Adress (forts.)
12
+ city: Ort
13
+ company: företag
14
+ country: Land
15
+ label: Adressnamn
16
+ phone: Telefon
17
+ state: Län
18
+ spree/calculator/tiered_flat_rate:
19
+ preferred_base_amount: Basbelopp
20
+ preferred_tiers: Nivåer
21
+ spree/calculator/tiered_percent:
22
+ preferred_base_percent: Grund procent
23
+ preferred_tiers: Nivåer
24
+ spree/country:
25
+ iso: ISO
26
+ iso3: ISO3
27
+ iso_name: ISO-namn
28
+ name: Namn
29
+ numcode: ISO-kod
30
+ spree/credit_card:
31
+ cc_type: Typ
32
+ month: Månad
33
+ name: Namn
34
+ number: Nummer
35
+ verification_value: Verifikationvärde
36
+ year: År
37
+ spree/customer_group:
38
+ description: Beskrivning
39
+ name: Namn
40
+ spree/gift_card:
41
+ amount_used: Använt belopp
42
+ expires_at: Går ut
43
+ spree/import:
44
+ preferred_delimiter: Avgränsare
45
+ spree/import_mapping:
46
+ file_column: Filkolumn
47
+ schema_field: Schemafält
48
+ spree/import_row:
49
+ row_number: Nummer
50
+ spree/inventory_unit:
51
+ state: Status
52
+ spree/invitation:
53
+ inviter: Inbjudare
54
+ spree/line_item:
55
+ price: Pris
56
+ quantity: Antal
57
+ spree/option_type:
58
+ filterable: Filtrerbar
59
+ kind: Typ
60
+ name: Namn
61
+ spree/option_value:
62
+ color_code: Färgkod
63
+ image: Färgprovsbild
64
+ spree/order:
65
+ checkout_complete: Utcheckning genomförd
66
+ completed_at: Fullständig vid
67
+ considered_risky: Riskabel
68
+ coupon_code: Kupongkod
69
+ created_at: Orderdatum
70
+ email: Kundens e-post
71
+ internal_note: Intern anteckning
72
+ ip_address: IP adress
73
+ item_count: Artiklar
74
+ item_total: Totalt antal
75
+ number: Nummer
76
+ payment_state: Betalningsstatus
77
+ shipment_state: Leveransstatus
78
+ special_instructions: Särskilda instruktioner
79
+ state: Status
80
+ total: Totalt
81
+ spree/order/bill_address:
82
+ address1: Faktureringsadress, gata
83
+ city: Faktureringsadress, ort
84
+ phone: Faktureringsadress, telefon
85
+ state: Faktureringsadress, län
86
+ spree/order/ship_address:
87
+ address1: Leveransadress, gata
88
+ city: Leveransadress, ort
89
+ phone: Leveransadress, telefon
90
+ state: Leveransadress, län
91
+ spree/payment:
92
+ amount: Belopp
93
+ number: Siffra
94
+ spree/payment_method:
95
+ name: Namn
96
+ spree/policy:
97
+ body: Innehåll
98
+ owner: Policy för
99
+ spree/price_list:
100
+ description: Beskrivning
101
+ ends_at: Slutar
102
+ match_policy: Matchningspolicy
103
+ name: Namn
104
+ priority: Prioritet
105
+ starts_at: Startar
106
+ status: Status
107
+ spree/price_rule:
108
+ priority: Prioritet
109
+ type: Typ
110
+ spree/product:
111
+ available_on: Tillgänglig fr.o.m.
112
+ cost_currency: Kostnadsvaluta
113
+ cost_price: Kostnadspris
114
+ description: Beskrivning
115
+ discontinue_on: Avbryt På
116
+ less_than: "<"
117
+ make_active_at: Aktivera vid
118
+ master_price: Grundpris
119
+ more_than: Mer än
120
+ name: Namn
121
+ on_hand: På lager
122
+ tax_category: Momsgrupp
123
+ spree/promotion:
124
+ advertise: Annonsera
125
+ code: Rabattkod
126
+ description: Beskrivning
127
+ event_name: Aktivitet
128
+ expires_at: Löper ut
129
+ generate_code: Skapa kupongkod
130
+ name: Namn
131
+ path: Sökväg
132
+ promotion_category: Kampanjkategori
133
+ starts_at: Startar
134
+ usage_limit: Utnyttjargräns
135
+ spree/promotion_category:
136
+ code: Kod
137
+ name: Namn
138
+ spree/property:
139
+ name: Namn
140
+ presentation: Visa som
141
+ spree/role:
142
+ name: Namn
143
+ spree/shipment:
144
+ number: Siffra
145
+ spree/state:
146
+ abbr: Förkortning
147
+ name: Namn
148
+ spree/store:
149
+ address: Adress
150
+ contact_phone: Kontakttelefon
151
+ mail_from_address: Mejl från adress
152
+ meta_description: Ingress
153
+ meta_keywords: Referensord
154
+ name: Webbsidans namn
155
+ preferred_digital_asset_authorized_clicks: Gräns för nedladdningsklick
156
+ preferred_digital_asset_authorized_days: Gräns för nedladdningsdagar
157
+ preferred_limit_digital_download_count: Begränsa antal nedladdningar av digitala länkar
158
+ preferred_limit_digital_download_days: Begränsa antal dagar för nedladdning av digitala länkar
159
+ seo_robots: SEO-robotar
160
+ seo_title: Rubrik
161
+ storefront_custom_code_body_end: Anpassad kod före avslutande body-tagg
162
+ storefront_custom_code_body_start: Anpassad kod efter öppnande body-tagg
163
+ storefront_custom_code_head: Anpassad kod i sidans head
164
+ url: Webbsidans URL
165
+ spree/store_credit:
166
+ amount_used: Mängd som används
167
+ spree/tax_category:
168
+ description: Beskrivning
169
+ name: Namn
170
+ spree/tax_rate:
171
+ amount: Sats
172
+ included_in_price: Ingår i priset
173
+ show_rate_in_label: Visa momssats i etikett
174
+ spree/taxon:
175
+ name: Namn
176
+ permalink: Permalink
177
+ position: Position
178
+ sort_order: Sorteringsordning
179
+ spree/taxonomy:
180
+ name: Namn
181
+ spree/user:
182
+ avatar: Profilbild
183
+ email: E-post
184
+ password: Lösenord
185
+ password_confirmation: Bekräftelse lösenord
186
+ spree/variant:
187
+ cost_currency: Kostnadsvaluta
188
+ cost_price: Kostnadspris
189
+ depth: Djup
190
+ height: Höjd
191
+ price: Pris
192
+ sku: SKU
193
+ weight: Vikt
194
+ width: Bredd
195
+ spree/zone:
196
+ description: Beskrivning
197
+ name: Namn
198
+ user:
199
+ current_sign_in: Nuvarande inloggning
200
+ last_sign_in: Senaste inloggning
201
+ sign_in_count: Antal inloggningar
202
+ errors:
203
+ messages:
204
+ blank: får inte vara tomt
205
+ models:
206
+ spree/allowed_origin:
207
+ attributes:
208
+ origin:
209
+ must_be_origin_only: måste vara ett ursprung (schema och värd) utan sökväg, fråga eller fragment
210
+ spree/classification:
211
+ attributes:
212
+ taxon_id:
213
+ already_linked: är redan länkad till denna produkt
214
+ spree/credit_card:
215
+ attributes:
216
+ base:
217
+ card_expired: Kortet har löpt ut
218
+ expiry_invalid: Kortets utgångsdatum är ogiltig
219
+ spree/gift_card:
220
+ attributes:
221
+ base:
222
+ cannot_destroy_used_gift_card: Kan inte ta bort ett använt presentkort
223
+ spree/import:
224
+ attributes:
225
+ attachment:
226
+ content_type: har en otillåten innehållstyp
227
+ type:
228
+ inclusion: ingår inte i listan över tillåtna typer
229
+ spree/line_item:
230
+ attributes:
231
+ currency:
232
+ must_match_order_currency: Måste matcha orderns valuta
233
+ spree/market:
234
+ attributes:
235
+ base:
236
+ cannot_destroy_default_market: Det går inte att ta bort standardmarknaden.
237
+ cannot_destroy_last_market: Det går inte att ta bort den enda marknaden.
238
+ spree/market_country:
239
+ attributes:
240
+ country:
241
+ already_in_market: är redan tilldelat en annan marknad i denna butik
242
+ not_in_shipping_zone: omfattas inte av någon fraktzon. Ställ in en fraktzon först.
243
+ spree/payment:
244
+ attributes:
245
+ amount:
246
+ greater_than_max_amount: är större än det tillåtna maxbeloppet på %{max_amount}
247
+ spree/price_list:
248
+ attributes:
249
+ ends_at:
250
+ must_be_after_starts_at: måste vara efter startdatum
251
+ spree/product:
252
+ attributes:
253
+ base:
254
+ cannot_destroy_if_attached_to_line_items: Det går inte att ta bort produkter när de är kopplade till rader.
255
+ discontinue_on:
256
+ invalid_date_range: Måste vara senare än tillgängligt datum
257
+ spree/product_publication:
258
+ attributes:
259
+ unpublished_at:
260
+ must_be_after_published_at: måste vara efter publiceringsdatum
261
+ spree/promotion:
262
+ attributes:
263
+ expires_at:
264
+ invalid_date_range: Måste vara senare än startdatumet
265
+ spree/refund:
266
+ attributes:
267
+ amount:
268
+ greater_than_allowed: är större än tillåten mängd.
269
+ spree/store:
270
+ attributes:
271
+ base:
272
+ cannot_destroy_only_store: Det går inte att ta bort den enda butiken.
273
+ spree/store_credit:
274
+ attributes:
275
+ amount_authorized:
276
+ exceeds_total_credits: Överstiger totala poäng.
277
+ amount_used:
278
+ cannot_be_greater_than_amount: Får inte vara större än beloppet.
279
+ greater_than_zero_restrict_delete: Är större än noll. Det går inte att ta bort butikskredit.
280
+ spree/user:
281
+ attributes:
282
+ bill_address_id:
283
+ belongs_to_other_user: tillhör en annan användare
284
+ deprecated_in_completed_order: föråldrad i slutförd order
285
+ ship_address_id:
286
+ belongs_to_other_user: tillhör en annan användare
287
+ deprecated_in_completed_order: föråldrad i slutförd order
288
+ spree/variant:
289
+ attributes:
290
+ base:
291
+ cannot_destroy_if_attached_to_line_items: Det går inte att ta bort varianter när de är kopplade till rader.
292
+ spree/webhook_endpoint:
293
+ attributes:
294
+ url:
295
+ internal_address_not_allowed: får inte peka på en intern eller privat nätverksadress
296
+ models:
297
+ spree/address:
298
+ one: Adress
299
+ other: Adresser
300
+ spree/classification:
301
+ one: Klassificering
302
+ other: Klassificeringar
303
+ spree/country:
304
+ one: Land
305
+ other: Länder
306
+ spree/credit_card:
307
+ one: Kreditkort
308
+ other: Kreditkort
309
+ spree/customer_group:
310
+ one: Kundgrupp
311
+ other: Kundgrupper
312
+ spree/customer_group_user:
313
+ one: Kundgruppsanvändare
314
+ other: Kundgruppsanvändare
315
+ spree/export:
316
+ one: Export
317
+ other: Exporter
318
+ spree/integration:
319
+ one: Integration
320
+ other: Integrationer
321
+ spree/inventory_unit:
322
+ one: Inventarie-enhet
323
+ other: Inventarie-enheter
324
+ spree/line_item:
325
+ one: Radartikel
326
+ other: Radartiklar
327
+ spree/option_type:
328
+ one: Tillvalstyp
329
+ other: Tillvalstyper
330
+ spree/option_value:
331
+ one: Tillvalsvärde
332
+ other: Tillvalsvärden
333
+ spree/order:
334
+ one: Order
335
+ other: Ordrar
336
+ spree/payment:
337
+ one: Betalning
338
+ other: Betalningar
339
+ spree/payment_method:
340
+ one: Betalningsmetod
341
+ other: Betalningsmetoder
342
+ spree/price:
343
+ one: Pris
344
+ other: Priser
345
+ spree/price_list:
346
+ one: Prislista
347
+ other: Prislistor
348
+ spree/price_rule:
349
+ one: Prisregel
350
+ other: Prisregler
351
+ spree/product:
352
+ one: Produkt
353
+ other: Produkter
354
+ spree/promotion:
355
+ one: Kampanj
356
+ other: Kampanjer
357
+ spree/promotion_category:
358
+ one: Kampanjkategori
359
+ other: Kampanjkategorier
360
+ spree/property:
361
+ one: Egenskap
362
+ other: Egenskaper
363
+ spree/refund_reason:
364
+ one: Återbetalningsorsak
365
+ other: Återbetalningsorsaker
366
+ spree/role:
367
+ few: Roller
368
+ one: Roll
369
+ other: Roller
370
+ spree/shipment:
371
+ one: Leverans
372
+ other: Leveranser
373
+ spree/shipping_method:
374
+ one: Leveransmetod
375
+ other: Leveransmetoder
376
+ spree/state:
377
+ one: Län
378
+ other: Län
379
+ spree/stock_location:
380
+ one: Lagerplats
381
+ other: Lagerplatser
382
+ spree/stock_movement:
383
+ one: Lagerrörelse
384
+ other: Lagerrörelser
385
+ spree/stock_transfer:
386
+ one: Lageröverföring
387
+ other: Lageröverföringar
388
+ spree/store:
389
+ one: Butik
390
+ other: Butiker
391
+ spree/store_credit:
392
+ one: Butikskredit
393
+ other: Lagra poäng
394
+ spree/tax_category:
395
+ one: Momsgrupp
396
+ other: Momsgrupper
397
+ spree/tax_rate:
398
+ one: Momsats
399
+ other: Momsatser
400
+ spree/taxon:
401
+ one: Klass
402
+ other: Klasser
403
+ spree/taxonomy:
404
+ one: Klassifisering
405
+ other: Klassifiseringar
406
+ spree/user:
407
+ one: Användare
408
+ other: Användare
409
+ spree/variant:
410
+ one: Variant
411
+ other: Varianter
412
+ spree/zone:
413
+ one: Zone
414
+ other: Zoner
415
+ errors:
416
+ messages:
417
+ already_confirmed: var redan bekräftad
418
+ not_found: hittas inte
419
+ not_locked: var inte låst
420
+ not_saved:
421
+ one: '1 fel hindrade detta %{resource} från att sparas:'
422
+ other: "%{count} fel hindrade detta %{resource} från att sparas:"
423
+ number:
424
+ percentage:
425
+ format:
426
+ precision: 1
427
+ spree:
428
+ accept: Accept
429
+ accepted: Godkänd
430
+ accepts_email_marketing: Accepterar e-postmarknadsföring
431
+ account: Konto
432
+ active: Aktiv
433
+ address: adress
434
+ address1: Adress
435
+ address2: Adress (forts.)
436
+ adjustment: Justering
437
+ adjustment_labels:
438
+ tax_rates:
439
+ excluding_tax: "%{name}%{amount}"
440
+ including_tax: "%{name}%{amount} (ingår i priset)"
441
+ adjustments_deleted: Justeringar borttagna
442
+ admin_user_mailer:
443
+ password_reset_email:
444
+ action: Återställ lösenord
445
+ expiry_notice: Den här länken för återställning av lösenord upphör snart att gälla. Om du inte begärde detta behöver du inte göra något.
446
+ greeting: Hej %{name},
447
+ ignore_notice: Om du inte begärde en återställning av lösenordet kan du ignorera det här e-postmeddelandet. Ditt lösenord ändras inte.
448
+ instructions: Vi har tagit emot en begäran om att återställa lösenordet för ditt %{store_name}-administratörskonto. Klicka på knappen nedan för att välja ett nytt lösenord.
449
+ subject: Instruktioner för återställning av lösenord
450
+ all: Alla
451
+ amount: Belopp
452
+ api_key_no_current_key: Ingen API-nyckel autentiserade denna begäran
453
+ api_key_scopes_immutable: kan inte ändras efter att nyckeln har skapats; skapa en ny nyckel med de behörigheter du behöver och återkalla denna
454
+ approver: Attestant
455
+ authorized: Medgivna
456
+ availability: Tillgänglighet
457
+ backorderable: Möjligt att restnotera
458
+ bill_address: Faktureringsadress
459
+ billing_address: Faktureringsadress
460
+ calculator: Kalkylator
461
+ canceled: Avbrutna
462
+ canceler: Avbeställare
463
+ cannot_be_destroyed: Ordern kan inte tas bort.
464
+ capture: Fullgör betalning
465
+ cart: Varukorg
466
+ cart_already_updated: Varukorgen har redan uppdaterats.
467
+ cart_line_item:
468
+ delivery_unavailable: "%{li_name} kan inte levereras till den valda adressen"
469
+ discontinued: "%{li_name} togs bort eftersom den har utgått"
470
+ out_of_stock: "%{li_name} togs bort eftersom den var slutsåld"
471
+ categories: Kategorier
472
+ category: Kategori
473
+ channel: Kanal
474
+ channels: Försäljningskanaler
475
+ checkout: Kassa
476
+ checkout_requirements:
477
+ email_required: E-postadress krävs
478
+ line_items_required: Lägg till minst en artikel i din varukorg
479
+ payment_required: Lägg till en betalningsmetod
480
+ ship_address_required: Leveransadress krävs
481
+ city: Ort
482
+ color_code: Färgkod
483
+ company: Företag
484
+ compare_at_amount: Jämförelsebelopp
485
+ compare_at_price: Jämför till pris
486
+ complete: komplett
487
+ confirm: Bekräfta
488
+ cost_price: Kostnadspris
489
+ count_on_hand: Tillgängligt
490
+ country: Land
491
+ coupon_code: Värdekupongskod
492
+ coupon_code_already_applied: Kupongkoden har redan använts på denna order
493
+ coupon_code_applied: Kupongkoden registrerades på din order.
494
+ coupon_code_better_exists: Den föregående kupongkoden ger dig en bättre affär
495
+ coupon_code_expired: Kupongkoden har upphört att gälla
496
+ coupon_code_max_usage: Kupongkodens brukbarhet överskriden
497
+ coupon_code_not_eligible: Denna kupongkod är inte giltig för denna order
498
+ coupon_code_not_found: Kupongkoden du angav finns ej. Försök på nytt
499
+ coupon_code_unknown_error: Denna kupongkod kunde inte tillämpas i varukorgen vid denna tidpunkt.
500
+ coupon_code_used: Rabattkoden du angav har redan använts. Försök igen.
501
+ created_at: Skapad
502
+ credit_card: Kreditkort
503
+ currency: Valuta
504
+ currency_not_supported_by_store: stöds inte av denna butik
505
+ customer: Kund
506
+ customers: Kunder
507
+ default: Förvald
508
+ default_stock_location_name: Butiksplats
509
+ default_wishlist_name: Önskelista
510
+ delivery: Leverera
511
+ depth: Djup
512
+ description: Beskrivning
513
+ destination: Destination
514
+ destroy: Förstöra
515
+ details: Detaljer
516
+ digital:
517
+ digital_delivery: Digital leverans
518
+ digital_assets: Digitala tillgångar
519
+ discontinued: Avbruten
520
+ discontinued_variants_present: Vissa rader i den här beställningen har produkter som inte längre är tillgängliga.
521
+ display_delivery_range: Leverans inom %{delivery_range} arbetsdagar
522
+ draft: Utkast
523
+ eligibility_errors:
524
+ messages:
525
+ has_excluded_product: Din varukorg innehåller en produkt som förhindrar detta kupongkod från att tillämpas.
526
+ item_total_less_than: Denna kupongkod kan inte tillämpas på ordrar med färre än %{amount}.
527
+ item_total_less_than_or_equal: Denna kupongkod kan inte tillämpas på ordrar med färre än eller lika med %{amount}.
528
+ item_total_more_than: Denna kupongkod kan inte tillämpas på ordrar högre än %{amount}.
529
+ item_total_more_than_or_equal: Denna kupongkod kan inte tillämpas på ordrar högre eller lika med %{amount}.
530
+ limit_once_per_user: Denna kupongkod kan bara användas en gång per användare.
531
+ missing_product: Denna kupongkod kan inte tillämpas eftersom du inte har alla nödvändiga produkter i din varukorg.
532
+ missing_taxon: Du måste lägga till en produkt från alla nödvändiga klass innan du använder denna kupongkod.
533
+ no_applicable_products: Du måste lägga till en gällande produkt innan tillämpa denna kupongkod.
534
+ no_matching_channel: Den här rabattkoden är inte giltig för den här försäljningskanalen.
535
+ no_matching_market: Den här rabattkoden är inte giltig på din marknad.
536
+ no_matching_taxons: Du måste lägga till en produkt från en gällande klass innan du applicerar denna kupongkod.
537
+ no_user_or_email_specified: Du måste logga in eller lämna din e-post innan tillämpa denna kupongkod.
538
+ no_user_specified: Du måste logga in innan du applicerar denna kupongkod.
539
+ not_first_order: Denna kupongkod kan endast tillämpas på din första order.
540
+ wrong_country: Denna rabattkod är inte giltig i ditt land
541
+ email: Epost
542
+ error: fel
543
+ error_user_destroy_with_orders: Användare som är associerade med beställningar kan inte förstöras
544
+ error_user_does_not_have_any_store_credits: Användaren har inga tillgängliga butikskrediter
545
+ errors:
546
+ messages:
547
+ cannot_delete_default_channel: Standardkanalen kan inte tas bort. Gör en annan kanal till standard först.
548
+ channel_store_mismatch: måste tillhöra samma butik
549
+ invalid_order_routing_rule: är inte en registrerad orderdirigeringsregel
550
+ invalid_order_routing_strategy: är inte en registrerad orderdirigeringsstrategi
551
+ store_association_can_not_be_changed: Butikskopplingen kan inte ändras
552
+ store_is_already_set: Butiken är redan inställd
553
+ expired: Utgången
554
+ export_mailer:
555
+ export_done:
556
+ message: Bra jobbat, din export är klar! Använd länken nedan för att ladda ner den.
557
+ subject: Din export %{export_number} har bearbetats!
558
+ greeting: Hej %{user_name},
559
+ field: Fält
560
+ first_name: Förnamn
561
+ flat_percent: Fast procentsats
562
+ flat_rate_per_order: Fast pris (per order)
563
+ flexible_rate: Flexibelt sats
564
+ free: Gratis
565
+ gateway: Gateway
566
+ gateway_error: Gateway-fel
567
+ gift_card: Presentkort
568
+ gift_card_already_redeemed: Presentkortet har redan lösts in.
569
+ gift_card_applied: Presentkortet har lagts till på din order!
570
+ gift_card_customer_not_logged_in: Presentkort kan inte användas som gästanvändare.
571
+ gift_card_expired: Presentkortet har gått ut.
572
+ gift_card_mismatched_currency: Presentkortet kan inte användas med den aktuella valutan.
573
+ gift_card_mismatched_customer: Detta presentkort är kopplat till en annan användare.
574
+ gift_card_not_found: Presentkortet hittades inte.
575
+ gift_card_removed: Presentkortet har tagits bort från din order
576
+ gift_card_using_store_credit_error: Du kan inte använda presentkortet efter att du har använt butikskrediten.
577
+ height: Höjd
578
+ i18n:
579
+ this_file_language: Svenska (SE)
580
+ idempotency_key_reused: Denna Idempotency-Key har redan använts med andra begäranparametrar.
581
+ image: Bild
582
+ import: Importera
583
+ in_stock: På lager
584
+ inactive: Inaktiv
585
+ incomplete: Ofullständig
586
+ insufficient_stock_lines_present: Vissa poster i denna order har otillräcklig mängd.
587
+ internal_note: Intern anteckning
588
+ inventory: Inventarie
589
+ invitation_mailer:
590
+ greeting: Hej %{user_name},
591
+ invitation_accepted:
592
+ body: "%{invitee_name} har accepterat din inbjudan att gå med i %{resource_name}"
593
+ subject: "%{invitee_name} har accepterat din inbjudan att gå med i %{resource_name}"
594
+ invitation_email:
595
+ body: "%{inviter_name} har bjudit in dig att gå med i %{resource_name}"
596
+ link_description: 'För att acceptera denna inbjudan, klicka på länken nedan:'
597
+ subject: Inbjudan att gå med i %{resource_name}
598
+ iso: ISO Alpha-2
599
+ item: Artikel
600
+ items_cannot_be_shipped: Vi kan inte skicka till den angivna adressen. Var vänlig välj en annan adress.
601
+ key: Nyckel
602
+ kind: Typ
603
+ label: Etikett
604
+ last_name: Efternamn
605
+ line_item: Orderrad
606
+ line_items: Orderrader
607
+ link: Länk
608
+ locale: Språk
609
+ locale_not_supported_by_store: stöds inte av denna butik
610
+ manual: Manuell
611
+ market: Marknad
612
+ me_no_current_user: Ingen administratör autentiserade denna begäran
613
+ media: Media
614
+ meta_description: Metabeskrivning
615
+ meta_keywords: Metanyckelord
616
+ meta_title: Rubrik
617
+ metadata: Metadata
618
+ min_quantity: Minantal
619
+ month: Månad
620
+ name: Namn
621
+ new_variant: Ny variant
622
+ no_cc_type: Ej tillämpligt
623
+ no_payment_found: Ingen betalning hittades
624
+ none: Ingen
625
+ number: Nummer
626
+ on_hand: Tillgängligt
627
+ only_active_products_can_be_added_to_cart: Produkter som är utkast eller arkiverade kan inte läggas i varukorgen, markera produkten som aktiv först.
628
+ open: Öppen
629
+ option_name: Alternativnamn
630
+ option_type: Tillvalstyp
631
+ option_value: Tillvalsvärde
632
+ options: Tillval
633
+ or: eller
634
+ order: Order
635
+ order_canceled: Ordern annullerad
636
+ order_routing:
637
+ strategies:
638
+ legacy: Äldre
639
+ rules: Regler (ordnade)
640
+ order_summary: Ordersammanfattning
641
+ orders: Ordrar
642
+ out_of_stock: Ej i lager
643
+ password: Lösenord
644
+ path: Sökväg
645
+ payment: Betalning
646
+ payment_method: Betalningsmetod
647
+ payment_method_not_supported: Den betalningsmetoden stöds inte. Vänligen välj en annan.
648
+ payment_methods: Betalningsmetoder
649
+ payment_processing_failed: Betalningen kunde inte behandlas, var god kolla att uppgifterna som du skrev in är korrekta
650
+ payment_source: Betalningskälla
651
+ pending: Avvaktande
652
+ percent: Procent
653
+ percent_per_item: Procent per artikel
654
+ phone: Telefon
655
+ price: Pris
656
+ price_range: Prisintervall
657
+ price_rules:
658
+ channel_rule:
659
+ description: Tillämpa prissättning baserat på försäljningskanalen
660
+ customer_group_rule:
661
+ description: Tillämpa prissättning på specifika kundgrupper
662
+ price_sack: Prisgräns
663
+ prices: Priser
664
+ privacy_policy: Integritetspolicy
665
+ processing: Bearbetar
666
+ product: Produkt
667
+ product_translations: Produktöversättningar
668
+ products: Produkter
669
+ products_cannot_be_shipped: Vi kan inte skicka %{product_names} till din nuvarande plats just nu. Ändra din leveransadress eller ta bort %{product_names} från din varukorg.
670
+ promotion: Kampanj
671
+ promotion_action_types:
672
+ create_adjustment:
673
+ description: Skapa en justerad kampanjkredit på ordern
674
+ name: Skapa ändring
675
+ create_line_items:
676
+ description: Fyll varukorgen med det angivna antalet av variant
677
+ name: Skapa radartiklar
678
+ free_shipping:
679
+ description: Gör alla leveranser kostnadsfria
680
+ name: Fri leverans
681
+ promotion_actions: Åtgärd
682
+ promotion_already_used: Du kan inte ta bort en kampanj som redan har tillämpats
683
+ promotion_rule_types:
684
+ category:
685
+ description: Ordern innehåller produkter i angivna kategorier
686
+ name: Kategorier
687
+ channel:
688
+ description: Begränsa till beställningar som görs via angivna kanal(er)
689
+ name: Kanal(er)
690
+ country:
691
+ description: Order skickas till rätt (eller standard) land
692
+ name: land
693
+ currency:
694
+ description: Begränsa till order i en specifik valuta
695
+ name: Valuta
696
+ customer:
697
+ description: Endast tillgänglig för angivna kunder
698
+ name: Kunder
699
+ customer_group:
700
+ description: Endast tillgänglig för kunder i angiven kundgrupp(er)
701
+ name: Kundgrupp(er)
702
+ customer_logged_in:
703
+ description: Endast tillgänglig för inloggade kunder
704
+ name: Endast inloggade kunder
705
+ first_order:
706
+ description: Måste vara kundens första order
707
+ name: Första order
708
+ item_total:
709
+ description: Totalpriset möter dessa kriterier
710
+ name: Artiklar totalt
711
+ market:
712
+ description: Begränsa till beställningar som görs på angivna marknad(er)
713
+ name: Marknad(er)
714
+ one_use_per_user:
715
+ description: Endast ett bruk per användare
716
+ name: Endast ett bruk per användare
717
+ option_value:
718
+ description: Ordern innehåller angivna produkt(er) med matchande alternativvärde(n)
719
+ name: Tillvalsvärde(n)
720
+ product:
721
+ description: Order inkluderar angivna produkt(er)
722
+ name: Produkt(er)
723
+ promotions: Kampanjer
724
+ quantity: Antal
725
+ query: Fråga
726
+ reason: Orsak
727
+ received: Mottaget
728
+ reference: Referens
729
+ refund: Återbetala
730
+ refund_amount: Återbetalningsbelopp
731
+ refunds: Återbetalning
732
+ registration: Registrering
733
+ rejected: Avvisad
734
+ remove: Ta bort
735
+ remove_gift_card_on_completed_order_error: Du kan inte ta bort presentkortet efter att ordern har lagts
736
+ resellable: Kan säljas igen
737
+ resend: Skicka igen
738
+ response_code: Svarskod
739
+ return: returera
740
+ returned: Returnerad
741
+ returns_policy: Returpolicy
742
+ row: Rad
743
+ rules: Regler
744
+ say_no: Nej
745
+ say_yes: Ja
746
+ scope: Omfång
747
+ ship: leverera
748
+ ship_address: Leveransadress
749
+ shipment: Leverans
750
+ shipped: Levererad
751
+ shipping: Leverans
752
+ shipping_address: Leveransadress
753
+ shipping_flat_rate_per_item: Fast pris per paket
754
+ shipping_flat_rate_per_order: Fast pris
755
+ shipping_flexible_rate: Flexibelt pris per paket
756
+ shipping_policy: Fraktpolicy
757
+ shipping_price_sack: Prisgräns
758
+ shipping_rates:
759
+ display_price:
760
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
761
+ including_tax: "%{price} (inkl. %{tax_amount} %{tax_rate_name})"
762
+ sku: SKU
763
+ slug: Permalänk
764
+ source: Källa
765
+ status: Status
766
+ stock_location: Lagerplats
767
+ stock_locations: Lagerplatser
768
+ stock_transfer:
769
+ errors:
770
+ must_have_variant: Du måste lägga till minst en variant.
771
+ same_location: kan inte vara samma som destinationsplatsen
772
+ variants_unavailable: Vissa varianter är inte tillgängliga på %{stock}
773
+ store: Butik
774
+ store_credit:
775
+ allocated: ökad
776
+ authorized: befogad
777
+ captured: begagnad
778
+ credit: kreditera
779
+ eligible: Berättigad
780
+ store_credit_name: Tillgodohavande
781
+ store_credit_payment_method:
782
+ currency_mismatch: Butikskreditvalutan matchar inte ordervalutan
783
+ insufficient_authorized_amount: Det går inte att fånga mer än det godkända beloppet
784
+ insufficient_funds: Återstående kreditbelopp räcker inte
785
+ successful_action: Framgångsrik butikskredit %{action}
786
+ unable_to_credit: 'Det går inte att kreditera kod: %{auth_code}'
787
+ unable_to_find: Det gick inte att hitta butikskredit
788
+ unable_to_find_for_action: 'Det gick inte att hitta butikskredit för auth-kod: %{auth_code} för åtgärd: %{action}'
789
+ unable_to_void: 'Det går inte att ogiltigförklara koden: %{auth_code}'
790
+ success: Succé
791
+ tags: Taggar
792
+ tax: Moms
793
+ tax_category: Momsgrupp
794
+ terms_of_service: Användarvillkor
795
+ there_are_no_items_for_this_order: Det finns inga produkter för denna order. Lägg till en produkt för att fortsätta.
796
+ total: Totalt
797
+ track_inventory: Spåra inventering
798
+ tracking: Spårning
799
+ tracking_number: Spårnings-nummer
800
+ tracking_url: Spårnings URL
801
+ type: Typ
802
+ unable_to_connect_to_gateway: Kunde inte ansluta till betalningsleverantör.
803
+ updated_at: Uppdaterad
804
+ url: URL
805
+ user: Användare
806
+ validation:
807
+ must_be_int: måste vara ett heltal
808
+ value: Värde
809
+ variant: Variant
810
+ variants: Varianter
811
+ verified: Verifierad
812
+ void: Tom
813
+ webhook_mailer:
814
+ endpoint_disabled:
815
+ disabled_at_label: Inaktiverad
816
+ heading: Webhook-slutpunkt inaktiverad
817
+ instructions: Kontrollera slutpunktens URL och tjänst och aktivera den sedan igen under Inställningar → Utvecklare → Webhooks.
818
+ message: Webhook-slutpunkten "%{endpoint_name}" har automatiskt inaktiverats efter upprepade leveransfel.
819
+ name_label: Namn
820
+ reason_label: Orsak
821
+ subject: 'Webhook-slutpunkt inaktiverad: %{endpoint_name}'
822
+ url_label: URL
823
+ weight: Vikt
824
+ weight_unit: Viktenhet
825
+ width: Bredd
826
+ year: År
827
+ zip: Postnr.