summaryrefslogtreecommitdiff
path: root/FS/FS/cust_payby.pm
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2016-05-13 00:19:21 -0500
committerJonathan Prykop <jonathan@freeside.biz>2016-05-13 00:19:21 -0500
commit093747609fc543f09353f32c0ff0a1d47925dafc (patch)
tree13320162b1e006365d56998275141a0d6b0cc845 /FS/FS/cust_payby.pm
parent12a1fd3b75876dd3ec5449bc87fd8313da1b750b (diff)
RT#42394: paycvv during cust_payby replace (v4+ only)
Diffstat (limited to 'FS/FS/cust_payby.pm')
-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)$/