spree_core 5.3.6 → 5.4.0.beta

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 (243) hide show
  1. checksums.yaml +4 -4
  2. data/app/finders/spree/orders/find_complete.rb +33 -2
  3. data/app/finders/spree/stores/find_default.rb +17 -0
  4. data/app/finders/spree/variants/visible_finder.rb +1 -0
  5. data/app/helpers/spree/addresses_helper.rb +1 -2
  6. data/app/helpers/spree/base_helper.rb +5 -4
  7. data/app/jobs/spree/api_key_touch_job.rb +9 -0
  8. data/app/jobs/spree/images/save_from_url_job.rb +23 -47
  9. data/app/models/concerns/spree/admin_user_methods.rb +32 -0
  10. data/app/models/concerns/spree/number_as_param.rb +5 -3
  11. data/app/models/concerns/spree/prefixed_id.rb +82 -0
  12. data/app/models/concerns/spree/product_scopes.rb +33 -18
  13. data/app/models/concerns/spree/publishable.rb +47 -47
  14. data/app/models/concerns/spree/{multi_store_resource.rb → store_scoped_resource.rb} +1 -10
  15. data/app/models/concerns/spree/stores/markets.rb +124 -0
  16. data/app/models/concerns/spree/user_methods.rb +7 -7
  17. data/app/models/concerns/spree/user_payment_source.rb +2 -0
  18. data/app/models/concerns/spree/user_roles.rb +1 -0
  19. data/app/models/spree/ability.rb +13 -0
  20. data/app/models/spree/address.rb +30 -0
  21. data/app/models/spree/adjustment.rb +2 -0
  22. data/app/models/spree/api_key.rb +47 -0
  23. data/app/models/spree/asset.rb +2 -0
  24. data/app/models/spree/authentication/strategies/base_strategy.rb +55 -0
  25. data/app/models/spree/authentication/strategies/email_password_strategy.rb +47 -0
  26. data/app/models/spree/base.rb +1 -0
  27. data/app/models/spree/calculator.rb +2 -0
  28. data/app/models/spree/country.rb +56 -0
  29. data/app/models/spree/coupon_code.rb +2 -0
  30. data/app/models/spree/credit_card.rb +2 -0
  31. data/app/models/spree/current.rb +9 -4
  32. data/app/models/spree/customer_group.rb +2 -0
  33. data/app/models/spree/customer_return.rb +2 -0
  34. data/app/models/spree/data_feed.rb +2 -0
  35. data/app/models/spree/digital.rb +2 -0
  36. data/app/models/spree/digital_link.rb +2 -0
  37. data/app/models/spree/export.rb +5 -4
  38. data/app/models/spree/fulfilment_changer.rb +8 -2
  39. data/app/models/spree/gateway/bogus.rb +60 -0
  40. data/app/models/spree/gateway_customer.rb +2 -0
  41. data/app/models/spree/gift_card.rb +2 -0
  42. data/app/models/spree/gift_card_batch.rb +2 -4
  43. data/app/models/spree/image.rb +18 -0
  44. data/app/models/spree/import.rb +5 -3
  45. data/app/models/spree/import_mapping.rb +2 -0
  46. data/app/models/spree/import_row.rb +2 -0
  47. data/app/models/spree/import_schemas/customers.rb +21 -0
  48. data/app/models/spree/imports/customers.rb +9 -0
  49. data/app/models/spree/integration.rb +2 -0
  50. data/app/models/spree/inventory_unit.rb +2 -0
  51. data/app/models/spree/invitation.rb +6 -6
  52. data/app/models/spree/legacy_admin_user.rb +31 -0
  53. data/app/models/spree/legacy_user.rb +19 -1
  54. data/app/models/spree/line_item.rb +15 -4
  55. data/app/models/spree/log_entry.rb +2 -0
  56. data/app/models/spree/market.rb +83 -0
  57. data/app/models/spree/market_country.rb +25 -0
  58. data/app/models/spree/metafield.rb +2 -0
  59. data/app/models/spree/metafield_definition.rb +2 -0
  60. data/app/models/spree/newsletter_subscriber.rb +2 -0
  61. data/app/models/spree/option_type.rb +2 -0
  62. data/app/models/spree/option_value.rb +2 -0
  63. data/app/models/spree/order/address_book.rb +2 -1
  64. data/app/models/spree/order.rb +75 -47
  65. data/app/models/spree/payment.rb +6 -1
  66. data/app/models/spree/payment_capture_event.rb +2 -0
  67. data/app/models/spree/payment_method.rb +59 -1
  68. data/app/models/spree/payment_session.rb +109 -0
  69. data/app/models/spree/payment_sessions/bogus.rb +4 -0
  70. data/app/models/spree/payment_setup_session.rb +79 -0
  71. data/app/models/spree/payment_source.rb +2 -0
  72. data/app/models/spree/permission_sets/default_customer.rb +19 -0
  73. data/app/models/spree/policy.rb +2 -0
  74. data/app/models/spree/post.rb +2 -0
  75. data/app/models/spree/post_category.rb +2 -0
  76. data/app/models/spree/price.rb +26 -2
  77. data/app/models/spree/price_list.rb +2 -0
  78. data/app/models/spree/price_rule.rb +2 -0
  79. data/app/models/spree/price_rules/market_rule.rb +19 -0
  80. data/app/models/spree/product.rb +41 -29
  81. data/app/models/spree/promotion/rules/country.rb +1 -1
  82. data/app/models/spree/promotion.rb +3 -1
  83. data/app/models/spree/promotion_action.rb +2 -0
  84. data/app/models/spree/promotion_category.rb +2 -0
  85. data/app/models/spree/promotion_rule.rb +2 -0
  86. data/app/models/spree/prototype.rb +2 -0
  87. data/app/models/spree/refund.rb +2 -4
  88. data/app/models/spree/refund_reason.rb +2 -0
  89. data/app/models/spree/reimbursement/credit.rb +2 -0
  90. data/app/models/spree/reimbursement.rb +2 -0
  91. data/app/models/spree/reimbursement_type.rb +2 -0
  92. data/app/models/spree/report.rb +3 -1
  93. data/app/models/spree/return_authorization.rb +2 -0
  94. data/app/models/spree/return_authorization_reason.rb +2 -0
  95. data/app/models/spree/return_item.rb +2 -0
  96. data/app/models/spree/role.rb +2 -0
  97. data/app/models/spree/shipment.rb +11 -1
  98. data/app/models/spree/shipping_category.rb +2 -0
  99. data/app/models/spree/shipping_method.rb +2 -0
  100. data/app/models/spree/shipping_method_category.rb +2 -0
  101. data/app/models/spree/shipping_rate.rb +2 -0
  102. data/app/models/spree/state_change.rb +2 -0
  103. data/app/models/spree/stock_item.rb +2 -0
  104. data/app/models/spree/stock_location.rb +2 -0
  105. data/app/models/spree/stock_movement.rb +2 -0
  106. data/app/models/spree/stock_transfer.rb +2 -1
  107. data/app/models/spree/store.rb +110 -179
  108. data/app/models/spree/store_credit.rb +2 -4
  109. data/app/models/spree/store_credit_category.rb +2 -0
  110. data/app/models/spree/store_credit_event.rb +2 -0
  111. data/app/models/spree/store_credit_type.rb +2 -0
  112. data/app/models/spree/store_product.rb +2 -0
  113. data/app/models/spree/tax_category.rb +2 -0
  114. data/app/models/spree/tax_rate.rb +2 -0
  115. data/app/models/spree/taxon.rb +4 -1
  116. data/app/models/spree/taxon_image.rb +8 -0
  117. data/app/models/spree/taxon_rule.rb +2 -0
  118. data/app/models/spree/taxonomy.rb +2 -0
  119. data/app/models/spree/user_identity.rb +81 -0
  120. data/app/models/spree/variant.rb +13 -3
  121. data/app/models/spree/webhook_delivery.rb +2 -0
  122. data/app/models/spree/webhook_endpoint.rb +2 -17
  123. data/app/models/spree/wished_item.rb +15 -0
  124. data/app/models/spree/wishlist.rb +2 -8
  125. data/app/models/spree/zone.rb +2 -6
  126. data/app/presenters/spree/filters/price_presenter.rb +1 -0
  127. data/app/presenters/spree/filters/price_range_presenter.rb +1 -0
  128. data/app/presenters/spree/filters/quantified_price_range_presenter.rb +1 -0
  129. data/app/presenters/spree/product_summary_presenter.rb +1 -0
  130. data/app/services/spree/addresses/helper.rb +22 -3
  131. data/app/services/spree/cart/associate.rb +19 -6
  132. data/app/services/spree/checkout/select_shipping_method.rb +13 -1
  133. data/app/services/spree/classifications/reposition.rb +5 -0
  134. data/app/services/spree/data_feeds/google/required_attributes.rb +8 -3
  135. data/app/services/spree/gift_cards/apply.rb +4 -5
  136. data/app/services/spree/imports/row_processors/customer.rb +70 -0
  137. data/app/services/spree/orders/approve.rb +5 -3
  138. data/app/services/spree/orders/cancel.rb +9 -4
  139. data/app/services/spree/products/prepare_nested_attributes.rb +1 -1
  140. data/app/services/spree/sample_data/import_runner.rb +54 -0
  141. data/app/services/spree/sample_data/loader.rb +78 -0
  142. data/app/services/spree/seeds/admin_user.rb +2 -3
  143. data/app/services/spree/seeds/all.rb +1 -0
  144. data/app/services/spree/seeds/api_keys.rb +16 -0
  145. data/app/services/spree/seeds/stores.rb +2 -4
  146. data/app/sorters/spree/orders/sort.rb +4 -0
  147. data/app/subscribers/spree/product_metrics_subscriber.rb +4 -4
  148. data/config/brakeman.ignore +120 -0
  149. data/config/locales/en.yml +20 -5
  150. data/db/migrate/20250923141900_create_spree_user_identities.rb +17 -0
  151. data/db/migrate/20260123000000_create_spree_api_keys.rb +19 -0
  152. data/db/migrate/20260131000000_add_thumbnail_id_to_spree_variants_and_products.rb +9 -0
  153. data/db/migrate/20260213000000_create_spree_payment_sessions.rb +27 -0
  154. data/db/migrate/20260218000000_create_spree_payment_setup_sessions.rb +24 -0
  155. data/db/migrate/20260220000000_create_spree_markets.rb +29 -0
  156. data/db/sample_data/customers.csv +21 -0
  157. data/db/sample_data/metafield_definitions.rb +7 -0
  158. data/db/sample_data/orders.rb +131 -0
  159. data/db/sample_data/payment_methods.rb +17 -0
  160. data/db/sample_data/posts.rb +7 -0
  161. data/db/sample_data/products.csv +1083 -0
  162. data/db/sample_data/promotions.rb +8 -0
  163. data/db/sample_data/shipping_methods.rb +39 -0
  164. data/lib/generators/spree/authentication/devise/devise_generator.rb +2 -2
  165. data/lib/generators/spree/authentication/dummy/dummy_generator.rb +54 -0
  166. data/lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt +52 -0
  167. data/lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt +33 -0
  168. data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
  169. data/lib/spree/core/configuration.rb +1 -1
  170. data/lib/spree/core/controller_helpers/common.rb +6 -0
  171. data/lib/spree/core/controller_helpers/currency.rb +5 -0
  172. data/lib/spree/core/controller_helpers/order.rb +5 -1
  173. data/lib/spree/core/controller_helpers/store.rb +1 -1
  174. data/lib/spree/core/dependencies.rb +1 -1
  175. data/lib/spree/core/engine.rb +17 -4
  176. data/lib/spree/core/pricing/context.rb +6 -3
  177. data/lib/spree/core/product_filters.rb +14 -0
  178. data/lib/spree/core/query_filters/comparable.rb +4 -0
  179. data/lib/spree/core/query_filters/text.rb +4 -0
  180. data/lib/spree/core/version.rb +1 -1
  181. data/lib/spree/core.rb +4 -4
  182. data/lib/spree/database_type_utilities.rb +7 -0
  183. data/lib/spree/events.rb +17 -10
  184. data/lib/spree/money.rb +2 -9
  185. data/lib/spree/permitted_attributes.rb +19 -7
  186. data/lib/spree/testing_support/capybara_config.rb +2 -2
  187. data/lib/spree/testing_support/common_rake.rb +15 -4
  188. data/lib/spree/testing_support/factories/api_key_factory.rb +19 -0
  189. data/lib/spree/testing_support/factories/custom_domain_factory.rb +7 -5
  190. data/lib/spree/testing_support/factories/import_factory.rb +12 -0
  191. data/lib/spree/testing_support/factories/market_factory.rb +35 -0
  192. data/lib/spree/testing_support/factories/order_factory.rb +3 -1
  193. data/lib/spree/testing_support/factories/payment_method_factory.rb +2 -0
  194. data/lib/spree/testing_support/factories/payment_session_factory.rb +47 -0
  195. data/lib/spree/testing_support/factories/payment_setup_session_factory.rb +31 -0
  196. data/lib/spree/testing_support/factories/price_rule_factory.rb +10 -0
  197. data/lib/spree/testing_support/factories/user_identity_factory.rb +15 -0
  198. data/lib/spree/testing_support/store.rb +3 -2
  199. data/lib/spree/webhooks.rb +7 -7
  200. data/lib/tasks/images.rake +20 -0
  201. data/lib/tasks/markets.rake +40 -0
  202. data/lib/tasks/sample_data.rake +15 -0
  203. data/spec/fixtures/files/customers_import.csv +4 -0
  204. metadata +88 -63
  205. data/LICENSE.md +0 -57
  206. data/app/finders/spree/stores/find_current.rb +0 -28
  207. data/app/models/spree/custom_domain.rb +0 -59
  208. data/app/presenters/spree/csv/formula_sanitizer.rb +0 -28
  209. data/app/serializers/spree/events/asset_serializer.rb +0 -22
  210. data/app/serializers/spree/events/base_serializer.rb +0 -61
  211. data/app/serializers/spree/events/customer_return_serializer.rb +0 -20
  212. data/app/serializers/spree/events/digital_link_serializer.rb +0 -20
  213. data/app/serializers/spree/events/digital_serializer.rb +0 -18
  214. data/app/serializers/spree/events/export_serializer.rb +0 -22
  215. data/app/serializers/spree/events/gift_card_batch_serializer.rb +0 -24
  216. data/app/serializers/spree/events/gift_card_serializer.rb +0 -29
  217. data/app/serializers/spree/events/image_serializer.rb +0 -9
  218. data/app/serializers/spree/events/import_row_serializer.rb +0 -23
  219. data/app/serializers/spree/events/import_serializer.rb +0 -24
  220. data/app/serializers/spree/events/invitation_serializer.rb +0 -28
  221. data/app/serializers/spree/events/line_item_serializer.rb +0 -31
  222. data/app/serializers/spree/events/newsletter_subscriber_serializer.rb +0 -21
  223. data/app/serializers/spree/events/order_serializer.rb +0 -39
  224. data/app/serializers/spree/events/payment_serializer.rb +0 -24
  225. data/app/serializers/spree/events/post_category_serializer.rb +0 -20
  226. data/app/serializers/spree/events/post_serializer.rb +0 -26
  227. data/app/serializers/spree/events/price_serializer.rb +0 -22
  228. data/app/serializers/spree/events/product_serializer.rb +0 -24
  229. data/app/serializers/spree/events/promotion_serializer.rb +0 -32
  230. data/app/serializers/spree/events/refund_serializer.rb +0 -23
  231. data/app/serializers/spree/events/reimbursement_serializer.rb +0 -22
  232. data/app/serializers/spree/events/report_serializer.rb +0 -23
  233. data/app/serializers/spree/events/return_authorization_serializer.rb +0 -22
  234. data/app/serializers/spree/events/return_item_serializer.rb +0 -27
  235. data/app/serializers/spree/events/shipment_serializer.rb +0 -24
  236. data/app/serializers/spree/events/stock_item_serializer.rb +0 -22
  237. data/app/serializers/spree/events/stock_movement_serializer.rb +0 -22
  238. data/app/serializers/spree/events/stock_transfer_serializer.rb +0 -22
  239. data/app/serializers/spree/events/store_credit_serializer.rb +0 -30
  240. data/app/serializers/spree/events/user_serializer.rb +0 -18
  241. data/app/serializers/spree/events/variant_serializer.rb +0 -34
  242. data/app/serializers/spree/events/wished_item_serializer.rb +0 -20
  243. data/app/serializers/spree/events/wishlist_serializer.rb +0 -22
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.6
4
+ version: 5.4.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  - Spark Solutions Sp. z o.o.
9
9
  - Vendo Connect Inc.
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 1980-01-02 00:00:00.000000000 Z
13
+ date: 2026-02-25 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: i18n-tasks
@@ -217,6 +218,20 @@ dependencies:
217
218
  - - "<"
218
219
  - !ruby/object:Gem::Version
219
220
  version: '4'
221
+ - !ruby/object:Gem::Dependency
222
+ name: jwt
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '3.1'
228
+ type: :runtime
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '3.1'
220
235
  - !ruby/object:Gem::Dependency
221
236
  name: money
222
237
  requirement: !ruby/object:Gem::Requirement
@@ -489,20 +504,6 @@ dependencies:
489
504
  - - "~>"
490
505
  - !ruby/object:Gem::Version
491
506
  version: '1.0'
492
- - !ruby/object:Gem::Dependency
493
- name: request_store
494
- requirement: !ruby/object:Gem::Requirement
495
- requirements:
496
- - - "~>"
497
- - !ruby/object:Gem::Version
498
- version: '1.7'
499
- type: :runtime
500
- prerelease: false
501
- version_requirements: !ruby/object:Gem::Requirement
502
- requirements:
503
- - - "~>"
504
- - !ruby/object:Gem::Version
505
- version: '1.7'
506
507
  - !ruby/object:Gem::Dependency
507
508
  name: wannabe_bool
508
509
  requirement: !ruby/object:Gem::Requirement
@@ -574,26 +575,39 @@ dependencies:
574
575
  - !ruby/object:Gem::Version
575
576
  version: '2.0'
576
577
  - !ruby/object:Gem::Dependency
577
- name: ssrf_filter
578
+ name: bcrypt
578
579
  requirement: !ruby/object:Gem::Requirement
579
580
  requirements:
580
581
  - - "~>"
581
582
  - !ruby/object:Gem::Version
582
- version: '1.0'
583
+ version: '3.1'
583
584
  type: :runtime
584
585
  prerelease: false
585
586
  version_requirements: !ruby/object:Gem::Requirement
586
587
  requirements:
587
588
  - - "~>"
588
589
  - !ruby/object:Gem::Version
589
- version: '1.0'
590
+ version: '3.1'
591
+ - !ruby/object:Gem::Dependency
592
+ name: sqids
593
+ requirement: !ruby/object:Gem::Requirement
594
+ requirements:
595
+ - - "~>"
596
+ - !ruby/object:Gem::Version
597
+ version: '0.2'
598
+ type: :runtime
599
+ prerelease: false
600
+ version_requirements: !ruby/object:Gem::Requirement
601
+ requirements:
602
+ - - "~>"
603
+ - !ruby/object:Gem::Version
604
+ version: '0.2'
590
605
  description: Spree Models, Helpers, Services and core libraries
591
606
  email: hello@spreecommerce.org
592
607
  executables: []
593
608
  extensions: []
594
609
  extra_rdoc_files: []
595
610
  files:
596
- - LICENSE.md
597
611
  - README.md
598
612
  - Rakefile
599
613
  - app/assets/config/spree_core_manifest.js
@@ -827,7 +841,7 @@ files:
827
841
  - app/finders/spree/posts/find.rb
828
842
  - app/finders/spree/product_properties/find_available.rb
829
843
  - app/finders/spree/products/find.rb
830
- - app/finders/spree/stores/find_current.rb
844
+ - app/finders/spree/stores/find_default.rb
831
845
  - app/finders/spree/taxons/find.rb
832
846
  - app/finders/spree/variants/find.rb
833
847
  - app/finders/spree/variants/option_types_finder.rb
@@ -849,6 +863,7 @@ files:
849
863
  - app/javascript/spree/core/helpers/debounce.js
850
864
  - app/javascript/spree/core/helpers/scroll_lock.js
851
865
  - app/jobs/spree/addresses/geocode_address_job.rb
866
+ - app/jobs/spree/api_key_touch_job.rb
852
867
  - app/jobs/spree/base_job.rb
853
868
  - app/jobs/spree/coupon_codes/bulk_generate_job.rb
854
869
  - app/jobs/spree/events/subscriber_job.rb
@@ -888,17 +903,19 @@ files:
888
903
  - app/models/concerns/spree/metadata.rb
889
904
  - app/models/concerns/spree/metafields.rb
890
905
  - app/models/concerns/spree/multi_searchable.rb
891
- - app/models/concerns/spree/multi_store_resource.rb
892
906
  - app/models/concerns/spree/named_type.rb
893
907
  - app/models/concerns/spree/number_as_param.rb
894
908
  - app/models/concerns/spree/number_identifier.rb
895
909
  - app/models/concerns/spree/parameterizable_name.rb
896
910
  - app/models/concerns/spree/payment_source_concern.rb
911
+ - app/models/concerns/spree/prefixed_id.rb
897
912
  - app/models/concerns/spree/previewable.rb
898
913
  - app/models/concerns/spree/product_scopes.rb
899
914
  - app/models/concerns/spree/publishable.rb
900
915
  - app/models/concerns/spree/ransackable_attributes.rb
901
916
  - app/models/concerns/spree/single_store_resource.rb
917
+ - app/models/concerns/spree/store_scoped_resource.rb
918
+ - app/models/concerns/spree/stores/markets.rb
902
919
  - app/models/concerns/spree/stores/setup.rb
903
920
  - app/models/concerns/spree/stores/socials.rb
904
921
  - app/models/concerns/spree/translatable_resource.rb
@@ -920,8 +937,11 @@ files:
920
937
  - app/models/spree/adjustable/adjustments_updater.rb
921
938
  - app/models/spree/adjustable/promotion_accumulator.rb
922
939
  - app/models/spree/adjustment.rb
940
+ - app/models/spree/api_key.rb
923
941
  - app/models/spree/asset.rb
924
942
  - app/models/spree/asset/support/active_storage.rb
943
+ - app/models/spree/authentication/strategies/base_strategy.rb
944
+ - app/models/spree/authentication/strategies/email_password_strategy.rb
925
945
  - app/models/spree/base.rb
926
946
  - app/models/spree/base_analytics_event_handler.rb
927
947
  - app/models/spree/calculator.rb
@@ -945,7 +965,6 @@ files:
945
965
  - app/models/spree/coupon_code.rb
946
966
  - app/models/spree/credit_card.rb
947
967
  - app/models/spree/current.rb
948
- - app/models/spree/custom_domain.rb
949
968
  - app/models/spree/customer_group.rb
950
969
  - app/models/spree/customer_group_user.rb
951
970
  - app/models/spree/customer_return.rb
@@ -975,15 +994,20 @@ files:
975
994
  - app/models/spree/import_mapping.rb
976
995
  - app/models/spree/import_row.rb
977
996
  - app/models/spree/import_schema.rb
997
+ - app/models/spree/import_schemas/customers.rb
978
998
  - app/models/spree/import_schemas/products.rb
999
+ - app/models/spree/imports/customers.rb
979
1000
  - app/models/spree/imports/products.rb
980
1001
  - app/models/spree/integration.rb
981
1002
  - app/models/spree/inventory_unit.rb
982
1003
  - app/models/spree/invitation.rb
983
1004
  - app/models/spree/invitations/store.rb
1005
+ - app/models/spree/legacy_admin_user.rb
984
1006
  - app/models/spree/legacy_user.rb
985
1007
  - app/models/spree/line_item.rb
986
1008
  - app/models/spree/log_entry.rb
1009
+ - app/models/spree/market.rb
1010
+ - app/models/spree/market_country.rb
987
1011
  - app/models/spree/metafield.rb
988
1012
  - app/models/spree/metafield_definition.rb
989
1013
  - app/models/spree/metafields/boolean.rb
@@ -1022,6 +1046,9 @@ files:
1022
1046
  - app/models/spree/payment_method.rb
1023
1047
  - app/models/spree/payment_method/check.rb
1024
1048
  - app/models/spree/payment_method/store_credit.rb
1049
+ - app/models/spree/payment_session.rb
1050
+ - app/models/spree/payment_sessions/bogus.rb
1051
+ - app/models/spree/payment_setup_session.rb
1025
1052
  - app/models/spree/payment_source.rb
1026
1053
  - app/models/spree/permission_sets/base.rb
1027
1054
  - app/models/spree/permission_sets/configuration_management.rb
@@ -1046,6 +1073,7 @@ files:
1046
1073
  - app/models/spree/price_list.rb
1047
1074
  - app/models/spree/price_rule.rb
1048
1075
  - app/models/spree/price_rules/customer_group_rule.rb
1076
+ - app/models/spree/price_rules/market_rule.rb
1049
1077
  - app/models/spree/price_rules/user_rule.rb
1050
1078
  - app/models/spree/price_rules/volume_rule.rb
1051
1079
  - app/models/spree/price_rules/zone_rule.rb
@@ -1180,6 +1208,7 @@ files:
1180
1208
  - app/models/spree/taxon_rules/sale.rb
1181
1209
  - app/models/spree/taxon_rules/tag.rb
1182
1210
  - app/models/spree/taxonomy.rb
1211
+ - app/models/spree/user_identity.rb
1183
1212
  - app/models/spree/variant.rb
1184
1213
  - app/models/spree/variant/webhooks.rb
1185
1214
  - app/models/spree/webhook_delivery.rb
@@ -1190,7 +1219,6 @@ files:
1190
1219
  - app/models/spree/zone_member.rb
1191
1220
  - app/paginators/spree/shared/paginate.rb
1192
1221
  - app/presenters/spree/csv/customer_presenter.rb
1193
- - app/presenters/spree/csv/formula_sanitizer.rb
1194
1222
  - app/presenters/spree/csv/gift_card_presenter.rb
1195
1223
  - app/presenters/spree/csv/metafields_helper.rb
1196
1224
  - app/presenters/spree/csv/newsletter_subscriber_presenter.rb
@@ -1206,41 +1234,6 @@ files:
1206
1234
  - app/presenters/spree/variant_presenter.rb
1207
1235
  - app/presenters/spree/variants/option_types_presenter.rb
1208
1236
  - app/presenters/spree/variants/options_presenter.rb
1209
- - app/serializers/spree/events/asset_serializer.rb
1210
- - app/serializers/spree/events/base_serializer.rb
1211
- - app/serializers/spree/events/customer_return_serializer.rb
1212
- - app/serializers/spree/events/digital_link_serializer.rb
1213
- - app/serializers/spree/events/digital_serializer.rb
1214
- - app/serializers/spree/events/export_serializer.rb
1215
- - app/serializers/spree/events/gift_card_batch_serializer.rb
1216
- - app/serializers/spree/events/gift_card_serializer.rb
1217
- - app/serializers/spree/events/image_serializer.rb
1218
- - app/serializers/spree/events/import_row_serializer.rb
1219
- - app/serializers/spree/events/import_serializer.rb
1220
- - app/serializers/spree/events/invitation_serializer.rb
1221
- - app/serializers/spree/events/line_item_serializer.rb
1222
- - app/serializers/spree/events/newsletter_subscriber_serializer.rb
1223
- - app/serializers/spree/events/order_serializer.rb
1224
- - app/serializers/spree/events/payment_serializer.rb
1225
- - app/serializers/spree/events/post_category_serializer.rb
1226
- - app/serializers/spree/events/post_serializer.rb
1227
- - app/serializers/spree/events/price_serializer.rb
1228
- - app/serializers/spree/events/product_serializer.rb
1229
- - app/serializers/spree/events/promotion_serializer.rb
1230
- - app/serializers/spree/events/refund_serializer.rb
1231
- - app/serializers/spree/events/reimbursement_serializer.rb
1232
- - app/serializers/spree/events/report_serializer.rb
1233
- - app/serializers/spree/events/return_authorization_serializer.rb
1234
- - app/serializers/spree/events/return_item_serializer.rb
1235
- - app/serializers/spree/events/shipment_serializer.rb
1236
- - app/serializers/spree/events/stock_item_serializer.rb
1237
- - app/serializers/spree/events/stock_movement_serializer.rb
1238
- - app/serializers/spree/events/stock_transfer_serializer.rb
1239
- - app/serializers/spree/events/store_credit_serializer.rb
1240
- - app/serializers/spree/events/user_serializer.rb
1241
- - app/serializers/spree/events/variant_serializer.rb
1242
- - app/serializers/spree/events/wished_item_serializer.rb
1243
- - app/serializers/spree/events/wishlist_serializer.rb
1244
1237
  - app/services/spree/account/addresses/create.rb
1245
1238
  - app/services/spree/account/addresses/update.rb
1246
1239
  - app/services/spree/account/create.rb
@@ -1285,6 +1278,7 @@ files:
1285
1278
  - app/services/spree/gift_cards/redeem.rb
1286
1279
  - app/services/spree/gift_cards/remove.rb
1287
1280
  - app/services/spree/imports/row_processors/base.rb
1281
+ - app/services/spree/imports/row_processors/customer.rb
1288
1282
  - app/services/spree/imports/row_processors/product_variant.rb
1289
1283
  - app/services/spree/line_items/create.rb
1290
1284
  - app/services/spree/line_items/destroy.rb
@@ -1301,8 +1295,11 @@ files:
1301
1295
  - app/services/spree/products/auto_match_taxons.rb
1302
1296
  - app/services/spree/products/duplicator.rb
1303
1297
  - app/services/spree/products/prepare_nested_attributes.rb
1298
+ - app/services/spree/sample_data/import_runner.rb
1299
+ - app/services/spree/sample_data/loader.rb
1304
1300
  - app/services/spree/seeds/admin_user.rb
1305
1301
  - app/services/spree/seeds/all.rb
1302
+ - app/services/spree/seeds/api_keys.rb
1306
1303
  - app/services/spree/seeds/countries.rb
1307
1304
  - app/services/spree/seeds/default_reimbursement_types.rb
1308
1305
  - app/services/spree/seeds/digital_delivery.rb
@@ -1366,6 +1363,7 @@ files:
1366
1363
  - app/views/spree/shared/_payment.html.erb
1367
1364
  - app/views/spree/test_mailer/test_email.html.erb
1368
1365
  - app/views/spree/test_mailer/test_email.text.erb
1366
+ - config/brakeman.ignore
1369
1367
  - config/i18n-tasks.yml
1370
1368
  - config/importmap.rb
1371
1369
  - config/initializers/active_storage.rb
@@ -1490,6 +1488,7 @@ files:
1490
1488
  - db/migrate/20250914101955_add_missing_indexes_on_spree_adjustments.rb
1491
1489
  - db/migrate/20250915093930_add_metadata_to_spree_newsletter_subscribers.rb
1492
1490
  - db/migrate/20250923141845_create_spree_imports.rb
1491
+ - db/migrate/20250923141900_create_spree_user_identities.rb
1493
1492
  - db/migrate/20251110120000_create_spree_price_lists.rb
1494
1493
  - db/migrate/20251110120001_create_spree_price_rules.rb
1495
1494
  - db/migrate/20251110120002_add_price_list_id_to_spree_prices.rb
@@ -1506,6 +1505,19 @@ files:
1506
1505
  - db/migrate/20260119120000_add_counter_caches_to_spree_products.rb
1507
1506
  - db/migrate/20260119170000_add_counter_caches_to_spree_taxons.rb
1508
1507
  - db/migrate/20260120120000_add_image_count_to_spree_variants.rb
1508
+ - db/migrate/20260123000000_create_spree_api_keys.rb
1509
+ - db/migrate/20260131000000_add_thumbnail_id_to_spree_variants_and_products.rb
1510
+ - db/migrate/20260213000000_create_spree_payment_sessions.rb
1511
+ - db/migrate/20260218000000_create_spree_payment_setup_sessions.rb
1512
+ - db/migrate/20260220000000_create_spree_markets.rb
1513
+ - db/sample_data/customers.csv
1514
+ - db/sample_data/metafield_definitions.rb
1515
+ - db/sample_data/orders.rb
1516
+ - db/sample_data/payment_methods.rb
1517
+ - db/sample_data/posts.rb
1518
+ - db/sample_data/products.csv
1519
+ - db/sample_data/promotions.rb
1520
+ - db/sample_data/shipping_methods.rb
1509
1521
  - db/seeds.rb
1510
1522
  - lib/friendly_id/history_decorator.rb
1511
1523
  - lib/friendly_id/paranoia.rb
@@ -1513,6 +1525,9 @@ files:
1513
1525
  - lib/generators/spree/authentication/custom/templates/authentication_helpers.rb.tt
1514
1526
  - lib/generators/spree/authentication/devise/devise_generator.rb
1515
1527
  - lib/generators/spree/authentication/devise/templates/authentication_helpers.rb.tt
1528
+ - lib/generators/spree/authentication/dummy/dummy_generator.rb
1529
+ - lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt
1530
+ - lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt
1516
1531
  - lib/generators/spree/cursor_rules/cursor_rules_generator.rb
1517
1532
  - lib/generators/spree/cursor_rules/templates/spree_rules.mdc
1518
1533
  - lib/generators/spree/dummy/dummy_generator.rb
@@ -1595,6 +1610,7 @@ files:
1595
1610
  - lib/spree/testing_support/factories.rb
1596
1611
  - lib/spree/testing_support/factories/address_factory.rb
1597
1612
  - lib/spree/testing_support/factories/adjustment_factory.rb
1613
+ - lib/spree/testing_support/factories/api_key_factory.rb
1598
1614
  - lib/spree/testing_support/factories/asset_factory.rb
1599
1615
  - lib/spree/testing_support/factories/calculator_factory.rb
1600
1616
  - lib/spree/testing_support/factories/classification_factory.rb
@@ -1622,6 +1638,7 @@ files:
1622
1638
  - lib/spree/testing_support/factories/invitation_factory.rb
1623
1639
  - lib/spree/testing_support/factories/line_item_factory.rb
1624
1640
  - lib/spree/testing_support/factories/log_entry_factory.rb
1641
+ - lib/spree/testing_support/factories/market_factory.rb
1625
1642
  - lib/spree/testing_support/factories/metafield_definition_factory.rb
1626
1643
  - lib/spree/testing_support/factories/metafield_factory.rb
1627
1644
  - lib/spree/testing_support/factories/newsletter_subscriber_factory.rb
@@ -1631,6 +1648,8 @@ files:
1631
1648
  - lib/spree/testing_support/factories/payment_capture_event_factory.rb
1632
1649
  - lib/spree/testing_support/factories/payment_factory.rb
1633
1650
  - lib/spree/testing_support/factories/payment_method_factory.rb
1651
+ - lib/spree/testing_support/factories/payment_session_factory.rb
1652
+ - lib/spree/testing_support/factories/payment_setup_session_factory.rb
1634
1653
  - lib/spree/testing_support/factories/payment_source_factory.rb
1635
1654
  - lib/spree/testing_support/factories/policy_factory.rb
1636
1655
  - lib/spree/testing_support/factories/post_category_factory.rb
@@ -1681,6 +1700,7 @@ files:
1681
1700
  - lib/spree/testing_support/factories/taxon_rule_factory.rb
1682
1701
  - lib/spree/testing_support/factories/taxonomy_factory.rb
1683
1702
  - lib/spree/testing_support/factories/user_factory.rb
1703
+ - lib/spree/testing_support/factories/user_identity_factory.rb
1684
1704
  - lib/spree/testing_support/factories/variant_factory.rb
1685
1705
  - lib/spree/testing_support/factories/webhook_delivery_factory.rb
1686
1706
  - lib/spree/testing_support/factories/webhook_endpoint_factory.rb
@@ -1709,10 +1729,14 @@ files:
1709
1729
  - lib/tasks/core.rake
1710
1730
  - lib/tasks/dependencies.rake
1711
1731
  - lib/tasks/exchanges.rake
1732
+ - lib/tasks/images.rake
1733
+ - lib/tasks/markets.rake
1712
1734
  - lib/tasks/products.rake
1735
+ - lib/tasks/sample_data.rake
1713
1736
  - lib/tasks/taxons.rake
1714
1737
  - lib/tasks/variants.rake
1715
1738
  - spec/fixtures/favicon.ico
1739
+ - spec/fixtures/files/customers_import.csv
1716
1740
  - spec/fixtures/files/example.json
1717
1741
  - spec/fixtures/files/icon_256x256.gif
1718
1742
  - spec/fixtures/files/icon_256x256.png
@@ -1728,13 +1752,13 @@ files:
1728
1752
  - vendor/javascript/tailwindcss-stimulus-components.js
1729
1753
  homepage: https://spreecommerce.org
1730
1754
  licenses:
1731
- - AGPL-3.0-or-later
1732
1755
  - BSD-3-Clause
1733
1756
  metadata:
1734
1757
  bug_tracker_uri: https://github.com/spree/spree/issues
1735
- changelog_uri: https://github.com/spree/spree/releases/tag/v5.3.6
1758
+ changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.beta
1736
1759
  documentation_uri: https://docs.spreecommerce.org/
1737
- source_code_uri: https://github.com/spree/spree/tree/v5.3.6
1760
+ source_code_uri: https://github.com/spree/spree/tree/v5.4.0.beta
1761
+ post_install_message:
1738
1762
  rdoc_options: []
1739
1763
  require_paths:
1740
1764
  - lib
@@ -1749,7 +1773,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1749
1773
  - !ruby/object:Gem::Version
1750
1774
  version: 1.8.23
1751
1775
  requirements: []
1752
- rubygems_version: 4.0.3
1776
+ rubygems_version: 3.5.22
1777
+ signing_key:
1753
1778
  specification_version: 4
1754
1779
  summary: The bare bones necessary for Spree
1755
1780
  test_files: []
data/LICENSE.md DELETED
@@ -1,57 +0,0 @@
1
- # License
2
-
3
- Copyright © 2024-present, Vendo Connect Inc.
4
-
5
- Copyright © 2015-2024, Spark Solutions Sp. z o.o.
6
-
7
- Copyright © 2007-2015, Spree Commerce Inc.
8
-
9
- Spree Commerce is a free, open-source eCommerce framework giving you full control and customizability.
10
-
11
- For **Spree Commerce versions 4.10** and later in the [spree/spree](https://github.com/spree/spree) repository two licenses apply simultaneously and users are required to comply with the terms of these two licenses at the same time:
12
-
13
- * [AGPL-3.0](https://opensource.org/license/agpl-v3) - for all contributions from version 4.10 onwards
14
-
15
- * [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) - for all other contributions predating version 4.10
16
- Effectively, for versions 4.10 and upwards **AGPL-3.0** license applies.
17
-
18
- **Spree Commerce versions 4.9** and earlier in the [spree/spree](https://github.com/spree/spree) repository are available under the **BSD-3-Clause** license and users are required to comply with its terms.
19
-
20
- If you’d like to use Spree Commerce without the AGPL-3.0 restrictions e.g. for a **SaaS** business, please talk to us about obtaining a [Commercial License](#commercial-license).
21
-
22
- All third party components incorporated into this software are licensed under the original license provided by the owner of the applicable component.
23
-
24
- Please refer to our [Licensing FAQ](https://spreecommerce.org/why-spree-is-changing-its-open-source-license-to-agpl-3-0-and-introducing-a-commercial-license/) in case of questions.
25
-
26
- ## AGPL-3.0 License - Spree 4.10 upwards
27
-
28
- If you decide to accept the AGPL-3.0 license by using Spree Commerce version 4.10 or later, you must comply with the following terms:
29
-
30
- This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
31
-
32
- This program is distributed in the hope that it will be useful,
33
- but WITHOUT ANY WARRANTY; without even the implied warranty of
34
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35
- GNU Affero General Public License for more details.
36
-
37
- You should have received a copy of the GNU Affero General Public License
38
- along with this program. If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/).
39
-
40
- ## BSD 3-Clause License
41
-
42
- If you decide to accept the BSD-3-Clause license by using Spree Commerce, you must comply with the following terms:
43
-
44
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
45
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
46
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
47
- Neither the name of Spree Commerce Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
48
-
49
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50
-
51
- ## Commercial License
52
-
53
- Should you decide to use Spree Commerce version 4.10 or later for commercial redistribution (eg. SaaS) - also known as Commercial Distribution - you must do so in accordance with the terms and conditions contained in a separate written agreement between you and [Vendo Connect Inc.](https://www.getvendo.com/).
54
-
55
- For more information about the Commercial License (CL) please contact [sales@getvendo.com](mailto:sales@getvendo.com).
56
-
57
- Please refer to our [Licensing FAQ](https://spreecommerce.org/why-spree-is-changing-its-open-source-license-to-agpl-3-0-and-introducing-a-commercial-license/) in case of questions.
@@ -1,28 +0,0 @@
1
- module Spree
2
- module Stores
3
- class FindCurrent
4
- def initialize(scope: nil, url: nil)
5
- @scope = scope || Spree::Store
6
- @url = url
7
- end
8
-
9
- def execute
10
- store = by_url(scope) || scope.default
11
- return if store.nil?
12
-
13
- Spree::Current.store = store
14
- store
15
- end
16
-
17
- protected
18
-
19
- attr_reader :scope, :url
20
-
21
- def by_url(scope)
22
- return if url.blank?
23
-
24
- scope.by_custom_domain(url).or(scope.by_url(url)).first
25
- end
26
- end
27
- end
28
- end
@@ -1,59 +0,0 @@
1
- module Spree
2
- class CustomDomain < Spree::Base
3
- include Spree::SingleStoreResource
4
- include Spree::Metafields
5
- include Spree::Metadata
6
-
7
- normalizes :url, with: ->(value) { value&.to_s&.squish&.presence }
8
-
9
- #
10
- # Associations
11
- #
12
- belongs_to :store, class_name: 'Spree::Store', inverse_of: :custom_domains, touch: true
13
-
14
- #
15
- # Validations
16
- #
17
- validates :url, presence: true, uniqueness: true, format: {
18
- with: %r{\A(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\z}i
19
- }, length: { in: 1..63 }
20
- validate :url_is_valid
21
-
22
- #
23
- # Callbacks
24
- #
25
- before_validation :sanitize_url
26
- after_save :ensure_has_one_default
27
- after_validation :ensure_default, on: :create
28
-
29
- def url_is_valid
30
- return if url.blank?
31
- parts = url.split('.')
32
-
33
- errors.add(:url, 'use domain or subdomain') if parts.size > 4 || parts.size < 2
34
- end
35
-
36
- def ensure_default
37
- self.default = store.custom_domains.count.zero?
38
- end
39
-
40
- def ensure_has_one_default
41
- store.custom_domains.where.not(id: id).update_all(default: false) if default?
42
- end
43
-
44
- def active?
45
- true
46
- end
47
-
48
- def name
49
- url
50
- end
51
-
52
- private
53
-
54
- # remove https:// and http:// from the url
55
- def sanitize_url
56
- self.url = url&.gsub(%r{https?://}, '')
57
- end
58
- end
59
- end
@@ -1,28 +0,0 @@
1
- module Spree
2
- module CSV
3
- # Neutralizes CSV formula injection (CWE-1236 / OWASP "CSV Injection")
4
- # by prefixing cells that would otherwise be evaluated as a formula
5
- # when the exported file is opened in Excel, Google Sheets, LibreOffice,
6
- # or Numbers.
7
- #
8
- # The leading apostrophe is the OWASP-recommended marker — spreadsheets
9
- # render the cell as plain text without displaying the apostrophe.
10
- module FormulaSanitizer
11
- TRIGGERS = ["=", "+", "-", "@", "\t", "\r", "\n"].freeze
12
-
13
- module_function
14
-
15
- def cell(value)
16
- return value unless value.is_a?(String)
17
- return value if value.empty?
18
- return value unless TRIGGERS.include?(value[0])
19
-
20
- "'#{value}"
21
- end
22
-
23
- def row(values)
24
- values.map { |v| cell(v) }
25
- end
26
- end
27
- end
28
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Events
5
- class AssetSerializer < BaseSerializer
6
- protected
7
-
8
- def attributes
9
- {
10
- id: resource.id,
11
- type: resource.type,
12
- viewable_type: resource.viewable_type,
13
- viewable_id: resource.viewable_id,
14
- position: resource.position,
15
- alt: resource.alt,
16
- created_at: timestamp(resource.created_at),
17
- updated_at: timestamp(resource.updated_at)
18
- }
19
- end
20
- end
21
- end
22
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Events
5
- class BaseSerializer
6
- attr_reader :resource, :context
7
-
8
- def initialize(resource, context = {})
9
- @resource = resource
10
- @context = context
11
- end
12
-
13
- # Main serialization method
14
- def as_json
15
- attributes
16
- end
17
-
18
- # Class method for convenience
19
- def self.serialize(resource, context = {})
20
- new(resource, context).as_json
21
- end
22
-
23
- protected
24
-
25
- # Override in subclasses to define attributes
26
- def attributes
27
- {
28
- id: resource.id
29
- }
30
- end
31
-
32
- # Context helpers
33
- def event_name
34
- context[:event_name]
35
- end
36
-
37
- def triggered_at
38
- context[:triggered_at] || Time.current
39
- end
40
-
41
- # Attribute helpers
42
-
43
- # Safely get attribute, returns nil if not present
44
- def attribute(name)
45
- resource.public_send(name) if resource.respond_to?(name)
46
- end
47
-
48
- # Timestamp helper - ISO8601 format
49
- def timestamp(time)
50
- time&.iso8601
51
- end
52
-
53
- # Money helper - decimal value for events
54
- def money(amount)
55
- return nil if amount.nil?
56
-
57
- amount.respond_to?(:to_d) ? amount.to_d : amount
58
- end
59
- end
60
- end
61
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Events
5
- class CustomerReturnSerializer < BaseSerializer
6
- protected
7
-
8
- def attributes
9
- {
10
- id: resource.id,
11
- number: resource.number,
12
- stock_location_id: resource.stock_location_id,
13
- store_id: resource.store_id,
14
- created_at: timestamp(resource.created_at),
15
- updated_at: timestamp(resource.updated_at)
16
- }
17
- end
18
- end
19
- end
20
- end