solidus_core 4.1.6 → 4.5.1

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 (308) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/logo/solidus.svg +18 -1
  3. data/app/assets/images/logo/solidus_logo.png +0 -0
  4. data/app/helpers/spree/base_helper.rb +2 -2
  5. data/app/helpers/spree/core/controller_helpers/auth.rb +66 -0
  6. data/app/helpers/spree/core/controller_helpers/common.rb +82 -0
  7. data/app/helpers/spree/core/controller_helpers/order.rb +86 -0
  8. data/app/helpers/spree/core/controller_helpers/payment_parameters.rb +165 -0
  9. data/app/helpers/spree/core/controller_helpers/pricing.rb +19 -0
  10. data/app/helpers/spree/core/controller_helpers/search.rb +16 -0
  11. data/app/helpers/spree/core/controller_helpers/store.rb +19 -0
  12. data/app/helpers/spree/core/controller_helpers/strong_parameters.rb +74 -0
  13. data/app/mailers/spree/base_mailer.rb +1 -1
  14. data/app/mailers/spree/carton_mailer.rb +1 -1
  15. data/app/mailers/spree/order_mailer.rb +3 -3
  16. data/app/mailers/spree/reimbursement_mailer.rb +1 -1
  17. data/app/models/concerns/spree/active_storage_adapter/normalization.rb +1 -1
  18. data/app/models/concerns/spree/active_storage_adapter.rb +1 -1
  19. data/app/models/concerns/spree/display_money.rb +1 -1
  20. data/app/models/concerns/spree/metadata.rb +64 -0
  21. data/app/models/concerns/spree/named_type.rb +2 -0
  22. data/app/models/concerns/spree/ordered_property_value_list.rb +2 -2
  23. data/app/models/concerns/spree/user_address_book.rb +8 -9
  24. data/app/models/concerns/spree/user_methods.rb +3 -3
  25. data/app/models/spree/address.rb +10 -8
  26. data/app/models/spree/adjustment.rb +15 -65
  27. data/app/models/spree/adjustment_reason.rb +2 -0
  28. data/app/models/spree/calculator/returns/default_refund_amount.rb +1 -1
  29. data/app/models/spree/carton.rb +2 -2
  30. data/app/models/spree/core/state_machines/inventory_unit.rb +42 -0
  31. data/app/models/spree/core/state_machines/order/class_methods.rb +217 -0
  32. data/app/models/spree/core/state_machines/order.rb +42 -0
  33. data/app/models/spree/core/state_machines/payment.rb +61 -0
  34. data/app/models/spree/core/state_machines/reimbursement.rb +33 -0
  35. data/app/models/spree/core/state_machines/return_authorization.rb +32 -0
  36. data/app/models/spree/core/state_machines/return_item/acceptance_status.rb +51 -0
  37. data/app/models/spree/core/state_machines/return_item/reception_status.rb +42 -0
  38. data/app/models/spree/core/state_machines/shipment.rb +58 -0
  39. data/app/models/spree/credit_card.rb +12 -9
  40. data/app/models/spree/customer_return.rb +2 -0
  41. data/app/models/spree/deprecated_configurable_class.rb +40 -0
  42. data/app/models/spree/fulfilment_changer.rb +4 -4
  43. data/app/models/spree/inventory_unit.rb +2 -2
  44. data/app/models/spree/item_total.rb +28 -0
  45. data/app/models/spree/legacy_user.rb +1 -0
  46. data/app/models/spree/line_item.rb +22 -4
  47. data/app/models/spree/money.rb +120 -0
  48. data/app/models/spree/null_promotion_adjuster.rb +13 -0
  49. data/app/models/spree/null_promotion_advertiser.rb +9 -0
  50. data/app/models/spree/null_promotion_finder.rb +9 -0
  51. data/app/models/spree/null_promotion_handler.rb +44 -0
  52. data/app/models/spree/option_value.rb +1 -0
  53. data/app/models/spree/order.rb +54 -36
  54. data/app/models/spree/order_cancellations.rb +8 -8
  55. data/app/models/spree/order_inventory.rb +6 -4
  56. data/app/models/spree/order_merger.rb +1 -1
  57. data/app/models/spree/order_mutex.rb +2 -2
  58. data/app/models/spree/order_shipping.rb +9 -9
  59. data/app/models/spree/order_taxation.rb +1 -0
  60. data/app/models/spree/order_updater.rb +19 -40
  61. data/app/models/spree/payment/processing.rb +2 -2
  62. data/app/models/spree/payment.rb +3 -2
  63. data/app/models/spree/payment_create.rb +1 -1
  64. data/app/models/spree/payment_method/bogus_credit_card.rb +14 -9
  65. data/app/models/spree/payment_method/simple_bogus_credit_card.rb +12 -6
  66. data/app/models/spree/payment_method/store_credit.rb +1 -1
  67. data/app/models/spree/payment_method.rb +3 -1
  68. data/app/models/spree/payment_source.rb +5 -1
  69. data/app/models/spree/permission_set.rb +11 -0
  70. data/app/models/spree/permission_sets/base.rb +45 -0
  71. data/app/models/spree/permission_sets/configuration_display.rb +53 -0
  72. data/app/models/spree/permission_sets/configuration_management.rb +52 -0
  73. data/app/models/spree/permission_sets/dashboard_display.rb +28 -0
  74. data/app/models/spree/permission_sets/default_customer.rb +83 -0
  75. data/app/models/spree/permission_sets/order_display.rb +50 -0
  76. data/app/models/spree/permission_sets/order_management.rb +50 -0
  77. data/app/models/spree/permission_sets/product_display.rb +43 -0
  78. data/app/models/spree/permission_sets/product_management.rb +47 -0
  79. data/app/models/spree/permission_sets/restricted_stock_display.rb +33 -0
  80. data/app/models/spree/permission_sets/restricted_stock_management.rb +33 -0
  81. data/app/models/spree/permission_sets/stock_display.rb +26 -0
  82. data/app/models/spree/permission_sets/stock_management.rb +26 -0
  83. data/app/models/spree/permission_sets/super_user.rb +26 -0
  84. data/app/models/spree/permission_sets/user_display.rb +27 -0
  85. data/app/models/spree/permission_sets/user_management.rb +44 -0
  86. data/app/models/spree/preference.rb +1 -1
  87. data/app/models/spree/product.rb +13 -9
  88. data/app/models/spree/refund.rb +3 -1
  89. data/app/models/spree/refund_reason.rb +6 -1
  90. data/app/models/spree/reimbursement.rb +4 -4
  91. data/app/models/spree/reimbursement_performer.rb +3 -3
  92. data/app/models/spree/reimbursement_tax_calculator.rb +2 -2
  93. data/app/models/spree/reimbursement_type/credit.rb +1 -1
  94. data/app/models/spree/reimbursement_type/reimbursement_helpers.rb +6 -6
  95. data/app/models/spree/reimbursement_type/store_credit.rb +1 -1
  96. data/app/models/spree/reimbursement_type.rb +6 -1
  97. data/app/models/spree/return_authorization.rb +2 -0
  98. data/app/models/spree/return_item.rb +10 -10
  99. data/app/models/spree/return_reason.rb +6 -1
  100. data/app/models/spree/role.rb +3 -1
  101. data/app/models/spree/role_permission.rb +8 -0
  102. data/app/models/spree/shipment.rb +9 -7
  103. data/app/models/spree/shipping_category.rb +2 -0
  104. data/app/models/spree/shipping_rate.rb +2 -3
  105. data/app/models/spree/{order_contents.rb → simple_order_contents.rb} +8 -12
  106. data/app/models/spree/stock/estimator.rb +1 -1
  107. data/app/models/spree/stock/inventory_unit_builder.rb +1 -1
  108. data/app/models/spree/stock/package.rb +2 -2
  109. data/app/models/spree/stock/simple_coordinator.rb +36 -22
  110. data/app/models/spree/stock_item.rb +1 -0
  111. data/app/models/spree/stock_location.rb +5 -5
  112. data/app/models/spree/store.rb +3 -1
  113. data/app/models/spree/store_credit.rb +17 -15
  114. data/app/models/spree/store_credit_event.rb +4 -3
  115. data/app/models/spree/store_credit_reason.rb +6 -1
  116. data/app/models/spree/store_selector/by_server_name.rb +1 -1
  117. data/app/models/spree/tax/tax_helpers.rb +12 -1
  118. data/app/models/spree/tax_calculator/default.rb +3 -3
  119. data/app/models/spree/tax_calculator/shipping_rate.rb +1 -1
  120. data/app/models/spree/tax_category.rb +3 -1
  121. data/app/models/spree/tax_rate.rb +7 -3
  122. data/app/models/spree/taxon.rb +22 -2
  123. data/app/models/spree/taxon_brand_selector.rb +22 -0
  124. data/app/models/spree/taxonomy.rb +2 -2
  125. data/app/models/spree/unauthorized_redirect_handler.rb +24 -0
  126. data/app/models/spree/unit_cancel.rb +1 -2
  127. data/app/models/spree/user_address.rb +9 -3
  128. data/app/models/spree/variant/scopes.rb +4 -0
  129. data/app/models/spree/variant/vat_price_generator.rb +1 -1
  130. data/app/models/spree/variant.rb +21 -8
  131. data/app/models/spree/wallet.rb +2 -2
  132. data/app/views/spree/order_mailer/cancel_email.html.erb +1 -1
  133. data/app/views/spree/order_mailer/cancel_email.text.erb +1 -1
  134. data/app/views/spree/order_mailer/confirm_email.html.erb +5 -5
  135. data/app/views/spree/order_mailer/confirm_email.text.erb +5 -5
  136. data/app/views/spree/order_mailer/inventory_cancellation_email.html.erb +0 -1
  137. data/config/locales/en.yml +33 -90
  138. data/db/default/spree/permission_sets.rb +10 -0
  139. data/db/default/spree/return_reasons.rb +3 -1
  140. data/db/default/spree/states.rb +1 -1
  141. data/db/migrate/20160101010000_solidus_one_four.rb +0 -127
  142. data/db/migrate/20220419170826_remove_archived_user_addresses.rb +12 -0
  143. data/db/migrate/20230427095534_drop_deprecated_address_id_from_shipments.rb +1 -1
  144. data/db/migrate/20240821173254_create_spree_permission_sets_in_core.rb +9 -0
  145. data/db/migrate/20240821173341_create_spree_roles_permissions_in_core.rb +9 -0
  146. data/db/migrate/20240821173641_add_description_to_spree_roles.rb +5 -0
  147. data/db/migrate/20240904152041_add_privilege_and_category_to_spree_permission_sets.rb +6 -0
  148. data/db/migrate/20250129061658_add_metadata_to_spree_resources.rb +28 -0
  149. data/db/migrate/20250201172950_add_gtin_and_condition_to_spree_variant.rb +6 -0
  150. data/db/migrate/20250207104016_add_primary_taxon_to_products.rb +7 -0
  151. data/db/migrate/20250221152004_add_metadata_to_users.rb +13 -0
  152. data/db/seeds.rb +1 -0
  153. data/lib/generators/solidus/install/app_templates/authentication/custom.rb +0 -5
  154. data/lib/generators/solidus/install/app_templates/frontend/starter.rb +1 -1
  155. data/lib/generators/solidus/install/install_generator.rb +64 -15
  156. data/lib/generators/solidus/install/templates/config/initializers/spree.rb.tt +15 -12
  157. data/lib/generators/solidus/update/update_generator.rb +1 -1
  158. data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
  159. data/lib/generators/spree/dummy/templates/rails/application.rb.tt +1 -1
  160. data/lib/generators/spree/dummy/templates/rails/database.yml +41 -93
  161. data/lib/generators/spree/dummy/templates/rails/manifest.js +3 -0
  162. data/lib/generators/spree/dummy/templates/rails/test.rb +6 -1
  163. data/lib/spree/app_configuration.rb +102 -67
  164. data/lib/spree/core/class_constantizer.rb +2 -2
  165. data/lib/spree/core/controller_helpers/auth.rb +5 -61
  166. data/lib/spree/core/controller_helpers/common.rb +5 -80
  167. data/lib/spree/core/controller_helpers/order.rb +5 -86
  168. data/lib/spree/core/controller_helpers/payment_parameters.rb +5 -163
  169. data/lib/spree/core/controller_helpers/pricing.rb +5 -17
  170. data/lib/spree/core/controller_helpers/search.rb +5 -14
  171. data/lib/spree/core/controller_helpers/store.rb +5 -17
  172. data/lib/spree/core/controller_helpers/strong_parameters.rb +5 -71
  173. data/lib/spree/core/engine.rb +13 -5
  174. data/lib/spree/core/environment/calculators.rb +35 -3
  175. data/lib/spree/core/environment/promotions.rb +25 -4
  176. data/lib/spree/core/environment_extension.rb +16 -2
  177. data/lib/spree/core/importer/order.rb +5 -5
  178. data/lib/spree/core/importer/product.rb +3 -3
  179. data/lib/spree/core/nested_class_set.rb +28 -0
  180. data/lib/spree/core/null_promotion_configuration.rb +84 -0
  181. data/lib/spree/core/product_filters.rb +1 -1
  182. data/lib/spree/core/search/variant.rb +2 -2
  183. data/lib/spree/core/state_machines/inventory_unit.rb +5 -40
  184. data/lib/spree/core/state_machines/order.rb +5 -251
  185. data/lib/spree/core/state_machines/payment.rb +5 -59
  186. data/lib/spree/core/state_machines/reimbursement.rb +5 -31
  187. data/lib/spree/core/state_machines/return_authorization.rb +5 -30
  188. data/lib/spree/core/state_machines/return_item/acceptance_status.rb +5 -49
  189. data/lib/spree/core/state_machines/return_item/reception_status.rb +5 -40
  190. data/lib/spree/core/state_machines/shipment.rb +5 -56
  191. data/lib/spree/core/state_machines.rb +48 -81
  192. data/lib/spree/core/validators/email.rb +1 -1
  193. data/lib/spree/core/version.rb +2 -2
  194. data/lib/spree/core.rb +2 -14
  195. data/lib/spree/deprecator.rb +9 -0
  196. data/lib/spree/i18n.rb +1 -1
  197. data/lib/spree/mailer_previews/carton_preview.rb +1 -1
  198. data/lib/spree/money.rb +5 -118
  199. data/lib/spree/permission_sets/base.rb +5 -30
  200. data/lib/spree/permission_sets/configuration_display.rb +5 -41
  201. data/lib/spree/permission_sets/configuration_management.rb +5 -40
  202. data/lib/spree/permission_sets/dashboard_display.rb +5 -14
  203. data/lib/spree/permission_sets/default_customer.rb +5 -71
  204. data/lib/spree/permission_sets/order_display.rb +5 -38
  205. data/lib/spree/permission_sets/order_management.rb +5 -38
  206. data/lib/spree/permission_sets/product_display.rb +5 -31
  207. data/lib/spree/permission_sets/product_management.rb +5 -35
  208. data/lib/spree/permission_sets/restricted_stock_display.rb +5 -21
  209. data/lib/spree/permission_sets/restricted_stock_management.rb +5 -21
  210. data/lib/spree/permission_sets/stock_display.rb +5 -14
  211. data/lib/spree/permission_sets/stock_management.rb +5 -14
  212. data/lib/spree/permission_sets/super_user.rb +5 -14
  213. data/lib/spree/permission_sets/user_display.rb +5 -15
  214. data/lib/spree/permission_sets/user_management.rb +5 -32
  215. data/lib/spree/permission_sets.rb +5 -18
  216. data/lib/spree/permitted_attributes.rb +21 -9
  217. data/lib/spree/preferences/configuration.rb +4 -0
  218. data/lib/spree/preferences/persistable.rb +7 -1
  219. data/lib/spree/preferences/store.rb +2 -2
  220. data/lib/spree/testing_support/capybara_ext.rb +11 -1
  221. data/lib/spree/testing_support/common_rake.rb +1 -0
  222. data/lib/spree/testing_support/dummy_ability.rb +7 -0
  223. data/lib/spree/testing_support/dummy_app/assets/stylesheets/solidus_admin/tailwind.css +1 -0
  224. data/lib/spree/testing_support/dummy_app/database.yml +37 -46
  225. data/lib/spree/testing_support/dummy_app/migrations.rb +8 -15
  226. data/lib/spree/testing_support/dummy_app/rake_tasks.rb +3 -6
  227. data/lib/spree/testing_support/dummy_app.rb +33 -19
  228. data/lib/spree/testing_support/factories/adjustment_factory.rb +1 -2
  229. data/lib/spree/testing_support/factories/calculator_factory.rb +1 -5
  230. data/lib/spree/testing_support/factories/carton_factory.rb +2 -2
  231. data/lib/spree/testing_support/factories/customer_return_factory.rb +2 -2
  232. data/lib/spree/testing_support/factories/inventory_unit_factory.rb +3 -3
  233. data/lib/spree/testing_support/factories/order_factory.rb +13 -24
  234. data/lib/spree/testing_support/factories/product_factory.rb +1 -1
  235. data/lib/spree/testing_support/factories/shipment_factory.rb +1 -1
  236. data/lib/spree/testing_support/factories/stock_item_factory.rb +5 -1
  237. data/lib/spree/testing_support/factories/stock_package_factory.rb +1 -1
  238. data/lib/spree/testing_support/factories/user_factory.rb +1 -1
  239. data/lib/spree/testing_support/factories/zone_factory.rb +1 -1
  240. data/lib/spree/testing_support/order_walkthrough.rb +3 -3
  241. data/lib/spree/testing_support/shared_examples/calculator.rb +10 -0
  242. data/lib/spree/testing_support/shared_examples/order_factory.rb +141 -0
  243. data/lib/spree/testing_support/shared_examples/working_factory.rb +15 -0
  244. data/lib/tasks/colorado_delivery_fee.rake +2 -2
  245. data/solidus_core.gemspec +7 -10
  246. metadata +107 -109
  247. data/app/jobs/spree/promotion_code_batch_job.rb +0 -26
  248. data/app/mailers/spree/promotion_code_batch_mailer.rb +0 -15
  249. data/app/models/spree/calculator/distributed_amount.rb +0 -33
  250. data/app/models/spree/calculator/flat_percent_item_total.rb +0 -23
  251. data/app/models/spree/calculator/flexi_rate.rb +0 -22
  252. data/app/models/spree/calculator/percent_on_line_item.rb +0 -13
  253. data/app/models/spree/calculator/tiered_flat_rate.rb +0 -52
  254. data/app/models/spree/calculator/tiered_percent.rb +0 -62
  255. data/app/models/spree/line_item_action.rb +0 -8
  256. data/app/models/spree/order_promotion.rb +0 -27
  257. data/app/models/spree/promotion/actions/create_adjustment.rb +0 -81
  258. data/app/models/spree/promotion/actions/create_item_adjustments.rb +0 -98
  259. data/app/models/spree/promotion/actions/create_quantity_adjustments.rb +0 -139
  260. data/app/models/spree/promotion/actions/free_shipping.rb +0 -59
  261. data/app/models/spree/promotion/order_adjustments_recalculator.rb +0 -92
  262. data/app/models/spree/promotion/rules/first_order.rb +0 -38
  263. data/app/models/spree/promotion/rules/first_repeat_purchase_since.rb +0 -36
  264. data/app/models/spree/promotion/rules/item_total.rb +0 -86
  265. data/app/models/spree/promotion/rules/nth_order.rb +0 -45
  266. data/app/models/spree/promotion/rules/one_use_per_user.rb +0 -25
  267. data/app/models/spree/promotion/rules/option_value.rb +0 -50
  268. data/app/models/spree/promotion/rules/product.rb +0 -86
  269. data/app/models/spree/promotion/rules/store.rb +0 -26
  270. data/app/models/spree/promotion/rules/taxon.rb +0 -91
  271. data/app/models/spree/promotion/rules/user.rb +0 -34
  272. data/app/models/spree/promotion/rules/user_logged_in.rb +0 -20
  273. data/app/models/spree/promotion/rules/user_role.rb +0 -45
  274. data/app/models/spree/promotion.rb +0 -271
  275. data/app/models/spree/promotion_action.rb +0 -47
  276. data/app/models/spree/promotion_category.rb +0 -8
  277. data/app/models/spree/promotion_chooser.rb +0 -34
  278. data/app/models/spree/promotion_code/batch_builder.rb +0 -64
  279. data/app/models/spree/promotion_code.rb +0 -54
  280. data/app/models/spree/promotion_code_batch.rb +0 -27
  281. data/app/models/spree/promotion_handler/cart.rb +0 -75
  282. data/app/models/spree/promotion_handler/coupon.rb +0 -123
  283. data/app/models/spree/promotion_handler/page.rb +0 -26
  284. data/app/models/spree/promotion_handler/shipping.rb +0 -61
  285. data/app/models/spree/promotion_rule.rb +0 -55
  286. data/app/models/spree/promotion_rule_role.rb +0 -8
  287. data/app/models/spree/promotion_rule_store.rb +0 -10
  288. data/app/models/spree/promotion_rule_taxon.rb +0 -8
  289. data/app/models/spree/promotion_rule_user.rb +0 -10
  290. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_errored.text.erb +0 -2
  291. data/app/views/spree/promotion_code_batch_mailer/promotion_code_batch_finished.text.erb +0 -2
  292. data/bin/rails +0 -13
  293. data/db/migrate/20161017102621_create_spree_promotion_code_batch.rb +0 -38
  294. data/db/migrate/20180202190713_create_promotion_rule_stores.rb +0 -12
  295. data/db/migrate/20180328172631_add_join_characters_to_promotion_code_batch.rb +0 -11
  296. data/db/migrate/20190106184413_remove_code_from_spree_promotions.rb +0 -42
  297. data/db/migrate/20220317165036_set_promotions_with_any_policy_to_all_if_possible.rb +0 -20
  298. data/db/migrate/20230322085416_remove_match_policy_from_spree_promotion.rb +0 -5
  299. data/db/migrate/20230325132905_remove_unused_columns_from_promotion_rules.rb +0 -6
  300. data/db/migrate/20230325161633_drop_unused_promo_action_line_items.rb +0 -13
  301. data/lib/generators/spree/dummy/templates/rails/script/rails +0 -6
  302. data/lib/solidus/migrations/promotions_with_code_handlers.rb +0 -66
  303. data/lib/spree/permission_sets/promotion_display.rb +0 -25
  304. data/lib/spree/permission_sets/promotion_management.rb +0 -25
  305. data/lib/spree/testing_support/factories/order_promotion_factory.rb +0 -8
  306. data/lib/spree/testing_support/factories/promotion_category_factory.rb +0 -7
  307. data/lib/spree/testing_support/factories/promotion_code_factory.rb +0 -8
  308. data/lib/spree/testing_support/factories/promotion_factory.rb +0 -98
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ class NullPromotionHandler
5
+ attr_reader :order, :coupon_code
6
+
7
+ def initialize(order)
8
+ @order = order
9
+ @coupon_code = order.coupon_code&.downcase
10
+ end
11
+
12
+ def activate
13
+ @order
14
+ end
15
+
16
+ def apply
17
+ self
18
+ end
19
+
20
+ def can_apply?
21
+ true
22
+ end
23
+
24
+ def error
25
+ nil
26
+ end
27
+
28
+ def success
29
+ true
30
+ end
31
+
32
+ def successful?
33
+ true
34
+ end
35
+
36
+ def status_code
37
+ :coupon_code_applied
38
+ end
39
+
40
+ def status
41
+ I18n.t(:coupon_code_applied, scope: [:spree, :null_promotion_handler])
42
+ end
43
+ end
44
+ end
@@ -17,6 +17,7 @@ module Spree
17
17
  delegate :name, :presentation, to: :option_type, prefix: :option_type
18
18
 
19
19
  self.allowed_ransackable_attributes = %w[name presentation]
20
+ self.allowed_ransackable_associations = %w[variants]
20
21
 
21
22
  # Updates the updated_at column on all the variants associated with this
22
23
  # option value.
@@ -26,6 +26,7 @@ module Spree
26
26
  include ::Spree::Config.state_machines.order
27
27
 
28
28
  include Spree::Order::Payments
29
+ include Metadata
29
30
 
30
31
  class InsufficientStock < StandardError
31
32
  attr_reader :items
@@ -62,7 +63,7 @@ module Spree
62
63
  go_to_state :confirm
63
64
  end
64
65
 
65
- self.allowed_ransackable_associations = %w[shipments user order_promotions promotions bill_address ship_address line_items]
66
+ self.allowed_ransackable_associations = %w[shipments user bill_address ship_address line_items]
66
67
  self.allowed_ransackable_attributes = %w[completed_at created_at email number state payment_state shipment_state total store_id]
67
68
 
68
69
  attr_reader :coupon_code
@@ -72,11 +73,15 @@ module Spree
72
73
 
73
74
  # Customer info
74
75
  belongs_to :user, class_name: Spree::UserClassHandle.new, optional: true
76
+
75
77
  belongs_to :bill_address, foreign_key: :bill_address_id, class_name: 'Spree::Address', optional: true
76
- alias_attribute :billing_address, :bill_address
78
+ alias_method :billing_address, :bill_address
79
+ alias_method :billing_address=, :bill_address=
77
80
 
78
81
  belongs_to :ship_address, foreign_key: :ship_address_id, class_name: 'Spree::Address', optional: true
79
- alias_attribute :shipping_address, :ship_address
82
+ alias_method :shipping_address, :ship_address
83
+ alias_method :shipping_address=, :ship_address=
84
+
80
85
  alias_attribute :ship_total, :shipment_total
81
86
 
82
87
  belongs_to :store, class_name: 'Spree::Store', optional: true
@@ -104,8 +109,6 @@ module Spree
104
109
  foreign_key: :order_id,
105
110
  dependent: :destroy,
106
111
  inverse_of: :order
107
- has_many :order_promotions, class_name: 'Spree::OrderPromotion'
108
- has_many :promotions, through: :order_promotions
109
112
 
110
113
  # Payments
111
114
  has_many :payments, dependent: :destroy, inverse_of: :order
@@ -135,7 +138,9 @@ module Spree
135
138
  before_validation :set_currency
136
139
  before_validation :generate_order_number, on: :create
137
140
  before_validation :assign_billing_to_shipping_address, if: :use_billing?
141
+ before_validation :assign_shipping_to_billing_address, if: :use_shipping?
138
142
  attr_accessor :use_billing
143
+ attr_accessor :use_shipping
139
144
 
140
145
  before_create :create_token
141
146
  before_create :link_by_email
@@ -159,8 +164,24 @@ module Spree
159
164
  delegate :name, to: :bill_address, prefix: true, allow_nil: true
160
165
  alias_method :billing_name, :bill_address_name
161
166
 
162
- class_attribute :line_item_comparison_hooks
163
- self.line_item_comparison_hooks = Set.new
167
+ delegate :line_item_comparison_hooks, to: :class
168
+ class << self
169
+ def line_item_comparison_hooks=(value)
170
+ Spree::Config.line_item_comparison_hooks = value.to_a
171
+ end
172
+ line_item_hooks_deprecation_msg = "Use Spree::Config.line_item_comparison_hooks instead."
173
+ deprecate :line_item_comparison_hooks= => line_item_hooks_deprecation_msg, :deprecator => Spree.deprecator
174
+
175
+ def line_item_comparison_hooks
176
+ Spree::Config.line_item_comparison_hooks
177
+ end
178
+ deprecate line_item_comparison_hooks: line_item_hooks_deprecation_msg, deprecator: Spree.deprecator
179
+
180
+ def register_line_item_comparison_hook(hook)
181
+ Spree::Config.line_item_comparison_hooks << hook
182
+ end
183
+ deprecate register_line_item_comparison_hook: line_item_hooks_deprecation_msg, deprecator: Spree.deprecator
184
+ end
164
185
 
165
186
  scope :created_between, ->(start_date, end_date) { where(created_at: start_date..end_date) }
166
187
  scope :completed_between, ->(start_date, end_date) { where(completed_at: start_date..end_date) }
@@ -175,7 +196,7 @@ module Spree
175
196
  end
176
197
 
177
198
  def self.by_state(state)
178
- where(state: state)
199
+ where(state:)
179
200
  end
180
201
 
181
202
  def self.complete
@@ -194,12 +215,6 @@ module Spree
194
215
  where.not(state: 'canceled')
195
216
  end
196
217
 
197
- # Use this method in other gems that wish to register their own custom logic
198
- # that should be called when determining if two line items are equal.
199
- def self.register_line_item_comparison_hook(hook)
200
- line_item_comparison_hooks.add(hook)
201
- end
202
-
203
218
  # For compatiblity with Calculator::PriceSack
204
219
  def amount
205
220
  line_items.sum(&:amount)
@@ -223,7 +238,7 @@ module Spree
223
238
  end
224
239
 
225
240
  def shipping_discount
226
- shipment_adjustments.credit.eligible.sum(:amount) * - 1
241
+ shipment_adjustments.credit.sum(:amount) * - 1
227
242
  end
228
243
 
229
244
  def to_param
@@ -271,6 +286,11 @@ module Spree
271
286
  true
272
287
  end
273
288
 
289
+ def assign_shipping_to_billing_address
290
+ self.bill_address = ship_address if ship_address
291
+ true
292
+ end
293
+
274
294
  def allow_cancel?
275
295
  return false unless completed? && state != 'canceled'
276
296
  shipment_state.nil? || %w{ready backorder pending}.include?(shipment_state)
@@ -305,7 +325,7 @@ module Spree
305
325
 
306
326
  if persisted?
307
327
  # immediately persist the changes we just made, but don't use save since we might have an invalid address associated
308
- self.class.unscoped.where(id: id).update_all(attrs_to_set)
328
+ self.class.unscoped.where(id:).update_all(attrs_to_set)
309
329
  end
310
330
 
311
331
  assign_attributes(attrs_to_set)
@@ -347,7 +367,7 @@ module Spree
347
367
  def line_item_options_match(line_item, options)
348
368
  return true unless options
349
369
 
350
- line_item_comparison_hooks.all? { |hook|
370
+ Spree::Config.line_item_comparison_hooks.all? { |hook|
351
371
  send(hook, line_item, options)
352
372
  }
353
373
  end
@@ -439,7 +459,7 @@ module Spree
439
459
  line_items.destroy_all
440
460
  adjustments.destroy_all
441
461
  shipments.destroy_all
442
- order_promotions.destroy_all
462
+ Spree::Bus.publish :order_emptied, order: self
443
463
 
444
464
  recalculate
445
465
  end
@@ -453,7 +473,7 @@ module Spree
453
473
  end
454
474
 
455
475
  def can_add_coupon?
456
- Spree::Promotion.order_activatable?(self)
476
+ Spree::Config.promotions.coupon_code_handler_class.new(self).can_apply?
457
477
  end
458
478
 
459
479
  def shipped?
@@ -497,11 +517,6 @@ module Spree
497
517
  end
498
518
  end
499
519
 
500
- def apply_shipping_promotions
501
- Spree::PromotionHandler::Shipping.new(self).activate
502
- recalculate
503
- end
504
-
505
520
  # Clean shipments and make order back to address state (or to whatever state
506
521
  # is set by restart_checkout_flow in case of state machine modifications)
507
522
  def check_shipments_and_restart_checkout
@@ -566,7 +581,7 @@ module Spree
566
581
 
567
582
  def add_store_credit_payments
568
583
  return if user.nil?
569
- return if payments.store_credits.checkout.empty? && user.available_store_credit_total(currency: currency).zero?
584
+ return if payments.store_credits.checkout.empty? && user.available_store_credit_total(currency:).zero?
570
585
 
571
586
  payments.store_credits.checkout.each(&:invalidate!)
572
587
 
@@ -577,7 +592,7 @@ module Spree
577
592
 
578
593
  remaining_total = outstanding_balance - authorized_total
579
594
 
580
- matching_store_credits = user.store_credits.where(currency: currency)
595
+ matching_store_credits = user.store_credits.where(currency:)
581
596
 
582
597
  if matching_store_credits.any?
583
598
  payment_method = Spree::PaymentMethod::StoreCredit.first
@@ -589,7 +604,7 @@ module Spree
589
604
 
590
605
  amount_to_take = [credit.amount_remaining, remaining_total].min
591
606
  payments.create!(source: credit,
592
- payment_method: payment_method,
607
+ payment_method:,
593
608
  amount: amount_to_take,
594
609
  state: 'checkout',
595
610
  response_code: credit.generate_authorization_code)
@@ -613,13 +628,13 @@ module Spree
613
628
 
614
629
  def covered_by_store_credit?
615
630
  return false unless user
616
- user.available_store_credit_total(currency: currency) >= total
631
+ user.available_store_credit_total(currency:) >= total
617
632
  end
618
633
  alias_method :covered_by_store_credit, :covered_by_store_credit?
619
634
 
620
635
  def total_available_store_credit
621
636
  return 0.0 unless user
622
- user.available_store_credit_total(currency: currency)
637
+ user.available_store_credit_total(currency:)
623
638
  end
624
639
 
625
640
  def order_total_after_store_credit
@@ -630,16 +645,16 @@ module Spree
630
645
  if can_complete? || complete?
631
646
  valid_store_credit_payments.to_a.sum(&:amount)
632
647
  else
633
- [total, user.try(:available_store_credit_total, currency: currency) || 0.0].min
648
+ [total, user.try(:available_store_credit_total, currency:) || 0.0].min
634
649
  end
635
650
  end
636
651
 
637
652
  def display_total_applicable_store_credit
638
- Spree::Money.new(-total_applicable_store_credit, { currency: currency })
653
+ Spree::Money.new(-total_applicable_store_credit, { currency: })
639
654
  end
640
655
 
641
656
  def display_store_credit_remaining_after_capture
642
- Spree::Money.new(total_available_store_credit - total_applicable_store_credit, { currency: currency })
657
+ Spree::Money.new(total_available_store_credit - total_applicable_store_credit, { currency: })
643
658
  end
644
659
 
645
660
  def bill_address_attributes=(attributes)
@@ -788,10 +803,9 @@ module Spree
788
803
  end
789
804
 
790
805
  def ensure_promotions_eligible
791
- adjustment_changed = all_adjustments.eligible.promotion.any? do |adjustment|
792
- !adjustment.calculate_eligibility
793
- end
794
- if adjustment_changed
806
+ Spree::Config.promotions.order_adjuster_class.new(self).call
807
+
808
+ if promo_total_changed?
795
809
  restart_checkout_flow
796
810
  recalculate
797
811
  errors.add(:base, I18n.t('spree.promotion_total_changed_before_complete'))
@@ -860,6 +874,10 @@ module Spree
860
874
  use_billing.in?([true, 'true', '1'])
861
875
  end
862
876
 
877
+ def use_shipping?
878
+ use_shipping.in?([true, 'true', '1'])
879
+ end
880
+
863
881
  def set_currency
864
882
  self.currency = Spree::Config[:currency] if self[:currency].nil?
865
883
  end
@@ -36,7 +36,7 @@ class Spree::OrderCancellations
36
36
  Spree::OrderMutex.with_lock!(@order) do
37
37
  Spree::InventoryUnit.transaction do
38
38
  inventory_units.each do |iu|
39
- unit_cancels << short_ship_unit(iu, created_by: created_by)
39
+ unit_cancels << short_ship_unit(iu, created_by:)
40
40
  end
41
41
 
42
42
  update_shipped_shipments(inventory_units)
@@ -67,9 +67,9 @@ class Spree::OrderCancellations
67
67
 
68
68
  Spree::OrderMutex.with_lock!(@order) do
69
69
  unit_cancel = Spree::UnitCancel.create!(
70
- inventory_unit: inventory_unit,
71
- reason: reason,
72
- created_by: created_by
70
+ inventory_unit:,
71
+ reason:,
72
+ created_by:
73
73
  )
74
74
 
75
75
  inventory_unit.cancel!
@@ -89,8 +89,8 @@ class Spree::OrderCancellations
89
89
 
90
90
  Spree::OrderMutex.with_lock!(@order) do
91
91
  return_items = inventory_units.map(&:current_or_new_return_item)
92
- reimbursement = Spree::Reimbursement.new(order: @order, return_items: return_items)
93
- reimbursement.return_all(created_by: created_by)
92
+ reimbursement = Spree::Reimbursement.new(order: @order, return_items:)
93
+ reimbursement.return_all(created_by:)
94
94
  end
95
95
 
96
96
  reimbursement
@@ -100,9 +100,9 @@ class Spree::OrderCancellations
100
100
 
101
101
  def short_ship_unit(inventory_unit, created_by: nil)
102
102
  unit_cancel = Spree::UnitCancel.create!(
103
- inventory_unit: inventory_unit,
103
+ inventory_unit:,
104
104
  reason: Spree::UnitCancel::SHORT_SHIP,
105
- created_by: created_by
105
+ created_by:
106
106
  )
107
107
  unit_cancel.adjust!
108
108
  inventory_unit.cancel!
@@ -61,10 +61,12 @@ module Spree
61
61
 
62
62
  potential_shipments.detect do |shipment|
63
63
  shipment.include?(variant)
64
- end || potential_shipments.detect do |shipment|
65
- stock_item = variant.stock_items.detect { |stock_item| stock_item.stock_location == shipment.stock_location }
66
- if stock_item
67
- stock_item.backorderable? || stock_item.count_on_hand >= quantity
64
+ end || begin
65
+ stock_items = variant.stock_items.sort_by(&:id) # cache stock items to avoid N+1
66
+
67
+ potential_shipments.detect do |shipment|
68
+ stock_item = stock_items.detect { |stock_item| stock_item.stock_location == shipment.stock_location }
69
+ stock_item.backorderable? || stock_item.count_on_hand >= quantity if stock_item
68
70
  end
69
71
  end || potential_shipments.detect do |shipment|
70
72
  variant.stock_location_ids.include?(shipment.stock_location_id)
@@ -78,7 +78,7 @@ module Spree
78
78
  def find_matching_line_item(other_order_line_item)
79
79
  order.line_items.detect do |my_li|
80
80
  my_li.variant == other_order_line_item.variant &&
81
- order.line_item_comparison_hooks.all? do |hook|
81
+ Spree::Config.line_item_comparison_hooks.all? do |hook|
82
82
  order.send(hook, my_li, other_order_line_item.serializable_hash)
83
83
  end
84
84
  end
@@ -16,10 +16,10 @@ module Spree
16
16
  raise ArgumentError, "order must be supplied" if order.nil?
17
17
 
18
18
  # limit the maximum lock time just in case a lock is somehow left in place accidentally
19
- expired.where(order: order).delete_all
19
+ expired.where(order:).delete_all
20
20
 
21
21
  begin
22
- order_mutex = create!(order: order)
22
+ order_mutex = create!(order:)
23
23
  rescue ActiveRecord::RecordNotUnique
24
24
  error = LockFailed.new("Could not obtain lock on order #{order.id}")
25
25
  logger.error error.inspect
@@ -22,11 +22,11 @@ class Spree::OrderShipping
22
22
  address: shipment.order.ship_address,
23
23
  shipping_method: shipment.shipping_method,
24
24
  shipped_at: Time.current,
25
- external_number: external_number,
25
+ external_number:,
26
26
  # TODO: Remove the `|| shipment.tracking` once Shipment#ship! is called by
27
27
  # OrderShipping#ship rather than vice versa
28
28
  tracking_number: tracking_number || shipment.tracking,
29
- suppress_mailer: suppress_mailer
29
+ suppress_mailer:
30
30
  )
31
31
  end
32
32
 
@@ -50,12 +50,12 @@ class Spree::OrderShipping
50
50
  inventory_units.each(&:ship!)
51
51
 
52
52
  carton = Spree::Carton.create!(
53
- stock_location: stock_location,
54
- address: address,
55
- shipping_method: shipping_method,
56
- inventory_units: inventory_units,
57
- shipped_at: shipped_at,
58
- external_number: external_number,
53
+ stock_location:,
54
+ address:,
55
+ shipping_method:,
56
+ inventory_units:,
57
+ shipped_at:,
58
+ external_number:,
59
59
  tracking: tracking_number
60
60
  )
61
61
  end
@@ -79,7 +79,7 @@ class Spree::OrderShipping
79
79
 
80
80
  def send_shipment_emails(carton)
81
81
  carton.orders.each do |order|
82
- Spree::Config.carton_shipped_email_class.shipped_email(order: order, carton: carton).deliver_later
82
+ Spree::Config.carton_shipped_email_class.shipped_email(order:, carton:).deliver_later
83
83
  end
84
84
  end
85
85
  end
@@ -28,6 +28,7 @@ module Spree
28
28
 
29
29
  @order.line_items.each do |item|
30
30
  taxed_items = taxes.line_item_taxes.select { |element| element.item_id == item.id }
31
+ item.tax_category_id = item.variant_tax_category_id
31
32
  update_adjustments(item, taxed_items)
32
33
  end
33
34
 
@@ -26,7 +26,7 @@ module Spree
26
26
  update_shipments
27
27
  update_shipment_state
28
28
  end
29
- Spree::Bus.publish :order_recalculated, order: order
29
+ Spree::Bus.publish(:order_recalculated, order:)
30
30
  persist_totals
31
31
  end
32
32
  end
@@ -113,8 +113,7 @@ module Spree
113
113
  # It also fits the criteria for sales tax as outlined here:
114
114
  # http://www.boe.ca.gov/formspubs/pub113/
115
115
  update_promotions
116
- update_taxes
117
- update_cancellations
116
+ update_tax_adjustments
118
117
  update_item_totals
119
118
  end
120
119
 
@@ -158,9 +157,9 @@ module Spree
158
157
  recalculate_adjustments
159
158
 
160
159
  all_items = line_items + shipments
161
- order_tax_adjustments = adjustments.select(&:eligible?).select(&:tax?)
160
+ order_tax_adjustments = adjustments.select(&:tax?)
162
161
 
163
- order.adjustment_total = all_items.sum(&:adjustment_total) + adjustments.select(&:eligible?).sum(&:amount)
162
+ order.adjustment_total = all_items.sum(&:adjustment_total) + adjustments.sum(&:amount)
164
163
  order.included_tax_total = all_items.sum(&:included_tax_total) + order_tax_adjustments.select(&:included?).sum(&:amount)
165
164
  order.additional_tax_total = all_items.sum(&:additional_tax_total) + order_tax_adjustments.reject(&:included?).sum(&:amount)
166
165
 
@@ -189,57 +188,37 @@ module Spree
189
188
  order.state_changes.new(
190
189
  previous_state: old_state,
191
190
  next_state: new_state,
192
- name: name,
191
+ name:,
193
192
  user_id: order.user_id
194
193
  )
195
194
  end
196
195
  end
197
196
 
198
197
  def update_promotions
199
- Spree::Config.promotion_adjuster_class.new(order).call
198
+ Spree::Config.promotions.order_adjuster_class.new(order).call
200
199
  end
201
200
 
202
- def update_taxes
201
+ def update_tax_adjustments
203
202
  Spree::Config.tax_adjuster_class.new(order).adjust!
204
-
205
- [*line_items, *shipments].each do |item|
206
- tax_adjustments = item.adjustments.select(&:tax?)
207
- # Tax adjustments come in not one but *two* exciting flavours:
208
- # Included & additional
209
-
210
- # Included tax adjustments are those which are included in the price.
211
- # These ones should not affect the eventual total price.
212
- #
213
- # Additional tax adjustments are the opposite, affecting the final total.
214
- item.included_tax_total = tax_adjustments.select(&:included?).sum(&:amount)
215
- item.additional_tax_total = tax_adjustments.reject(&:included?).sum(&:amount)
216
- end
217
203
  end
218
204
 
219
205
  def update_cancellations
220
- line_items.each do |line_item|
221
- line_item.adjustments.select(&:cancellation?).each(&:recalculate)
222
- end
223
206
  end
207
+ deprecate :update_cancellations, deprecator: Spree.deprecator
224
208
 
225
209
  def update_item_totals
226
210
  [*line_items, *shipments].each do |item|
227
- # The cancellation_total isn't persisted anywhere but is included in
228
- # the adjustment_total
229
- item.adjustment_total = item.adjustments.
230
- select(&:eligible?).
231
- reject(&:included?).
232
- sum(&:amount)
233
-
234
- if item.changed?
235
- item.update_columns(
236
- promo_total: item.promo_total,
237
- included_tax_total: item.included_tax_total,
238
- additional_tax_total: item.additional_tax_total,
239
- adjustment_total: item.adjustment_total,
240
- updated_at: Time.current,
241
- )
242
- end
211
+ Spree::Config.item_total_class.new(item).recalculate!
212
+
213
+ next unless item.changed?
214
+
215
+ item.update_columns(
216
+ promo_total: item.promo_total,
217
+ included_tax_total: item.included_tax_total,
218
+ additional_tax_total: item.additional_tax_total,
219
+ adjustment_total: item.adjustment_total,
220
+ updated_at: Time.current,
221
+ )
243
222
  end
244
223
  end
245
224
  end
@@ -64,7 +64,7 @@ module Spree
64
64
  complete! if handle_response(response)
65
65
  end
66
66
 
67
- capture_events.create!(amount: amount)
67
+ capture_events.create!(amount:)
68
68
  end
69
69
 
70
70
  # Takes the amount in cents to capture.
@@ -243,7 +243,7 @@ module Spree
243
243
  cvv_result: response.cvv_result,
244
244
  error_code: response.error_code,
245
245
  emv_authorization: response.emv_authorization,
246
- gateway_order_id: gateway_order_id,
246
+ gateway_order_id:,
247
247
  order_number: order.number
248
248
  }
249
249
  end
@@ -7,6 +7,7 @@ module Spree
7
7
  #
8
8
  class Payment < Spree::Base
9
9
  include Spree::Payment::Processing
10
+ include Metadata
10
11
 
11
12
  IDENTIFIER_CHARS = (('A'..'Z').to_a + ('0'..'9').to_a - %w(0 1 I O)).freeze
12
13
  NON_RISKY_AVS_CODES = ['B', 'D', 'H', 'J', 'M', 'Q', 'T', 'V', 'X', 'Y'].freeze
@@ -69,7 +70,7 @@ module Spree
69
70
 
70
71
  # @return [Spree::Money] this amount of this payment as money object
71
72
  def money
72
- Spree::Money.new(amount, { currency: currency })
73
+ Spree::Money.new(amount, { currency: })
73
74
  end
74
75
  alias display_amount money
75
76
 
@@ -211,7 +212,7 @@ module Spree
211
212
  def set_unique_identifier
212
213
  loop do
213
214
  self.number = generate_identifier
214
- break unless self.class.exists?(number: number)
215
+ break unless self.class.exists?(number:)
215
216
  end
216
217
  end
217
218
 
@@ -72,7 +72,7 @@ module Spree
72
72
 
73
73
  def available_cards
74
74
  if user_id = order.user_id
75
- Spree::CreditCard.where(user_id: user_id)
75
+ Spree::CreditCard.where(user_id:)
76
76
  else
77
77
  Spree::CreditCard.none
78
78
  end
@@ -29,39 +29,44 @@ module Spree
29
29
 
30
30
  def authorize(_money, credit_card, _options = {})
31
31
  profile_id = credit_card.gateway_customer_profile_id
32
+ message_detail = " - #{__method__}"
32
33
  if VALID_CCS.include?(credit_card.number) || (profile_id && profile_id.starts_with?('BGS-'))
33
- ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE, {}, test: true, authorization: AUTHORIZATION_CODE, avs_result: { code: 'D' })
34
+ ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE + message_detail, {}, test: true, authorization: AUTHORIZATION_CODE, avs_result: { code: 'D' })
34
35
  else
35
- ActiveMerchant::Billing::Response.new(false, FAILURE_MESSAGE, { message: FAILURE_MESSAGE }, test: true)
36
+ ActiveMerchant::Billing::Response.new(false, FAILURE_MESSAGE + message_detail, { message: FAILURE_MESSAGE + message_detail }, test: true)
36
37
  end
37
38
  end
38
39
 
39
40
  def purchase(_money, credit_card, _options = {})
40
41
  profile_id = credit_card.gateway_customer_profile_id
42
+ message_detail = " - #{__method__}"
41
43
  if VALID_CCS.include?(credit_card.number) || (profile_id && profile_id.starts_with?('BGS-'))
42
- ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE, {}, test: true, authorization: AUTHORIZATION_CODE, avs_result: { code: 'M' })
44
+ ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE + message_detail, {}, test: true, authorization: AUTHORIZATION_CODE, avs_result: { code: 'M' })
43
45
  else
44
- ActiveMerchant::Billing::Response.new(false, FAILURE_MESSAGE, message: FAILURE_MESSAGE, test: true)
46
+ ActiveMerchant::Billing::Response.new(false, FAILURE_MESSAGE + message_detail, message: FAILURE_MESSAGE + message_detail, test: true)
45
47
  end
46
48
  end
47
49
 
48
50
  def credit(_money, _credit_card, _response_code, _options = {})
49
- ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE, {}, test: true, authorization: AUTHORIZATION_CODE)
51
+ message_detail = " - #{__method__}"
52
+ ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE + message_detail, {}, test: true, authorization: AUTHORIZATION_CODE)
50
53
  end
51
54
 
52
55
  def capture(_money, authorization, _gateway_options)
56
+ message_detail = " - #{__method__}"
53
57
  if authorization == '12345'
54
- ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE, {}, test: true)
58
+ ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE + message_detail, {}, test: true)
55
59
  else
56
- ActiveMerchant::Billing::Response.new(false, FAILURE_MESSAGE, error: FAILURE_MESSAGE, test: true)
60
+ ActiveMerchant::Billing::Response.new(false, FAILURE_MESSAGE + message_detail, error: FAILURE_MESSAGE + message_detail, test: true)
57
61
  end
58
62
  end
59
63
 
60
64
  def void(_response_code, _credit_card, options = {})
65
+ message_detail = " - #{__method__}"
61
66
  if options[:originator].completed?
62
- ActiveMerchant::Billing::Response.new(false, FAILURE_MESSAGE, {}, test: true, authorization: AUTHORIZATION_CODE)
67
+ ActiveMerchant::Billing::Response.new(false, FAILURE_MESSAGE + message_detail, {}, test: true, authorization: AUTHORIZATION_CODE)
63
68
  else
64
- ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE, {}, test: true, authorization: AUTHORIZATION_CODE)
69
+ ActiveMerchant::Billing::Response.new(true, SUCCESS_MESSAGE + message_detail, {}, test: true, authorization: AUTHORIZATION_CODE)
65
70
  end
66
71
  end
67
72