From 093747609fc543f09353f32c0ff0a1d47925dafc Mon Sep 17 00:00:00 2001 From: Jonathan Prykop Date: Fri, 13 May 2016 00:19:21 -0500 Subject: [PATCH] RT#42394: paycvv during cust_payby replace (v4+ only) --- FS/FS/cust_payby.pm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/FS/FS/cust_payby.pm b/FS/FS/cust_payby.pm index 5bfb4af3f..fd75567e6 100644 --- a/FS/FS/cust_payby.pm +++ b/FS/FS/cust_payby.pm @@ -196,10 +196,6 @@ sub replace { ? shift : $self->replace_old; - if ( length($old->paycvv) && $self->paycvv =~ /^\s*[\*x]*\s*$/ ) { - $self->paycvv($old->paycvv); - } - if ( $self->payby =~ /^(CARD|DCRD)$/ && ( $self->payinfo =~ /xx/ || $self->payinfo =~ /^\s*N\/A\s+\(tokenized\)\s*$/ @@ -221,6 +217,17 @@ sub replace { $self->payinfo($new_account.'@'.$new_aba); } + # don't preserve paycvv if it was passed blank and payinfo changed + unless ( $self->payby =~ /^(CARD|DCRD)$/ + && $old->payinfo ne $self->payinfo + && $old->paymask ne $self->paymask + && $self->paycvv =~ /^\s*$/ ) + { + if ( length($old->paycvv) && $self->paycvv =~ /^\s*[\*x]*\s*$/ ) { + $self->paycvv($old->paycvv); + } + } + local($ignore_expired_card) = 1 if $old->payby =~ /^(CARD|DCRD)$/ && $self->payby =~ /^(CARD|DCRD)$/ -- 2.11.0