X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill.pm;h=1656658ca4661aa45a4e89f848c617688c5110e1;hb=33f61386d77a035fd59a15ccfea43d0fbff911d2;hp=e1281e37206793e1ca4c4acefab4f9628430777e;hpb=f43c7c5765db18b35a3d3bec837681725bf0c245;p=freeside.git diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index e1281e372..1656658ca 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -294,7 +294,7 @@ sub cust_suspend_if_balance_over { if ( $cust_main->total_owed_date($self->_date) < $amount ) { return (); } else { - $cust_main->suspend; + $cust_main->suspend(@_); } } @@ -1303,10 +1303,11 @@ sub realtime_bop { } -=item batch_card +=item batch_card OPTION => VALUE... Adds a payment for this invoice to the pending credit card batch (see -L). +L), or, if the B option is set to a true value, +runs the payment using a realtime gateway. =cut @@ -1318,9 +1319,10 @@ sub batch_card { return '' unless $amount > 0; if ($options{'realtime'}) { - return $cust_main->realtime_bop ( $FS::payby::payby2bop{$cust_main->payby}, $amount, - %options, - ); + return $cust_main->realtime_bop( FS::payby->payby2bop($cust_main->payby), + $amount, + %options, + ); } my $oldAutoCommit = $FS::UID::AutoCommit; @@ -1330,11 +1332,15 @@ sub batch_card { $dbh->do("LOCK TABLE pay_batch IN SHARE ROW EXCLUSIVE MODE") or return "Cannot lock pay_batch: " . $dbh->errstr; - my $pay_batch = qsearchs('pay_batch', {'status' => 'O'}); + my %pay_batch = ( + 'status' => 'O', + 'payby' => FS::payby->payby2payment($cust_main->payby), + ); + + my $pay_batch = qsearchs( 'pay_batch', \%pay_batch ); unless ( $pay_batch ) { - $pay_batch = new FS::pay_batch; - $pay_batch->setfield('status' => 'O'); + $pay_batch = new FS::pay_batch \%pay_batch; my $error = $pay_batch->insert; if ( $error ) { $dbh->rollback if $oldAutoCommit; @@ -1343,26 +1349,29 @@ sub batch_card { } my $old_cust_pay_batch = qsearchs('cust_pay_batch', { - 'batchnum' => $pay_batch->getfield('batchnum'), - 'custnum' => $cust_main->getfield('custnum'), + 'batchnum' => $pay_batch->batchnum, + 'custnum' => $cust_main->custnum, } ); my $cust_pay_batch = new FS::cust_pay_batch ( { - 'batchnum' => $pay_batch->getfield('batchnum'), + 'batchnum' => $pay_batch->batchnum, 'invnum' => $self->getfield('invnum'), # is there a better value? - 'custnum' => $cust_main->getfield('custnum'), + # this field should be + # removed... + # cust_bill_pay_batch now + 'custnum' => $cust_main->custnum, 'last' => $cust_main->getfield('last'), 'first' => $cust_main->getfield('first'), - 'address1' => $cust_main->getfield('address1'), - 'address2' => $cust_main->getfield('address2'), - 'city' => $cust_main->getfield('city'), - 'state' => $cust_main->getfield('state'), - 'zip' => $cust_main->getfield('zip'), - 'country' => $cust_main->getfield('country'), + 'address1' => $cust_main->address1, + 'address2' => $cust_main->address2, + 'city' => $cust_main->city, + 'state' => $cust_main->state, + 'zip' => $cust_main->zip, + 'country' => $cust_main->country, 'payby' => $cust_main->payby, 'payinfo' => $cust_main->payinfo, - 'exp' => $cust_main->getfield('paydate'), - 'payname' => $cust_main->getfield('payname'), + 'exp' => $cust_main->paydate, + 'payname' => $cust_main->payname, 'amount' => $amount, # consolidating } ); @@ -1383,7 +1392,7 @@ sub batch_card { my $unapplied = $cust_main->total_credited + $cust_main->total_unapplied_payments + $cust_main->in_transit_payments; foreach my $cust_bill ($cust_main->open_cust_bill) { - $dbh->commit or die $dbh->errstr if $oldAutoCommit; + #$dbh->commit or die $dbh->errstr if $oldAutoCommit; my $cust_bill_pay_batch = new FS::cust_bill_pay_batch { 'invnum' => $cust_bill->invnum, 'paybatchnum' => $cust_pay_batch->paybatchnum,