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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.beta3
4
+ version: 6.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2026-09-24 00:00:00.000000000 Z
13
+ date: 2026-10-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: i18n-tasks
@@ -60,6 +60,20 @@ dependencies:
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0.8'
63
+ - !ruby/object:Gem::Dependency
64
+ name: alba
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '3.0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '3.0'
63
77
  - !ruby/object:Gem::Dependency
64
78
  name: acts-as-taggable-on
65
79
  requirement: !ruby/object:Gem::Requirement
@@ -218,6 +232,20 @@ dependencies:
218
232
  - - "~>"
219
233
  - !ruby/object:Gem::Version
220
234
  version: '3.1'
235
+ - !ruby/object:Gem::Dependency
236
+ name: liquid
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - "~>"
240
+ - !ruby/object:Gem::Version
241
+ version: '5.14'
242
+ type: :runtime
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - "~>"
247
+ - !ruby/object:Gem::Version
248
+ version: '5.14'
221
249
  - !ruby/object:Gem::Dependency
222
250
  name: money
223
251
  requirement: !ruby/object:Gem::Requirement
@@ -232,6 +260,20 @@ dependencies:
232
260
  - - "~>"
233
261
  - !ruby/object:Gem::Version
234
262
  version: '6.13'
263
+ - !ruby/object:Gem::Dependency
264
+ name: mrml
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - "~>"
268
+ - !ruby/object:Gem::Version
269
+ version: '1.10'
270
+ type: :runtime
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - "~>"
275
+ - !ruby/object:Gem::Version
276
+ version: '1.10'
235
277
  - !ruby/object:Gem::Dependency
236
278
  name: monetize
237
279
  requirement: !ruby/object:Gem::Requirement
@@ -275,19 +317,19 @@ dependencies:
275
317
  - !ruby/object:Gem::Version
276
318
  version: '1.18'
277
319
  - !ruby/object:Gem::Dependency
278
- name: ostruct
320
+ name: oj
279
321
  requirement: !ruby/object:Gem::Requirement
280
322
  requirements:
281
- - - ">="
323
+ - - "~>"
282
324
  - !ruby/object:Gem::Version
283
- version: '0'
325
+ version: '3.16'
284
326
  type: :runtime
285
327
  prerelease: false
286
328
  version_requirements: !ruby/object:Gem::Requirement
287
329
  requirements:
288
- - - ">="
330
+ - - "~>"
289
331
  - !ruby/object:Gem::Version
290
- version: '0'
332
+ version: '3.16'
291
333
  - !ruby/object:Gem::Dependency
292
334
  name: paranoia
293
335
  requirement: !ruby/object:Gem::Requirement
@@ -330,6 +372,20 @@ dependencies:
330
372
  - - "~>"
331
373
  - !ruby/object:Gem::Version
332
374
  version: '1.6'
375
+ - !ruby/object:Gem::Dependency
376
+ name: rails-i18n
377
+ requirement: !ruby/object:Gem::Requirement
378
+ requirements:
379
+ - - "~>"
380
+ - !ruby/object:Gem::Version
381
+ version: '8.0'
382
+ type: :runtime
383
+ prerelease: false
384
+ version_requirements: !ruby/object:Gem::Requirement
385
+ requirements:
386
+ - - "~>"
387
+ - !ruby/object:Gem::Version
388
+ version: '8.0'
333
389
  - !ruby/object:Gem::Dependency
334
390
  name: ransack
335
391
  requirement: !ruby/object:Gem::Requirement
@@ -620,14 +676,14 @@ dependencies:
620
676
  requirements:
621
677
  - - ">="
622
678
  - !ruby/object:Gem::Version
623
- version: '43.3'
679
+ version: 43.6.3
624
680
  type: :runtime
625
681
  prerelease: false
626
682
  version_requirements: !ruby/object:Gem::Requirement
627
683
  requirements:
628
684
  - - ">="
629
685
  - !ruby/object:Gem::Version
630
- version: '43.3'
686
+ version: 43.6.3
631
687
  description: Spree Models, Services, Workflows and background jobs
632
688
  email: hello@spreecommerce.org
633
689
  executables: []
@@ -662,6 +718,7 @@ files:
662
718
  - app/jobs/spree/imports/process_job.rb
663
719
  - app/jobs/spree/imports/process_rows_job.rb
664
720
  - app/jobs/spree/orders/finalize_stale_drafts_job.rb
721
+ - app/jobs/spree/payments/cancel_unused_sessions_job.rb
665
722
  - app/jobs/spree/payments/handle_webhook_job.rb
666
723
  - app/jobs/spree/price_lists/sync_currencies_job.rb
667
724
  - app/jobs/spree/product_types/apply_to_products_job.rb
@@ -687,28 +744,30 @@ files:
687
744
  - app/jobs/spree/variants/touch_job.rb
688
745
  - app/mailers/spree/admin_user_mailer.rb
689
746
  - app/mailers/spree/base_mailer.rb
747
+ - app/mailers/spree/email_template_mailer.rb
690
748
  - app/mailers/spree/export_mailer.rb
691
749
  - app/mailers/spree/import_mailer.rb
692
750
  - app/mailers/spree/invitation_mailer.rb
693
751
  - app/mailers/spree/seller_user_mailer.rb
694
752
  - app/mailers/spree/webhook_mailer.rb
695
- - app/models/acts_as_taggable_on/tag_decorator.rb
696
753
  - app/models/concerns/spree/account_lockout.rb
697
754
  - app/models/concerns/spree/acted_by.rb
698
755
  - app/models/concerns/spree/actor.rb
699
756
  - app/models/concerns/spree/admin_user_methods.rb
757
+ - app/models/concerns/spree/api_typed.rb
700
758
  - app/models/concerns/spree/calculated_adjustments.rb
701
759
  - app/models/concerns/spree/calculator/currency_amounts.rb
760
+ - app/models/concerns/spree/calculator/tiers.rb
702
761
  - app/models/concerns/spree/capture_method.rb
703
762
  - app/models/concerns/spree/custom_field_filterable.rb
704
763
  - app/models/concerns/spree/customer_methods.rb
705
764
  - app/models/concerns/spree/deprecated_customer_alias.rb
706
765
  - app/models/concerns/spree/derived_number.rb
707
766
  - app/models/concerns/spree/display_money.rb
767
+ - app/models/concerns/spree/email_template_identity.rb
708
768
  - app/models/concerns/spree/has_address_book.rb
709
769
  - app/models/concerns/spree/has_custom_fields.rb
710
770
  - app/models/concerns/spree/has_external_references.rb
711
- - app/models/concerns/spree/has_image_alt_text.rb
712
771
  - app/models/concerns/spree/has_iso_geography.rb
713
772
  - app/models/concerns/spree/has_library_media.rb
714
773
  - app/models/concerns/spree/has_list_position.rb
@@ -730,17 +789,21 @@ files:
730
789
  - app/models/concerns/spree/payment_session_transitions.rb
731
790
  - app/models/concerns/spree/payment_source_concern.rb
732
791
  - app/models/concerns/spree/personal_data_matching.rb
792
+ - app/models/concerns/spree/post_sale/taxation.rb
793
+ - app/models/concerns/spree/post_sale/taxed_line.rb
733
794
  - app/models/concerns/spree/preference_schema.rb
734
795
  - app/models/concerns/spree/prefixed_id.rb
735
796
  - app/models/concerns/spree/presentation_translatable.rb
736
797
  - app/models/concerns/spree/product_scopes.rb
737
798
  - app/models/concerns/spree/provider_failure_policy.rb
799
+ - app/models/concerns/spree/provider_listing.rb
738
800
  - app/models/concerns/spree/publishable.rb
739
801
  - app/models/concerns/spree/purchase/addresses.rb
740
802
  - app/models/concerns/spree/purchase/channel.rb
741
803
  - app/models/concerns/spree/purchase/checkout_steps.rb
742
804
  - app/models/concerns/spree/purchase/company.rb
743
805
  - app/models/concerns/spree/purchase/currency.rb
806
+ - app/models/concerns/spree/purchase/deprecated_aliases.rb
744
807
  - app/models/concerns/spree/purchase/digital_items.rb
745
808
  - app/models/concerns/spree/purchase/freight.rb
746
809
  - app/models/concerns/spree/purchase/gift_cards.rb
@@ -763,15 +826,18 @@ files:
763
826
  - app/models/concerns/spree/sanitizable_rich_text.rb
764
827
  - app/models/concerns/spree/search_indexable.rb
765
828
  - app/models/concerns/spree/searchable.rb
829
+ - app/models/concerns/spree/secret_preferences.rb
766
830
  - app/models/concerns/spree/single_store_resource.rb
767
831
  - app/models/concerns/spree/store_data_sources.rb
768
832
  - app/models/concerns/spree/store_preferences.rb
769
833
  - app/models/concerns/spree/stores/channels.rb
834
+ - app/models/concerns/spree/stores/email_branding.rb
770
835
  - app/models/concerns/spree/stores/markets.rb
771
836
  - app/models/concerns/spree/stores/setup.rb
772
837
  - app/models/concerns/spree/translatable_resource.rb
773
838
  - app/models/concerns/spree/translatable_resource_scopes.rb
774
839
  - app/models/concerns/spree/translatable_resource_slug.rb
840
+ - app/models/concerns/spree/type_labels.rb
775
841
  - app/models/concerns/spree/typed_adjustment_line.rb
776
842
  - app/models/concerns/spree/typed_associations.rb
777
843
  - app/models/concerns/spree/user_address.rb
@@ -798,7 +864,6 @@ files:
798
864
  - app/models/spree/authentication/strategies/oidc_strategy.rb
799
865
  - app/models/spree/authentication/strategy_registry.rb
800
866
  - app/models/spree/base.rb
801
- - app/models/spree/base_analytics_event_handler.rb
802
867
  - app/models/spree/calculator.rb
803
868
  - app/models/spree/calculator/flat_percent_item_total.rb
804
869
  - app/models/spree/calculator/flat_rate.rb
@@ -904,6 +969,12 @@ files:
904
969
  - app/models/spree/digital_delivery.rb
905
970
  - app/models/spree/digital_link.rb
906
971
  - app/models/spree/discount.rb
972
+ - app/models/spree/email_template.rb
973
+ - app/models/spree/email_template_draft.rb
974
+ - app/models/spree/email_template_revision.rb
975
+ - app/models/spree/email_templates/entry.rb
976
+ - app/models/spree/email_templates/sample_record.rb
977
+ - app/models/spree/emails/branding.rb
907
978
  - app/models/spree/event.rb
908
979
  - app/models/spree/exchange.rb
909
980
  - app/models/spree/exchange_line_item.rb
@@ -959,7 +1030,6 @@ files:
959
1030
  - app/models/spree/inventory_provider/internal.rb
960
1031
  - app/models/spree/inventory_unit.rb
961
1032
  - app/models/spree/invitation.rb
962
- - app/models/spree/invitations/store.rb
963
1033
  - app/models/spree/label_purchase.rb
964
1034
  - app/models/spree/line_item.rb
965
1035
  - app/models/spree/locale.rb
@@ -1018,7 +1088,6 @@ files:
1018
1088
  - app/models/spree/pickup_point_option.rb
1019
1089
  - app/models/spree/pickup_point_provider/base.rb
1020
1090
  - app/models/spree/policy.rb
1021
- - app/models/spree/preference.rb
1022
1091
  - app/models/spree/price.rb
1023
1092
  - app/models/spree/price_adjustment_tier.rb
1024
1093
  - app/models/spree/price_history.rb
@@ -1070,8 +1139,6 @@ files:
1070
1139
  - app/models/spree/promotion_handler/cart.rb
1071
1140
  - app/models/spree/promotion_handler/coupon.rb
1072
1141
  - app/models/spree/promotion_handler/free_shipping.rb
1073
- - app/models/spree/promotion_handler/page.rb
1074
- - app/models/spree/promotion_handler/promotion_duplicator.rb
1075
1142
  - app/models/spree/promotion_rule.rb
1076
1143
  - app/models/spree/promotion_rule_category.rb
1077
1144
  - app/models/spree/promotion_rule_taxon.rb
@@ -1130,7 +1197,6 @@ files:
1130
1197
  - app/models/spree/stock/availability_validator.rb
1131
1198
  - app/models/spree/stock/content_item.rb
1132
1199
  - app/models/spree/stock/coordinator.rb
1133
- - app/models/spree/stock/differentiator.rb
1134
1200
  - app/models/spree/stock/estimator.rb
1135
1201
  - app/models/spree/stock/inventory_unit_builder.rb
1136
1202
  - app/models/spree/stock/package.rb
@@ -1176,6 +1242,7 @@ files:
1176
1242
  - app/models/spree/tax_line.rb
1177
1243
  - app/models/spree/tax_provider/base.rb
1178
1244
  - app/models/spree/tax_provider/internal.rb
1245
+ - app/models/spree/tax_provider/recorded_share.rb
1179
1246
  - app/models/spree/tax_rate.rb
1180
1247
  - app/models/spree/taxon.rb
1181
1248
  - app/models/spree/taxon_rule.rb
@@ -1208,7 +1275,13 @@ files:
1208
1275
  - app/presenters/spree/csv/purchase_order_item_presenter.rb
1209
1276
  - app/presenters/spree/data_feeds/base_presenter.rb
1210
1277
  - app/presenters/spree/data_feeds/google_presenter.rb
1211
- - app/presenters/spree/filters/options_presenter.rb
1278
+ - app/serializers/spree/emails/base_serializer.rb
1279
+ - app/serializers/spree/emails/export_serializer.rb
1280
+ - app/serializers/spree/emails/import_serializer.rb
1281
+ - app/serializers/spree/emails/invitation_serializer.rb
1282
+ - app/serializers/spree/emails/store_serializer.rb
1283
+ - app/serializers/spree/emails/user_serializer.rb
1284
+ - app/serializers/spree/emails/webhook_endpoint_serializer.rb
1212
1285
  - app/services/spree/addresses/create.rb
1213
1286
  - app/services/spree/addresses/helper.rb
1214
1287
  - app/services/spree/addresses/update.rb
@@ -1216,7 +1289,6 @@ files:
1216
1289
  - app/services/spree/carts/check_availability.rb
1217
1290
  - app/services/spree/carts/create.rb
1218
1291
  - app/services/spree/carts/destroy.rb
1219
- - app/services/spree/carts/empty.rb
1220
1292
  - app/services/spree/carts/partition_by_seller.rb
1221
1293
  - app/services/spree/carts/price_items.rb
1222
1294
  - app/services/spree/carts/remove_item.rb
@@ -1245,7 +1317,6 @@ files:
1245
1317
  - app/services/spree/companies/add_member.rb
1246
1318
  - app/services/spree/company_invitations/accept.rb
1247
1319
  - app/services/spree/compare_line_items.rb
1248
- - app/services/spree/country_to_timezone.rb
1249
1320
  - app/services/spree/coupon_codes/bulk_generate.rb
1250
1321
  - app/services/spree/coupon_codes/coupon_codes_handler.rb
1251
1322
  - app/services/spree/customers/data_export.rb
@@ -1253,6 +1324,19 @@ files:
1253
1324
  - app/services/spree/deliveries/create.rb
1254
1325
  - app/services/spree/deliveries/destroy.rb
1255
1326
  - app/services/spree/deliveries/upsert_primary.rb
1327
+ - app/services/spree/email_templates/check.rb
1328
+ - app/services/spree/email_templates/no_sample_record.rb
1329
+ - app/services/spree/email_templates/preview.rb
1330
+ - app/services/spree/emails/file_system.rb
1331
+ - app/services/spree/emails/filters.rb
1332
+ - app/services/spree/emails/liquid_context.rb
1333
+ - app/services/spree/emails/rendered_email.rb
1334
+ - app/services/spree/emails/renderer.rb
1335
+ - app/services/spree/emails/template.rb
1336
+ - app/services/spree/emails/template_data.rb
1337
+ - app/services/spree/emails/template_resolver.rb
1338
+ - app/services/spree/emails/text_converter.rb
1339
+ - app/services/spree/emails/translation_inliner.rb
1256
1340
  - app/services/spree/fulfillments/recalculate_delivery.rb
1257
1341
  - app/services/spree/fulfillments/stand_down_provider.rb
1258
1342
  - app/services/spree/generate_token.rb
@@ -1286,8 +1370,8 @@ files:
1286
1370
  - app/services/spree/orders/update.rb
1287
1371
  - app/services/spree/orders/update_item.rb
1288
1372
  - app/services/spree/orders/update_statuses.rb
1289
- - app/services/spree/payments/create.rb
1290
1373
  - app/services/spree/prices/bulk_upsert.rb
1374
+ - app/services/spree/product_memberships.rb
1291
1375
  - app/services/spree/product_submissions/close.rb
1292
1376
  - app/services/spree/product_types/apply_to_products.rb
1293
1377
  - app/services/spree/products/auto_match_collections.rb
@@ -1365,24 +1449,18 @@ files:
1365
1449
  - app/validators/spree/addresses/phone_validator.rb
1366
1450
  - app/validators/spree/attachment_content_type_validator.rb
1367
1451
  - app/validators/spree/password_length_validator.rb
1368
- - app/validators/spree/url_validator.rb
1369
- - app/views/active_storage/blobs/_blob.html.erb
1370
1452
  - app/views/layouts/spree/base_mailer.html.erb
1371
- - app/views/spree/admin_user_mailer/password_reset_email.html.erb
1372
- - app/views/spree/export_mailer/export_done.html.erb
1373
- - app/views/spree/import_mailer/import_done.html.erb
1374
- - app/views/spree/invitation_mailer/invitation_accepted.html.erb
1375
- - app/views/spree/invitation_mailer/invitation_email.html.erb
1376
- - app/views/spree/seller_user_mailer/password_reset_email.html.erb
1377
- - app/views/spree/shared/_base_mailer_footer.html.erb
1378
- - app/views/spree/shared/_base_mailer_header.html.erb
1379
- - app/views/spree/shared/_base_mailer_stylesheets.html.erb
1453
+ - app/views/layouts/spree/base_mailer.liquid
1454
+ - app/views/spree/admin_user_mailer/password_reset_email.liquid
1455
+ - app/views/spree/export_mailer/export_done.liquid
1456
+ - app/views/spree/import_mailer/import_done.liquid
1457
+ - app/views/spree/invitation_mailer/invitation_accepted.liquid
1458
+ - app/views/spree/invitation_mailer/invitation_email.liquid
1459
+ - app/views/spree/seller_user_mailer/password_reset_email.liquid
1380
1460
  - app/views/spree/shared/_mailer_button.html.erb
1381
1461
  - app/views/spree/shared/_mailer_hero.html.erb
1382
- - app/views/spree/shared/_mailer_logo.html.erb
1383
- - app/views/spree/shared/_purchased_items_styles.html.erb
1384
- - app/views/spree/webhook_mailer/endpoint_disabled.html.erb
1385
- - app/views/spree/webhook_mailer/endpoint_disabled.text.erb
1462
+ - app/views/spree/shared/_summary_row.liquid
1463
+ - app/views/spree/webhook_mailer/endpoint_disabled.liquid
1386
1464
  - app/workflows/spree/carts/add_item.rb
1387
1465
  - app/workflows/spree/carts/complete.rb
1388
1466
  - app/workflows/spree/carts/merge.rb
@@ -1403,6 +1481,11 @@ files:
1403
1481
  - app/workflows/spree/customers/create.rb
1404
1482
  - app/workflows/spree/data_requests/fulfill.rb
1405
1483
  - app/workflows/spree/deliveries/update_tracking.rb
1484
+ - app/workflows/spree/email_templates/discard_draft.rb
1485
+ - app/workflows/spree/email_templates/publish.rb
1486
+ - app/workflows/spree/email_templates/restore_revision.rb
1487
+ - app/workflows/spree/email_templates/revert.rb
1488
+ - app/workflows/spree/email_templates/save_draft.rb
1406
1489
  - app/workflows/spree/exchanges/approve.rb
1407
1490
  - app/workflows/spree/exchanges/cancel.rb
1408
1491
  - app/workflows/spree/exchanges/create.rb
@@ -1412,7 +1495,7 @@ files:
1412
1495
  - app/workflows/spree/fulfillments/create.rb
1413
1496
  - app/workflows/spree/fulfillments/fulfill.rb
1414
1497
  - app/workflows/spree/fulfillments/mark_delivered.rb
1415
- - app/workflows/spree/fulfillments/purchase_label.rb
1498
+ - app/workflows/spree/fulfillments/replacements.rb
1416
1499
  - app/workflows/spree/fulfillments/update.rb
1417
1500
  - app/workflows/spree/gift_cards/apply.rb
1418
1501
  - app/workflows/spree/gift_cards/cancel.rb
@@ -1435,6 +1518,9 @@ files:
1435
1518
  - app/workflows/spree/payments/handle_webhook.rb
1436
1519
  - app/workflows/spree/payments/process.rb
1437
1520
  - app/workflows/spree/payments/void.rb
1521
+ - app/workflows/spree/post_sale/approval.rb
1522
+ - app/workflows/spree/post_sale/cancellation.rb
1523
+ - app/workflows/spree/post_sale/receipt.rb
1438
1524
  - app/workflows/spree/price_lists/activate.rb
1439
1525
  - app/workflows/spree/price_lists/create.rb
1440
1526
  - app/workflows/spree/price_lists/deactivate.rb
@@ -1456,13 +1542,15 @@ files:
1456
1542
  - app/workflows/spree/purchase_orders/mark_ordered.rb
1457
1543
  - app/workflows/spree/purchase_orders/receive.rb
1458
1544
  - app/workflows/spree/purchase_orders/update.rb
1545
+ - app/workflows/spree/receivables/closing_short.rb
1546
+ - app/workflows/spree/receivables/draft_editing.rb
1459
1547
  - app/workflows/spree/receivables/incoming_counter.rb
1460
1548
  - app/workflows/spree/refunds/create.rb
1461
1549
  - app/workflows/spree/refunds/order_payments.rb
1550
+ - app/workflows/spree/refunds/tax_credit.rb
1462
1551
  - app/workflows/spree/returns/approve.rb
1463
1552
  - app/workflows/spree/returns/cancel.rb
1464
1553
  - app/workflows/spree/returns/create.rb
1465
- - app/workflows/spree/returns/purchase_label.rb
1466
1554
  - app/workflows/spree/returns/receive.rb
1467
1555
  - app/workflows/spree/returns/refund.rb
1468
1556
  - app/workflows/spree/returns/returnable_quantity.rb
@@ -1503,11 +1591,56 @@ files:
1503
1591
  - config/i18n-tasks.yml
1504
1592
  - config/initializers/active_storage.rb
1505
1593
  - config/initializers/acts_as_taggable_on.rb
1594
+ - config/initializers/alba.rb
1506
1595
  - config/initializers/friendly_id.rb
1507
1596
  - config/initializers/inflections.rb
1508
1597
  - config/initializers/mobility.rb
1509
1598
  - config/initializers/spree_store_setup_tasks.rb
1599
+ - config/language_names.csv
1600
+ - config/locales/ar.yml
1601
+ - config/locales/be.yml
1602
+ - config/locales/bg.yml
1603
+ - config/locales/ca.yml
1604
+ - config/locales/cs.yml
1605
+ - config/locales/da.yml
1606
+ - config/locales/de-CH.yml
1607
+ - config/locales/de.yml
1608
+ - config/locales/el.yml
1510
1609
  - config/locales/en.yml
1610
+ - config/locales/es-CL.yml
1611
+ - config/locales/es-EC.yml
1612
+ - config/locales/es-MX.yml
1613
+ - config/locales/es.yml
1614
+ - config/locales/et.yml
1615
+ - config/locales/fa.yml
1616
+ - config/locales/fi.yml
1617
+ - config/locales/fr.yml
1618
+ - config/locales/hu.yml
1619
+ - config/locales/id.yml
1620
+ - config/locales/it.yml
1621
+ - config/locales/ja.yml
1622
+ - config/locales/km.yml
1623
+ - config/locales/ko.yml
1624
+ - config/locales/ku.yml
1625
+ - config/locales/lt.yml
1626
+ - config/locales/lv.yml
1627
+ - config/locales/nb.yml
1628
+ - config/locales/ne.yml
1629
+ - config/locales/nl.yml
1630
+ - config/locales/pl.yml
1631
+ - config/locales/pt-BR.yml
1632
+ - config/locales/pt.yml
1633
+ - config/locales/ro.yml
1634
+ - config/locales/ru.yml
1635
+ - config/locales/sk.yml
1636
+ - config/locales/sl-SI.yml
1637
+ - config/locales/sv.yml
1638
+ - config/locales/th.yml
1639
+ - config/locales/tr.yml
1640
+ - config/locales/uk.yml
1641
+ - config/locales/vi.yml
1642
+ - config/locales/zh-CN.yml
1643
+ - config/locales/zh-TW.yml
1511
1644
  - config/routes.rb
1512
1645
  - db/migrate/20210914000000_spree_four_three.rb
1513
1646
  - db/migrate/20210915064321_add_metadata_to_spree_orders.rb
@@ -1794,6 +1927,10 @@ files:
1794
1927
  - db/migrate/20260916000001_order_operation_actors_polymorphic.rb
1795
1928
  - db/migrate/20260922000001_add_refunded_order_to_spree_store_credits.rb
1796
1929
  - db/migrate/20260923000001_change_spree_user_identities_tokens_to_text.rb
1930
+ - db/migrate/20260925000001_add_replacement_to_spree_fulfillment_items.rb
1931
+ - db/migrate/20261001000001_add_post_sale_tax.rb
1932
+ - db/migrate/20261001000001_convert_preferences_to_json.rb
1933
+ - db/migrate/20261001000001_create_spree_email_templates.rb
1797
1934
  - db/sample_data/channels.rb
1798
1935
  - db/sample_data/collections.rb
1799
1936
  - db/sample_data/custom_field_definitions.rb
@@ -1846,7 +1983,6 @@ files:
1846
1983
  - lib/generators/spree/subscriber/templates/subscriber.rb.tt
1847
1984
  - lib/generators/spree/subscriber/templates/subscriber_spec.rb.tt
1848
1985
  - lib/mobility/plugins/store_based_fallbacks.rb
1849
- - lib/spree/analytics.rb
1850
1986
  - lib/spree/category_permalink_deduplicator.rb
1851
1987
  - lib/spree/checkout/default_requirements.rb
1852
1988
  - lib/spree/checkout/registry.rb
@@ -1858,6 +1994,7 @@ files:
1858
1994
  - lib/spree/core/controller_helpers/store.rb
1859
1995
  - lib/spree/core/dependencies.rb
1860
1996
  - lib/spree/core/dependencies_helper.rb
1997
+ - lib/spree/core/emails/escaped_output.rb
1861
1998
  - lib/spree/core/engine.rb
1862
1999
  - lib/spree/core/number_generator.rb
1863
2000
  - lib/spree/core/permission_configuration.rb
@@ -1865,14 +2002,14 @@ files:
1865
2002
  - lib/spree/core/permissions/entry.rb
1866
2003
  - lib/spree/core/permissions/scope.rb
1867
2004
  - lib/spree/core/preferences/configuration.rb
2005
+ - lib/spree/core/preferences/json_conversion.rb
1868
2006
  - lib/spree/core/preferences/masking.rb
1869
2007
  - lib/spree/core/preferences/preferable.rb
1870
2008
  - lib/spree/core/preferences/preferable_class_methods.rb
1871
2009
  - lib/spree/core/preferences/runtime_configuration.rb
1872
- - lib/spree/core/preferences/scoped_store.rb
1873
- - lib/spree/core/preferences/store.rb
1874
2010
  - lib/spree/core/previews/admin_user_preview.rb
1875
2011
  - lib/spree/core/previews/export_preview.rb
2012
+ - lib/spree/core/previews/import_preview.rb
1876
2013
  - lib/spree/core/previews/invitation_preview.rb
1877
2014
  - lib/spree/core/previews/preview_data.rb
1878
2015
  - lib/spree/core/previews/seller_user_preview.rb
@@ -1882,10 +2019,13 @@ files:
1882
2019
  - lib/spree/core/pricing/resolver.rb
1883
2020
  - lib/spree/core/ransack_configuration.rb
1884
2021
  - lib/spree/core/routes.rb
2022
+ - lib/spree/core/tax/provider_error.rb
1885
2023
  - lib/spree/core/version.rb
2024
+ - lib/spree/emails/editable_templates.rb
1886
2025
  - lib/spree/events.rb
1887
2026
  - lib/spree/events/adapters/active_support_notifications.rb
1888
2027
  - lib/spree/events/adapters/base.rb
2028
+ - lib/spree/events/catalog.rb
1889
2029
  - lib/spree/events/registry.rb
1890
2030
  - lib/spree/hooks.rb
1891
2031
  - lib/spree/i18n.rb
@@ -1912,6 +2052,8 @@ files:
1912
2052
  - lib/spree/testing_support/action_text.rb
1913
2053
  - lib/spree/testing_support/common_rake.rb
1914
2054
  - lib/spree/testing_support/country_pool.rb
2055
+ - lib/spree/testing_support/editable_email_templates.rb
2056
+ - lib/spree/testing_support/emails.rb
1915
2057
  - lib/spree/testing_support/extension_rake.rb
1916
2058
  - lib/spree/testing_support/factories.rb
1917
2059
  - lib/spree/testing_support/factories/address_factory.rb
@@ -1947,6 +2089,7 @@ files:
1947
2089
  - lib/spree/testing_support/factories/digital_asset_factory.rb
1948
2090
  - lib/spree/testing_support/factories/digital_link_factory.rb
1949
2091
  - lib/spree/testing_support/factories/discount_factory.rb
2092
+ - lib/spree/testing_support/factories/email_template_factory.rb
1950
2093
  - lib/spree/testing_support/factories/exchange_factory.rb
1951
2094
  - lib/spree/testing_support/factories/export_factory.rb
1952
2095
  - lib/spree/testing_support/factories/external_reference_factory.rb
@@ -2057,7 +2200,6 @@ files:
2057
2200
  - lib/spree/testing_support/store.rb
2058
2201
  - lib/spree/testing_support/tax_identifier_validators.rb
2059
2202
  - lib/spree/testing_support/url_helpers.rb
2060
- - lib/spree/translation_migrations.rb
2061
2203
  - lib/spree/translations.rb
2062
2204
  - lib/spree/upgrades/5_4_to_5_5/manifest.yml
2063
2205
  - lib/spree/upgrades/5_5_to_5_6/manifest.yml
@@ -2097,6 +2239,7 @@ files:
2097
2239
  - lib/tasks/order_coupon_code_backfill.rake
2098
2240
  - lib/tasks/order_market_backfill.rake
2099
2241
  - lib/tasks/package_types.rake
2242
+ - lib/tasks/preferences_json.rake
2100
2243
  - lib/tasks/price_history.rake
2101
2244
  - lib/tasks/product_tag_tenants.rake
2102
2245
  - lib/tasks/products.rake
@@ -2128,6 +2271,7 @@ files:
2128
2271
  - spec/fixtures/files/price_list_prices_import.csv
2129
2272
  - spec/fixtures/files/product_translations_import.csv
2130
2273
  - spec/fixtures/files/products_import.csv
2274
+ - spec/fixtures/mailer_views/custom_views_probe_mailer/welcome_email.html.erb
2131
2275
  - spec/fixtures/text-file.txt
2132
2276
  - spec/fixtures/thinking-cat.jpg
2133
2277
  - spec/fixtures/tiny-video.mp4
@@ -2136,9 +2280,9 @@ licenses:
2136
2280
  - BSD-3-Clause
2137
2281
  metadata:
2138
2282
  bug_tracker_uri: https://github.com/spree/spree/issues
2139
- changelog_uri: https://github.com/spree/spree/releases/tag/v6.0.0.beta3
2283
+ changelog_uri: https://github.com/spree/spree/releases/tag/v6.0.0.rc1
2140
2284
  documentation_uri: https://docs.spreecommerce.org/
2141
- source_code_uri: https://github.com/spree/spree/tree/v6.0.0.beta3
2285
+ source_code_uri: https://github.com/spree/spree/tree/v6.0.0.rc1
2142
2286
  post_install_message:
2143
2287
  rdoc_options: []
2144
2288
  require_paths:
@@ -1,10 +0,0 @@
1
- module ActsAsTaggableOn
2
- module TagDecorator
3
- def self.prepended(base)
4
- base.include ::Spree::RansackableAttributes
5
- base.whitelisted_ransackable_attributes = %w[id name]
6
- end
7
- end
8
-
9
- Tag.prepend(TagDecorator)
10
- end
@@ -1,18 +0,0 @@
1
- module Spree
2
- module HasImageAltText
3
- extend ActiveSupport::Concern
4
-
5
- # @return [String] Alt text resolved from preference, asset filename, or i18n fallback.
6
- def image_alt
7
- return preferred_image_alt if respond_to?(:preferred_image_alt) && preferred_image_alt.present?
8
-
9
- if respond_to?(:asset) && asset&.filename.present?
10
- filename = asset.filename.to_s
11
- base = File.basename(filename, File.extname(filename))
12
- return base.tr('-_.', ' ').squeeze(' ').strip
13
- end
14
-
15
- Spree.t(:image, default: 'Image')
16
- end
17
- end
18
- end
@@ -1,54 +0,0 @@
1
- module Spree
2
- class BaseAnalyticsEventHandler
3
- # Initializes the event handler
4
- # @param client [Object] The client object
5
- # @param opts [Hash] The options
6
- # @option opts [User] :user
7
- # @option opts [String] :session_id
8
- # @option opts [Spree::Store] :store
9
- def initialize(opts = {})
10
- @user = opts[:user]
11
- @session = opts[:session]
12
- @request = opts[:request]
13
- @store = opts[:store]
14
- @visitor_id = opts[:visitor_id]
15
- end
16
-
17
- attr_reader :user, :session, :request, :store, :visitor_id
18
-
19
- # Returns the client
20
- # @return [Object] The client object
21
- def client
22
- raise NotImplementedError, 'Subclasses must implement the client method'
23
- end
24
-
25
- # Handles the event
26
- # @param event_name [String] eg. 'order_completed'
27
- # @param properties [Hash] eg. { product: Spree::Product, taxon: Spree::Category, query: String }
28
- # rubocop:disable Lint/UnusedMethodArgument
29
- def handle_event(event_name, properties = {})
30
- raise NotImplementedError, 'Subclasses must implement the handle method'
31
- end
32
- # rubocop:enable Lint/UnusedMethodArgument
33
-
34
- # Returns the human name for the event
35
- # @param event_name [String] eg. 'order_completed'
36
- # @return [String] eg. 'Order Completed'
37
- def event_human_name(event_name)
38
- Analytics.events[event_name.to_sym]
39
- end
40
-
41
- protected
42
-
43
- # Returns the identity hash for the event
44
- # @return [Hash] eg. { user_id: 1, session_id: '123' }
45
- def identity_hash
46
- {
47
- user_id: user&.id,
48
- # session.id is a custom class (not a string), which has overridden the `to_json` method, we have to convert it to a string first so it does not send garbage to the analytics service
49
- session_id: session&.id&.to_s,
50
- visitor_id: visitor_id
51
- }
52
- end
53
- end
54
- end
@@ -1,6 +0,0 @@
1
- module Spree
2
- module Invitations
3
- class Store < Base
4
- end
5
- end
6
- end