summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2016-05-13 00:19:21 -0500
committerJonathan Prykop <jonathan@freeside.biz>2016-06-03 19:38:08 -0500
commit1a11b9ba4171a706ad168c0ba615d88cba9d512b (patch)
tree8ccc11673989c8277ee330f9d0d2368227827283 /FS
parentdc493b1e0db4cb5594d471c413bfb8ad665829f7 (diff)
RT#42394: paycvv during cust_payby replace (v4+ only)
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/cust_payby.pm15
1 files 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)$/