From: Ivan Kohler Date: Wed, 1 Feb 2017 17:20:35 +0000 (-0800) Subject: fix Tokenized payinfo on upgrade if we can, RT#71513 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=148e5eb45acfa3b4da44330fa889cfbd1cd9c15d fix Tokenized payinfo on upgrade if we can, RT#71513 --- diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 90256bd81..62c50ad72 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;