From 074eb4b5923c832686ac35db2b414f673a952e1b Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Fri, 2 Jun 2023 23:19:26 +0100 Subject: [PATCH] Move tax charge logic out of checkout controller and update payment transition --- app/controllers/split_checkout_controller.rb | 8 +------- app/models/spree/order/checkout.rb | 5 ++++- spec/controllers/spree/admin/orders_controller_spec.rb | 2 +- spec/system/consumer/split_checkout_tax_not_incl_spec.rb | 8 ++++---- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/app/controllers/split_checkout_controller.rb b/app/controllers/split_checkout_controller.rb index db900e7f0d..aa27cfbfcb 100644 --- a/app/controllers/split_checkout_controller.rb +++ b/app/controllers/split_checkout_controller.rb @@ -24,7 +24,7 @@ class SplitCheckoutController < ::BaseController def edit redirect_to_step_based_on_order unless params[:step] check_step if params[:step] - recalculate_tax if params[:step] == "summary" + apply_voucher if @order.voucher_adjustments.present? flash_error_when_no_shipping_method_available if available_shipping_methods.none? end @@ -309,12 +309,6 @@ class SplitCheckoutController < ::BaseController end end - def recalculate_tax - @order.create_tax_charge! - @order.update_order! - - apply_voucher if @order.voucher_adjustments.present? - end def apply_voucher VoucherAdjustmentsService.calculate(@order) diff --git a/app/models/spree/order/checkout.rb b/app/models/spree/order/checkout.rb index 9d0bc4c54c..6a6bee68c4 100644 --- a/app/models/spree/order/checkout.rb +++ b/app/models/spree/order/checkout.rb @@ -77,7 +77,10 @@ module Spree before_transition to: :delivery, do: :ensure_available_shipping_rates before_transition to: :confirmation, do: :validate_payment_method! - after_transition to: :payment, do: :create_tax_charge! + after_transition to: :payment do |order| + order.create_tax_charge! + order.update_totals_and_states + end after_transition to: :complete, do: :finalize! after_transition to: :resumed, do: :after_resume after_transition to: :canceled, do: :after_cancel diff --git a/spec/controllers/spree/admin/orders_controller_spec.rb b/spec/controllers/spree/admin/orders_controller_spec.rb index 5664d9e3a5..cca61f44d3 100644 --- a/spec/controllers/spree/admin/orders_controller_spec.rb +++ b/spec/controllers/spree/admin/orders_controller_spec.rb @@ -57,7 +57,7 @@ describe Spree::Admin::OrdersController, type: :controller do it "updates fees and taxes and redirects to order details page" do expect(order).to receive(:recreate_all_fees!) - expect(order).to receive(:create_tax_charge!) + expect(order).to receive(:create_tax_charge!).at_least :once spree_put :update, params diff --git a/spec/system/consumer/split_checkout_tax_not_incl_spec.rb b/spec/system/consumer/split_checkout_tax_not_incl_spec.rb index b899f5d01d..21e14f8371 100644 --- a/spec/system/consumer/split_checkout_tax_not_incl_spec.rb +++ b/spec/system/consumer/split_checkout_tax_not_incl_spec.rb @@ -99,12 +99,12 @@ describe "As a consumer, I want to see adjustment breakdown" do choose "Delivery" click_button "Next - Payment method" - click_on "Next - Order summary" - click_on "Complete order" # DB checks - order_within_zone.reload - expect(order_within_zone.additional_tax_total).to eq(1.3) + expect(order_within_zone.reload.additional_tax_total).to eq(1.3) + + click_on "Next - Order summary" + click_on "Complete order" # UI checks expect(page).to have_content("Confirmed")