diff --git a/app/models/spree/payment.rb b/app/models/spree/payment.rb index 87c5d8955f..111de34e25 100644 --- a/app/models/spree/payment.rb +++ b/app/models/spree/payment.rb @@ -201,7 +201,7 @@ module Spree end def update_order - if completed? + if completed? || void? order.updater.update_payment_total end diff --git a/spec/models/spree/payment_spec.rb b/spec/models/spree/payment_spec.rb index bde1fa3c5a..91220d5474 100644 --- a/spec/models/spree/payment_spec.rb +++ b/spec/models/spree/payment_spec.rb @@ -546,6 +546,15 @@ describe Spree::Payment do end end + context 'when the payment was completed but now void' do + let(:payment) { create(:payment, amount: 100, order: order, state: 'completed') } + + it 'updates order payment total' do + payment.void + expect(order.payment_total).to eq 0 + end + end + context "completed orders" do before { allow(order).to receive(:completed?) { true } }