From c5dfecbb6922eb9dc99b0d050b477243d7956a71 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Fri, 2 Jun 2023 13:12:07 +0100 Subject: [PATCH] Reapply taxes at model level if order address changes This should be done at the model level --- .../spree/admin/orders/customer_details_controller.rb | 8 -------- app/models/spree/order.rb | 9 +++++++++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/controllers/spree/admin/orders/customer_details_controller.rb b/app/controllers/spree/admin/orders/customer_details_controller.rb index 53d08434f5..cc6d6f679f 100644 --- a/app/controllers/spree/admin/orders/customer_details_controller.rb +++ b/app/controllers/spree/admin/orders/customer_details_controller.rb @@ -24,7 +24,6 @@ module Spree end refresh_shipment_rates - recalculate_taxes OrderWorkflow.new(@order).advance_to_payment flash[:success] = Spree.t('customer_details_updated') @@ -52,13 +51,6 @@ module Spree @order.shipments.map(&:refresh_rates) end - def recalculate_taxes - # If the order's address has been changed, the tax zone could be different, - # which means a different set of tax rates might be applicable. - @order.create_tax_charge! - @order.update_totals_and_states - end - def order_params params.require(:order).permit( :email, diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index aa920e602d..13d65cea25 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -108,6 +108,7 @@ module Spree before_save :update_payment_fees!, if: :complete? after_create :create_tax_charge! + after_save :reapply_tax_on_changed_address after_save_commit DefaultAddressUpdater @@ -580,6 +581,14 @@ module Spree private + def reapply_tax_on_changed_address + return if before_payment_state? + return unless tax_address&.saved_changes? + + create_tax_charge! + update_totals_and_states + end + def deliver_order_confirmation_email return if subscription.present?