diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index ba0cdc2b80..817a0d716b 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -565,7 +565,7 @@ module Spree end def enterprise_fee_tax - all_adjustments.reload.enterprise_fee.sum(:included_tax) + all_adjustments.tax.where(adjustable: all_adjustments.enterprise_fee).sum(:amount) end def total_tax diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index f5d25a2b5a..5286c02fa2 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -627,21 +627,28 @@ describe Spree::Order do end end - describe "getting the enterprise fee tax" do + describe "#enterprise_fee_tax" do let!(:order) { create(:order) } - let(:enterprise_fee1) { create(:enterprise_fee) } - let(:enterprise_fee2) { create(:enterprise_fee) } - let!(:adjustment1) { - create(:adjustment, adjustable: order, originator: enterprise_fee1, label: "EF 1", - amount: 123, included_tax: 10.00, order: order) + let(:enterprise_fee) { create(:enterprise_fee) } + let!(:fee_adjustment) { + create(:adjustment, adjustable: order, originator: enterprise_fee, + amount: 100, order: order, state: "closed") } - let!(:adjustment2) { - create(:adjustment, adjustable: order, originator: enterprise_fee2, label: "EF 2", - amount: 123, included_tax: 2.00, order: order) + let!(:fee_tax1) { + create(:adjustment, adjustable: fee_adjustment, originator_type: "Spree::TaxRate", + amount: 12.3, order: order, state: "closed") + } + let!(:fee_tax2) { + create(:adjustment, adjustable: fee_adjustment, originator_type: "Spree::TaxRate", + amount: 4.5, order: order, state: "closed") + } + let!(:admin_adjustment) { + create(:adjustment, adjustable: order, originator: nil, + amount: 6.7, order: order, state: "closed") } - it "returns a sum of the tax included in all enterprise fees" do - expect(order.reload.enterprise_fee_tax).to eq(12) + it "returns a sum of all taxes on enterprise fees" do + expect(order.reload.enterprise_fee_tax).to eq(16.8) end end