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,824 @@
1
+ ---
2
+ nb:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: kan ikke være tom
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Adresselinje 1
11
+ address2: Adresselinje 2
12
+ city: By
13
+ company: Selskap
14
+ country: Land
15
+ label: Adressenavn
16
+ phone: Telefon
17
+ state: Fylke
18
+ spree/calculator/tiered_flat_rate:
19
+ preferred_base_amount: Basemengde
20
+ preferred_tiers: Lag
21
+ spree/calculator/tiered_percent:
22
+ preferred_base_percent: Basisprosent
23
+ preferred_tiers: Lag
24
+ spree/country:
25
+ iso: ISO
26
+ iso3: ISO3
27
+ iso_name: ISO Navn
28
+ name: Navn
29
+ numcode: Nummerkode
30
+ spree/credit_card:
31
+ base: Base
32
+ cc_type: Type
33
+ month: Måned
34
+ name: Navn
35
+ number: Nummer
36
+ verification_value: Verifiseringsverdi
37
+ year: År
38
+ spree/customer_group:
39
+ description: Beskrivelse
40
+ name: Navn
41
+ spree/gift_card:
42
+ amount_used: Brukt beløp
43
+ expires_at: Utløper
44
+ spree/import:
45
+ preferred_delimiter: Skilletegn
46
+ spree/import_mapping:
47
+ file_column: Filkolonne
48
+ schema_field: Skjemafelt
49
+ spree/import_row:
50
+ row_number: Nummer
51
+ spree/inventory_unit:
52
+ state: status
53
+ spree/invitation:
54
+ inviter: Invitør
55
+ spree/line_item:
56
+ price: Pris
57
+ quantity: Antall
58
+ spree/option_type:
59
+ filterable: Kan filtreres
60
+ kind: Type
61
+ name: Navn
62
+ spree/option_value:
63
+ color_code: Fargekode
64
+ image: Fargeprøvebilde
65
+ spree/order:
66
+ checkout_complete: Ordre fullført
67
+ completed_at: Fullført
68
+ considered_risky: Risikabel
69
+ coupon_code: Rabattkode
70
+ created_at: Opprettet
71
+ email: Epost
72
+ internal_note: Intern merknad
73
+ ip_address: IP Adresse
74
+ item_count: Varer
75
+ item_total: Totalt antall
76
+ number: Nummer
77
+ payment_state: Betalingsstatus
78
+ shipment_state: Forsendelsesstatus
79
+ special_instructions: Spesielle instrukser
80
+ state: status
81
+ total: Total
82
+ spree/order/bill_address:
83
+ address1: Adresse
84
+ city: By/Poststed
85
+ phone: Telefon
86
+ state: Fylke
87
+ spree/order/ship_address:
88
+ address1: Adresse
89
+ city: By/Poststed
90
+ phone: Telefon
91
+ state: Fylke
92
+ spree/payment:
93
+ amount: Beløp
94
+ number: Antall
95
+ spree/payment_method:
96
+ name: Navn
97
+ spree/policy:
98
+ body: Brødtekst
99
+ owner: Retningslinjer for
100
+ spree/price_list:
101
+ description: Beskrivelse
102
+ ends_at: Slutter
103
+ match_policy: Samsvarsregel
104
+ name: Navn
105
+ priority: Prioritet
106
+ starts_at: Starter
107
+ status: Status
108
+ spree/price_rule:
109
+ priority: Prioritet
110
+ type: Type
111
+ spree/product:
112
+ available_on: Tilgjengelig fra
113
+ cost_currency: Valuta
114
+ cost_price: Kostpris
115
+ description: Beskrivelse
116
+ discontinue_on: Avslutt På
117
+ less_than: Mindre enn
118
+ make_active_at: Gjør aktiv den
119
+ master_price: Grunnpris
120
+ more_than: Mer enn
121
+ name: Navn
122
+ on_hand: beholdning
123
+ tax_category: Avgiftskategori
124
+ spree/promotion:
125
+ advertise: Promotere
126
+ code: Kode
127
+ description: Beskrivelse
128
+ event_name: Hendelsesnavn
129
+ expires_at: Utgår den
130
+ generate_code: Generer kupongkode
131
+ name: Navn
132
+ path: Sti
133
+ promotion_category: Kampanjekategori
134
+ starts_at: Starter ved
135
+ usage_limit: Bruksgrense
136
+ spree/promotion_category:
137
+ code: Kode
138
+ name: Navn
139
+ spree/property:
140
+ name: Navn
141
+ presentation: Presentasjon
142
+ spree/role:
143
+ name: Navn
144
+ spree/shipment:
145
+ number: Antall
146
+ spree/state:
147
+ abbr: Forkortelse
148
+ name: Navn
149
+ spree/store:
150
+ address: Adresse
151
+ contact_phone: Kontakttelefon
152
+ mail_from_address: E-post fra adresse
153
+ meta_description: Meta Beskrivelse
154
+ meta_keywords: Meta nøkkelord
155
+ name: Side navn
156
+ preferred_digital_asset_authorized_clicks: Grense for nedlastingsklikk
157
+ preferred_digital_asset_authorized_days: Grense for nedlastingsdager
158
+ preferred_limit_digital_download_count: Begrens antall nedlastinger av digitale lenker
159
+ preferred_limit_digital_download_days: Begrens nedlastingsdager for digitale lenker
160
+ seo_robots: SEO-roboter
161
+ seo_title: SEO-tittel
162
+ storefront_custom_code_body_end: Egendefinert kode før lukkende body-tagg
163
+ storefront_custom_code_body_start: Egendefinert kode etter åpnende body-tagg
164
+ storefront_custom_code_head: Egendefinert kode i sidens head
165
+ url: Nettsteds-URL
166
+ spree/store_credit:
167
+ amount_used: Mengde brukt
168
+ spree/tax_category:
169
+ description: Beskrivelse
170
+ name: Navn
171
+ spree/tax_rate:
172
+ amount: Mengde
173
+ included_in_price: Inkluder i pris
174
+ show_rate_in_label: Vis sats
175
+ spree/taxon:
176
+ name: Navn
177
+ permalink: Permalenke
178
+ position: Posisjon
179
+ sort_order: Sorteringsrekkefølge
180
+ spree/taxonomy:
181
+ name: Navn
182
+ spree/user:
183
+ avatar: Profilbilde
184
+ email: Epost
185
+ password: Passord
186
+ password_confirmation: Passord bekreftelse
187
+ spree/variant:
188
+ cost_currency: Kostnadsvaluta
189
+ cost_price: Kostpris
190
+ depth: Dybde
191
+ height: Høyde
192
+ price: Pris
193
+ sku: PLU
194
+ weight: Vekt
195
+ width: Bredde
196
+ spree/zone:
197
+ description: Beskrivelse
198
+ name: Navn
199
+ user:
200
+ current_sign_in: Gjeldende innlogging
201
+ last_sign_in: Siste innlogging
202
+ sign_in_count: Antall innlogginger
203
+ errors:
204
+ messages:
205
+ blank: kan ikke være tom
206
+ models:
207
+ spree/allowed_origin:
208
+ attributes:
209
+ origin:
210
+ must_be_origin_only: må være et opphav (skjema og vert) uten sti, spørring eller fragment
211
+ spree/classification:
212
+ attributes:
213
+ taxon_id:
214
+ already_linked: er allerede knyttet til dette produktet
215
+ spree/credit_card:
216
+ attributes:
217
+ base:
218
+ card_expired: Utløpsdato
219
+ expiry_invalid: Kortutløpet er ugyldig
220
+ spree/gift_card:
221
+ attributes:
222
+ base:
223
+ cannot_destroy_used_gift_card: Kan ikke slette et brukt gavekort
224
+ spree/import:
225
+ attributes:
226
+ attachment:
227
+ content_type: har en innholdstype som ikke er tillatt
228
+ type:
229
+ inclusion: er ikke blant de tillatte typene
230
+ spree/line_item:
231
+ attributes:
232
+ currency:
233
+ must_match_order_currency: Må samsvare med ordrevaluta
234
+ spree/market:
235
+ attributes:
236
+ base:
237
+ cannot_destroy_default_market: Kan ikke slette standardmarkedet.
238
+ cannot_destroy_last_market: Kan ikke slette det eneste markedet.
239
+ spree/market_country:
240
+ attributes:
241
+ country:
242
+ already_in_market: er allerede tilordnet et annet marked i denne butikken
243
+ not_in_shipping_zone: dekkes ikke av noen fraktsone. Sett opp en fraktsone først.
244
+ spree/payment:
245
+ attributes:
246
+ amount:
247
+ greater_than_max_amount: er større enn det tillatte maksbeløpet på %{max_amount}
248
+ spree/price_list:
249
+ attributes:
250
+ ends_at:
251
+ must_be_after_starts_at: må være etter starttidspunktet
252
+ spree/product:
253
+ attributes:
254
+ base:
255
+ cannot_destroy_if_attached_to_line_items: Kan ikke slette produkter når de er knyttet til ordrelinjer.
256
+ discontinue_on:
257
+ invalid_date_range: må være senere enn tilgjengelig dato
258
+ spree/product_publication:
259
+ attributes:
260
+ unpublished_at:
261
+ must_be_after_published_at: må være etter publiseringsdatoen
262
+ spree/promotion:
263
+ attributes:
264
+ expires_at:
265
+ invalid_date_range: må være senere enn startdato
266
+ spree/refund:
267
+ attributes:
268
+ amount:
269
+ greater_than_allowed: er større enn det tillatte beløpet.
270
+ spree/store:
271
+ attributes:
272
+ base:
273
+ cannot_destroy_only_store: Kan ikke slette den eneste butikken.
274
+ spree/store_credit:
275
+ attributes:
276
+ amount_authorized:
277
+ exceeds_total_credits: Overskrider totale studiepoeng
278
+ amount_used:
279
+ cannot_be_greater_than_amount: Kan ikke være større enn beløpet
280
+ greater_than_zero_restrict_delete: er større enn null. Kan ikke slette butikkreditt
281
+ spree/user:
282
+ attributes:
283
+ bill_address_id:
284
+ belongs_to_other_user: tilhører en annen bruker
285
+ deprecated_in_completed_order: er utdatert i en fullført ordre
286
+ ship_address_id:
287
+ belongs_to_other_user: tilhører en annen bruker
288
+ deprecated_in_completed_order: er utdatert i en fullført ordre
289
+ spree/variant:
290
+ attributes:
291
+ base:
292
+ cannot_destroy_if_attached_to_line_items: Kan ikke slette varianter når de er knyttet til ordrelinjer.
293
+ spree/webhook_endpoint:
294
+ attributes:
295
+ url:
296
+ internal_address_not_allowed: må ikke peke til en intern eller privat nettverksadresse
297
+ models:
298
+ spree/address:
299
+ one: Adresse
300
+ other: Adresser
301
+ spree/classification:
302
+ one: Klassifisering
303
+ other: Klassifiseringer
304
+ spree/country:
305
+ one: Land
306
+ other: Land
307
+ spree/credit_card:
308
+ one: Kredittkort
309
+ other: Kredittkort
310
+ spree/customer_group:
311
+ one: Kundegruppe
312
+ other: Kundegrupper
313
+ spree/customer_group_user:
314
+ one: Kundegruppebruker
315
+ other: Kundegruppebrukere
316
+ spree/export:
317
+ one: Eksport
318
+ other: Eksporter
319
+ spree/integration:
320
+ one: Integrasjon
321
+ other: Integrasjoner
322
+ spree/inventory_unit:
323
+ one: Lagerenhet
324
+ other: Lagerenheter
325
+ spree/line_item:
326
+ one: Varelinje
327
+ other: Varelinjer
328
+ spree/option_type:
329
+ one: Alternativtype
330
+ other: Alternativtyper
331
+ spree/option_value:
332
+ one: Opsjonsverdi
333
+ other: Valgsverdier
334
+ spree/order:
335
+ one: Ordre
336
+ other: Ordrer
337
+ spree/payment:
338
+ one: Betaling
339
+ other: Betalinger
340
+ spree/payment_method:
341
+ one: Betalingsmetode
342
+ other: Betalingsmetoder
343
+ spree/price:
344
+ one: Pris
345
+ other: Priser
346
+ spree/price_list:
347
+ one: Prisliste
348
+ other: Prislister
349
+ spree/price_rule:
350
+ one: Prisregel
351
+ other: Prisregler
352
+ spree/product:
353
+ one: Produkt
354
+ other: Produkter
355
+ spree/promotion:
356
+ one: Forfremmelse
357
+ other: Kampanjer
358
+ spree/promotion_category:
359
+ one: Kampanjekategori
360
+ other: Kampanjekategorier
361
+ spree/property:
362
+ one: Egenskap
363
+ other: Egenskaper
364
+ spree/refund_reason:
365
+ one: Refusjonsårsak
366
+ other: Refusjonsårsaker
367
+ spree/role:
368
+ one: Rolle
369
+ other: Roller
370
+ spree/shipment:
371
+ one: Forsendelse
372
+ other: Forsendeleser
373
+ spree/shipping_method:
374
+ one: Forsendelsesmetode
375
+ other: Fraktmetoder
376
+ spree/state:
377
+ one: Status
378
+ other: Statuser
379
+ spree/stock_location:
380
+ one: Lagerplassering
381
+ other: Aksjeplasser
382
+ spree/stock_movement:
383
+ one: Lagerbevegelse
384
+ other: Lagerbevegelser
385
+ spree/stock_transfer:
386
+ one: Lageroverføring
387
+ other: Lageroverføringer
388
+ spree/store:
389
+ one: Butikk
390
+ other: Butikker
391
+ spree/store_credit:
392
+ one: Butikkreditt
393
+ other: Lagre studiepoeng
394
+ spree/tax_category:
395
+ one: Avgiftskategori
396
+ other: Avgiftskategorier
397
+ spree/tax_rate:
398
+ one: Avgiftssats
399
+ other: Avgiftssatser
400
+ spree/taxon:
401
+ one: Gruppe
402
+ other: Grupper
403
+ spree/taxonomy:
404
+ one: Gruppering
405
+ other: Grupperinger
406
+ spree/user:
407
+ one: Bruker
408
+ other: Brukere
409
+ spree/variant:
410
+ one: Variant
411
+ other: Varianter
412
+ spree/zone:
413
+ one: Sone
414
+ other: Soner
415
+ errors:
416
+ messages:
417
+ already_confirmed: Allerede bekreftet
418
+ not_found: Ikke funnet
419
+ not_locked: Ikke låst
420
+ not_saved:
421
+ one: '1 feil forbød dette %{resource} fra å bli frelst:'
422
+ other: "%{count} feil forbød dette %{resource} fra å bli frelst"
423
+ number:
424
+ percentage:
425
+ format:
426
+ precision: 1
427
+ spree:
428
+ accept: Aksepterer
429
+ accepted: Akseptert
430
+ accepts_email_marketing: Godtar e-postmarkedsføring
431
+ account: Konto
432
+ active: Aktiv
433
+ address: Adresse
434
+ address1: Adresselinje 1
435
+ address2: Adresselinje 2
436
+ adjustment: Justering
437
+ adjustment_labels:
438
+ tax_rates:
439
+ excluding_tax: "%{name}%{amount}"
440
+ including_tax: "%{name}%{amount} (Inkludert i prisen) "
441
+ adjustments_deleted: Justeringer slettet
442
+ all: Alle
443
+ amount: Beløp
444
+ api_key_no_current_key: Ingen API-nøkkel autentiserte denne forespørselen
445
+ api_key_scopes_immutable: kan ikke endres etter at nøkkelen er opprettet; opprett en ny nøkkel med de tilgangsnivåene du trenger og tilbakekall denne
446
+ approver: Godkjent av
447
+ authorized: Autorisert
448
+ availability: tilgjengelighet
449
+ backorderable: Restordre
450
+ backordered: I restordre
451
+ bill_address: Fakturaadresse
452
+ billing_address: Fakturaadresse
453
+ calculator: Kalkulator
454
+ canceled: Avlyst
455
+ canceler: Kanseller
456
+ cannot_be_destroyed: Ordren kan ikke slettes.
457
+ capture: Utfør
458
+ cart: Handlekurv
459
+ cart_already_updated: Handlekurven er allerede oppdatert.
460
+ cart_line_item:
461
+ delivery_unavailable: "%{li_name} kan ikke leveres til den valgte adressen"
462
+ discontinued: "%{li_name} ble fjernet fordi den er utgått"
463
+ out_of_stock: "%{li_name} ble fjernet fordi den er utsolgt"
464
+ categories: Kategorier
465
+ category: Kategori
466
+ channel: Kanal
467
+ channels: Salgskanaler
468
+ checkout: Til kassen
469
+ checkout_requirements:
470
+ email_required: E-postadresse er påkrevd
471
+ line_items_required: Legg minst én vare i handlekurven
472
+ payment_required: Legg til en betalingsmåte
473
+ ship_address_required: Leveringsadresse er påkrevd
474
+ city: Sted
475
+ color_code: Fargekode
476
+ company: Firma
477
+ compare_at_amount: Sammenlign med beløp
478
+ compare_at_price: Sammenlign til pris
479
+ complete: Fullført
480
+ confirm: Bekreft
481
+ cost_price: Kostpris
482
+ count_on_hand: Tell On Hand
483
+ country: Land
484
+ coupon_code: Rabattkode
485
+ coupon_code_already_applied: Rabattkupong er allerede brukt
486
+ coupon_code_applied: Rabattkupong ble lagt til på ordren
487
+ coupon_code_better_exists: Den tidligere anvendte kupongkoden gir en bedre avtale
488
+ coupon_code_expired: Rabattkoden er utgått på dato
489
+ coupon_code_max_usage: Maksgrensen for rabattkupongen er nådd
490
+ coupon_code_not_eligible: Rabattkoden er ikke gyldig
491
+ coupon_code_not_found: Rabattkoden ble ikke funnet
492
+ coupon_code_unknown_error: Denne kupongkoden kunne ikke brukes på handlekurven for øyeblikket.
493
+ coupon_code_used: Rabattkoden du oppga er allerede brukt. Prøv igjen.
494
+ created_at: Opprettet
495
+ credit_card: Kredittkort
496
+ currency: Valuta
497
+ currency_not_supported_by_store: støttes ikke av denne butikken
498
+ customer: Kunde
499
+ customers: Kunder
500
+ default: Default
501
+ default_stock_location_name: Butikkplassering
502
+ default_wishlist_name: Ønskeliste
503
+ delivery: Levering
504
+ depth: Dybde
505
+ description: Beskrivelse
506
+ destination: Destinasjon
507
+ destroy: Fjern
508
+ details: Detaljer
509
+ digital:
510
+ digital_delivery: Digital levering
511
+ digital_assets: Digitale ressurser
512
+ discontinued: Utgått
513
+ discontinued_variants_present: Noen varelinjer i denne ordren inneholder produkter som ikke lenger er tilgjengelige.
514
+ display_delivery_range: Levering om %{delivery_range} virkedager
515
+ draft: Utkast
516
+ eligibility_errors:
517
+ messages:
518
+ has_excluded_product: Handlekurven din inneholder et produkt som forhindrer at denne kupongkoden blir brukt.
519
+ item_total_more_than_or_equal: This coupon code can't be applied to orders higher than or equal to %{amount}.
520
+ limit_once_per_user: Denne kupongkoden kan bare brukes én gang per bruker.
521
+ missing_product: Denne kupongkoden kan ikke brukes fordi du ikke har alle nødvendige produkter i handlekurven.
522
+ missing_taxon: Du må legge til et produkt fra alle gjeldende kategorier før du bruker denne kupongkoden.
523
+ no_applicable_products: Du må legge til et aktuelt produkt før du bruker denne kupongkoden.
524
+ no_matching_channel: Denne kupongkoden gjelder ikke for denne salgskanalen.
525
+ no_matching_market: Denne kupongkoden gjelder ikke i ditt marked.
526
+ no_matching_taxons: Du må legge til et produkt fra en gjeldende kategori før du bruker denne kupongkoden.
527
+ no_user_or_email_specified: Du må logge på eller oppgi e-posten din før du bruker denne kupongkoden.
528
+ no_user_specified: Du må logge på før du bruker denne kupongkoden.
529
+ not_first_order: Denne kupongkoden kan bare brukes på din første bestilling.
530
+ wrong_country: Denne rabattkoden gjelder ikke i landet ditt
531
+ email: Epost
532
+ error: feil
533
+ error_user_destroy_with_orders: Bruker tilknyttet bestillinger kan ikke ødelegges
534
+ error_user_does_not_have_any_store_credits: Brukeren har ingen tilgjengelig butikkreditt
535
+ errors:
536
+ messages:
537
+ cannot_delete_default_channel: Standardkanalen kan ikke slettes. Gjør en annen kanal til standard først.
538
+ channel_store_mismatch: må tilhøre samme butikk
539
+ invalid_order_routing_rule: er ikke en registrert regel for ordreruting
540
+ invalid_order_routing_strategy: er ikke en registrert strategi for ordreruting
541
+ store_association_can_not_be_changed: Butikktilknytningen kan ikke endres
542
+ store_is_already_set: Butikk er allerede angitt
543
+ expired: Utløpt
544
+ export_mailer:
545
+ export_done:
546
+ message: Bra jobbet, eksporten din er klar! Bruk lenken nedenfor for å laste den ned.
547
+ subject: Eksporten din %{export_number} ble behandlet!
548
+ greeting: Hei %{user_name},
549
+ field: Felt
550
+ first_name: Fornavn
551
+ flat_percent: Flat prosenrate
552
+ flat_rate_per_order: Fast pris (per ordre)
553
+ flexible_rate: Varierende pris
554
+ free: Gratis
555
+ gateway: Tjeneste
556
+ gateway_error: Feil oppstått i tilgangstjenesten
557
+ gift_card: Gavekort
558
+ gift_card_already_redeemed: Gavekortet er allerede innløst.
559
+ gift_card_applied: Gavekortet ble lagt til ordren din!
560
+ gift_card_customer_not_logged_in: Gavekort kan ikke brukes som gjestebruker.
561
+ gift_card_expired: Gavekortet har utløpt.
562
+ gift_card_mismatched_currency: Gavekort kan ikke brukes med gjeldende valuta.
563
+ gift_card_mismatched_customer: Dette gavekortet er knyttet til en annen bruker.
564
+ gift_card_not_found: Gavekortet ble ikke funnet.
565
+ gift_card_removed: Gavekortet ble fjernet fra ordren din
566
+ gift_card_using_store_credit_error: Du kan ikke bruke gavekortet etter at du har brukt butikkreditt.
567
+ height: Høyde
568
+ i18n:
569
+ this_file_language: Norsk (NB)
570
+ idempotency_key_reused: Denne Idempotency-Key er allerede brukt med andre forespørselsparametere.
571
+ image: Bilde
572
+ import: Importer
573
+ in_stock: På lager
574
+ inactive: Inaktiv
575
+ incomplete: Ufullstendig
576
+ insufficient_stock_lines_present: Noen ordrelinjer i denne bestillingen har ikke tilstrekkelig antall.
577
+ internal_note: Intern merknad
578
+ inventory: Varelager
579
+ invitation_mailer:
580
+ greeting: Hei %{user_name},
581
+ invitation_accepted:
582
+ body: "%{invitee_name} har godtatt invitasjonen din om å bli med i %{resource_name}"
583
+ subject: "%{invitee_name} har godtatt invitasjonen din om å bli med i %{resource_name}"
584
+ invitation_email:
585
+ body: "%{inviter_name} har invitert deg til å bli med i %{resource_name}"
586
+ link_description: 'Klikk på lenken nedenfor for å godta denne invitasjonen:'
587
+ subject: Invitasjon til å bli med i %{resource_name}
588
+ iso: ISO Alpha-2
589
+ item: Artikkel
590
+ items_cannot_be_shipped: Varene kan ikke sendes!
591
+ key: Nøkkel
592
+ kind: Type
593
+ label: Etikett
594
+ last_name: Etternavn
595
+ line_item: Varelinje
596
+ line_items: Varelinjer
597
+ link: Lenke
598
+ locale: Språk
599
+ locale_not_supported_by_store: støttes ikke av denne butikken
600
+ manual: Manuell
601
+ market: Marked
602
+ me_no_current_user: Ingen adminbruker autentiserte denne forespørselen
603
+ media: Media
604
+ meta_description: Metabeskrivelse
605
+ meta_keywords: Metanøkkelord
606
+ meta_title: Metatittel
607
+ metadata: Metadata
608
+ min_quantity: Min antall
609
+ month: Måned
610
+ name: Navn
611
+ new_variant: Ny variant
612
+ no_cc_type: Ikke tilgjengelig
613
+ no_payment_found: Ingen betalinger funnet
614
+ none: Ingen
615
+ number: Antall
616
+ on_hand: Tilgjengelig
617
+ only_active_products_can_be_added_to_cart: Utkast og arkiverte produkter kan ikke legges i handlekurven. Merk produktet som aktivt først.
618
+ open: Åpen
619
+ option_name: Alternativnavn
620
+ option_type: Variasjon
621
+ option_value: Option Value
622
+ options: Valg
623
+ or: eller
624
+ order: Ordre
625
+ order_canceled: Bestillingen kansellert
626
+ order_routing:
627
+ strategies:
628
+ legacy: Eldre
629
+ rules: Regler (rangert)
630
+ order_summary: Ordresummering
631
+ orders: Ordrer
632
+ out_of_stock: Ikke på lager
633
+ password: Passord
634
+ path: Sti
635
+ payment: Betaling
636
+ payment_method: Betalingsform
637
+ payment_method_not_supported: Betalingsformen er ikke støttet
638
+ payment_methods: Betalingsformer
639
+ payment_processing_failed: Betaling kunne ikke gjennomføres, vennligst sjekk betalingsinformasjonen
640
+ payment_source: Betalingskilde
641
+ pending: Avventer
642
+ percent: prosent
643
+ percent_per_item: Prosent per enhet
644
+ phone: Telefon
645
+ price: Pris
646
+ price_range: Prisområde
647
+ price_rules:
648
+ channel_rule:
649
+ description: Bruk prising basert på salgskanalen
650
+ customer_group_rule:
651
+ description: Bruk prissetting på bestemte kundegrupper
652
+ price_sack: Prissekk
653
+ prices: Priser
654
+ privacy_policy: Personvernerklæring
655
+ processing: Behandler
656
+ product: Produkt
657
+ product_translations: Produktoversettelser
658
+ products: Produkter
659
+ products_cannot_be_shipped: Vi kan dessverre ikke sende %{product_names} til ditt nåværende sted. Endre leveringsadressen din eller fjern %{product_names} fra handlekurven.
660
+ promotion: Kampanje
661
+ promotion_action_types:
662
+ create_adjustment:
663
+ description: Opprett en kampanjekreditt på ordren
664
+ name: Opprett en justering
665
+ create_item_adjustments:
666
+ description: Oppretter en markedsføringskredittjustering på en ordrelinje
667
+ name: Opprett justering per artikkel
668
+ create_line_items:
669
+ description: Fyller handlekurv med det spesifiserte antallet av varianten
670
+ name: Opprett varelinjer
671
+ free_shipping:
672
+ description: Gjør alle forsendelser gratis
673
+ name: Gratis frakt
674
+ promotion_actions: Handling
675
+ promotion_already_used: Du kan ikke slette en kampanje som allerede er brukt
676
+ promotion_label: Kampanje (%{name})
677
+ promotion_rule_types:
678
+ category:
679
+ description: Ordren inneholder produkter i bestemte kategorier
680
+ name: Kategorier
681
+ channel:
682
+ description: Begrens til ordrer plassert gjennom angitte kanal(er)
683
+ name: Kanal(er)
684
+ country:
685
+ description: Bestillingen sendes til riktig (eller standard) land
686
+ name: Gratis frakt
687
+ currency:
688
+ description: Begrens til ordrer i en bestemt valuta
689
+ name: Valuta
690
+ customer:
691
+ description: Tilgjengelig kun for de angitte kundene
692
+ name: Kunder
693
+ customer_group:
694
+ description: Tilgjengelig kun for kunder i de angitte kundegruppene
695
+ name: Kundegruppe(r)
696
+ customer_logged_in:
697
+ description: Tilgjengelig kun for innloggede kunder
698
+ name: Kun innloggede kunder
699
+ first_order:
700
+ description: Må være kundens første ordre
701
+ name: Første ordre
702
+ item_total:
703
+ description: Ordrebeløp innfrir disse kriteriene
704
+ name: Ordresum
705
+ market:
706
+ description: Begrens til ordrer plassert i angitte marked(er)
707
+ name: Marked(er)
708
+ one_use_per_user:
709
+ description: Bare ett bruk per bruker
710
+ name: Én bruk per bruker
711
+ option_value:
712
+ description: Bestillingen inkluderer spesifiserte produkter med samsvarende alternativverdier
713
+ name: Opsjonsverdi(r)
714
+ product:
715
+ description: Ordren inkluderer spesifikke produkt(er)
716
+ name: Produkt(er)
717
+ promotions: Kampanjer
718
+ quantity: Mengde
719
+ query: Spørring
720
+ reason: Grunn
721
+ received: Motatt
722
+ reference: Referansje
723
+ refund: Refusjon
724
+ refund_amount: Refusjonsbeløp
725
+ refunds: Refusjoner
726
+ registration: Registrering
727
+ rejected: Avvist
728
+ remove: Fjern
729
+ remove_gift_card_on_completed_order_error: Du kan ikke fjerne gavekortet etter at ordren er lagt inn
730
+ resellable: Selges videre
731
+ resend: Send på nytt
732
+ response_code: Responskode
733
+ return: returner
734
+ returned: Returnert
735
+ returns_policy: Returregler
736
+ row: Rad
737
+ rules: Regler
738
+ say_no: Nei
739
+ say_yes: Ja
740
+ scope: Virkefelt
741
+ selected_quantity_not_available: valgt av %{item} er ikke tilgjengelig.
742
+ ship: sende
743
+ ship_address: Leveringsadresse
744
+ shipment: Levering
745
+ shipped: Sendt
746
+ shipping: Frakt
747
+ shipping_address: Leveringsadresse
748
+ shipping_flat_rate_per_item: Fast pris per pakkevare
749
+ shipping_flat_rate_per_order: Flat sats
750
+ shipping_flexible_rate: Fleksibel pris per pakkevare
751
+ shipping_policy: Fraktregler
752
+ shipping_price_sack: Fast forsendelsespris
753
+ shipping_rates:
754
+ display_price:
755
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
756
+ including_tax: "%{price} (inkl. mva. %{tax_amount} %{tax_rate_name})"
757
+ sku: Varenummer
758
+ slug: Slug
759
+ source: Kilde
760
+ status: Status
761
+ stock_location: Varelokasjon
762
+ stock_locations: Varelokasjoner
763
+ stock_transfer:
764
+ errors:
765
+ must_have_variant: Du må legge til minst en variant.
766
+ same_location: kan ikke være den samme som målplasseringen
767
+ variants_unavailable: Noen varianter er ikke tilgjengelige på %{stock}
768
+ store: Butikk
769
+ store_credit:
770
+ allocated: La til
771
+ authorized: Autorisert
772
+ captured: Brukt
773
+ credit: Kreditt
774
+ eligible: Kvalifisert
775
+ store_credit_name: Butikkreditt
776
+ store_credit_payment_method:
777
+ currency_mismatch: Butikk-kredittvaluta samsvarer ikke med ordrevaluta
778
+ insufficient_authorized_amount: Kan ikke fange mer enn autorisert beløp
779
+ insufficient_funds: Gjenværende mengde butikkreditt er ikke tilstrekkelig
780
+ successful_action: Vellykket butikkreditt %{action}
781
+ unable_to_credit: 'Kan ikke kreditere koden: %{auth_code}'
782
+ unable_to_find: Fant ikke butikkreditt
783
+ unable_to_find_for_action: 'Fant ikke butikkreditt for godkjenningskode: %{auth_code} for action: %{action}'
784
+ unable_to_void: 'Kan ikke annullere koden: %{auth_code}'
785
+ success: Suksess
786
+ tags: Etiketter
787
+ tax: Avgift
788
+ tax_category: Avgiftsklasse
789
+ terms_of_service: Vilkår for bruk
790
+ there_are_no_items_for_this_order: Det er ingen enheter for denne ordren
791
+ tiered_flat_rate: Trinnvis fast pris
792
+ tiered_percent: Nivåprosent
793
+ total: Total
794
+ track_inventory: Spor beholdning
795
+ tracking: Sporing
796
+ tracking_number: Sporingsnummer
797
+ tracking_url: Sporingslenke
798
+ type: Type
799
+ unable_to_connect_to_gateway: Kunne ikke koble til systemport.
800
+ updated_at: Oppdatert
801
+ url: URL
802
+ user: Bruker
803
+ validation:
804
+ must_be_int: må være et heltall
805
+ value: Verdi
806
+ variant: Variant
807
+ variants: Varianter
808
+ verified: Bekreftet
809
+ void: Avvis
810
+ webhook_mailer:
811
+ endpoint_disabled:
812
+ disabled_at_label: Deaktivert
813
+ heading: Webhook-endepunkt deaktivert
814
+ instructions: Kontroller endepunktets URL og tjeneste, og aktiver det deretter på nytt under Innstillinger → Utviklere → Webhooks.
815
+ message: Webhook-endepunktet «%{endpoint_name}» er automatisk deaktivert etter gjentatte leveringsfeil.
816
+ name_label: Navn
817
+ reason_label: Årsak
818
+ subject: 'Webhook-endepunkt deaktivert: %{endpoint_name}'
819
+ url_label: URL
820
+ weight: Vekt
821
+ weight_unit: Vektenhet
822
+ width: Bredde
823
+ year: År
824
+ zip: Postnummer