From 9961578fc12cddc7f219f224bec4ed4c318655e5 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 16 Mar 2026 12:37:52 +1100 Subject: [PATCH] Don't offer to void a refund --- app/models/spree/payment_method/taler.rb | 4 +++- spec/system/admin/payments_taler_spec.rb | 3 +-- 2 files changed, 4 insertions(+), 3 deletions(-) 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