diff --git a/app/models/spree/payment_method/taler.rb b/app/models/spree/payment_method/taler.rb index 7c4953eac6..f991f289ef 100644 --- a/app/models/spree/payment_method/taler.rb +++ b/app/models/spree/payment_method/taler.rb @@ -26,7 +26,9 @@ module Spree end def can_void?(payment) - payment.state == "completed" + # The source can be another payment. Then this is an offset payment + # like a credit record. We can't void a refund. + payment.source == self && payment.state == "completed" end def can_credit?(payment) diff --git a/spec/system/admin/payments_taler_spec.rb b/spec/system/admin/payments_taler_spec.rb index bafabe2c89..d5db87393f 100644 --- a/spec/system/admin/payments_taler_spec.rb +++ b/spec/system/admin/payments_taler_spec.rb @@ -76,8 +76,7 @@ RSpec.describe "Admin -> Order -> Payments" do # Our payment system creates a new payment to show the credit. within row_containing("$-9.75") do - # TODO: don't offer to void a credited amount. - expect(page).to have_link "Void" + expect(page).not_to have_link "Void" end end end