diff options
author | Jonathan Prykop <jonathan@freeside.biz> | 2016-05-13 00:19:21 -0500 |
---|---|---|
committer | Jonathan Prykop <jonathan@freeside.biz> | 2016-06-03 19:38:08 -0500 |
commit | 1a11b9ba4171a706ad168c0ba615d88cba9d512b (patch) | |
tree | 8ccc11673989c8277ee330f9d0d2368227827283 /FS | |
parent | dc493b1e0db4cb5594d471c413bfb8ad665829f7 (diff) |
RT#42394: paycvv during cust_payby replace (v4+ only)
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/cust_payby.pm | 15 |
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)$/ |