solidus_core 4.6.1 → 4.7.0

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 (331) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +13 -13
  3. data/app/controllers/spree/base_controller.rb +2 -2
  4. data/app/helpers/spree/base_helper.rb +24 -24
  5. data/app/helpers/spree/checkout_helper.rb +7 -7
  6. data/app/helpers/spree/core/controller_helpers/auth.rb +1 -1
  7. data/app/helpers/spree/core/controller_helpers/common.rb +3 -2
  8. data/app/helpers/spree/core/controller_helpers/order.rb +3 -5
  9. data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +1 -2
  10. data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +10 -10
  11. data/app/helpers/spree/products_helper.rb +5 -5
  12. data/app/helpers/spree/store_helper.rb +1 -1
  13. data/app/mailers/spree/carton_mailer.rb +3 -3
  14. data/app/mailers/spree/order_mailer.rb +4 -4
  15. data/app/mailers/spree/reimbursement_mailer.rb +2 -2
  16. data/app/models/concerns/spree/active_storage_adapter/attachment.rb +5 -5
  17. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +5 -5
  18. data/app/models/concerns/spree/active_storage_adapter.rb +2 -2
  19. data/app/models/concerns/spree/adjustment_source.rb +4 -4
  20. data/app/models/concerns/spree/display_money.rb +2 -2
  21. data/app/models/concerns/spree/named_type.rb +1 -1
  22. data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
  23. data/app/models/concerns/spree/preferences/persistable.rb +1 -1
  24. data/app/models/concerns/spree/ransackable_attributes.rb +1 -0
  25. data/app/models/concerns/spree/soft_deletable.rb +2 -1
  26. data/app/models/concerns/spree/state_change_tracking.rb +11 -7
  27. data/app/models/concerns/spree/user_address_book.rb +12 -12
  28. data/app/models/concerns/spree/user_methods.rb +9 -9
  29. data/app/models/concerns/spree/user_reporting.rb +1 -0
  30. data/app/models/spree/ability.rb +1 -1
  31. data/app/models/spree/address/name.rb +1 -1
  32. data/app/models/spree/address.rb +7 -7
  33. data/app/models/spree/adjustment.rb +11 -10
  34. data/app/models/spree/adjustment_reason.rb +2 -2
  35. data/app/models/spree/billing_integration.rb +2 -2
  36. data/app/models/spree/calculator/default_tax.rb +2 -2
  37. data/app/models/spree/calculator/flat_fee.rb +1 -1
  38. data/app/models/spree/calculator/flat_rate.rb +2 -2
  39. data/app/models/spree/calculator/returns/default_refund_amount.rb +3 -3
  40. data/app/models/spree/calculator/shipping/flat_percent_item_total.rb +2 -2
  41. data/app/models/spree/calculator/shipping/flat_rate.rb +3 -3
  42. data/app/models/spree/calculator/shipping/flexi_rate.rb +8 -8
  43. data/app/models/spree/calculator/shipping/per_item.rb +3 -3
  44. data/app/models/spree/calculator/shipping/price_sack.rb +3 -3
  45. data/app/models/spree/calculator.rb +31 -6
  46. data/app/models/spree/carton.rb +4 -4
  47. data/app/models/spree/classification.rb +2 -2
  48. data/app/models/spree/core/state_machines/order/class_methods.rb +3 -3
  49. data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +1 -1
  50. data/app/models/spree/country.rb +1 -1
  51. data/app/models/spree/credit_card.rb +27 -27
  52. data/app/models/spree/customer_return.rb +5 -4
  53. data/app/models/spree/distributed_amounts_handler.rb +1 -1
  54. data/app/models/spree/fulfilment_changer.rb +22 -22
  55. data/app/models/spree/image/active_storage_attachment.rb +2 -2
  56. data/app/models/spree/image/paperclip_attachment.rb +8 -8
  57. data/app/models/spree/in_memory_order_updater.rb +262 -0
  58. data/app/models/spree/inventory_unit.rb +11 -11
  59. data/app/models/spree/item_total.rb +1 -1
  60. data/app/models/spree/legacy_user.rb +2 -2
  61. data/app/models/spree/line_item.rb +21 -11
  62. data/app/models/spree/log_entry.rb +3 -3
  63. data/app/models/spree/mergeable_orders_finder.rb +44 -0
  64. data/app/models/spree/money.rb +2 -1
  65. data/app/models/spree/null_promotion_adjuster.rb +1 -1
  66. data/app/models/spree/option_type.rb +1 -1
  67. data/app/models/spree/option_value.rb +2 -2
  68. data/app/models/spree/order/number_generator.rb +1 -1
  69. data/app/models/spree/order.rb +66 -64
  70. data/app/models/spree/order_cancellations.rb +1 -3
  71. data/app/models/spree/order_inventory.rb +5 -8
  72. data/app/models/spree/order_mutex.rb +1 -1
  73. data/app/models/spree/order_shipping.rb +1 -1
  74. data/app/models/spree/order_updater.rb +59 -37
  75. data/app/models/spree/payment/cancellation.rb +2 -2
  76. data/app/models/spree/payment/processing.rb +22 -22
  77. data/app/models/spree/payment.rb +26 -26
  78. data/app/models/spree/payment_capture_event.rb +2 -2
  79. data/app/models/spree/payment_create.rb +1 -1
  80. data/app/models/spree/payment_method/bogus_credit_card.rb +18 -18
  81. data/app/models/spree/payment_method/check.rb +3 -3
  82. data/app/models/spree/payment_method/credit_card.rb +1 -1
  83. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +3 -3
  84. data/app/models/spree/payment_method/store_credit.rb +13 -13
  85. data/app/models/spree/payment_method.rb +12 -11
  86. data/app/models/spree/payment_source.rb +2 -2
  87. data/app/models/spree/permission_sets/dashboard_display.rb +3 -3
  88. data/app/models/spree/permission_sets/default_customer.rb +1 -1
  89. data/app/models/spree/preference.rb +1 -1
  90. data/app/models/spree/price.rb +7 -6
  91. data/app/models/spree/product/scopes.rb +23 -23
  92. data/app/models/spree/product.rb +37 -41
  93. data/app/models/spree/product_option_type.rb +2 -2
  94. data/app/models/spree/product_property.rb +3 -3
  95. data/app/models/spree/refund.rb +10 -10
  96. data/app/models/spree/refund_reason.rb +2 -2
  97. data/app/models/spree/reimbursement/credit.rb +1 -1
  98. data/app/models/spree/reimbursement.rb +8 -8
  99. data/app/models/spree/reimbursement_tax_calculator.rb +1 -1
  100. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +1 -1
  101. data/app/models/spree/reimbursement_type.rb +2 -2
  102. data/app/models/spree/return_authorization.rb +7 -6
  103. data/app/models/spree/return_item/eligibility_validator/base_validator.rb +2 -2
  104. data/app/models/spree/return_item/eligibility_validator/default.rb +1 -1
  105. data/app/models/spree/return_item/eligibility_validator/inventory_shipped.rb +1 -1
  106. data/app/models/spree/return_item/eligibility_validator/no_reimbursements.rb +1 -1
  107. data/app/models/spree/return_item/eligibility_validator/order_completed.rb +1 -1
  108. data/app/models/spree/return_item/eligibility_validator/rma_required.rb +1 -1
  109. data/app/models/spree/return_item/eligibility_validator/time_since_purchase.rb +1 -1
  110. data/app/models/spree/return_item/exchange_variant_eligibility/same_option_value.rb +6 -6
  111. data/app/models/spree/return_item.rb +31 -30
  112. data/app/models/spree/return_reason.rb +1 -1
  113. data/app/models/spree/role.rb +1 -1
  114. data/app/models/spree/role_user.rb +1 -1
  115. data/app/models/spree/shipment.rb +37 -29
  116. data/app/models/spree/shipping_method.rb +9 -9
  117. data/app/models/spree/shipping_method_category.rb +2 -2
  118. data/app/models/spree/shipping_rate.rb +12 -10
  119. data/app/models/spree/shipping_rate_tax.rb +5 -4
  120. data/app/models/spree/simple_order_contents.rb +2 -2
  121. data/app/models/spree/state.rb +1 -1
  122. data/app/models/spree/state_change_tracker.rb +31 -0
  123. data/app/models/spree/stock/availability.rb +9 -9
  124. data/app/models/spree/stock/availability_validator.rb +3 -3
  125. data/app/models/spree/stock/differentiator.rb +2 -2
  126. data/app/models/spree/stock/estimator.rb +4 -4
  127. data/app/models/spree/stock/inventory_validator.rb +1 -1
  128. data/app/models/spree/stock/package.rb +3 -3
  129. data/app/models/spree/stock_item.rb +5 -5
  130. data/app/models/spree/stock_location.rb +6 -6
  131. data/app/models/spree/stock_movement.rb +2 -2
  132. data/app/models/spree/stock_quantities.rb +2 -2
  133. data/app/models/spree/store.rb +3 -3
  134. data/app/models/spree/store_credit.rb +30 -29
  135. data/app/models/spree/store_credit_category.rb +2 -2
  136. data/app/models/spree/store_credit_event.rb +6 -6
  137. data/app/models/spree/store_credit_reason.rb +1 -1
  138. data/app/models/spree/store_credit_type.rb +3 -3
  139. data/app/models/spree/store_selector/by_server_name.rb +1 -1
  140. data/app/models/spree/store_selector/legacy.rb +1 -1
  141. data/app/models/spree/tax/item_tax.rb +1 -0
  142. data/app/models/spree/tax/order_tax.rb +1 -0
  143. data/app/models/spree/tax_category.rb +3 -3
  144. data/app/models/spree/tax_rate.rb +5 -5
  145. data/app/models/spree/tax_rate_tax_category.rb +2 -2
  146. data/app/models/spree/taxon/active_storage_attachment.rb +2 -2
  147. data/app/models/spree/taxon/paperclip_attachment.rb +4 -4
  148. data/app/models/spree/taxon.rb +16 -17
  149. data/app/models/spree/taxon_brand_selector.rb +3 -3
  150. data/app/models/spree/unauthorized_redirect_handler.rb +1 -1
  151. data/app/models/spree/unit_cancel.rb +4 -4
  152. data/app/models/spree/user_address.rb +3 -3
  153. data/app/models/spree/user_last_url_storer/rules/authentication_rule.rb +6 -8
  154. data/app/models/spree/user_last_url_storer.rb +1 -1
  155. data/app/models/spree/variant/price_selector.rb +1 -1
  156. data/app/models/spree/variant/scopes.rb +9 -9
  157. data/app/models/spree/variant.rb +25 -25
  158. data/app/models/spree/variant_property_rule.rb +2 -2
  159. data/app/models/spree/variant_property_rule_condition.rb +1 -1
  160. data/app/models/spree/wallet/add_payment_sources_to_wallet.rb +4 -4
  161. data/app/models/spree/wallet/default_payment_builder.rb +1 -1
  162. data/app/models/spree/wallet_payment_source.rb +2 -2
  163. data/app/models/spree/zone.rb +18 -18
  164. data/app/models/spree/zone_member.rb +1 -1
  165. data/app/subscribers/spree/carton_shipped_mailer_subscriber.rb +2 -2
  166. data/app/subscribers/spree/order_cancel_mailer_subscriber.rb +2 -2
  167. data/app/subscribers/spree/order_confirmation_mailer_subscriber.rb +2 -2
  168. data/app/subscribers/spree/order_inventory_cancellation_mailer_subscriber.rb +2 -2
  169. data/app/subscribers/spree/reimbursement_mailer_subscriber.rb +2 -2
  170. data/config/initializers/assets.rb +1 -1
  171. data/config/initializers/db_query_matchers.rb +9 -0
  172. data/config/initializers/friendly_id.rb +2 -2
  173. data/config/initializers/inflections.rb +1 -1
  174. data/config/initializers/money.rb +1 -1
  175. data/config/locales/en.yml +1 -0
  176. data/db/default/spree/countries.rb +7 -7
  177. data/db/default/spree/return_reasons.rb +11 -11
  178. data/db/default/spree/stock_locations.rb +1 -1
  179. data/db/default/spree/store_credit.rb +3 -4
  180. data/db/default/spree/stores.rb +1 -1
  181. data/db/default/spree/zones.rb +5 -5
  182. data/db/migrate/20160101010000_solidus_one_four.rb +16 -16
  183. data/db/migrate/20160420044191_create_spree_wallet_payment_sources.rb +3 -3
  184. data/db/migrate/20160420181916_migrate_credit_cards_to_wallet_payment_sources.rb +7 -6
  185. data/db/migrate/20161014221052_add_available_to_columns_and_remove_display_on_from_payment_methods.rb +10 -10
  186. data/db/migrate/20161123154034_add_available_to_users_and_remove_display_on_from_shipping_methods.rb +6 -6
  187. data/db/migrate/20161129035810_add_index_to_spree_payments_number.rb +1 -1
  188. data/db/migrate/20170319191942_remove_order_id_from_inventory_units.rb +4 -4
  189. data/db/migrate/20180322142651_add_amount_remaining_to_store_credit_events.rb +9 -16
  190. data/db/migrate/20200320144521_add_default_billng_flag_to_user_addresses.rb +1 -0
  191. data/db/migrate/20210815004823_add_unique_index_to_option_values_variants.rb +3 -3
  192. data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +1 -1
  193. data/db/migrate/20250214094207_add_reverse_charge_status_to_store.rb +1 -1
  194. data/db/migrate/20250225051308_add_vat_id_email_and_reverse_charge_status_to_addresses.rb +1 -1
  195. data/db/migrate/20250605105424_add_shipping_category_foreign_keys.rb +3 -3
  196. data/db/seeds.rb +3 -3
  197. data/lib/generators/solidus/install/app_templates/authentication/custom.rb +2 -2
  198. data/lib/generators/solidus/install/app_templates/authentication/devise.rb +3 -3
  199. data/lib/generators/solidus/install/app_templates/authentication/existing.rb +3 -1
  200. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
  201. data/lib/generators/solidus/install/app_templates/payment_method/braintree.rb +1 -1
  202. data/lib/generators/solidus/install/app_templates/payment_method/paypal.rb +1 -1
  203. data/lib/generators/solidus/install/app_templates/payment_method/stripe.rb +2 -2
  204. data/lib/generators/solidus/install/install_generator.rb +51 -51
  205. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +3 -0
  206. data/lib/generators/solidus/update/update_generator.rb +29 -29
  207. data/lib/generators/spree/custom_user/custom_user_generator.rb +6 -6
  208. data/lib/generators/spree/dummy/dummy_generator.rb +22 -24
  209. data/lib/generators/spree/dummy/templates/rails/boot.rb +3 -3
  210. data/lib/generators/spree/dummy/templates/rails/test.rb +4 -4
  211. data/lib/solidus_core.rb +1 -1
  212. data/lib/spree/app_configuration.rb +66 -47
  213. data/lib/spree/bus.rb +1 -1
  214. data/lib/spree/config.rb +1 -1
  215. data/lib/spree/core/active_merchant_dependencies.rb +8 -8
  216. data/lib/spree/core/class_constantizer.rb +1 -1
  217. data/lib/spree/core/engine.rb +15 -15
  218. data/lib/spree/core/environment.rb +1 -1
  219. data/lib/spree/core/environment_extension.rb +2 -2
  220. data/lib/spree/core/importer/order.rb +15 -15
  221. data/lib/spree/core/importer/product.rb +4 -4
  222. data/lib/spree/core/importer.rb +2 -2
  223. data/lib/spree/core/null_promotion_configuration.rb +7 -7
  224. data/lib/spree/core/permalinks.rb +1 -1
  225. data/lib/spree/core/product_filters.rb +94 -93
  226. data/lib/spree/core/role_configuration.rb +3 -3
  227. data/lib/spree/core/search/base.rb +5 -6
  228. data/lib/spree/core/search/variant.rb +3 -3
  229. data/lib/spree/core/stock_configuration.rb +10 -49
  230. data/lib/spree/core/validators/email.rb +1 -1
  231. data/lib/spree/core/version.rb +3 -3
  232. data/lib/spree/core/versioned_value.rb +4 -6
  233. data/lib/spree/core.rb +49 -49
  234. data/lib/spree/deprecated_instance_variable_proxy.rb +1 -1
  235. data/lib/spree/deprecation.rb +1 -1
  236. data/lib/spree/deprecator.rb +2 -2
  237. data/lib/spree/i18n.rb +2 -2
  238. data/lib/spree/localized_number.rb +3 -3
  239. data/lib/spree/manipulative_query_monitor.rb +19 -0
  240. data/lib/spree/migrations.rb +2 -2
  241. data/lib/spree/permitted_attributes.rb +10 -10
  242. data/lib/spree/preferences/configuration.rb +5 -5
  243. data/lib/spree/preferences/preferable.rb +8 -10
  244. data/lib/spree/preferences/preferable_class_methods.rb +16 -16
  245. data/lib/spree/preferences/preference_differentiator.rb +1 -1
  246. data/lib/spree/preferences/scoped_store.rb +2 -2
  247. data/lib/spree/preferences/static_model_preferences.rb +2 -2
  248. data/lib/spree/preferences/store.rb +6 -6
  249. data/lib/spree/testing_support/ability_helpers.rb +30 -30
  250. data/lib/spree/testing_support/authorization_helpers.rb +6 -5
  251. data/lib/spree/testing_support/blacklist_urls.rb +1 -1
  252. data/lib/spree/testing_support/bus_helpers.rb +1 -1
  253. data/lib/spree/testing_support/capybara_driver.rb +1 -1
  254. data/lib/spree/testing_support/capybara_ext.rb +12 -12
  255. data/lib/spree/testing_support/common_rake.rb +17 -16
  256. data/lib/spree/testing_support/dummy_ability.rb +1 -1
  257. data/lib/spree/testing_support/dummy_app/migrations.rb +1 -1
  258. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +5 -5
  259. data/lib/spree/testing_support/dummy_app/routes.rb +1 -1
  260. data/lib/spree/testing_support/dummy_app.rb +34 -34
  261. data/lib/spree/testing_support/extension_rake.rb +2 -2
  262. data/lib/spree/testing_support/factories/address_factory.rb +12 -12
  263. data/lib/spree/testing_support/factories/adjustment_factory.rb +7 -7
  264. data/lib/spree/testing_support/factories/adjustment_reason_factory.rb +1 -1
  265. data/lib/spree/testing_support/factories/calculator_factory.rb +6 -6
  266. data/lib/spree/testing_support/factories/carton_factory.rb +1 -1
  267. data/lib/spree/testing_support/factories/country_factory.rb +3 -3
  268. data/lib/spree/testing_support/factories/credit_card_factory.rb +3 -3
  269. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
  270. data/lib/spree/testing_support/factories/image_factory.rb +2 -2
  271. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +4 -4
  272. data/lib/spree/testing_support/factories/line_item_factory.rb +2 -2
  273. data/lib/spree/testing_support/factories/option_type_factory.rb +2 -2
  274. data/lib/spree/testing_support/factories/option_value_factory.rb +2 -2
  275. data/lib/spree/testing_support/factories/order_factory.rb +16 -16
  276. data/lib/spree/testing_support/factories/payment_factory.rb +9 -9
  277. data/lib/spree/testing_support/factories/payment_method_factory.rb +10 -10
  278. data/lib/spree/testing_support/factories/price_factory.rb +2 -2
  279. data/lib/spree/testing_support/factories/product_factory.rb +2 -2
  280. data/lib/spree/testing_support/factories/product_option_type_factory.rb +1 -1
  281. data/lib/spree/testing_support/factories/product_property_factory.rb +1 -1
  282. data/lib/spree/testing_support/factories/property_factory.rb +3 -3
  283. data/lib/spree/testing_support/factories/refund_factory.rb +2 -2
  284. data/lib/spree/testing_support/factories/refund_reason_factory.rb +1 -1
  285. data/lib/spree/testing_support/factories/reimbursement_factory.rb +1 -1
  286. data/lib/spree/testing_support/factories/reimbursement_type_factory.rb +1 -1
  287. data/lib/spree/testing_support/factories/return_authorization_factory.rb +3 -3
  288. data/lib/spree/testing_support/factories/return_item_factory.rb +1 -1
  289. data/lib/spree/testing_support/factories/return_reason_factory.rb +1 -1
  290. data/lib/spree/testing_support/factories/role_factory.rb +2 -2
  291. data/lib/spree/testing_support/factories/shipment_factory.rb +3 -3
  292. data/lib/spree/testing_support/factories/shipping_category_factory.rb +1 -1
  293. data/lib/spree/testing_support/factories/shipping_method_factory.rb +7 -7
  294. data/lib/spree/testing_support/factories/shipping_rate_factory.rb +1 -1
  295. data/lib/spree/testing_support/factories/state_factory.rb +4 -4
  296. data/lib/spree/testing_support/factories/stock_item_factory.rb +1 -1
  297. data/lib/spree/testing_support/factories/stock_location_factory.rb +7 -7
  298. data/lib/spree/testing_support/factories/stock_movement_factory.rb +3 -3
  299. data/lib/spree/testing_support/factories/stock_package_factory.rb +3 -3
  300. data/lib/spree/testing_support/factories/store_credit_category_factory.rb +1 -1
  301. data/lib/spree/testing_support/factories/store_credit_event_factory.rb +8 -8
  302. data/lib/spree/testing_support/factories/store_credit_factory.rb +1 -1
  303. data/lib/spree/testing_support/factories/store_credit_reason_factory.rb +1 -1
  304. data/lib/spree/testing_support/factories/store_credit_type_factory.rb +6 -6
  305. data/lib/spree/testing_support/factories/store_factory.rb +2 -2
  306. data/lib/spree/testing_support/factories/tax_category_factory.rb +1 -1
  307. data/lib/spree/testing_support/factories/tax_rate_factory.rb +1 -1
  308. data/lib/spree/testing_support/factories/taxon_factory.rb +3 -3
  309. data/lib/spree/testing_support/factories/taxonomy_factory.rb +1 -1
  310. data/lib/spree/testing_support/factories/user_factory.rb +2 -2
  311. data/lib/spree/testing_support/factories/variant_factory.rb +2 -2
  312. data/lib/spree/testing_support/factories/variant_property_rule_condition_factory.rb +1 -1
  313. data/lib/spree/testing_support/factories/variant_property_rule_factory.rb +1 -1
  314. data/lib/spree/testing_support/factories/variant_property_rule_value_factory.rb +1 -1
  315. data/lib/spree/testing_support/factories/zone_factory.rb +3 -3
  316. data/lib/spree/testing_support/factory_bot.rb +1 -1
  317. data/lib/spree/testing_support/flaky.rb +3 -2
  318. data/lib/spree/testing_support/flash.rb +2 -2
  319. data/lib/spree/testing_support/order_walkthrough.rb +7 -7
  320. data/lib/spree/testing_support/preferences.rb +1 -1
  321. data/lib/spree/testing_support/rake.rb +1 -1
  322. data/lib/spree/testing_support/shared_examples/calculator.rb +1 -1
  323. data/lib/spree/testing_support/shared_examples/gallery.rb +7 -7
  324. data/lib/spree/testing_support/shared_examples/order_factory.rb +9 -9
  325. data/lib/spree/testing_support/shared_examples/state_change_tracking.rb +25 -0
  326. data/lib/spree/testing_support/shared_examples/working_factory.rb +1 -1
  327. data/lib/spree/testing_support/translations.rb +1 -1
  328. data/lib/spree_core.rb +1 -1
  329. data/lib/tasks/payment_method.rake +2 -2
  330. data/solidus_core.gemspec +49 -49
  331. metadata +62 -54
@@ -5,21 +5,25 @@ module Spree
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  included do
8
- after_update :enqueue_state_change_tracking, if: :saved_change_to_state?
8
+ after_update :enqueue_state_change_tracking, if: :track_state_change?
9
9
  end
10
10
 
11
11
  private
12
12
 
13
+ def track_state_change?
14
+ saved_change_to_state?
15
+ end
16
+
13
17
  # Enqueue background job to track state changes asynchronously
14
18
  def enqueue_state_change_tracking
15
- previous_state, current_state = saved_changes['state']
19
+ previous_state, current_state = saved_changes["state"]
16
20
 
17
21
  # Enqueue the job to track this state change
18
- StateChangeTrackingJob.perform_later(
19
- self,
20
- previous_state,
21
- current_state,
22
- Time.current
22
+ Spree::Config.state_change_tracking_class.call(
23
+ stateful: self,
24
+ previous_state:,
25
+ current_state:,
26
+ transition_timestamp: Time.current
23
27
  )
24
28
  end
25
29
  end
@@ -11,7 +11,7 @@ module Spree
11
11
  end
12
12
 
13
13
  def mark_default(user_address, address_type: :shipping)
14
- column_for_default = address_type == :shipping ? :default : :default_billing
14
+ column_for_default = (address_type == :shipping) ? :default : :default_billing
15
15
  ActiveRecord::Base.transaction do
16
16
  (self - [user_address]).each do |address| # update_all would be nice, but it bypasses ActiveRecord callbacks
17
17
  if address.persisted?
@@ -33,9 +33,9 @@ module Spree
33
33
  has_many :addresses, through: :user_addresses
34
34
 
35
35
  has_one :default_user_bill_address,
36
- ->{ default_billing },
37
- class_name: 'Spree::UserAddress',
38
- foreign_key: 'user_id',
36
+ -> { default_billing },
37
+ class_name: "Spree::UserAddress",
38
+ foreign_key: "user_id",
39
39
  inverse_of: false,
40
40
  dependent: false
41
41
  has_one :bill_address,
@@ -45,9 +45,9 @@ module Spree
45
45
  dependent: false
46
46
 
47
47
  has_one :default_user_ship_address,
48
- ->{ default_shipping },
49
- class_name: 'Spree::UserAddress',
50
- foreign_key: 'user_id',
48
+ -> { default_shipping },
49
+ class_name: "Spree::UserAddress",
50
+ foreign_key: "user_id",
51
51
  inverse_of: false,
52
52
  dependent: false
53
53
  has_one :ship_address,
@@ -66,7 +66,7 @@ module Spree
66
66
  def ship_address=(address)
67
67
  if address
68
68
  save_in_address_book(address.attributes,
69
- Spree::Config.automatic_default_address)
69
+ Spree::Config.automatic_default_address)
70
70
  end
71
71
  end
72
72
 
@@ -77,8 +77,8 @@ module Spree
77
77
  def bill_address=(address)
78
78
  if address
79
79
  save_in_address_book(address.attributes,
80
- Spree::Config.automatic_default_address,
81
- :billing)
80
+ Spree::Config.automatic_default_address,
81
+ :billing)
82
82
  end
83
83
  end
84
84
 
@@ -185,8 +185,8 @@ module Spree
185
185
  end
186
186
 
187
187
  def remove_user_address_reference(address_id)
188
- self.bill_address_id = bill_address_id == address_id.to_i ? nil : bill_address_id
189
- self.ship_address_id = ship_address_id == address_id.to_i ? nil : ship_address_id
188
+ self.bill_address_id = (bill_address_id == address_id.to_i) ? nil : bill_address_id
189
+ self.ship_address_id = (ship_address_id == address_id.to_i) ? nil : ship_address_id
190
190
  save if changed?
191
191
  end
192
192
  end
@@ -59,15 +59,15 @@ module Spree
59
59
  inverse_of: :user
60
60
 
61
61
  has_many :wallet_payment_sources,
62
- foreign_key: 'user_id',
63
- class_name: 'Spree::WalletPaymentSource',
62
+ foreign_key: "user_id",
63
+ class_name: "Spree::WalletPaymentSource",
64
64
  inverse_of: :user,
65
65
  dependent: :destroy
66
66
 
67
67
  after_create :auto_generate_spree_api_key
68
68
  before_destroy :check_for_deletion
69
69
 
70
- include Spree::RansackableAttributes unless included_modules.include?(Spree::RansackableAttributes)
70
+ include Spree::RansackableAttributes unless include?(Spree::RansackableAttributes)
71
71
 
72
72
  ransack_alias :name, :addresses_name
73
73
  self.allowed_ransackable_associations = %w[addresses spree_roles]
@@ -97,22 +97,22 @@ module Spree
97
97
  self_orders = orders
98
98
  self_orders = self_orders.where(frontend_viewable: true) if only_frontend_viewable
99
99
  self_orders = self_orders.where(store:) if store
100
- self_orders = self_orders.where('updated_at > ?', Spree::Config.completable_order_updated_cutoff_days.days.ago) if Spree::Config.completable_order_updated_cutoff_days
101
- self_orders = self_orders.where('created_at > ?', Spree::Config.completable_order_created_cutoff_days.days.ago) if Spree::Config.completable_order_created_cutoff_days
100
+ self_orders = self_orders.where("updated_at > ?", Spree::Config.completable_order_updated_cutoff_days.days.ago) if Spree::Config.completable_order_updated_cutoff_days
101
+ self_orders = self_orders.where("created_at > ?", Spree::Config.completable_order_created_cutoff_days.days.ago) if Spree::Config.completable_order_created_cutoff_days
102
102
  last_order = self_orders.order(:created_at).last
103
103
  last_order unless last_order.try!(:completed?)
104
104
  end
105
105
 
106
106
  def available_store_credit_total(currency:)
107
- store_credits.to_a.
108
- select { |credit| credit.currency == currency }.
109
- sum(&:amount_remaining)
107
+ store_credits.to_a
108
+ .select { |credit| credit.currency == currency }
109
+ .sum(&:amount_remaining)
110
110
  end
111
111
 
112
112
  def display_available_store_credit_total(currency:)
113
113
  Spree::Money.new(
114
114
  available_store_credit_total(currency:),
115
- currency:,
115
+ currency:
116
116
  )
117
117
  end
118
118
 
@@ -3,6 +3,7 @@
3
3
  module Spree
4
4
  module UserReporting
5
5
  extend DisplayMoney
6
+
6
7
  money_methods :lifetime_value, :average_order_value
7
8
 
8
9
  def lifetime_value
@@ -4,7 +4,7 @@
4
4
  # using the special +register_ability+ method which allows extensions to add their own abilities.
5
5
  #
6
6
  # See http://github.com/ryanb/cancan for more details on cancan.
7
- require 'cancan'
7
+ require "cancan"
8
8
  module Spree
9
9
  class Ability
10
10
  include CanCan::Ability
@@ -8,7 +8,7 @@ module Spree
8
8
  attr_reader :first_name, :last_name, :value
9
9
 
10
10
  def initialize(*components)
11
- @value = components.join(' ').strip
11
+ @value = components.join(" ").strip
12
12
  initialize_name_components(components)
13
13
  end
14
14
 
@@ -22,9 +22,9 @@ module Spree
22
22
  self.class.state_validator_class.new(self).perform
23
23
  end
24
24
 
25
- self.ignored_columns = %w(firstname lastname)
26
- DB_ONLY_ATTRS = %w(id updated_at created_at).freeze
27
- TAXATION_ATTRS = %w(state_id country_id zipcode).freeze
25
+ self.ignored_columns = %w[firstname lastname]
26
+ DB_ONLY_ATTRS = %w[id updated_at created_at].freeze
27
+ TAXATION_ATTRS = %w[state_id country_id zipcode].freeze
28
28
 
29
29
  self.allowed_ransackable_attributes = %w[name]
30
30
 
@@ -95,9 +95,9 @@ module Spree
95
95
  # @note This compares the addresses based on only the fields that make up
96
96
  # the logical "address" and excludes the database specific fields (id, created_at, updated_at).
97
97
  # @return [Boolean] true if the two addresses have the same address fields
98
- def ==(other_address)
99
- return false unless other_address && other_address.respond_to?(:value_attributes)
100
- value_attributes == other_address.value_attributes
98
+ def ==(other)
99
+ return false unless other&.respond_to?(:value_attributes)
100
+ value_attributes == other.value_attributes
101
101
  end
102
102
 
103
103
  # @return [Hash] an ActiveMerchant compatible address hash
@@ -142,7 +142,7 @@ module Spree
142
142
  end
143
143
 
144
144
  def country_iso
145
- country && country.iso
145
+ country&.iso
146
146
  end
147
147
  end
148
148
  end
@@ -9,8 +9,8 @@ module Spree
9
9
  class Adjustment < Spree::Base
10
10
  belongs_to :adjustable, polymorphic: true, touch: true, optional: true
11
11
  belongs_to :source, polymorphic: true, optional: true
12
- belongs_to :order, class_name: 'Spree::Order', inverse_of: :all_adjustments, optional: true
13
- belongs_to :adjustment_reason, class_name: 'Spree::AdjustmentReason', inverse_of: :adjustments, optional: true
12
+ belongs_to :order, class_name: "Spree::Order", inverse_of: false, optional: true
13
+ belongs_to :adjustment_reason, class_name: "Spree::AdjustmentReason", inverse_of: :adjustments, optional: true
14
14
 
15
15
  validates :adjustable, presence: true
16
16
  validates :order, presence: true
@@ -19,14 +19,14 @@ module Spree
19
19
 
20
20
  scope :not_finalized, -> { where(finalized: false) }
21
21
  scope :finalized, -> { where(finalized: true) }
22
- scope :cancellation, -> { where(source_type: 'Spree::UnitCancel') }
23
- scope :tax, -> { where(source_type: 'Spree::TaxRate') }
22
+ scope :cancellation, -> { where(source_type: "Spree::UnitCancel") }
23
+ scope :tax, -> { where(source_type: "Spree::TaxRate") }
24
24
  scope :non_tax, -> do
25
25
  source_type = arel_table[:source_type]
26
- where(source_type.not_eq('Spree::TaxRate').or(source_type.eq(nil)))
26
+ where(source_type.not_eq("Spree::TaxRate").or(source_type.eq(nil)))
27
27
  end
28
- scope :price, -> { where(adjustable_type: 'Spree::LineItem') }
29
- scope :shipping, -> { where(adjustable_type: 'Spree::Shipment') }
28
+ scope :price, -> { where(adjustable_type: "Spree::LineItem") }
29
+ scope :shipping, -> { where(adjustable_type: "Spree::Shipment") }
30
30
  scope :eligible, -> { all }
31
31
  class << self
32
32
  deprecate :eligible, deprecator: Spree.deprecator
@@ -42,9 +42,10 @@ module Spree
42
42
 
43
43
  singleton_class.deprecate :return_authorization, deprecator: Spree.deprecator
44
44
 
45
- allowed_ransackable_attributes << 'label'
45
+ allowed_ransackable_attributes << "label"
46
46
 
47
47
  extend DisplayMoney
48
+
48
49
  money_methods :amount
49
50
 
50
51
  def finalize!
@@ -74,12 +75,12 @@ module Spree
74
75
 
75
76
  # @return [Boolean] true when this is a tax adjustment (Tax adjustments have a {TaxRate} source)
76
77
  def tax?
77
- source_type == 'Spree::TaxRate'
78
+ source_type == "Spree::TaxRate"
78
79
  end
79
80
 
80
81
  # @return [Boolean] true when this is a cancellation adjustment (Cancellation adjustments have a {UnitCancel} source)
81
82
  def cancellation?
82
- source_type == 'Spree::UnitCancel'
83
+ source_type == "Spree::UnitCancel"
83
84
  end
84
85
 
85
86
  def eligible?
@@ -4,8 +4,8 @@ module Spree
4
4
  class AdjustmentReason < Spree::Base
5
5
  has_many :adjustments, inverse_of: :adjustment_reason, dependent: :restrict_with_error
6
6
 
7
- validates :name, presence: true, uniqueness: { case_sensitive: false, allow_blank: true }
8
- validates :code, presence: true, uniqueness: { case_sensitive: false, allow_blank: true }
7
+ validates :name, presence: true, uniqueness: {case_sensitive: false, allow_blank: true}
8
+ validates :code, presence: true, uniqueness: {case_sensitive: false, allow_blank: true}
9
9
 
10
10
  scope :active, -> { where(active: true) }
11
11
 
@@ -4,14 +4,14 @@ module Spree
4
4
  class BillingIntegration < PaymentMethod
5
5
  validates :name, presence: true
6
6
 
7
- preference :server, :string, default: 'test'
7
+ preference :server, :string, default: "test"
8
8
  preference :test_mode, :boolean, default: true
9
9
 
10
10
  def gateway
11
11
  integration_options = options
12
12
 
13
13
  # All environments except production considered to be test
14
- test_server = integration_options[:server] != 'production'
14
+ test_server = integration_options[:server] != "production"
15
15
  test_mode = integration_options[:test_mode]
16
16
 
17
17
  integration_options[:test] = (test_server || test_mode)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
3
+ require_dependency "spree/calculator"
4
4
 
5
5
  module Spree
6
6
  class Calculator::DefaultTax < Calculator
@@ -17,7 +17,7 @@ module Spree
17
17
 
18
18
  line_items_total = matched_line_items.sum(&:total_before_tax)
19
19
  if rate.included_in_price
20
- round_to_two_places(line_items_total - ( line_items_total / (1 + rate.amount) ) )
20
+ round_to_two_places(line_items_total - (line_items_total / (1 + rate.amount)))
21
21
  else
22
22
  round_to_two_places(line_items_total * rate.amount)
23
23
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
3
+ require_dependency "spree/calculator"
4
4
 
5
5
  module Spree
6
6
  # Very simple tax rate calculator. Can be used to apply a flat fee to any
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
3
+ require_dependency "spree/calculator"
4
4
 
5
5
  module Spree
6
6
  class Calculator::FlatRate < Calculator
7
7
  preference :amount, :decimal, default: 0
8
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
8
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
9
9
 
10
10
  def compute(object = nil)
11
11
  if object && preferred_currency.casecmp(object.currency).zero?
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
4
- require_dependency 'spree/returns_calculator'
3
+ require_dependency "spree/calculator"
4
+ require_dependency "spree/returns_calculator"
5
5
 
6
6
  module Spree
7
7
  module Calculator::Returns
8
8
  class DefaultRefundAmount < ReturnsCalculator
9
9
  def compute(return_item)
10
- return 0.0.to_d if return_item.part_of_exchange?
10
+ return BigDecimal("0.0") if return_item.part_of_exchange?
11
11
  weighted_order_adjustment_amount(return_item.inventory_unit) + weighted_line_item_amount(return_item.inventory_unit)
12
12
  end
13
13
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
4
- require_dependency 'spree/shipping_calculator'
3
+ require_dependency "spree/calculator"
4
+ require_dependency "spree/shipping_calculator"
5
5
 
6
6
  module Spree
7
7
  module Calculator::Shipping
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
4
- require_dependency 'spree/shipping_calculator'
3
+ require_dependency "spree/calculator"
4
+ require_dependency "spree/shipping_calculator"
5
5
 
6
6
  module Spree
7
7
  module Calculator::Shipping
8
8
  class FlatRate < ShippingCalculator
9
9
  preference :amount, :decimal, default: 0
10
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
10
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
11
11
 
12
12
  def compute_package(_package)
13
13
  preferred_amount
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
4
- require_dependency 'spree/shipping_calculator'
3
+ require_dependency "spree/calculator"
4
+ require_dependency "spree/shipping_calculator"
5
5
 
6
6
  module Spree
7
7
  module Calculator::Shipping
8
8
  class FlexiRate < ShippingCalculator
9
- preference :first_item, :decimal, default: 0.0
9
+ preference :first_item, :decimal, default: 0.0
10
10
  preference :additional_item, :decimal, default: 0.0
11
- preference :max_items, :integer, default: 0
12
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
11
+ preference :max_items, :integer, default: 0
12
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
13
13
 
14
14
  def compute_package(package)
15
15
  compute_from_quantity(package.contents.sum(&:quantity))
@@ -20,10 +20,10 @@ module Spree
20
20
  max = preferred_max_items.to_i
21
21
  quantity.times do |index|
22
22
  # check max value to avoid divide by 0 errors
23
- if (max == 0 && index == 0) || (max > 0) && (index % max == 0)
24
- sum += preferred_first_item.to_f
23
+ sum += if (max == 0 && index == 0) || (max > 0) && (index % max == 0)
24
+ preferred_first_item.to_f
25
25
  else
26
- sum += preferred_additional_item.to_f
26
+ preferred_additional_item.to_f
27
27
  end
28
28
  end
29
29
 
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
4
- require_dependency 'spree/shipping_calculator'
3
+ require_dependency "spree/calculator"
4
+ require_dependency "spree/shipping_calculator"
5
5
 
6
6
  module Spree
7
7
  module Calculator::Shipping
8
8
  class PerItem < ShippingCalculator
9
9
  preference :amount, :decimal, default: 0
10
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
10
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
11
11
 
12
12
  def compute_package(package)
13
13
  compute_from_quantity(package.contents.sum(&:quantity))
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_dependency 'spree/calculator'
4
- require_dependency 'spree/shipping_calculator'
3
+ require_dependency "spree/calculator"
4
+ require_dependency "spree/shipping_calculator"
5
5
 
6
6
  module Spree
7
7
  module Calculator::Shipping
@@ -9,7 +9,7 @@ module Spree
9
9
  preference :minimal_amount, :decimal, default: 0
10
10
  preference :normal_amount, :decimal, default: 0
11
11
  preference :discount_amount, :decimal, default: 0
12
- preference :currency, :string, default: ->{ Spree::Config[:currency] }
12
+ preference :currency, :string, default: -> { Spree::Config[:currency] }
13
13
 
14
14
  def compute_package(package)
15
15
  compute_from_price(total(package.contents))
@@ -6,16 +6,41 @@ module Spree
6
6
 
7
7
  belongs_to :calculable, polymorphic: true, optional: true
8
8
 
9
- # This method calls a compute_<computable> method. must be overriden in concrete calculator.
9
+ # Computes an amount based on the calculable and the computable parameter.
10
10
  #
11
- # It should return amount computed based on #calculable and the computable parameter
12
- def compute(computable)
11
+ # This method dynamically calls a compute_<computable> method based on the class
12
+ # of the computable parameter. Concrete calculator classes must implement the
13
+ # appropriate compute method for each computable type they support.
14
+ #
15
+ # For example, if the computable is a Spree::LineItem, this will call
16
+ # compute_line_item(computable, ...). If the computable is a Spree::Order,
17
+ # it will call compute_order(computable, ...).
18
+ #
19
+ # @param computable [Object] The object to compute the amount for (e.g.,
20
+ # Spree::LineItem, Spree::Order, Spree::Shipment,
21
+ # Spree::ShippingRate)
22
+ # @param ... [args, kwargs] Additional arguments passed to the specific compute method
23
+ #
24
+ # @return [BigDecimal, Numeric] The computed amount
25
+ #
26
+ # @raise [NotImplementedError] If the calculator doesn't implement the required compute method
27
+ #
28
+ # @example Implementing a calculator for line items
29
+ # class MyCalculator < Spree::Calculator
30
+ # def compute_line_item(line_item)
31
+ # line_item.amount * 0.1 # 10% of line item amount
32
+ # end
33
+ # end
34
+ #
35
+ # @see Spree::CalculatedAdjustments for how calculators connect to calculables, such as
36
+ # Spree::TaxRate, Spree::ShippingRate, SolidusPromotions::Benefit, or Spree::PromotionAction
37
+ def compute(computable, ...)
13
38
  # Spree::LineItem -> :compute_line_item
14
39
  computable_name = computable.class.name.demodulize.underscore
15
- method_name = "compute_#{computable_name}".to_sym
40
+ method_name = :"compute_#{computable_name}"
16
41
  calculator_class = self.class
17
42
  if respond_to?(method_name)
18
- send(method_name, computable)
43
+ send(method_name, computable, ...)
19
44
  else
20
45
  raise NotImplementedError, "Please implement '#{method_name}(#{computable_name})' in your calculator: #{calculator_class.name}"
21
46
  end
@@ -30,7 +55,7 @@ module Spree
30
55
  ###################################################################
31
56
 
32
57
  def to_s
33
- self.class.name.titleize.gsub("Calculator\/", "")
58
+ self.class.name.titleize.gsub("Calculator/", "")
34
59
  end
35
60
 
36
61
  def description
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Spree::Carton < Spree::Base
4
- belongs_to :address, class_name: 'Spree::Address', optional: true
5
- belongs_to :stock_location, class_name: 'Spree::StockLocation', inverse_of: :cartons, optional: true
6
- belongs_to :shipping_method, -> { with_discarded }, class_name: 'Spree::ShippingMethod', inverse_of: :cartons, optional: true
4
+ belongs_to :address, class_name: "Spree::Address", optional: true
5
+ belongs_to :stock_location, class_name: "Spree::StockLocation", inverse_of: :cartons, optional: true
6
+ belongs_to :shipping_method, -> { with_discarded }, class_name: "Spree::ShippingMethod", inverse_of: :cartons, optional: true
7
7
 
8
8
  has_many :inventory_units, class_name: "Spree::InventoryUnit", inverse_of: :carton, dependent: :nullify
9
9
  has_many :orders, -> { distinct }, through: :inventory_units
@@ -22,7 +22,7 @@ class Spree::Carton < Spree::Base
22
22
  # @return [boolean, NilClass] Whether the email should be suppressed.
23
23
  attr_accessor :suppress_email
24
24
 
25
- make_permalink field: :number, length: 11, prefix: 'C'
25
+ make_permalink field: :number, length: 11, prefix: "C"
26
26
 
27
27
  scope :trackable, -> { where("tracking IS NOT NULL AND tracking != ''") }
28
28
  # sort by most recent shipped_at, falling back to created_at. add "id desc" to make specs that involve this scope more deterministic.
@@ -2,12 +2,12 @@
2
2
 
3
3
  module Spree
4
4
  class Classification < Spree::Base
5
- self.table_name = 'spree_products_taxons'
5
+ self.table_name = "spree_products_taxons"
6
6
  acts_as_list scope: :taxon
7
7
  belongs_to :product, class_name: "Spree::Product", inverse_of: :classifications, touch: true
8
8
  belongs_to :taxon, class_name: "Spree::Taxon", inverse_of: :classifications, touch: true
9
9
 
10
10
  # For https://github.com/spree/spree/issues/3494
11
- validates :taxon_id, uniqueness: { scope: :product_id, message: :already_linked }
11
+ validates :taxon_id, uniqueness: {scope: :product_id, message: :already_linked}
12
12
  end
13
13
  end
@@ -101,7 +101,7 @@ module Spree
101
101
  end
102
102
 
103
103
  after_transition to: :complete, do: :finalize
104
- after_transition to: :resumed, do: :after_resume
104
+ after_transition to: :resumed, do: :after_resume
105
105
  after_transition to: :canceled, do: :after_cancel
106
106
 
107
107
  after_transition from: any - :cart, to: any - [:confirm, :complete] do |order|
@@ -121,7 +121,7 @@ module Spree
121
121
  def go_to_state(name, options = {})
122
122
  checkout_steps[name] = options
123
123
  previous_states.each do |state|
124
- add_transition({ from: state, to: name }.merge(options))
124
+ add_transition({from: state, to: name}.merge(options))
125
125
  end
126
126
  if options[:if]
127
127
  previous_states << name
@@ -188,7 +188,7 @@ module Spree
188
188
  end
189
189
 
190
190
  def add_transition(options)
191
- next_event_transitions << { options.delete(:from) => options.delete(:to) }.merge(options)
191
+ next_event_transitions << {options.delete(:from) => options.delete(:to)}.merge(options)
192
192
  end
193
193
 
194
194
  def removed_transitions
@@ -41,7 +41,7 @@ module Spree
41
41
  transition to: :manual_intervention_required, from: [:accepted, :pending, :manual_intervention_required]
42
42
  end
43
43
 
44
- after_transition any => any, do: :persist_acceptance_status_errors
44
+ after_transition any => any, :do => :persist_acceptance_status_errors
45
45
  end
46
46
  end
47
47
  end
@@ -28,7 +28,7 @@ module Spree
28
28
  def self.available(restrict_to_zone: Spree::Config[:checkout_zone])
29
29
  checkout_zone = Zone.find_by(name: restrict_to_zone)
30
30
 
31
- return checkout_zone.country_list if checkout_zone.try(:kind) == 'country'
31
+ return checkout_zone.country_list if checkout_zone.try(:kind) == "country"
32
32
 
33
33
  all
34
34
  end