spree_core 6.0.0.beta4 → 6.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (495) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/app/helpers/spree/images_helper.rb +0 -57
  4. data/app/jobs/spree/base_job.rb +21 -0
  5. data/app/jobs/spree/carts/reap_expired_job.rb +2 -2
  6. data/app/jobs/spree/collections/regenerate_time_based_job.rb +6 -3
  7. data/app/jobs/spree/orders/finalize_stale_drafts_job.rb +8 -5
  8. data/app/jobs/spree/payments/cancel_unused_sessions_job.rb +61 -0
  9. data/app/jobs/spree/seller_payouts/sweep_seller_job.rb +2 -0
  10. data/app/mailers/spree/admin_user_mailer.rb +4 -19
  11. data/app/mailers/spree/base_mailer.rb +96 -13
  12. data/app/mailers/spree/email_template_mailer.rb +27 -0
  13. data/app/mailers/spree/export_mailer.rb +3 -4
  14. data/app/mailers/spree/import_mailer.rb +3 -4
  15. data/app/mailers/spree/invitation_mailer.rb +24 -7
  16. data/app/mailers/spree/seller_user_mailer.rb +4 -16
  17. data/app/mailers/spree/webhook_mailer.rb +2 -2
  18. data/app/models/concerns/spree/acted_by.rb +1 -1
  19. data/app/models/concerns/spree/admin_user_methods.rb +13 -1
  20. data/app/models/concerns/spree/api_typed.rb +91 -0
  21. data/app/models/concerns/spree/calculator/tiers.rb +76 -0
  22. data/app/models/concerns/spree/customer_methods.rb +15 -14
  23. data/app/models/concerns/spree/email_template_identity.rb +52 -0
  24. data/app/models/concerns/spree/parameterizable_name.rb +2 -0
  25. data/app/models/concerns/spree/payment_session_transitions.rb +8 -2
  26. data/app/models/concerns/spree/post_sale/taxation.rb +54 -0
  27. data/app/models/concerns/spree/post_sale/taxed_line.rb +51 -0
  28. data/app/models/concerns/spree/preference_schema.rb +4 -12
  29. data/app/models/concerns/spree/product_scopes.rb +11 -1
  30. data/app/models/concerns/spree/provider_listing.rb +41 -0
  31. data/app/models/concerns/spree/publishable.rb +82 -14
  32. data/app/models/concerns/spree/purchase/addresses.rb +23 -10
  33. data/app/models/concerns/spree/purchase/currency.rb +1 -1
  34. data/app/models/concerns/spree/purchase/deprecated_aliases.rb +87 -0
  35. data/app/models/concerns/spree/purchase/gift_cards.rb +10 -4
  36. data/app/models/concerns/spree/purchase/locale.rb +1 -1
  37. data/app/models/concerns/spree/purchase/payment_processing.rb +7 -3
  38. data/app/models/concerns/spree/purchase/purchase_order.rb +2 -2
  39. data/app/models/concerns/spree/purchase/totals.rb +49 -1
  40. data/app/models/concerns/spree/receivable.rb +1 -1
  41. data/app/models/concerns/spree/searchable.rb +0 -4
  42. data/app/models/concerns/spree/secret_preferences.rb +59 -0
  43. data/app/models/concerns/spree/single_store_resource.rb +1 -1
  44. data/app/models/concerns/spree/stores/email_branding.rb +31 -0
  45. data/app/models/concerns/spree/type_labels.rb +38 -0
  46. data/app/models/concerns/spree/typed_adjustment_line.rb +1 -1
  47. data/app/models/concerns/spree/typed_associations.rb +6 -0
  48. data/app/models/spree/address.rb +11 -1
  49. data/app/models/spree/adjusters/promotion.rb +1 -15
  50. data/app/models/spree/allowed_origin.rb +0 -1
  51. data/app/models/spree/api_key.rb +5 -6
  52. data/app/models/spree/authentication/strategies/oidc_strategy.rb +5 -5
  53. data/app/models/spree/base.rb +70 -22
  54. data/app/models/spree/calculator/flat_percent_item_total.rb +1 -3
  55. data/app/models/spree/calculator/flat_rate.rb +1 -3
  56. data/app/models/spree/calculator/flexi_rate.rb +1 -3
  57. data/app/models/spree/calculator/percent_on_line_item.rb +1 -1
  58. data/app/models/spree/calculator/price_sack.rb +1 -3
  59. data/app/models/spree/calculator/shipping/digital_delivery.rb +1 -3
  60. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +1 -3
  61. data/app/models/spree/calculator/shipping/flat_rate.rb +1 -3
  62. data/app/models/spree/calculator/shipping/flexi_rate.rb +1 -3
  63. data/app/models/spree/calculator/shipping/per_item.rb +1 -3
  64. data/app/models/spree/calculator/shipping/price_sack.rb +1 -3
  65. data/app/models/spree/calculator/tiered_flat_rate.rb +6 -23
  66. data/app/models/spree/calculator/tiered_percent.rb +7 -25
  67. data/app/models/spree/cart.rb +78 -18
  68. data/app/models/spree/channel/gating.rb +1 -1
  69. data/app/models/spree/channel.rb +4 -4
  70. data/app/models/spree/claim.rb +21 -1
  71. data/app/models/spree/claim_line_item.rb +41 -6
  72. data/app/models/spree/collection.rb +0 -1
  73. data/app/models/spree/collection_rule.rb +5 -21
  74. data/app/models/spree/commission_line.rb +1 -1
  75. data/app/models/spree/commission_rate.rb +2 -3
  76. data/app/models/spree/commission_rate_value.rb +1 -1
  77. data/app/models/spree/commission_rule.rb +4 -11
  78. data/app/models/spree/commission_rules/product_rule.rb +1 -1
  79. data/app/models/spree/company_invitation.rb +1 -0
  80. data/app/models/spree/consent_record.rb +0 -1
  81. data/app/models/spree/credit_card.rb +1 -1
  82. data/app/models/spree/current.rb +23 -0
  83. data/app/models/spree/custom_field.rb +2 -2
  84. data/app/models/spree/custom_field_definition.rb +9 -23
  85. data/app/models/spree/custom_fields/boolean.rb +1 -1
  86. data/app/models/spree/custom_fields/json.rb +1 -1
  87. data/app/models/spree/data_feed/google.rb +0 -2
  88. data/app/models/spree/data_request.rb +1 -1
  89. data/app/models/spree/delivery_method.rb +30 -13
  90. data/app/models/spree/delivery_method_rule.rb +4 -11
  91. data/app/models/spree/delivery_rate.rb +4 -5
  92. data/app/models/spree/delivery_rate_provider/base.rb +1 -0
  93. data/app/models/spree/delivery_zone.rb +0 -1
  94. data/app/models/spree/delivery_zone_member.rb +4 -4
  95. data/app/models/spree/digital_asset.rb +7 -0
  96. data/app/models/spree/digital_asset_provider/base.rb +2 -0
  97. data/app/models/spree/digital_link.rb +2 -5
  98. data/app/models/spree/discount.rb +1 -1
  99. data/app/models/spree/email_template.rb +25 -0
  100. data/app/models/spree/email_template_draft.rb +13 -0
  101. data/app/models/spree/email_template_revision.rb +17 -0
  102. data/app/models/spree/email_templates/entry.rb +118 -0
  103. data/app/models/spree/email_templates/sample_record.rb +16 -0
  104. data/app/models/spree/emails/branding.rb +80 -0
  105. data/app/models/spree/exchange.rb +15 -1
  106. data/app/models/spree/exchange_line_item.rb +121 -5
  107. data/app/models/spree/export.rb +0 -1
  108. data/app/models/spree/exports/products.rb +10 -1
  109. data/app/models/spree/exports/report.rb +1 -1
  110. data/app/models/spree/fee.rb +4 -2
  111. data/app/models/spree/fulfillment.rb +53 -27
  112. data/app/models/spree/fulfillment_changer.rb +2 -2
  113. data/app/models/spree/fulfillment_item.rb +0 -4
  114. data/app/models/spree/fulfillment_provider/base.rb +1 -0
  115. data/app/models/spree/gateway/bogus.rb +4 -0
  116. data/app/models/spree/gateway/custom_payment_source_method.rb +5 -0
  117. data/app/models/spree/gateway.rb +5 -1
  118. data/app/models/spree/gift_card.rb +12 -1
  119. data/app/models/spree/gift_card_batch.rb +0 -1
  120. data/app/models/spree/import.rb +2 -7
  121. data/app/models/spree/import_mapping.rb +1 -2
  122. data/app/models/spree/import_row.rb +2 -2
  123. data/app/models/spree/import_schemas/products.rb +1 -0
  124. data/app/models/spree/integration.rb +8 -18
  125. data/app/models/spree/invitation.rb +5 -5
  126. data/app/models/spree/line_item.rb +13 -2
  127. data/app/models/spree/locale.rb +11 -8
  128. data/app/models/spree/market.rb +1 -0
  129. data/app/models/spree/newsletter_subscriber.rb +3 -0
  130. data/app/models/spree/order.rb +56 -138
  131. data/app/models/spree/order_group.rb +11 -2
  132. data/app/models/spree/order_inventory.rb +10 -5
  133. data/app/models/spree/order_promotion.rb +1 -1
  134. data/app/models/spree/order_routing/has_strategy_preference.rb +1 -1
  135. data/app/models/spree/order_routing/strategy/base.rb +4 -2
  136. data/app/models/spree/order_routing/strategy/rules.rb +1 -1
  137. data/app/models/spree/order_routing_rule.rb +6 -22
  138. data/app/models/spree/package_type.rb +1 -2
  139. data/app/models/spree/payment/gateway_options.rb +14 -52
  140. data/app/models/spree/payment/processing.rb +2 -4
  141. data/app/models/spree/payment.rb +20 -5
  142. data/app/models/spree/payment_method/session_instrumentation.rb +1 -0
  143. data/app/models/spree/payment_method/store_credit.rb +4 -4
  144. data/app/models/spree/payment_method.rb +36 -4
  145. data/app/models/spree/payment_session.rb +5 -1
  146. data/app/models/spree/payment_setup_session.rb +1 -0
  147. data/app/models/spree/payout_provider/base.rb +3 -1
  148. data/app/models/spree/pickup_point_provider/base.rb +2 -0
  149. data/app/models/spree/price_list.rb +1 -2
  150. data/app/models/spree/price_rules/channel_rule.rb +1 -1
  151. data/app/models/spree/price_rules/customer_group_rule.rb +1 -1
  152. data/app/models/spree/product.rb +31 -7
  153. data/app/models/spree/product_submission.rb +0 -12
  154. data/app/models/spree/product_type.rb +0 -1
  155. data/app/models/spree/promotion/actions/create_line_items.rb +27 -17
  156. data/app/models/spree/promotion/rules/category.rb +0 -4
  157. data/app/models/spree/promotion/rules/channel.rb +0 -4
  158. data/app/models/spree/promotion/rules/country.rb +0 -4
  159. data/app/models/spree/promotion/rules/currency.rb +0 -4
  160. data/app/models/spree/promotion/rules/customer_group.rb +0 -4
  161. data/app/models/spree/promotion/rules/first_order.rb +0 -4
  162. data/app/models/spree/promotion/rules/item_total.rb +4 -8
  163. data/app/models/spree/promotion/rules/market.rb +0 -4
  164. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -4
  165. data/app/models/spree/promotion/rules/option_value.rb +0 -3
  166. data/app/models/spree/promotion/rules/product.rb +0 -4
  167. data/app/models/spree/promotion/rules/user.rb +0 -4
  168. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -4
  169. data/app/models/spree/promotion.rb +35 -6
  170. data/app/models/spree/promotion_action.rb +7 -14
  171. data/app/models/spree/promotion_action_line_item.rb +1 -1
  172. data/app/models/spree/promotion_handler/coupon.rb +59 -27
  173. data/app/models/spree/promotion_rule.rb +7 -14
  174. data/app/models/spree/purchase_order.rb +1 -0
  175. data/app/models/spree/quantity_rule.rb +1 -1
  176. data/app/models/spree/refund.rb +28 -3
  177. data/app/models/spree/return.rb +30 -2
  178. data/app/models/spree/return_line_item.rb +65 -14
  179. data/app/models/spree/role.rb +7 -7
  180. data/app/models/spree/saved_report.rb +1 -1
  181. data/app/models/spree/seller.rb +2 -1
  182. data/app/models/spree/seller_payout.rb +7 -0
  183. data/app/models/spree/seller_requirement.rb +4 -12
  184. data/app/models/spree/seller_requirement_custom_field.rb +1 -2
  185. data/app/models/spree/seller_requirement_submission.rb +2 -2
  186. data/app/models/spree/seller_requirements/accept_terms.rb +2 -3
  187. data/app/models/spree/seller_transfer.rb +5 -0
  188. data/app/models/spree/shipping_label.rb +1 -0
  189. data/app/models/spree/stock/availability_validator.rb +2 -2
  190. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  191. data/app/models/spree/stock/packer.rb +2 -2
  192. data/app/models/spree/stock/splitter/weight.rb +1 -1
  193. data/app/models/spree/stock_level/custom_events.rb +6 -0
  194. data/app/models/spree/stock_level.rb +1 -1
  195. data/app/models/spree/stock_movement.rb +1 -1
  196. data/app/models/spree/stock_receipt_item.rb +1 -1
  197. data/app/models/spree/stock_reservation.rb +2 -2
  198. data/app/models/spree/stock_transfer.rb +4 -2
  199. data/app/models/spree/store.rb +33 -7
  200. data/app/models/spree/store_credit.rb +8 -9
  201. data/app/models/spree/store_credit_event.rb +5 -5
  202. data/app/models/spree/tax_exemption_certificate.rb +2 -0
  203. data/app/models/spree/tax_identifier.rb +3 -1
  204. data/app/models/spree/tax_line.rb +53 -3
  205. data/app/models/spree/tax_provider/base.rb +71 -14
  206. data/app/models/spree/tax_provider/internal.rb +59 -33
  207. data/app/models/spree/tax_provider/recorded_share.rb +114 -0
  208. data/app/models/spree/tax_rate.rb +1 -2
  209. data/app/models/spree/taxonomy.rb +0 -1
  210. data/app/models/spree/variant.rb +4 -3
  211. data/app/models/spree/variant_media.rb +1 -1
  212. data/app/models/spree/webhook_endpoint.rb +10 -13
  213. data/app/models/spree/wishlist.rb +1 -6
  214. data/app/models/spree/wishlist_item/custom_events.rb +6 -0
  215. data/app/presenters/spree/csv/customer_presenter.rb +1 -1
  216. data/app/presenters/spree/csv/newsletter_subscriber_presenter.rb +1 -1
  217. data/app/presenters/spree/csv/order_line_item_presenter.rb +1 -1
  218. data/app/presenters/spree/csv/product_variant_presenter.rb +42 -12
  219. data/app/serializers/spree/emails/base_serializer.rb +14 -0
  220. data/app/serializers/spree/emails/export_serializer.rb +13 -0
  221. data/app/serializers/spree/emails/import_serializer.rb +19 -0
  222. data/app/serializers/spree/emails/invitation_serializer.rb +28 -0
  223. data/app/serializers/spree/emails/store_serializer.rb +31 -0
  224. data/app/serializers/spree/emails/user_serializer.rb +12 -0
  225. data/app/serializers/spree/emails/webhook_endpoint_serializer.rb +16 -0
  226. data/app/services/spree/carts/create.rb +8 -2
  227. data/app/services/spree/carts/destroy.rb +2 -2
  228. data/app/services/spree/carts/remove_out_of_stock_items.rb +2 -2
  229. data/app/services/spree/carts/split_by_seller.rb +1 -1
  230. data/app/services/spree/carts/update.rb +19 -5
  231. data/app/services/spree/catalogs/set_product_terms.rb +1 -1
  232. data/app/services/spree/categories/add_products.rb +13 -31
  233. data/app/services/spree/categories/remove_products.rb +12 -51
  234. data/app/services/spree/checkout/advance.rb +1 -4
  235. data/app/services/spree/collections/add_products.rb +10 -23
  236. data/app/services/spree/collections/remove_products.rb +7 -43
  237. data/app/services/spree/coupon_codes/bulk_generate.rb +8 -14
  238. data/app/services/spree/data_requests/create.rb +1 -1
  239. data/app/services/spree/deliveries/destroy.rb +2 -2
  240. data/app/services/spree/email_templates/check.rb +58 -0
  241. data/app/services/spree/email_templates/no_sample_record.rb +7 -0
  242. data/app/services/spree/email_templates/preview.rb +99 -0
  243. data/app/services/spree/emails/file_system.rb +23 -0
  244. data/app/services/spree/emails/filters.rb +84 -0
  245. data/app/services/spree/emails/liquid_context.rb +48 -0
  246. data/app/services/spree/emails/rendered_email.rb +14 -0
  247. data/app/services/spree/emails/renderer.rb +125 -0
  248. data/app/services/spree/emails/template.rb +51 -0
  249. data/app/services/spree/emails/template_data.rb +23 -0
  250. data/app/services/spree/emails/template_resolver.rb +109 -0
  251. data/app/services/spree/emails/text_converter.rb +72 -0
  252. data/app/services/spree/emails/translation_inliner.rb +134 -0
  253. data/app/services/spree/imports/row_processors/price_list_price.rb +10 -10
  254. data/app/services/spree/imports/row_processors/product_variant.rb +65 -34
  255. data/app/services/spree/imports/row_processors/purchase_order.rb +13 -13
  256. data/app/services/spree/locales.rb +4 -5
  257. data/app/services/spree/newsletter/subscribe.rb +8 -12
  258. data/app/services/spree/orders/build_fulfillments.rb +3 -2
  259. data/app/services/spree/orders/create.rb +2 -1
  260. data/app/services/spree/orders/discounts/create.rb +7 -4
  261. data/app/services/spree/orders/discounts/destroy.rb +1 -0
  262. data/app/services/spree/orders/discounts/update.rb +1 -0
  263. data/app/services/spree/orders/fees/create.rb +1 -0
  264. data/app/services/spree/orders/fees/destroy.rb +1 -0
  265. data/app/services/spree/orders/fees/update.rb +1 -0
  266. data/app/services/spree/orders/remove_line_item.rb +13 -3
  267. data/app/services/spree/orders/update.rb +10 -6
  268. data/app/services/spree/orders/update_item.rb +6 -3
  269. data/app/services/spree/orders/update_statuses.rb +3 -1
  270. data/app/services/spree/product_memberships.rb +61 -0
  271. data/app/services/spree/returns/eligibility_validator.rb +1 -1
  272. data/app/services/spree/search_provider/custom_field_schema.rb +2 -2
  273. data/app/services/spree/seeds/commission_rates.rb +1 -1
  274. data/app/services/spree/seeds/digital_delivery.rb +1 -1
  275. data/app/services/spree/seeds/payment_methods.rb +2 -2
  276. data/app/services/spree/seeds/saved_reports.rb +3 -3
  277. data/app/services/spree/sellers/requirements.rb +1 -2
  278. data/app/services/spree/shipping_labels/confirm_refund.rb +1 -1
  279. data/app/services/spree/shipping_labels/store_file.rb +3 -3
  280. data/app/services/spree/stock_levels/correct.rb +3 -3
  281. data/app/services/spree/stock_reservations/reserve.rb +2 -3
  282. data/app/services/spree/store_credits/apply.rb +15 -13
  283. data/app/services/spree/stores/provision_defaults.rb +15 -14
  284. data/app/subscribers/spree/seller_onboarding_subscriber.rb +1 -1
  285. data/app/views/layouts/spree/base_mailer.html.erb +2 -43
  286. data/app/views/layouts/spree/base_mailer.liquid +79 -0
  287. data/app/views/spree/admin_user_mailer/password_reset_email.liquid +14 -0
  288. data/app/views/spree/export_mailer/export_done.liquid +12 -0
  289. data/app/views/spree/import_mailer/import_done.liquid +15 -0
  290. data/app/views/spree/invitation_mailer/invitation_accepted.liquid +9 -0
  291. data/app/views/spree/invitation_mailer/invitation_email.liquid +13 -0
  292. data/app/views/spree/seller_user_mailer/password_reset_email.liquid +14 -0
  293. data/app/views/spree/shared/_mailer_button.html.erb +4 -5
  294. data/app/views/spree/shared/_mailer_hero.html.erb +6 -5
  295. data/app/views/spree/shared/_summary_row.liquid +8 -0
  296. data/app/views/spree/webhook_mailer/endpoint_disabled.liquid +21 -0
  297. data/app/workflows/spree/carts/add_item.rb +4 -4
  298. data/app/workflows/spree/carts/complete.rb +13 -3
  299. data/app/workflows/spree/carts/merge.rb +1 -1
  300. data/app/workflows/spree/carts/recalculate_totals.rb +5 -0
  301. data/app/workflows/spree/carts/upsert_items.rb +18 -9
  302. data/app/workflows/spree/claims/approve.rb +5 -22
  303. data/app/workflows/spree/claims/cancel.rb +5 -21
  304. data/app/workflows/spree/claims/create.rb +15 -0
  305. data/app/workflows/spree/claims/deny.rb +7 -0
  306. data/app/workflows/spree/claims/resolve.rb +34 -31
  307. data/app/workflows/spree/customers/anonymize.rb +3 -4
  308. data/app/workflows/spree/customers/create.rb +1 -1
  309. data/app/workflows/spree/data_requests/fulfill.rb +2 -2
  310. data/app/workflows/spree/deliveries/update_tracking.rb +1 -1
  311. data/app/workflows/spree/email_templates/discard_draft.rb +20 -0
  312. data/app/workflows/spree/email_templates/publish.rb +70 -0
  313. data/app/workflows/spree/email_templates/restore_revision.rb +33 -0
  314. data/app/workflows/spree/email_templates/revert.rb +29 -0
  315. data/app/workflows/spree/email_templates/save_draft.rb +85 -0
  316. data/app/workflows/spree/exchanges/approve.rb +5 -22
  317. data/app/workflows/spree/exchanges/cancel.rb +5 -21
  318. data/app/workflows/spree/exchanges/create.rb +6 -0
  319. data/app/workflows/spree/exchanges/fulfill.rb +75 -51
  320. data/app/workflows/spree/exchanges/receive.rb +6 -65
  321. data/app/workflows/spree/fulfillments/cancel.rb +1 -1
  322. data/app/workflows/spree/fulfillments/create.rb +51 -47
  323. data/app/workflows/spree/fulfillments/fulfill.rb +23 -27
  324. data/app/workflows/spree/fulfillments/mark_delivered.rb +1 -1
  325. data/app/workflows/spree/fulfillments/replacements.rb +59 -0
  326. data/app/workflows/spree/gift_cards/apply.rb +2 -2
  327. data/app/workflows/spree/orders/add_item.rb +5 -1
  328. data/app/workflows/spree/orders/cancel.rb +3 -3
  329. data/app/workflows/spree/orders/complete.rb +16 -8
  330. data/app/workflows/spree/payments/process.rb +2 -2
  331. data/app/workflows/spree/post_sale/approval.rb +35 -0
  332. data/app/workflows/spree/post_sale/cancellation.rb +44 -0
  333. data/app/workflows/spree/post_sale/receipt.rb +92 -0
  334. data/app/workflows/spree/products/nested_attributes.rb +1 -1
  335. data/app/workflows/spree/purchase_orders/cancel.rb +1 -1
  336. data/app/workflows/spree/purchase_orders/close.rb +3 -31
  337. data/app/workflows/spree/purchase_orders/mark_draft.rb +2 -2
  338. data/app/workflows/spree/purchase_orders/mark_ordered.rb +2 -2
  339. data/app/workflows/spree/purchase_orders/receive.rb +1 -1
  340. data/app/workflows/spree/purchase_orders/update.rb +5 -34
  341. data/app/workflows/spree/receivables/closing_short.rb +46 -0
  342. data/app/workflows/spree/receivables/draft_editing.rb +48 -0
  343. data/app/workflows/spree/refunds/create.rb +5 -2
  344. data/app/workflows/spree/refunds/order_payments.rb +14 -2
  345. data/app/workflows/spree/refunds/tax_credit.rb +67 -0
  346. data/app/workflows/spree/returns/approve.rb +5 -22
  347. data/app/workflows/spree/returns/cancel.rb +5 -22
  348. data/app/workflows/spree/returns/create.rb +8 -0
  349. data/app/workflows/spree/returns/receive.rb +5 -76
  350. data/app/workflows/spree/returns/refund.rb +31 -8
  351. data/app/workflows/spree/seller_requirement_submissions/create.rb +1 -2
  352. data/app/workflows/spree/seller_transfers/reverse.rb +28 -1
  353. data/app/workflows/spree/shipping_labels/purchase.rb +8 -8
  354. data/app/workflows/spree/shipping_labels/record.rb +5 -5
  355. data/app/workflows/spree/shipping_labels/refund.rb +2 -2
  356. data/app/workflows/spree/stock_receipts/recording.rb +4 -4
  357. data/app/workflows/spree/stock_transfers/cancel.rb +2 -2
  358. data/app/workflows/spree/stock_transfers/close.rb +3 -30
  359. data/app/workflows/spree/stock_transfers/mark_draft.rb +1 -1
  360. data/app/workflows/spree/stock_transfers/mark_in_transit.rb +3 -3
  361. data/app/workflows/spree/stock_transfers/mark_ready.rb +2 -2
  362. data/app/workflows/spree/stock_transfers/receive.rb +1 -1
  363. data/app/workflows/spree/stock_transfers/update.rb +5 -33
  364. data/config/i18n-tasks.yml +32 -18
  365. data/config/initializers/alba.rb +7 -0
  366. data/config/language_names.csv +264 -0
  367. data/config/locales/ar.yml +811 -0
  368. data/config/locales/be.yml +855 -0
  369. data/config/locales/bg.yml +723 -0
  370. data/config/locales/ca.yml +689 -0
  371. data/config/locales/cs.yml +855 -0
  372. data/config/locales/da.yml +771 -0
  373. data/config/locales/de-CH.yml +248 -0
  374. data/config/locales/de.yml +835 -0
  375. data/config/locales/el.yml +769 -0
  376. data/config/locales/en.yml +37 -503
  377. data/config/locales/es-CL.yml +301 -0
  378. data/config/locales/es-EC.yml +186 -0
  379. data/config/locales/es-MX.yml +334 -0
  380. data/config/locales/es.yml +831 -0
  381. data/config/locales/et.yml +644 -0
  382. data/config/locales/fa.yml +709 -0
  383. data/config/locales/fi.yml +771 -0
  384. data/config/locales/fr.yml +830 -0
  385. data/config/locales/hu.yml +751 -0
  386. data/config/locales/id.yml +756 -0
  387. data/config/locales/it.yml +833 -0
  388. data/config/locales/ja.yml +726 -0
  389. data/config/locales/km.yml +759 -0
  390. data/config/locales/ko.yml +575 -0
  391. data/config/locales/ku.yml +753 -0
  392. data/config/locales/lt.yml +821 -0
  393. data/config/locales/lv.yml +685 -0
  394. data/config/locales/nb.yml +824 -0
  395. data/config/locales/ne.yml +823 -0
  396. data/config/locales/nl.yml +826 -0
  397. data/config/locales/pl.yml +835 -0
  398. data/config/locales/pt-BR.yml +547 -0
  399. data/config/locales/pt.yml +636 -0
  400. data/config/locales/ro.yml +750 -0
  401. data/config/locales/ru.yml +834 -0
  402. data/config/locales/sk.yml +680 -0
  403. data/config/locales/sl-SI.yml +600 -0
  404. data/config/locales/sv.yml +827 -0
  405. data/config/locales/th.yml +745 -0
  406. data/config/locales/tr.yml +777 -0
  407. data/config/locales/uk.yml +836 -0
  408. data/config/locales/vi.yml +768 -0
  409. data/config/locales/zh-CN.yml +786 -0
  410. data/config/locales/zh-TW.yml +834 -0
  411. data/db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb +5 -0
  412. data/db/migrate/20261001000001_add_post_sale_tax.rb +30 -0
  413. data/db/migrate/20261001000001_convert_preferences_to_json.rb +166 -0
  414. data/db/migrate/20261001000001_create_spree_email_templates.rb +52 -0
  415. data/lib/generators/spree/dummy/dummy_generator.rb +0 -9
  416. data/lib/generators/spree/dummy/templates/rails/test.rb +7 -0
  417. data/lib/spree/checkout/default_requirements.rb +37 -13
  418. data/lib/spree/core/configuration.rb +1 -1
  419. data/lib/spree/core/controller_helpers/store.rb +1 -1
  420. data/lib/spree/core/dependencies.rb +5 -4
  421. data/lib/spree/core/emails/escaped_output.rb +60 -0
  422. data/lib/spree/core/engine.rb +48 -167
  423. data/lib/spree/core/permissions/default_catalog.rb +5 -0
  424. data/lib/spree/core/preferences/json_conversion.rb +182 -0
  425. data/lib/spree/core/preferences/masking.rb +4 -1
  426. data/lib/spree/core/preferences/preferable.rb +137 -83
  427. data/lib/spree/core/preferences/preferable_class_methods.rb +81 -146
  428. data/lib/spree/core/previews/import_preview.rb +10 -0
  429. data/lib/spree/core/tax/provider_error.rb +37 -0
  430. data/lib/spree/core/version.rb +1 -1
  431. data/lib/spree/core.rb +85 -370
  432. data/lib/spree/emails/editable_templates.rb +82 -0
  433. data/lib/spree/events/catalog.rb +189 -0
  434. data/lib/spree/events.rb +21 -1
  435. data/lib/spree/hooks.rb +0 -17
  436. data/lib/spree/i18n.rb +32 -15
  437. data/lib/spree/reporting/adapters/live.rb +6 -6
  438. data/lib/spree/reporting/default_vocabulary.rb +22 -10
  439. data/lib/spree/reporting/hydration.rb +1 -1
  440. data/lib/spree/reporting/query.rb +8 -0
  441. data/lib/spree/reporting/schema.rb +10 -10
  442. data/lib/spree/testing_support/editable_email_templates.rb +61 -0
  443. data/lib/spree/testing_support/emails.rb +22 -0
  444. data/lib/spree/testing_support/factories/cart_factory.rb +1 -1
  445. data/lib/spree/testing_support/factories/email_template_factory.rb +28 -0
  446. data/lib/spree/testing_support/factories/order_factory.rb +2 -2
  447. data/lib/spree/testing_support/factories/refund_factory.rb +1 -1
  448. data/lib/spree/testing_support/factories/stock_factory.rb +1 -1
  449. data/lib/spree/testing_support/factories/variant_factory.rb +1 -1
  450. data/lib/spree/testing_support/i18n.rb +3 -94
  451. data/lib/spree/testing_support/lifecycle_events.rb +1 -1
  452. data/lib/spree/testing_support/order_walkthrough.rb +1 -1
  453. data/lib/spree/testing_support/preferences.rb +0 -5
  454. data/lib/spree/testing_support/store.rb +9 -1
  455. data/lib/spree/upgrades/5_6_to_6_0/manifest.yml +45 -0
  456. data/lib/tasks/categories_and_collections.rake +3 -3
  457. data/lib/tasks/core.rake +6 -4
  458. data/lib/tasks/media.rake +3 -3
  459. data/lib/tasks/package_types.rake +1 -1
  460. data/lib/tasks/preferences_json.rake +101 -0
  461. data/spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb +4 -0
  462. metadata +188 -44
  463. data/app/models/acts_as_taggable_on/tag_decorator.rb +0 -10
  464. data/app/models/concerns/spree/has_image_alt_text.rb +0 -18
  465. data/app/models/spree/base_analytics_event_handler.rb +0 -54
  466. data/app/models/spree/invitations/store.rb +0 -6
  467. data/app/models/spree/preference.rb +0 -14
  468. data/app/models/spree/promotion_handler/page.rb +0 -25
  469. data/app/models/spree/promotion_handler/promotion_duplicator.rb +0 -60
  470. data/app/models/spree/stock/differentiator.rb +0 -45
  471. data/app/presenters/spree/filters/options_presenter.rb +0 -47
  472. data/app/services/spree/carts/empty.rb +0 -42
  473. data/app/services/spree/country_to_timezone.rb +0 -273
  474. data/app/services/spree/payments/create.rb +0 -92
  475. data/app/validators/spree/url_validator.rb +0 -23
  476. data/app/views/active_storage/blobs/_blob.html.erb +0 -14
  477. data/app/views/spree/admin_user_mailer/password_reset_email.html.erb +0 -8
  478. data/app/views/spree/export_mailer/export_done.html.erb +0 -7
  479. data/app/views/spree/import_mailer/import_done.html.erb +0 -12
  480. data/app/views/spree/invitation_mailer/invitation_accepted.html.erb +0 -4
  481. data/app/views/spree/invitation_mailer/invitation_email.html.erb +0 -12
  482. data/app/views/spree/seller_user_mailer/password_reset_email.html.erb +0 -8
  483. data/app/views/spree/shared/_base_mailer_footer.html.erb +0 -19
  484. data/app/views/spree/shared/_base_mailer_header.html.erb +0 -8
  485. data/app/views/spree/shared/_base_mailer_stylesheets.html.erb +0 -399
  486. data/app/views/spree/shared/_mailer_logo.html.erb +0 -41
  487. data/app/views/spree/shared/_purchased_items_styles.html.erb +0 -119
  488. data/app/views/spree/webhook_mailer/endpoint_disabled.html.erb +0 -51
  489. data/app/views/spree/webhook_mailer/endpoint_disabled.text.erb +0 -10
  490. data/app/workflows/spree/fulfillments/purchase_label.rb +0 -40
  491. data/app/workflows/spree/returns/purchase_label.rb +0 -32
  492. data/lib/spree/analytics.rb +0 -11
  493. data/lib/spree/core/preferences/scoped_store.rb +0 -34
  494. data/lib/spree/core/preferences/store.rb +0 -105
  495. data/lib/spree/translation_migrations.rb +0 -52
@@ -0,0 +1,835 @@
1
+ ---
2
+ de:
3
+ activemodel:
4
+ errors:
5
+ messages:
6
+ blank: darf nicht leer sein
7
+ activerecord:
8
+ attributes:
9
+ spree/address:
10
+ address1: Adresse
11
+ address2: Adresse (Fortsetzung)
12
+ city: Stadt
13
+ company: Firma
14
+ country: Land
15
+ label: Etikette
16
+ phone: Telefonnummer
17
+ state: Bundesland
18
+ spree/calculator/tiered_flat_rate:
19
+ preferred_base_amount: Basisbetrag
20
+ preferred_tiers: Stufen
21
+ spree/calculator/tiered_percent:
22
+ preferred_base_percent: Basisprozent
23
+ preferred_tiers: Stufen
24
+ spree/country:
25
+ iso: ISO
26
+ iso3: ISO3
27
+ iso_name: ISO-Name
28
+ name: Name
29
+ numcode: ISO-Nummer
30
+ spree/credit_card:
31
+ base: Basis
32
+ cc_type: Typ
33
+ month: Monat
34
+ name: Name
35
+ number: Nummer
36
+ verification_value: Kartenprüfnummer
37
+ year: Jahr
38
+ spree/customer_group:
39
+ description: Beschreibung
40
+ name: Name
41
+ spree/gift_card:
42
+ amount_used: Verwendeter Betrag
43
+ expires_at: Läuft ab am
44
+ spree/import:
45
+ preferred_delimiter: Trennzeichen
46
+ spree/import_mapping:
47
+ file_column: Dateispalte
48
+ schema_field: Schemafeld
49
+ spree/import_row:
50
+ row_number: Nummer
51
+ spree/inventory_unit:
52
+ state: Status
53
+ spree/invitation:
54
+ inviter: Einladende Person
55
+ spree/line_item:
56
+ price: Preis
57
+ quantity: Menge
58
+ spree/option_type:
59
+ filterable: filtrierbar
60
+ kind: Art
61
+ name: Name
62
+ spree/option_value:
63
+ color_code: Farbcode
64
+ image: Farbmuster-Bild
65
+ spree/order:
66
+ checkout_complete: Bestellung Erfolgreich
67
+ completed_at: Abgeschlossen am
68
+ considered_risky: Riskant
69
+ coupon_code: Gutscheincode
70
+ created_at: Bestelldatum
71
+ email: Kunden E-Mail
72
+ internal_note: Interne Notiz
73
+ ip_address: IP Adresse
74
+ item_count: Artikel
75
+ item_total: Artikel gesamt
76
+ number: Bestellnummer
77
+ payment_state: Bezahlstatus
78
+ shipment_state: Versandstatus
79
+ special_instructions: Zusätzliche Angaben
80
+ state: Status
81
+ total: Gesamtsumme
82
+ spree/order/bill_address:
83
+ address1: Rechnungsanschrift Straße
84
+ city: Rechnungsanschrift Ort
85
+ phone: Rechnungsanschrift Telefon
86
+ state: Rechnungsanschrift Bundesland
87
+ spree/order/ship_address:
88
+ address1: Lieferanschrift Straße
89
+ city: Lieferanschrift Ort
90
+ phone: Lieferanschrift Telefon
91
+ state: Lieferadresse Bundesland
92
+ spree/payment:
93
+ amount: Betrag
94
+ number: Nummer
95
+ spree/payment_method:
96
+ name: Name
97
+ spree/policy:
98
+ body: Inhalt
99
+ owner: Richtlinie für
100
+ spree/price_list:
101
+ description: Beschreibung
102
+ ends_at: Endet am
103
+ match_policy: Übereinstimmungsregel
104
+ name: Name
105
+ priority: Priorität
106
+ starts_at: Beginnt am
107
+ status: Status
108
+ spree/price_rule:
109
+ priority: Priorität
110
+ type: Typ
111
+ spree/product:
112
+ available_on: Erhältlich ab
113
+ cost_currency: Kostenwährung
114
+ cost_price: Einkaufspreis
115
+ description: Beschreibung
116
+ discontinue_on: Eingestellt Am
117
+ less_than: Weniger als
118
+ make_active_at: Aktivieren am
119
+ master_price: Nettopreis
120
+ more_than: Mehr als
121
+ name: Name
122
+ on_hand: verfügbar
123
+ tax_category: Steuerkategorie
124
+ spree/promotion:
125
+ advertise: Bewerben
126
+ code: Code
127
+ description: Beschreibung
128
+ event_name: Event Name
129
+ expires_at: Läuft aus am
130
+ generate_code: Gutscheincode generieren
131
+ name: Name
132
+ path: Pfad
133
+ promotion_category: Werbeaktion Kategorie
134
+ starts_at: Beginnt am
135
+ usage_limit: Begrenztes Kontingent
136
+ spree/promotion_category:
137
+ code: Code
138
+ name: Werbungskategorie
139
+ spree/property:
140
+ name: Name
141
+ presentation: Angezeigter Wert
142
+ spree/role:
143
+ name: Name
144
+ spree/shipment:
145
+ number: Nummer
146
+ spree/state:
147
+ abbr: Abkürzung
148
+ name: Name
149
+ spree/store:
150
+ address: Adresse
151
+ contact_phone: Kontakttelefon
152
+ mail_from_address: Versandadresse
153
+ meta_description: Seitenbeschreibung
154
+ meta_keywords: Stichwörter
155
+ name: Name des Shops
156
+ preferred_digital_asset_authorized_clicks: Download-Klick-Limit
157
+ preferred_digital_asset_authorized_days: Download-Tage-Limit
158
+ preferred_limit_digital_download_count: Anzahl der Downloads digitaler Links begrenzen
159
+ preferred_limit_digital_download_days: Download-Tage digitaler Links begrenzen
160
+ seo_robots: SEO-Roboter
161
+ seo_title: Name (Suchmaschinenoptimiert)
162
+ storefront_custom_code_body_end: Benutzerdefinierter Code vor dem schließenden Body-Tag
163
+ storefront_custom_code_body_start: Benutzerdefinierter Code nach dem öffnenden Body-Tag
164
+ storefront_custom_code_head: Benutzerdefinierter Code im Seitenkopf
165
+ url: Adresse des Shops
166
+ spree/store_credit:
167
+ amount_used: Vervendete Summe
168
+ spree/tax_category:
169
+ description: Beschreibung
170
+ name: Name
171
+ spree/tax_rate:
172
+ amount: Satz
173
+ included_in_price: Im Preis enthalten
174
+ show_rate_in_label: Zeige Steuersatz im Label
175
+ spree/taxon:
176
+ name: Name
177
+ permalink: Permalink
178
+ position: Posten
179
+ sort_order: Sortierreihenfolge
180
+ spree/taxonomy:
181
+ name: Name
182
+ spree/user:
183
+ avatar: Avatar
184
+ email: E-Mail
185
+ password: Passwort
186
+ password_confirmation: Passwort Bestätigung
187
+ spree/variant:
188
+ cost_currency: Kostenwährung
189
+ cost_price: Einkaufspreis
190
+ depth: Tiefe
191
+ height: Höhe
192
+ price: Preis
193
+ sku: Artikelnummer
194
+ weight: Gewicht
195
+ width: Breite
196
+ spree/zone:
197
+ description: Beschreibung
198
+ name: Name
199
+ user:
200
+ current_sign_in: Aktuelle Anmeldung am
201
+ last_sign_in: Letzte Anmeldung am
202
+ sign_in_count: Anzahl der Anmeldungen
203
+ errors:
204
+ messages:
205
+ blank: darf nicht leer sein
206
+ models:
207
+ spree/allowed_origin:
208
+ attributes:
209
+ origin:
210
+ must_be_origin_only: muss ein Ursprung (Schema und Host) ohne Pfad, Abfrage oder Fragment sein
211
+ spree/classification:
212
+ attributes:
213
+ taxon_id:
214
+ already_linked: Ist bereits mit dem Produkt verknüpft.
215
+ spree/credit_card:
216
+ attributes:
217
+ base:
218
+ card_expired: Karte abgelaufen
219
+ expiry_invalid: Falsches Ablaufdatum
220
+ spree/gift_card:
221
+ attributes:
222
+ base:
223
+ cannot_destroy_used_gift_card: Eine verwendete Geschenkkarte kann nicht gelöscht werden
224
+ spree/import:
225
+ attributes:
226
+ attachment:
227
+ content_type: hat keinen zulässigen Inhaltstyp
228
+ type:
229
+ inclusion: ist nicht in der Liste der zulässigen Typen enthalten
230
+ spree/line_item:
231
+ attributes:
232
+ currency:
233
+ must_match_order_currency: Muss mit der Bestellungswährung übereinstimmen
234
+ spree/market:
235
+ attributes:
236
+ base:
237
+ cannot_destroy_default_market: Der Standardmarkt kann nicht gelöscht werden.
238
+ cannot_destroy_last_market: Der einzige Markt kann nicht gelöscht werden.
239
+ spree/market_country:
240
+ attributes:
241
+ country:
242
+ already_in_market: ist in diesem Shop bereits einem anderen Markt zugeordnet
243
+ not_in_shipping_zone: wird von keiner Versandzone abgedeckt. Bitte richten Sie zuerst eine Versandzone ein.
244
+ spree/payment:
245
+ attributes:
246
+ amount:
247
+ greater_than_max_amount: ist größer als der zulässige Höchstbetrag von %{max_amount}
248
+ spree/price_list:
249
+ attributes:
250
+ ends_at:
251
+ must_be_after_starts_at: muss nach dem Beginn liegen
252
+ spree/product:
253
+ attributes:
254
+ base:
255
+ cannot_destroy_if_attached_to_line_items: Produkte können nicht gelöscht werden wenn sie in einem Einzelposten sind
256
+ discontinue_on:
257
+ invalid_date_range: Muss später als das verfügbare Datum sein
258
+ spree/product_publication:
259
+ attributes:
260
+ unpublished_at:
261
+ must_be_after_published_at: muss nach dem Veröffentlichungsdatum liegen
262
+ spree/promotion:
263
+ attributes:
264
+ expires_at:
265
+ invalid_date_range: Muss nach dem Startdatum liegen
266
+ spree/refund:
267
+ attributes:
268
+ amount:
269
+ greater_than_allowed: Maximalwert überschritten
270
+ spree/store:
271
+ attributes:
272
+ base:
273
+ cannot_destroy_only_store: Der einzige Shop kann nicht gelöscht werden.
274
+ spree/store_credit:
275
+ attributes:
276
+ amount_authorized:
277
+ exceeds_total_credits: Überschreitet das Gesamtguthaben
278
+ amount_used:
279
+ cannot_be_greater_than_amount: Kann nicht größer als die Summe sein.
280
+ greater_than_zero_restrict_delete: Ist größer als Null. Guthaben kann nicht gelöscht werden.
281
+ spree/user:
282
+ attributes:
283
+ bill_address_id:
284
+ belongs_to_other_user: gehört zu einem anderen Benutzer
285
+ deprecated_in_completed_order: in abgeschlossener Bestellung veraltet
286
+ ship_address_id:
287
+ belongs_to_other_user: gehört zu einem anderen Benutzer
288
+ deprecated_in_completed_order: in abgeschlossener Bestellung veraltet
289
+ spree/variant:
290
+ attributes:
291
+ base:
292
+ cannot_destroy_if_attached_to_line_items: Variante kann nicht gelöscht werden wenn sie zu einem Einzelposten gehört
293
+ spree/webhook_endpoint:
294
+ attributes:
295
+ url:
296
+ internal_address_not_allowed: darf nicht auf eine interne oder private Netzwerkadresse verweisen
297
+ models:
298
+ spree/address:
299
+ one: Adresse
300
+ other: Adressen
301
+ spree/classification:
302
+ one: Klassifizierung
303
+ other: Klassifizierungen
304
+ spree/country:
305
+ one: Land
306
+ other: Länder
307
+ spree/credit_card:
308
+ one: Kreditkarte
309
+ other: Kreditkarten
310
+ spree/customer_group:
311
+ one: Kundengruppe
312
+ other: Kundengruppen
313
+ spree/customer_group_user:
314
+ one: Kundengruppenbenutzer
315
+ other: Kundengruppenbenutzer
316
+ spree/export:
317
+ one: Export
318
+ other: Exporte
319
+ spree/integration:
320
+ one: Integration
321
+ other: Integrationen
322
+ spree/inventory_unit:
323
+ one: Inventarnummer
324
+ other: Inventarnummern
325
+ spree/line_item:
326
+ one: Einzelposten
327
+ other: Einzelposten
328
+ spree/option_type:
329
+ one: Gewählte Option
330
+ other: Gewählte Optionen
331
+ spree/option_value:
332
+ one: Gewählter Optionswert
333
+ other: Gewählte Optionswerte
334
+ spree/order:
335
+ one: Bestellung
336
+ other: Bestellungen
337
+ spree/payment:
338
+ one: Bezahlung
339
+ other: Bezahlungen
340
+ spree/payment_method:
341
+ one: Zahlungsart
342
+ other: Zahlungsarten
343
+ spree/price:
344
+ one: Preis
345
+ other: Preise
346
+ spree/price_list:
347
+ one: Preisliste
348
+ other: Preislisten
349
+ spree/price_rule:
350
+ one: Preisregel
351
+ other: Preisregeln
352
+ spree/product:
353
+ one: Produkt
354
+ other: Produkte
355
+ spree/promotion:
356
+ one: Werbung
357
+ other: Werbungen
358
+ spree/promotion_category:
359
+ one: Werbungskategorie
360
+ other: Werbungskategorie
361
+ spree/property:
362
+ one: Eigenschaft
363
+ other: Eigenschaften
364
+ spree/refund_reason:
365
+ one: Begründung der Gutschrift
366
+ other: Gutschriftsbegründungen
367
+ spree/role:
368
+ one: Rolle
369
+ other: Rollen
370
+ spree/shipment:
371
+ one: Lieferung
372
+ other: Lieferungen
373
+ spree/shipping_method:
374
+ one: Versandtyp
375
+ other: Versandtypen
376
+ spree/state:
377
+ one: Bundesland
378
+ other: Bundesländer
379
+ spree/stock_location:
380
+ one: Lagerstätte
381
+ other: Lagerstätten
382
+ spree/stock_movement:
383
+ one: Lagerbewegung
384
+ other: Lagerbewegungen
385
+ spree/stock_transfer:
386
+ one: Umlagerung
387
+ other: Umlagerungen
388
+ spree/store:
389
+ one: Shop
390
+ other: Shops
391
+ spree/store_credit:
392
+ one: Guthaben
393
+ other: Guthaben
394
+ spree/tax_category:
395
+ one: Steuerkategorie
396
+ other: Steuerkategorien
397
+ spree/tax_rate:
398
+ one: Steuersatz
399
+ other: Steuersätze
400
+ spree/taxon:
401
+ one: Produktklasse
402
+ other: Produktklassen
403
+ spree/taxonomy:
404
+ one: Produktklassifizierung
405
+ other: Produktklassifizierungen
406
+ spree/user:
407
+ one: Benutzer
408
+ other: Benutzer
409
+ spree/variant:
410
+ one: Variante
411
+ other: Varianten
412
+ spree/zone:
413
+ one: Gebiet
414
+ other: Gebiete
415
+ errors:
416
+ messages:
417
+ already_confirmed: wurde bereits bestätigt
418
+ not_found: nicht gefunden
419
+ not_locked: war nicht gesperrt
420
+ not_saved:
421
+ one: 'Ein Fehler hat das Speichern von %{resource} verhindert:'
422
+ other: "%{count} Fehler haben das Speichern von %{resource} verhindert:"
423
+ number:
424
+ percentage:
425
+ format:
426
+ precision: 1
427
+ spree:
428
+ accept: Akzeptieren
429
+ accepted: Akzeptiert
430
+ accepts_email_marketing: Akzeptiert E-Mail-Marketing
431
+ account: Konto
432
+ active: Aktiv
433
+ address: Adresse
434
+ address1: Adresse
435
+ address2: Adresse (Zusatz)
436
+ adjustment: Anpassung
437
+ adjustment_labels:
438
+ tax_rates:
439
+ excluding_tax: "%{name}%{amount}"
440
+ including_tax: "%{name}%{amount} (Im Preis enthalten)"
441
+ adjustments_deleted: Anpassungen gelöscht
442
+ admin_user_mailer:
443
+ password_reset_email:
444
+ action: Passwort zurücksetzen
445
+ expiry_notice: Dieser Link zum Zurücksetzen des Passworts läuft in Kürze ab. Falls Sie dies nicht angefordert haben, ist keine Aktion erforderlich.
446
+ greeting: Hallo %{name},
447
+ ignore_notice: Falls Sie kein Zurücksetzen des Passworts angefordert haben, können Sie diese E-Mail bedenkenlos ignorieren. Ihr Passwort wird nicht geändert.
448
+ instructions: Wir haben eine Anfrage zum Zurücksetzen des Passworts für Ihr %{store_name}-Administratorkonto erhalten. Klicken Sie auf die Schaltfläche unten, um ein neues Passwort zu wählen.
449
+ subject: Anweisungen zum Zurücksetzen des Passworts
450
+ all: Alles
451
+ amount: Summe
452
+ api_key_no_current_key: Kein API-Schlüssel hat diese Anfrage authentifiziert
453
+ api_key_scopes_immutable: kann nach der Erstellung des Schlüssels nicht geändert werden; erstellen Sie einen neuen Schlüssel mit den benötigten Berechtigungen und widerrufen Sie diesen
454
+ approver: Zustimmer
455
+ authorized: Autorisiert
456
+ availability: Verfügbarkeit
457
+ backorderable: Nachbestellbar
458
+ backordered: Nachbestellt
459
+ bill_address: Rechnungsadresse
460
+ billing_address: Rechnungsadresse
461
+ calculator: Rechner
462
+ canceled: Storniert
463
+ canceler: Abgebrochen von
464
+ cannot_be_destroyed: Bestellung kann nicht gelöscht werden.
465
+ capture: erfassen
466
+ cart: Warenkorb
467
+ cart_already_updated: Der Warenkorb wurde bereits aktualisiert.
468
+ cart_line_item:
469
+ delivery_unavailable: "%{li_name} kann nicht an die ausgewählte Adresse geliefert werden"
470
+ discontinued: "%{li_name} wurde entfernt, da der Artikel ausgelaufen ist"
471
+ out_of_stock: "%{li_name} wurde entfernt, da der Artikel ausverkauft ist"
472
+ categories: Kategorien
473
+ category: Kategorie
474
+ channel: Kanal
475
+ channels: Vertriebskanäle
476
+ checkout: Zur Kasse
477
+ checkout_requirements:
478
+ email_required: E-Mail-Adresse ist erforderlich
479
+ line_items_required: Fügen Sie mindestens einen Artikel zu Ihrem Warenkorb hinzu
480
+ payment_required: Fügen Sie eine Zahlungsmethode hinzu
481
+ ship_address_required: Lieferadresse ist erforderlich
482
+ city: Ort
483
+ color_code: Farbcode
484
+ company: Firma
485
+ compare_at_amount: Vergleichspreis
486
+ compare_at_price: zum Preis vergleichen
487
+ complete: komplett
488
+ confirm: Bestätigen
489
+ cost_price: Einkaufspreis
490
+ count_on_hand: Anzahl auf Lager
491
+ country: Land
492
+ coupon_code: Gutschein-Code
493
+ coupon_code_already_applied: Der Gutschein-Code wurde bereits bei dieser Bestellung eingelöst
494
+ coupon_code_applied: Der Gutschein wurde erfolgreich zu Ihrer Bestellung zugeordnet.
495
+ coupon_code_better_exists: Der zuvor angegebene Gutscheincode ergibt ein besseres Angebot
496
+ coupon_code_expired: Der Gutschein-Code ist abgelaufen
497
+ coupon_code_max_usage: Limit für Gutschein-Codes erreicht
498
+ coupon_code_not_eligible: Der Gutschein-Code kann nicht auf diese Bestellung angewendet werden
499
+ coupon_code_not_found: Der eingegebene Gutschein-Code existiert nicht. Bitte versuchen Sie es noch einmal.
500
+ coupon_code_unknown_error: Der Gutschein-Code verursachte ein unbekannntes Problem
501
+ coupon_code_used: Der eingegebene Gutscheincode wurde bereits verwendet. Bitte versuchen Sie es erneut.
502
+ created_at: Erstellt am
503
+ credit_card: Kreditkarte
504
+ currency: Währung
505
+ currency_not_supported_by_store: wird von diesem Shop nicht unterstützt
506
+ customer: Kunde
507
+ customers: Kunden
508
+ default: Standard
509
+ default_stock_location_name: Shop-Standort
510
+ default_wishlist_name: Wunschliste
511
+ delivery: Versand
512
+ depth: Tiefe
513
+ description: Beschreibung
514
+ destination: Ziel
515
+ destroy: Entfernen
516
+ details: Details
517
+ digital:
518
+ digital_delivery: Digitale Lieferung
519
+ digital_assets: Digitale Assets
520
+ discontinued: Eingestellt
521
+ discontinued_variants_present: Einige Einzelposten in dieser Bestellung enthalten Produkte, die nicht mehr verfügbar sind.
522
+ display_delivery_range: Lieferung in %{delivery_range} Werktagen
523
+ draft: Entwurf
524
+ eligibility_errors:
525
+ messages:
526
+ has_excluded_product: Der Warenkorb enthält Produkt/e, welche die Zuweisung des Gutschein-Codes verhindern.
527
+ item_total_less_than: Für Bestellungen unter einem Gesamtwert von %{amount} kann dieser Gutschein-Code nicht verwendet werden.
528
+ item_total_less_than_or_equal: Für Bestellungen von/unter einem Gesamtwert von %{amount} kann dieser Gutschein-Code nicht verwendet werden.
529
+ item_total_more_than: Der Gutschein-Code ist nur für Bestellungen mit einer Gesamtsumme bis %{amount} gültig.
530
+ item_total_more_than_or_equal: Der Gutschein-Code ist nur für Bestellungen mit einer Gesamtsumme von/bis %{amount} gültig.
531
+ limit_once_per_user: Dieser Gutschein-Code ist nur einmal pro Benutzer gültig.
532
+ missing_product: Für diesen Gutschein-Code fehlen die richtigen Produkte im Warenkorb.
533
+ missing_taxon: Für diesen Gutschein-Code müssen die Produkte der richtigen Kategorie im Warenkorb liegen.
534
+ no_applicable_products: Das entsprechende Produkt des Gutschein-Codes liegt nicht im Warenkorb.
535
+ no_matching_channel: Dieser Gutscheincode ist für diesen Vertriebskanal nicht gültig.
536
+ no_matching_market: Dieser Gutscheincode ist in Ihrem Markt nicht gültig.
537
+ no_matching_taxons: Für diesen Gutschein-Code muss das Produkt der entsprechenden Kategorie im Warenkorb liegen.
538
+ no_user_or_email_specified: Für das Hinzufügen des Gutschein-Codes müssen Sie angemeldet/eingeloggt sein.
539
+ no_user_specified: Für das Hinzufügen des Gutschein-Codes müssen sie eingeloggt sein.
540
+ not_first_order: Dieser Gutschein-Code ist nur für die Erstbestellung eines Benutzers gültig.
541
+ wrong_country: Dieser Gutscheincode ist in Ihrem Land nicht gültig
542
+ email: E-Mail
543
+ error: Fehler
544
+ error_user_destroy_with_orders: Fehler Benutzer gelöscht mit Bestellungen
545
+ error_user_does_not_have_any_store_credits: Der Benutzer verfügt über kein verfügbares Guthaben
546
+ errors:
547
+ messages:
548
+ cannot_delete_default_channel: Der Standardkanal kann nicht gelöscht werden. Machen Sie zuerst einen anderen Kanal zum Standard.
549
+ channel_store_mismatch: muss zum selben Shop gehören
550
+ invalid_order_routing_rule: ist keine registrierte Bestell-Routing-Regel
551
+ invalid_order_routing_strategy: ist keine registrierte Bestell-Routing-Strategie
552
+ store_association_can_not_be_changed: Die Shop-Zuordnung kann nicht geändert werden
553
+ store_is_already_set: Shop ist bereits festgelegt
554
+ expired: Abgelaufen
555
+ export_mailer:
556
+ export_done:
557
+ message: Gut gemacht, Ihr Export ist fertig! Bitte verwenden Sie den untenstehenden Link, um ihn herunterzuladen.
558
+ subject: Ihr Export %{export_number} wurde erfolgreich verarbeitet!
559
+ greeting: Hallo %{user_name},
560
+ field: Feld
561
+ first_name: Vorname
562
+ flat_percent: Prozentual
563
+ flat_rate_per_order: Fester Preis (pro Bestellung)
564
+ flexible_rate: Flexibel Preis
565
+ free: Kostenlos
566
+ gateway: Schnittstelle
567
+ gateway_error: Schnittstellen-Fehler
568
+ gift_card: Geschenkkarte
569
+ gift_card_already_redeemed: Die Geschenkkarte wurde bereits eingelöst.
570
+ gift_card_applied: Die Geschenkkarte wurde erfolgreich auf Ihre Bestellung angewendet!
571
+ gift_card_customer_not_logged_in: Geschenkkarte kann nicht als Gast angewendet werden.
572
+ gift_card_expired: Die Geschenkkarte ist abgelaufen.
573
+ gift_card_mismatched_currency: Geschenkkarte kann nicht mit der aktuellen Währung angewendet werden.
574
+ gift_card_mismatched_customer: Diese Geschenkkarte ist einem anderen Benutzer zugeordnet.
575
+ gift_card_not_found: Die Geschenkkarte wurde nicht gefunden.
576
+ gift_card_removed: Die Geschenkkarte wurde erfolgreich aus Ihrer Bestellung entfernt
577
+ gift_card_using_store_credit_error: Sie können die Geschenkkarte nicht anwenden, nachdem Sie das Guthaben angewendet haben.
578
+ height: Höhe
579
+ i18n:
580
+ this_file_language: Deutsch (DE)
581
+ idempotency_key_reused: Dieser Idempotency-Key wurde bereits mit anderen Anfrageparametern verwendet.
582
+ image: Bild
583
+ import: Importieren
584
+ in_stock: Auf Lager
585
+ inactive: Inaktiv
586
+ incomplete: Nicht vollständig
587
+ insufficient_stock_lines_present: In dieser Bestellung haben div. Artikelpositionen eine nichtvalide Stückzahl.
588
+ internal_note: Interne Notiz
589
+ inventory: Lager
590
+ invitation_mailer:
591
+ greeting: Hallo %{user_name},
592
+ invitation_accepted:
593
+ body: "%{invitee_name} hat Ihre Einladung angenommen, %{resource_name} beizutreten"
594
+ subject: "%{invitee_name} hat Ihre Einladung angenommen, %{resource_name} beizutreten"
595
+ invitation_email:
596
+ body: "%{inviter_name} hat Sie eingeladen, %{resource_name} beizutreten"
597
+ link_description: 'Um diese Einladung anzunehmen, klicken Sie bitte auf den untenstehenden Link:'
598
+ subject: Einladung, %{resource_name} beizutreten
599
+ iso: ISO Alpha-2
600
+ item: Artikel
601
+ items_cannot_be_shipped: Wir können die ausgewählten Artikel nicht an Ihre Lieferadresse schicken. Bitte wählen Sie eine andere Lieferadresse.
602
+ key: Schlüssel
603
+ kind: Art
604
+ label: Bezeichnung
605
+ last_name: Nachname
606
+ line_item: Bestellposition
607
+ line_items: Bestellpositionen
608
+ link: Link
609
+ locale: Gebietsschema
610
+ locale_not_supported_by_store: wird von diesem Shop nicht unterstützt
611
+ manual: Manuell
612
+ market: Markt
613
+ me_no_current_user: Kein Admin-Benutzer hat diese Anfrage authentifiziert
614
+ media: Medien
615
+ meta_description: Meta-Beschreibung
616
+ meta_keywords: Meta-Schlagwörter
617
+ meta_title: Meta-Titel
618
+ metadata: Metadaten
619
+ min_quantity: Mindestmenge
620
+ month: Monat
621
+ name: Name
622
+ new_variant: Neue Variante
623
+ no_cc_type: k. A.
624
+ no_payment_found: Keine Zahlung gefunden
625
+ none: kein
626
+ number: Nummer
627
+ on_hand: Auf Lager
628
+ only_active_products_can_be_added_to_cart: Entwürfe und archivierte Produkte können nicht zum Warenkorb hinzugefügt werden. Bitte markieren Sie das Produkt zuvor als aktiv.
629
+ open: Öffnen
630
+ option_name: Optionsname
631
+ option_type: Optionstyp
632
+ option_value: Optionswert
633
+ options: Optionen
634
+ or: oder
635
+ order: Bestellung
636
+ order_canceled: Bestellung storniert
637
+ order_routing:
638
+ strategies:
639
+ legacy: Veraltet
640
+ rules: Regeln (geordnet)
641
+ order_summary: Bestellübersicht
642
+ orders: Bestellungen
643
+ out_of_stock: Ausverkauft
644
+ password: Passwort
645
+ path: Pfad
646
+ payment: Zahlung
647
+ payment_method: Zahlungsmethode
648
+ payment_method_not_supported: Zahlungsmethode wird nicht unterstützt
649
+ payment_methods: Zahlungsmethoden
650
+ payment_processing_failed: Die Bezahlung konnte nicht abgeschlossen werden, bitte überprüfen Sie Ihre Angaben.
651
+ payment_source: Zahlungsquelle
652
+ pending: Ausstehend
653
+ percent: Prozent
654
+ percent_per_item: Prozent pro Artikel
655
+ phone: Telefon
656
+ price: Preis
657
+ price_range: Preisbereich
658
+ price_rules:
659
+ channel_rule:
660
+ description: Preise basierend auf dem Vertriebskanal anwenden
661
+ customer_group_rule:
662
+ description: Preise auf bestimmte Kundengruppen anwenden
663
+ price_sack: Preis füllen
664
+ prices: Preise
665
+ privacy_policy: Datenschutzerklärung
666
+ processing: Wird verarbeitet
667
+ product: Produkt
668
+ product_translations: Produktübersetzungen
669
+ products: Produkte
670
+ products_cannot_be_shipped: Wir können %{product_names} derzeit nicht an Ihren aktuellen Standort liefern. Bitte ändern Sie Ihre Lieferadresse oder entfernen Sie %{product_names} aus Ihrem Warenkorb.
671
+ promotion: Werbeangebot
672
+ promotion_action_types:
673
+ create_adjustment:
674
+ description: Werberabatt für diese Bestellung anpassen
675
+ name: Werberabatt anpassen
676
+ create_item_adjustments:
677
+ description: Werberabatt auf eine Bestellposition anwenden
678
+ name: Bestellposition rabattieren
679
+ create_line_items:
680
+ description: Füllt den Einkaufswagen mit angegebenen Produktvarianten und Mengen
681
+ name: Erstelle Bestellpositionen
682
+ free_shipping:
683
+ description: Die Lieferungen dieser Bestellung von Versandkosten befreien
684
+ name: Versandkostenfrei
685
+ promotion_actions: Aktionen
686
+ promotion_already_used: Sie können keine Aktion löschen, die bereits angewendet wurde
687
+ promotion_label: Werbeaktion (%{name})
688
+ promotion_rule_types:
689
+ category:
690
+ description: Bestellung enthält Produkte aus bestimmten Kategorien
691
+ name: Kategorien
692
+ channel:
693
+ description: Auf Bestellungen über bestimmte Kanäle beschränken
694
+ name: Kanal/Kanäle
695
+ country:
696
+ description: Die Bestellung wurde in das richtige (oder Standard-) Land versendet
697
+ name: Land
698
+ currency:
699
+ description: Auf Bestellungen in einer bestimmten Währung beschränken
700
+ name: Währung
701
+ customer:
702
+ description: Nur für die angegebenen Kunden verfügbar
703
+ name: Kunden
704
+ customer_group:
705
+ description: Nur für Kunden in den angegebenen Kundengruppen verfügbar
706
+ name: Kundengruppe(n)
707
+ customer_logged_in:
708
+ description: Nur für angemeldete Kunden verfügbar
709
+ name: Nur angemeldete Kunden
710
+ first_order:
711
+ description: Muss die erste Bestellung des Kunden sein
712
+ name: Erste Bestellung
713
+ item_total:
714
+ description: Gesamtsumme der Bestellung entspricht diesen Kriterien
715
+ name: Gesamtsumme
716
+ market:
717
+ description: Auf Bestellungen in bestimmten Märkten beschränken
718
+ name: Markt/Märkte
719
+ one_use_per_user:
720
+ description: Darf pro Benutzer nur einmal verwendet werden
721
+ name: 1x pro Benutzer
722
+ option_value:
723
+ description: Bestellung enthält Produkte mit definierten Optionswerten
724
+ name: Optionswerte
725
+ product:
726
+ description: Bestellung enthält angegebene(s) Produkt(e)
727
+ name: Produkt(e)
728
+ promotions: Werbeaktionen
729
+ quantity: Anzahl
730
+ query: Abfrage
731
+ reason: Grund
732
+ received: erhalten
733
+ reference: Referenz
734
+ refund: Rückerstattung
735
+ refund_amount: Erstattungsbetrag
736
+ refunds: Rückerstattungen
737
+ registration: Registrierung
738
+ rejected: abgelehnt
739
+ remove: Entfernen
740
+ remove_gift_card_on_completed_order_error: Sie können die Geschenkkarte nicht entfernen, nachdem die Bestellung aufgegeben wurde
741
+ resellable: Wiederverkäuflich
742
+ resend: Erneut Versenden
743
+ response_code: Rückgabewert
744
+ return: zurückgeben
745
+ returned: Zurückgegeben
746
+ returns_policy: Rückgaberichtlinie
747
+ row: Zeile
748
+ rules: Regeln
749
+ say_no: nein
750
+ say_yes: ja
751
+ scope: Bereich
752
+ selected_quantity_not_available: ausgewählte %{item} ist nicht verfügbar.
753
+ ship: verschicken
754
+ ship_address: Lieferadresse
755
+ shipment: Sendung
756
+ shipped: Ausgeliefert
757
+ shipping: Lieferung
758
+ shipping_address: Lieferadresse
759
+ shipping_flat_rate_per_item: Versandpauschale pro Artikel
760
+ shipping_flat_rate_per_order: Pauschale
761
+ shipping_flexible_rate: Flexible Rate pro Packstück
762
+ shipping_policy: Versandrichtlinie
763
+ shipping_price_sack: Preis füllen
764
+ shipping_rates:
765
+ display_price:
766
+ excluding_tax: "%{price} (+ %{tax_amount} %{tax_rate_name})"
767
+ including_tax: "%{price} (inkl. %{tax_amount} %{tax_rate_name})"
768
+ sku: Artikelnummer
769
+ slug: Permalink
770
+ source: Quelle
771
+ status: Status
772
+ stock_location: Lagerstandort
773
+ stock_locations: Lagerstandorte
774
+ stock_transfer:
775
+ errors:
776
+ must_have_variant: Sie müssen mindestens eine Variante hinzufügen.
777
+ same_location: darf nicht mit dem Zielstandort identisch sein
778
+ variants_unavailable: Einige Varianten sind für %{stock} nicht verfügbar.
779
+ store: Laden
780
+ store_credit:
781
+ allocated: Hinzugefügt
782
+ authorized: Authorisiert
783
+ captured: Gebraucht
784
+ credit: Kredit
785
+ eligible: Berechtigt
786
+ store_credit_name: Guthaben
787
+ store_credit_payment_method:
788
+ currency_mismatch: Die Guthabenwährung ist anders als der Bestellwährung
789
+ insufficient_authorized_amount: Es kann nicht mehr als der autorisierte Betrag erfasst werden
790
+ insufficient_funds: Guthaben Restbetrag ist nicht ausreichend
791
+ successful_action: Erfolgreich Guthaben %{action}
792
+ unable_to_credit: 'Code: %{auth_code} kann nicht gutgeschrieben werden'
793
+ unable_to_find: Guthaben konnte nicht gefunden werden
794
+ unable_to_find_for_action: 'Guthaben für auth Code: %{auth_code} für Aktion: %{action} konnte nicht gefunden werden'
795
+ unable_to_void: 'Code: %{auth_code} kann nicht ungültig gemacht werden'
796
+ success: erfolgreich
797
+ tags: Tags
798
+ tax: Steuer
799
+ tax_category: Steuerkategorie
800
+ terms_of_service: Nutzungsbedingungen
801
+ there_are_no_items_for_this_order: Die Bestellung enthält keine Artikel. Bitte fügen Sie der Bestellung Artikel hinzu um fortfahren zu können.
802
+ tiered_flat_rate: Staffelungspauschale
803
+ tiered_percent: Prozentuale Staffel
804
+ total: Gesamt
805
+ track_inventory: auf Bestand achten
806
+ tracking: Tracking
807
+ tracking_number: Tracking Nummer
808
+ tracking_url: Tracking URL
809
+ type: Typ
810
+ unable_to_connect_to_gateway: Konnte nicht zur Schnitstelle verbinden.
811
+ updated_at: Aktualisiert am
812
+ url: URL
813
+ user: Benutzer
814
+ validation:
815
+ must_be_int: muss eine Ganzzahl sein
816
+ value: Wert
817
+ variant: Variante
818
+ variants: Varianten
819
+ verified: Verifiziert
820
+ void: entwerten
821
+ webhook_mailer:
822
+ endpoint_disabled:
823
+ disabled_at_label: Deaktiviert am
824
+ heading: Webhook-Endpunkt deaktiviert
825
+ instructions: Bitte überprüfen Sie die Endpunkt-URL und den Dienst und aktivieren Sie ihn anschließend erneut unter Einstellungen → Entwickler → Webhooks.
826
+ message: Der Webhook-Endpunkt "%{endpoint_name}" wurde nach wiederholten Zustellungsfehlern automatisch deaktiviert.
827
+ name_label: Name
828
+ reason_label: Grund
829
+ subject: 'Webhook-Endpunkt deaktiviert: %{endpoint_name}'
830
+ url_label: URL
831
+ weight: Gewicht
832
+ weight_unit: Gewichtseinheit
833
+ width: Breite
834
+ year: Jahr
835
+ zip: PLZ