X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_pay.pm;h=01736f78fec7e324dd4d5e5ebbd6ed046084d4f4;hb=43530fe13141377a688b498d72617cd02ea93fae;hp=aa5655d993b1edd16dbccb7819d125048a548635;hpb=6e004ea979eeb1059173781d2870bf410fa1e1ac;p=freeside.git diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index aa5655d99..01736f78f 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -9,7 +9,7 @@ use vars qw( $DEBUG $me $conf @encrypted_fields use Date::Format; use Business::CreditCard; use Text::Template; -use FS::UID qw( getotaker ); +use FS::UID qw( getotaker driver_name ); use FS::Misc qw( send_email ); use FS::Misc::DateTime qw( parse_datetime ); #for batch_import use FS::Record qw( dbh qsearch qsearchs ); @@ -1077,9 +1077,10 @@ sub process_upgrade_paybatch { ### # migrate batchnums from the misused 'paybatch' field to 'batchnum' ### + my $text = (driver_name =~ /^mysql/i) ? 'char' : 'text'; my $search = FS::Cursor->new( { 'table' => 'cust_pay', - 'addl_from' => ' JOIN pay_batch ON cust_pay.paybatch = CONCAT(pay_batch.batchnum) ', + 'addl_from' => " JOIN pay_batch ON cust_pay.paybatch = CAST(pay_batch.batchnum AS $text) ", } ); while (my $cust_pay = $search->fetch) { $cust_pay->set('batchnum' => $cust_pay->paybatch); @@ -1182,7 +1183,7 @@ sub batch_import { my @fields; my $payby; if ( $format eq 'simple' ) { - @fields = qw( custnum agent_custid paid payinfo ); + @fields = qw( custnum agent_custid paid payinfo invnum ); $payby = 'BILL'; } elsif ( $format eq 'extended' ) { die "unimplemented\n"; @@ -1267,9 +1268,20 @@ sub batch_import { $cust_pay{custnum} = $2; } + my $custnum = $cust_pay{custnum}; + my $cust_pay = new FS::cust_pay( \%cust_pay ); my $error = $cust_pay->insert; + if ( ! $error && $cust_pay->custnum != $custnum ) { + #invnum was defined, and ->insert set custnum to the customer for that + #invoice, but it wasn't the one the import specified. + $dbh->rollback if $oldAutoCommit; + $error = "specified invoice #". $cust_pay{invnum}. + " is for custnum ". $cust_pay->custnum. + ", not specified custnum $custnum"; + } + if ( $error ) { $dbh->rollback if $oldAutoCommit; return "can't insert payment for $line: $error";