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,771 @@
1
+ ---
2
+ da:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: må ikke være tom
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Adresse
11
+ address2: Ekstra Adresse
12
+ city: By
13
+ company: Firma
14
+ country: Land
15
+ label: Adressenavn
16
+ phone: Telefon
17
+ state: Område
18
+ spree/country:
19
+ iso: ISO
20
+ iso3: ISO3
21
+ iso_name: ISO-navn
22
+ name: Navn
23
+ numcode: ISO-kode
24
+ spree/credit_card:
25
+ cc_type: Type
26
+ month: Måned
27
+ number: Nummer
28
+ verification_value: CVV-kode
29
+ year: År
30
+ spree/customer_group:
31
+ description: Beskrivelse
32
+ name: Navn
33
+ spree/gift_card:
34
+ amount_used: Anvendt beløb
35
+ expires_at: Udløber
36
+ spree/import:
37
+ preferred_delimiter: Skilletegn
38
+ spree/import_mapping:
39
+ file_column: Filkolonne
40
+ schema_field: Skemafelt
41
+ spree/import_row:
42
+ row_number: Nummer
43
+ spree/inventory_unit:
44
+ state: Delstat
45
+ spree/invitation:
46
+ inviter: Inviterende
47
+ spree/line_item:
48
+ price: Pris
49
+ quantity: Antal
50
+ spree/option_type:
51
+ filterable: Filtrerbar
52
+ kind: Type
53
+ name: Navn
54
+ spree/option_value:
55
+ color_code: Farvekode
56
+ image: Prøvebillede
57
+ spree/order:
58
+ checkout_complete: Købet er gennemført
59
+ completed_at: Gennemført
60
+ considered_risky: Anses risikabel
61
+ coupon_code: Rabatkode
62
+ created_at: Oprettet
63
+ email: E-mail-adresse
64
+ internal_note: Intern note
65
+ ip_address: IP-adresse
66
+ item_count: Varer
67
+ item_total: Total
68
+ number: Ordrenummer
69
+ payment_state: Betalingsstatus
70
+ shipment_state: Leveringsstatus
71
+ special_instructions: Særlige forhold
72
+ state: Område
73
+ total: Total
74
+ spree/order/bill_address:
75
+ address1: Adresse
76
+ city: By
77
+ phone: Telefon
78
+ state: Område
79
+ spree/order/ship_address:
80
+ address1: Adresse
81
+ city: By
82
+ phone: Telefon
83
+ state: Område
84
+ spree/payment:
85
+ amount: Beløb
86
+ number: Nummer
87
+ spree/payment_method:
88
+ name: Navn
89
+ spree/policy:
90
+ body: Indhold
91
+ owner: Politik for
92
+ spree/price_list:
93
+ description: Beskrivelse
94
+ ends_at: Slutter
95
+ match_policy: Matchpolitik
96
+ name: Navn
97
+ priority: Prioritet
98
+ starts_at: Starter
99
+ status: Status
100
+ spree/price_rule:
101
+ priority: Prioritet
102
+ type: Type
103
+ spree/product:
104
+ available_on: Kan købes fra
105
+ cost_currency: Kostvaluta
106
+ cost_price: Kostpris
107
+ description: Beskrivelse
108
+ discontinue_on: Udgår den
109
+ less_than: Mindre end
110
+ make_active_at: Aktivér den
111
+ master_price: Hovedpris
112
+ more_than: Mere end
113
+ name: Navn
114
+ on_hand: På lager
115
+ tax_category: Momskategori
116
+ spree/promotion:
117
+ advertise: Reklamér
118
+ code: Kode
119
+ description: Beskrivelse
120
+ event_name: Eventnavn
121
+ expires_at: Udløber
122
+ generate_code: Generér rabatkode
123
+ name: Navn
124
+ path: Sti
125
+ promotion_category: Kampagnekategori
126
+ starts_at: Starter
127
+ usage_limit: Brugsbegrænsning
128
+ spree/promotion_category:
129
+ code: Kode
130
+ spree/property:
131
+ name: Navn
132
+ presentation: Præsentation
133
+ spree/role:
134
+ name: Navn
135
+ spree/shipment:
136
+ number: Nummer
137
+ spree/state:
138
+ abbr: Forkortelse
139
+ name: Navn
140
+ spree/store:
141
+ address: Adresse
142
+ contact_phone: Kontakttelefon
143
+ mail_from_address: Mail fra-adresse
144
+ meta_description: Meta beskrivelse
145
+ meta_keywords: Meta nøgleord
146
+ name: Navn
147
+ preferred_digital_asset_authorized_clicks: Grænse for downloadklik
148
+ preferred_digital_asset_authorized_days: Grænse for downloaddage
149
+ preferred_limit_digital_download_count: Begræns antal downloads af digitale links
150
+ preferred_limit_digital_download_days: Begræns dage for download af digitale links
151
+ seo_robots: SEO Robots
152
+ seo_title: SEO titel
153
+ storefront_custom_code_body_end: Brugerdefineret kode før afsluttende body-tag
154
+ storefront_custom_code_body_start: Brugerdefineret kode efter åbnende body-tag
155
+ storefront_custom_code_head: Brugerdefineret kode i sidens head
156
+ url: URL
157
+ spree/store_credit:
158
+ amount_used: Anvendt beløb
159
+ spree/tax_category:
160
+ description: Beskrivelse
161
+ name: Navn
162
+ spree/tax_rate:
163
+ amount: Antal
164
+ included_in_price: Inkluderet i prisen
165
+ show_rate_in_label: Vis i label
166
+ spree/taxon:
167
+ name: Navn
168
+ permalink: Permalink
169
+ position: Position
170
+ sort_order: Sorteringsrækkefølge
171
+ spree/taxonomy:
172
+ name: Navn
173
+ spree/user:
174
+ avatar: Avatar
175
+ email: E-mail-adresse
176
+ password: Adgangskode
177
+ password_confirmation: Bekræft adgangskode
178
+ spree/variant:
179
+ cost_currency: Kostvaluta
180
+ cost_price: Kostpris
181
+ depth: Dybte
182
+ height: Højde
183
+ price: Pris
184
+ sku: SKU
185
+ weight: Vægt
186
+ width: Bredde
187
+ spree/zone:
188
+ description: Beskrivelse
189
+ name: Navn
190
+ user:
191
+ current_sign_in: Nuværende login den
192
+ last_sign_in: Sidste login den
193
+ sign_in_count: Antal logins
194
+ errors:
195
+ messages:
196
+ blank: må ikke være tom
197
+ models:
198
+ spree/allowed_origin:
199
+ attributes:
200
+ origin:
201
+ must_be_origin_only: skal være en oprindelse (skema og vært) uden sti, forespørgsel eller fragment
202
+ spree/classification:
203
+ attributes:
204
+ taxon_id:
205
+ already_linked: Er allerede linket med et produkt.
206
+ spree/credit_card:
207
+ attributes:
208
+ base:
209
+ card_expired: Kortet er udløbet
210
+ expiry_invalid: Udløbsdatoen er ugyldig
211
+ spree/gift_card:
212
+ attributes:
213
+ base:
214
+ cannot_destroy_used_gift_card: Kan ikke slette et anvendt gavekort
215
+ spree/import:
216
+ attributes:
217
+ attachment:
218
+ content_type: har en indholdstype, der ikke er tilladt
219
+ type:
220
+ inclusion: er ikke med på listen over tilladte typer
221
+ spree/line_item:
222
+ attributes:
223
+ currency:
224
+ must_match_order_currency: Skal matche ordren's valuta
225
+ spree/market:
226
+ attributes:
227
+ base:
228
+ cannot_destroy_default_market: Standardmarkedet kan ikke slettes.
229
+ cannot_destroy_last_market: Det eneste marked kan ikke slettes.
230
+ spree/market_country:
231
+ attributes:
232
+ country:
233
+ already_in_market: er allerede tildelt et andet marked i denne butik
234
+ not_in_shipping_zone: er ikke dækket af nogen forsendelseszone. Opret venligst en forsendelseszone først.
235
+ spree/payment:
236
+ attributes:
237
+ amount:
238
+ greater_than_max_amount: er større end det tilladte maksimumbeløb på %{max_amount}
239
+ spree/price_list:
240
+ attributes:
241
+ ends_at:
242
+ must_be_after_starts_at: skal være efter starttidspunktet
243
+ spree/product:
244
+ attributes:
245
+ base:
246
+ cannot_destroy_if_attached_to_line_items: Produkter, der er tilføjet til afgivne ordrer, kan ikke slettes. Lad dem i stedet udgå.
247
+ discontinue_on:
248
+ invalid_date_range: skal være senere end tilgængelighedsdatoen
249
+ spree/product_publication:
250
+ attributes:
251
+ unpublished_at:
252
+ must_be_after_published_at: skal være efter udgivelsesdatoen
253
+ spree/promotion:
254
+ attributes:
255
+ expires_at:
256
+ invalid_date_range: skal være senere end startdatoen
257
+ spree/refund:
258
+ attributes:
259
+ amount:
260
+ greater_than_allowed: højere end tilladt
261
+ spree/store:
262
+ attributes:
263
+ base:
264
+ cannot_destroy_only_store: Den eneste butik kan ikke slettes.
265
+ spree/store_credit:
266
+ attributes:
267
+ amount_authorized:
268
+ exceeds_total_credits: Overstiger den samlede kredit.
269
+ amount_used:
270
+ cannot_be_greater_than_amount: Kan ikke være større end beløbet.
271
+ greater_than_zero_restrict_delete: er større end nul. Butikskredit kan ikke slettes.
272
+ spree/user:
273
+ attributes:
274
+ bill_address_id:
275
+ belongs_to_other_user: tilhører en anden bruger
276
+ deprecated_in_completed_order: forældet i en gennemført ordre
277
+ ship_address_id:
278
+ belongs_to_other_user: tilhører en anden bruger
279
+ deprecated_in_completed_order: forældet i en gennemført ordre
280
+ spree/variant:
281
+ attributes:
282
+ base:
283
+ cannot_destroy_if_attached_to_line_items: Varianter, der er tilføjet til afgivne ordrer, kan ikke slettes. Lad dem i stedet udgå.
284
+ spree/webhook_endpoint:
285
+ attributes:
286
+ url:
287
+ internal_address_not_allowed: må ikke pege på en intern eller privat netværksadresse
288
+ models:
289
+ spree/address:
290
+ one: Adresse
291
+ other: Adresser
292
+ spree/classification:
293
+ one: Klassifikation
294
+ other: Klassifikationer
295
+ spree/country:
296
+ one: Land
297
+ other: Lande
298
+ spree/credit_card:
299
+ one: Betalingskort
300
+ other: Betalingskort
301
+ spree/customer_group:
302
+ one: Kundegruppe
303
+ other: Kundegrupper
304
+ spree/customer_group_user:
305
+ one: Kundegruppebruger
306
+ other: Kundegruppebrugere
307
+ spree/export:
308
+ one: Eksport
309
+ other: Eksporter
310
+ spree/integration:
311
+ one: Integration
312
+ other: Integrationer
313
+ spree/inventory_unit:
314
+ one: Inventory Unit
315
+ other: Inventory Units
316
+ spree/line_item:
317
+ one: Ordrelinje
318
+ other: Ordrelinjer
319
+ spree/option_type:
320
+ one: Indstillingstype
321
+ other: Indstillingstyper
322
+ spree/option_value:
323
+ one: Indstillingsværdi
324
+ other: Indstillingsværdier
325
+ spree/order:
326
+ one: Ordre
327
+ other: Ordrer
328
+ spree/payment:
329
+ one: Betaling
330
+ other: Betalinger
331
+ spree/payment_method:
332
+ one: Betalingsmetode
333
+ other: Betalingsmetoder
334
+ spree/price:
335
+ one: Pris
336
+ other: Priser
337
+ spree/price_list:
338
+ one: Prisliste
339
+ other: Prislister
340
+ spree/price_rule:
341
+ one: Prisregel
342
+ other: Prisregler
343
+ spree/product:
344
+ one: Vare
345
+ other: Varer
346
+ spree/promotion:
347
+ one: Kampagne
348
+ other: Kampagner
349
+ spree/promotion_category:
350
+ one: Kampagnekategori
351
+ other: Kampagnekategorier
352
+ spree/property:
353
+ one: Egenskab
354
+ other: Egenskaber
355
+ spree/refund_reason:
356
+ one: Refunderingsårsag
357
+ other: Refunderingsårsager
358
+ spree/role:
359
+ one: Rolle
360
+ other: Roller
361
+ spree/shipment:
362
+ one: Levering
363
+ other: Leveringer
364
+ spree/shipping_method:
365
+ one: Forsendelsesmetode
366
+ other: Forsendelsesmetoder
367
+ spree/state:
368
+ one: Delstat
369
+ other: Delstater
370
+ spree/stock_location:
371
+ one: Lagerlokation
372
+ other: Lagerlokationer
373
+ spree/stock_movement:
374
+ one: Lagerbevægelse
375
+ other: Lagerbevægelser
376
+ spree/stock_transfer:
377
+ one: Lageroverførsel
378
+ other: Lageroverførsler
379
+ spree/store:
380
+ one: Butik
381
+ other: Butikker
382
+ spree/store_credit:
383
+ one: Butikskredit
384
+ other: Butikskreditter
385
+ spree/tax_category:
386
+ one: Momskategori
387
+ other: Momskategorier
388
+ spree/tax_rate:
389
+ one: Momssats
390
+ other: Momssatser
391
+ spree/taxon:
392
+ one: Takson
393
+ other: Taksoner
394
+ spree/taxonomy:
395
+ one: Taksonomi
396
+ other: Taksonomier
397
+ spree/user:
398
+ one: Bruger
399
+ other: Brugere
400
+ spree/variant:
401
+ one: Variant
402
+ other: Varianter
403
+ spree/zone:
404
+ one: Zone
405
+ other: Zoner
406
+ errors:
407
+ messages:
408
+ already_confirmed: er blevet bekræftet
409
+ not_found: ikke fundet
410
+ not_locked: var ikke låst
411
+ not_saved:
412
+ one: '1 fejl forhindrede %{resource} i at blive gemt:'
413
+ other: "%{count} fejl forhindrede %{resource} i at blive gemt:"
414
+ number:
415
+ percentage:
416
+ format:
417
+ precision: 1
418
+ spree:
419
+ accepts_email_marketing: Accepterer e-mailmarketing
420
+ account: Konto
421
+ active: Aktiv
422
+ address: Adresse
423
+ address1: Adresse
424
+ address2: Adresse (fortsat)
425
+ adjustment: Justering
426
+ adjustment_labels:
427
+ tax_rates:
428
+ excluding_tax: "%{name}%{amount}"
429
+ including_tax: "%{name}%{amount} (inkluderet i prisen)"
430
+ adjustments_deleted: Reguleringer slettet
431
+ all: Alle
432
+ amount: Beløb
433
+ api_key_no_current_key: Ingen API-nøgle godkendte denne anmodning
434
+ api_key_scopes_immutable: kan ikke ændres, efter at nøglen er oprettet; opret en ny nøgle med de scopes, du har brug for, og tilbagekald denne
435
+ approver: Godkendt af
436
+ availability: tilgængelighed
437
+ backorderable: Ventelist mulig
438
+ bill_address: Faktureringsadresse
439
+ billing_address: Faktureringsadresse
440
+ calculator: Beregner
441
+ canceled: Annulleret
442
+ canceler: Annulleret af
443
+ cannot_be_destroyed: Ordren kan ikke slettes.
444
+ capture: hæv beløb (capture)
445
+ cart: Indkøbskurv
446
+ cart_already_updated: Kurven er allerede blevet opdateret.
447
+ cart_line_item:
448
+ delivery_unavailable: "%{li_name} kan ikke leveres til den valgte adresse"
449
+ discontinued: "%{li_name} blev fjernet, fordi den er udgået"
450
+ out_of_stock: "%{li_name} blev fjernet, fordi den var udsolgt"
451
+ categories: Kategorier
452
+ category: Kategori
453
+ channel: Salgskanal
454
+ channels: Salgskanaler
455
+ checkout: Til kassen
456
+ checkout_requirements:
457
+ email_required: E-mailadresse er påkrævet
458
+ line_items_required: Tilføj mindst én vare til din kurv
459
+ payment_required: Tilføj en betalingsmetode
460
+ ship_address_required: Leveringsadresse er påkrævet
461
+ city: By
462
+ color_code: Farvekode
463
+ company: Firma
464
+ compare_at_amount: Sammenligningsbeløb
465
+ compare_at_price: Sammenligningspris
466
+ complete: afsluttet
467
+ confirm: Bekræft
468
+ cost_price: Kostpris
469
+ count_on_hand: Antal tilgængelig
470
+ country: Land
471
+ coupon_code: Rabatkode
472
+ coupon_code_already_applied: Rabatkoden er allerede anvendt på denne ordre
473
+ coupon_code_applied: Rabatten er trukket fra din ordre.
474
+ coupon_code_better_exists: Den tidligere rabatkode giver en bedre pris
475
+ coupon_code_expired: Rabatkoden er udløbet
476
+ coupon_code_max_usage: Rabatkoden har nået maksimum brug
477
+ coupon_code_not_eligible: Denne rabatkode kan ikke anvendes på denne ordre
478
+ coupon_code_not_found: Rabatkoden eksisterer ikke. Prøv venligst igen.
479
+ coupon_code_used: Den rabatkode, du indtastede, er allerede blevet brugt. Prøv venligst igen.
480
+ created_at: Oprettet den
481
+ credit_card: Kreditkort
482
+ currency: Valuta
483
+ currency_not_supported_by_store: understøttes ikke af denne butik
484
+ customer: Kunde
485
+ customers: Kunder
486
+ default: Standard
487
+ default_stock_location_name: Butikslokation
488
+ default_wishlist_name: Ønskeliste
489
+ delivery: Levering
490
+ depth: Dybde
491
+ description: Beskrivelse
492
+ destination: Destination
493
+ destroy: Slet
494
+ details: Detaljer
495
+ digital:
496
+ digital_delivery: Digital levering
497
+ digital_assets: Digitale aktiver
498
+ discontinued: Udgået
499
+ discontinued_variants_present: Nogle varelinjer i denne ordre indeholder produkter, der ikke længere er tilgængelige.
500
+ display_delivery_range: Levering på %{delivery_range} hverdage
501
+ draft: Kladde
502
+ eligibility_errors:
503
+ messages:
504
+ no_matching_channel: Denne rabatkode kan ikke bruges på denne salgskanal.
505
+ no_matching_market: Denne rabatkode kan ikke bruges på dit marked.
506
+ wrong_country: Denne rabatkode kan ikke bruges i dit land
507
+ email: E-mail
508
+ error: fejl
509
+ error_user_destroy_with_orders: En bruger, der er knyttet til ordrer, kan ikke slettes
510
+ error_user_does_not_have_any_store_credits: Brugeren har ingen tilgængelig butikskredit
511
+ errors:
512
+ messages:
513
+ cannot_delete_default_channel: Standardkanalen kan ikke slettes. Gør først en anden kanal til standard.
514
+ channel_store_mismatch: skal tilhøre den samme butik
515
+ invalid_order_routing_rule: er ikke en registreret ordrerutningsregel
516
+ invalid_order_routing_strategy: er ikke en registreret ordrerutningsstrategi
517
+ store_association_can_not_be_changed: Butikstilknytningen kan ikke ændres
518
+ store_is_already_set: Butikken er allerede angivet
519
+ expired: Udløbet
520
+ export_mailer:
521
+ export_done:
522
+ message: Godt arbejde, din eksport er klar! Brug venligst linket nedenfor til at downloade den.
523
+ subject: Din eksport %{export_number} blev behandlet!
524
+ greeting: Hej %{user_name},
525
+ field: Felt
526
+ first_name: Fornavn
527
+ flat_percent: Fast procentsats
528
+ flat_rate_per_order: Fast pris (per ordre)
529
+ flexible_rate: Flexible pris
530
+ free: Gratis
531
+ gateway: Betalingsleverandør
532
+ gateway_error: Betalingsleverandørfejl
533
+ gift_card: Gavekort
534
+ gift_card_already_redeemed: Gavekortet er allerede blevet indløst.
535
+ gift_card_applied: Gavekortet blev anvendt på din ordre!
536
+ gift_card_customer_not_logged_in: Gavekort kan ikke anvendes som gæstebruger.
537
+ gift_card_expired: Gavekortet er udløbet.
538
+ gift_card_mismatched_currency: Gavekort kan ikke anvendes med den nuværende valuta.
539
+ gift_card_mismatched_customer: Dette gavekort er knyttet til en anden bruger.
540
+ gift_card_not_found: Gavekortet blev ikke fundet.
541
+ gift_card_removed: Gavekortet blev fjernet fra din ordre
542
+ gift_card_using_store_credit_error: Du kan ikke anvende gavekortet, efter at du har anvendt butikskredit.
543
+ height: Højde
544
+ i18n:
545
+ this_file_language: Danish (DA)
546
+ idempotency_key_reused: Denne Idempotency-Key er allerede blevet brugt med andre anmodningsparametre.
547
+ image: Billed
548
+ import: Importér
549
+ in_stock: På lager
550
+ internal_note: Intern note
551
+ inventory: Beholdning
552
+ invitation_mailer:
553
+ greeting: Hej %{user_name},
554
+ invitation_accepted:
555
+ body: "%{invitee_name} har accepteret din invitation til at deltage i %{resource_name}"
556
+ subject: "%{invitee_name} har accepteret din invitation til at deltage i %{resource_name}"
557
+ invitation_email:
558
+ body: "%{inviter_name} har inviteret dig til at deltage i %{resource_name}"
559
+ link_description: 'For at acceptere denne invitation skal du klikke på linket nedenfor:'
560
+ subject: Invitation til at deltage i %{resource_name}
561
+ iso: ISO Alpha-2
562
+ item: Varer
563
+ items_cannot_be_shipped: Vi kan ikke levere til adressen. Vælg venlist en anden adresse.
564
+ key: Nøgle
565
+ kind: Type
566
+ label: Etiket
567
+ last_name: Efternavn
568
+ line_item: Varelinje
569
+ line_items: Varelinjer
570
+ link: Link
571
+ locale: Sprog
572
+ locale_not_supported_by_store: understøttes ikke af denne butik
573
+ manual: Manuel
574
+ market: Marked
575
+ me_no_current_user: Ingen administratorbruger godkendte denne anmodning
576
+ media: Medier
577
+ meta_description: Metabeskrivelse
578
+ meta_keywords: Metanøgleord
579
+ metadata: Metadata
580
+ min_quantity: Min. mængde
581
+ month: Måned
582
+ name: Navn
583
+ new_variant: Ny variant
584
+ no_cc_type: Ikke relevant
585
+ none: Ingen
586
+ number: Nummer
587
+ on_hand: På lager
588
+ only_active_products_can_be_added_to_cart: Kladde- og arkiverede produkter kan ikke føjes til kurven. Markér venligst produktet som aktivt først.
589
+ open: Åben
590
+ option_name: Indstillingsnavn
591
+ option_type: Alternativ udgave
592
+ option_value: Alternativ værdi
593
+ options: Indstillinger
594
+ or: eller
595
+ order: Ordre
596
+ order_canceled: Ordren er blevet annulleret
597
+ order_routing:
598
+ strategies:
599
+ legacy: Ældre
600
+ rules: Regler (sorteret)
601
+ order_summary: Ordreoversigt
602
+ orders: Ordrer
603
+ out_of_stock: Ikke på lager
604
+ password: Adgangskode
605
+ path: Sti
606
+ payment: Betaling
607
+ payment_method: Betalingsmetode
608
+ payment_methods: Betalingsmetoder
609
+ payment_processing_failed: Betalingen kunne ikke gennemføres. Hver venlig at checke de detaljer du har indtastet.
610
+ payment_source: Betalingskilde
611
+ percent: Procent
612
+ percent_per_item: Percent Per Item
613
+ phone: Telefonnummer
614
+ price: Pris
615
+ price_range: Prisklasse
616
+ price_rules:
617
+ channel_rule:
618
+ description: Anvend prissætning baseret på salgskanalen
619
+ customer_group_rule:
620
+ description: Anvend priser på bestemte kundegrupper
621
+ price_sack: Prisgruppe
622
+ prices: Priser
623
+ privacy_policy: Privatlivspolitik
624
+ processing: Behandler
625
+ product: Vare
626
+ product_translations: Produktoversættelser
627
+ products: Varer
628
+ products_cannot_be_shipped: Vi kan ikke sende %{product_names} til din nuværende placering i øjeblikket. Ændr venligst din leveringsadresse, eller fjern %{product_names} fra din kurv.
629
+ promotion: Kampagne
630
+ promotion_action_types:
631
+ create_adjustment:
632
+ description: Creates a promotion credit adjustment on the order
633
+ name: Create adjustment
634
+ create_line_items:
635
+ description: Populates the cart with the specified quantity of variant
636
+ name: Create line items
637
+ promotion_actions: Handlinger
638
+ promotion_already_used: Du kan ikke slette en kampagne, der allerede er blevet anvendt
639
+ promotion_label: Kampagne (%{name})
640
+ promotion_rule_types:
641
+ category:
642
+ description: Ordren indeholder produkter i bestemte kategorier
643
+ name: Kategorier
644
+ channel:
645
+ description: Begræns til ordrer afgivet via valgte kanal(er)
646
+ name: Kanal(er)
647
+ country:
648
+ description: Begræns til ordrer med leveringsadresse i et bestemt land
649
+ name: Land
650
+ currency:
651
+ description: Begræns til ordrer i en bestemt valuta
652
+ name: Valuta
653
+ customer:
654
+ description: Kun tilgængelig for de angivne kunder
655
+ name: Kunder
656
+ customer_group:
657
+ description: Kun tilgængelig for kunder i bestemte kundegrupper
658
+ name: Kundegruppe(r)
659
+ customer_logged_in:
660
+ description: Kun tilgængelig for kunder, der er logget ind
661
+ name: Kun kunder, der er logget ind
662
+ first_order:
663
+ description: Skal være kundens første ordre
664
+ name: Første ordre
665
+ item_total:
666
+ description: Ordre som møder disse kriterier
667
+ name: Totalpris
668
+ market:
669
+ description: Begræns til ordrer afgivet på valgte marked(er)
670
+ name: Marked(er)
671
+ product:
672
+ description: Ordrer inkluderer angivne vare(r)
673
+ name: Vare(r)
674
+ promotions: Kampagner
675
+ quantity: Antal
676
+ query: Forespørgsel
677
+ reason: Anledning
678
+ received: Modtaget
679
+ reference: Reference
680
+ refund: Tilbagebetal
681
+ refund_amount: Refunderingsbeløb
682
+ registration: Registrering
683
+ remove: Fjern
684
+ remove_gift_card_on_completed_order_error: Du kan ikke fjerne gavekortet, efter at ordren er afgivet
685
+ resellable: Kan videresælges
686
+ resend: Gensend
687
+ response_code: Svarkode
688
+ return: vend tilbage
689
+ returned: Returneret
690
+ returns_policy: Returpolitik
691
+ row: Række
692
+ rules: Regler
693
+ say_no: Nej
694
+ say_yes: Ja
695
+ scope: Område
696
+ ship: lever
697
+ ship_address: Leveringsadresse
698
+ shipment: Levering
699
+ shipped: Leveret
700
+ shipping: Levering
701
+ shipping_address: Leveringsadresse
702
+ shipping_flat_rate_per_order: Fastpris
703
+ shipping_flexible_rate: Variabel fragtpris
704
+ shipping_policy: Forsendelsespolitik
705
+ shipping_price_sack: Prissænkning
706
+ shipping_rates:
707
+ display_price:
708
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
709
+ including_tax: "%{price} (inkl. %{tax_amount} %{tax_rate_name})"
710
+ sku: Varenummer
711
+ source: Kilde
712
+ status: Status
713
+ stock_location: Lagersted
714
+ stock_locations: Lagersteder
715
+ stock_transfer:
716
+ errors:
717
+ must_have_variant: Du skal tilføje mindst én variant
718
+ same_location: kan ikke være den samme som destinationslokationen
719
+ variants_unavailable: Nogle varianter er ikke tilgængelige på %{stock}
720
+ store: Butik
721
+ store_credit:
722
+ allocated: Tilføjet
723
+ authorized: Autoriseret
724
+ captured: Brugt
725
+ credit: Kredit
726
+ eligible: Berettiget
727
+ store_credit_name: Butikskredit
728
+ store_credit_payment_method:
729
+ currency_mismatch: Butikskredittens valuta stemmer ikke overens med ordrens valuta
730
+ insufficient_authorized_amount: Kan ikke opkræve mere end det autoriserede beløb
731
+ insufficient_funds: Den resterende butikskredit er ikke tilstrækkelig
732
+ successful_action: Vellykket butikskredit-%{action}
733
+ unable_to_credit: 'Kan ikke kreditere kode: %{auth_code}'
734
+ unable_to_find: Kunne ikke finde butikskredit
735
+ unable_to_find_for_action: 'Kunne ikke finde butikskredit for autorisationskode: %{auth_code} til handling: %{action}'
736
+ unable_to_void: 'Kan ikke annullere kode: %{auth_code}'
737
+ tags: Tags
738
+ tax: Moms
739
+ tax_category: Momskategori
740
+ terms_of_service: Servicevilkår
741
+ total: Total
742
+ tracking: Sporing
743
+ tracking_number: Track & trace nummer
744
+ tracking_url: Track & trace url
745
+ type: Type
746
+ unable_to_connect_to_gateway: Ude af stand til at forbinde til betalingsleverandør.
747
+ updated_at: Opdateret
748
+ url: URL
749
+ user: Bruger
750
+ validation:
751
+ must_be_int: skal være et heltal
752
+ value: Værdi
753
+ variant: Variant
754
+ variants: Varianter
755
+ verified: Bekræftet
756
+ void: Tom
757
+ webhook_mailer:
758
+ endpoint_disabled:
759
+ disabled_at_label: Deaktiveret
760
+ heading: Webhook-endepunkt deaktiveret
761
+ instructions: Kontrollér venligst endepunktets URL og service, og genaktivér det derefter under Indstillinger → Udviklere → Webhooks.
762
+ message: Webhook-endepunktet "%{endpoint_name}" er blevet deaktiveret automatisk efter gentagne leveringsfejl.
763
+ name_label: Navn
764
+ reason_label: Årsag
765
+ subject: 'Webhook-endepunkt deaktiveret: %{endpoint_name}'
766
+ url_label: URL
767
+ weight: Vægt
768
+ weight_unit: Vægtenhed
769
+ width: Bredde
770
+ year: År
771
+ zip: Postnummer