diff options
author | Ivan Kohler <ivan@freeside.biz> | 2017-02-01 09:20:35 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2017-02-01 09:20:35 -0800 |
commit | 148e5eb45acfa3b4da44330fa889cfbd1cd9c15d (patch) | |
tree | 353f01e86f293a44c70caeb7d15c012411b6a30f | |
parent | 7c4fa413c85f69296f9f2be5796703f7700fb461 (diff) |
fix Tokenized payinfo on upgrade if we can, RT#71513
-rw-r--r-- | FS/FS/cust_main.pm | 15 |
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; |