X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_main.pm;h=90256bd8197a2e602355fb51bdf5fceb7fb0025b;hp=493b1c694993390a920290199441417638014df0;hb=faa774764df03c6f3280177f6adfcd2214995a13;hpb=dbb1f2c9894385044ed85b64d9016b2eeb06d649 diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 493b1c694..90256bd81 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -5372,11 +5372,14 @@ sub queueable_upgrade { eval "use FS::upgrade_journal"; die $@ if $@; - # prior to 2013 (commit f16665c9) payinfo was stored in history if not encrypted, - # clear that out before encrypting/tokenizing anything else + # prior to 2013 (commit f16665c9) payinfo was stored in history if not + # encrypted, clear that out before encrypting/tokenizing anything else if (!FS::upgrade_journal->is_done('clear_payinfo_history')) { - foreach my $table ('cust_payby','cust_pay_pending','cust_pay','cust_pay_void','cust_refund') { - my $sql = 'UPDATE h_'.$table.' SET payinfo = NULL WHERE payinfo IS NOT NULL'; + foreach my $table (qw( + cust_payby cust_pay_pending cust_pay cust_pay_void cust_refund + )) { + my $sql = + 'UPDATE h_'.$table.' SET payinfo = NULL WHERE payinfo IS NOT NULL'; my $sth = dbh->prepare($sql) or die dbh->errstr; $sth->execute or die $sth->errstr; } @@ -5384,7 +5387,9 @@ sub queueable_upgrade { } # encrypt old records - if ($conf->exists('encryption') && !FS::upgrade_journal->is_done('encryption_check')) { + if ( $conf->exists('encryption') + && ! FS::upgrade_journal->is_done('encryption_check') + ) { # allow replacement of closed cust_pay/cust_refund records local $FS::payinfo_Mixin::allow_closed_replace = 1; @@ -5396,19 +5401,32 @@ sub queueable_upgrade { local $FS::UID::AutoCommit = 1; # encrypt what's there - foreach my $table ('cust_payby','cust_pay_pending','cust_pay','cust_pay_void','cust_refund') { + foreach my $table (qw( + cust_payby cust_pay_pending cust_pay cust_pay_void cust_refund + )) { my $tclass = 'FS::'.$table; my $lastrecnum = 0; my @recnums = (); - while (my $recnum = _upgrade_next_recnum(dbh,$table,\$lastrecnum,\@recnums)) { + while ( + my $recnum = _upgrade_next_recnum(dbh,$table,\$lastrecnum,\@recnums) + ) { my $record = $tclass->by_key($recnum); next unless $record; # small chance it's been deleted, that's ok next unless grep { $record->payby eq $_ } @FS::Record::encrypt_payby; # window for possible conflict is practically nonexistant, # but just in case... $record = $record->select_for_update; + if (!$record->custnum && $table eq 'cust_pay_pending') { + $record->set('custnum_pending',1); + } + + local($ignore_expired_card) = 1; + local($ignore_banned_card) = 1; + local($skip_fuzzyfiles) = 1; + local($import) = 1;#prevent automatic geocoding (need its own variable?) + my $error = $record->replace; - die $error if $error; + die "Error replacing $table ".$record->get($record->primary_key).": $error" if $error; } }