summaryrefslogtreecommitdiff
path: root/FS/FS/cust_main.pm
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2017-02-01 09:20:44 -0800
committerIvan Kohler <ivan@freeside.biz>2017-02-01 09:20:44 -0800
commit7a7d7b2112988841447a09fc4496d4678d8fc207 (patch)
tree4f936e36ea9183f30e8789d73365613da1f57057 /FS/FS/cust_main.pm
parentfaf73873a87a4c8580d0a6aea4668022e52f6210 (diff)
fix Tokenized payinfo on upgrade if we can, RT#71513
Diffstat (limited to 'FS/FS/cust_main.pm')
-rw-r--r--FS/FS/cust_main.pm13
1 files changed, 10 insertions, 3 deletions
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 7505969..d9ca150 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -5813,8 +5813,11 @@ sub queueable_upgrade {
FS::upgrade_journal->set_done('clear_payinfo_history');
}
- # encrypt old records
- if ($conf->exists('encryption') && !FS::upgrade_journal->is_done('encryption_check')) {
+ # fix Tokenized paycardtype and encrypt old records
+ if ( ! FS::upgrade_journal->is_done('paycardtype_Tokenized')
+ || ! FS::upgrade_journal->is_done('encryption_check')
+ )
+ {
# allow replacement of closed cust_pay/cust_refund records
local $FS::payinfo_Mixin::allow_closed_replace = 1;
@@ -5840,6 +5843,7 @@ sub queueable_upgrade {
if (!$record->custnum && $table eq 'cust_pay_pending') {
$record->set('custnum_pending',1);
}
+ $record->paycardtype('') if $record->paycardtype eq 'Tokenized';
local($ignore_expired_card) = 1;
local($ignore_banned_card) = 1;
@@ -5851,7 +5855,8 @@ sub queueable_upgrade {
}
}
- FS::upgrade_journal->set_done('encryption_check');
+ FS::upgrade_journal->set_done('paycardtype_Tokenized');
+ FS::upgrade_journal->set_done('encryption_check') if $conf->exists('encryption');
}
# now that everything's encrypted, tokenize...
@@ -5869,6 +5874,8 @@ sub _upgrade_next_recnum {
my $sql = 'SELECT '.$tclass->primary_key.
' FROM '.$table.
' WHERE '.$tclass->primary_key.' > '.$$lastrecnum.
+ " AND payby IN ( 'CARD', 'DCRD', 'CHEK', 'DCHK' ) ".
+ " AND ( length(payinfo) > 80 OR paycardtype = 'Tokenized' ) ".
' ORDER BY '.$tclass->primary_key.' LIMIT 500';;
my $sth = $dbh->prepare($sql) or die $dbh->errstr;
$sth->execute() or die $sth->errstr;