summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2017-02-01 09:20:35 -0800
committerIvan Kohler <ivan@freeside.biz>2017-02-01 09:20:35 -0800
commit148e5eb45acfa3b4da44330fa889cfbd1cd9c15d (patch)
tree353f01e86f293a44c70caeb7d15c012411b6a30f
parent7c4fa413c85f69296f9f2be5796703f7700fb461 (diff)
fix Tokenized payinfo on upgrade if we can, RT#71513
-rw-r--r--FS/FS/cust_main.pm15
1 files changed, 10 insertions, 5 deletions
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm
index 90256bd..62c50ad 100644
--- a/FS/FS/cust_main.pm
+++ b/FS/FS/cust_main.pm
@@ -5386,10 +5386,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;
@@ -5419,6 +5420,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;
@@ -5430,7 +5432,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...
@@ -5448,6 +5451,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;