X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpay_batch.pm;h=90b4eb8eb0bdc790827c0b55c848785376e9c203;hb=fef193f602ffa3ce056c4f3a13699138cdccf300;hp=850335e843db821a2053a862758827f97f37b21a;hpb=0fb307c305e4bc2c9c27dc25a3308beae3a4d33c;p=freeside.git diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm index 850335e84..90b4eb8eb 100644 --- a/FS/FS/pay_batch.pm +++ b/FS/FS/pay_batch.pm @@ -383,20 +383,21 @@ sub import_results { } # foreach (@all_values) + my $close = 1; if ( defined($close_condition) ) { # Allow the module to decide whether to close the batch. # $close_condition can also die() to abort the whole import. - my $close = eval { $close_condition->($self) }; + $close = eval { $close_condition->($self) }; if ( $@ ) { $dbh->rollback; die $@; } - if ( $close ) { - my $error = $self->set_status('R'); - if ( $error ) { - $dbh->rollback if $oldAutoCommit; - return $error; - } + } + if ( $close ) { + my $error = $self->set_status('R'); + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; } } @@ -476,18 +477,11 @@ sub export_batch { } } - my $delim = exists($info->{'delimiter'}) ? $info->{'delimiter'} : "\n"; + if ($first_download) { #remove or reduce entries if customer's balance changed - my $h = $info->{'header'}; - if(ref($h) eq 'CODE') { - $batch .= &$h($self, \@cust_pay_batch) . $delim; - } - else { - $batch .= $h . $delim; - } - foreach my $cust_pay_batch (@cust_pay_batch) { + my @new = (); + foreach my $cust_pay_batch (@cust_pay_batch) { - if ($first_download) { my $balance = $cust_pay_batch->cust_main->balance; if ($balance <= 0) { # then don't charge this customer my $error = $cust_pay_batch->delete; @@ -506,20 +500,35 @@ sub export_batch { } } # else $balance >= $cust_pay_batch->amount + + push @new, $cust_pay_batch; } + @cust_pay_batch = @new; + + } + + my $delim = exists($info->{'delimiter'}) ? $info->{'delimiter'} : "\n"; + + my $h = $info->{'header'}; + if (ref($h) eq 'CODE') { + $batch .= &$h($self, \@cust_pay_batch). $delim; + } else { + $batch .= $h. $delim; + } + foreach my $cust_pay_batch (@cust_pay_batch) { $batchcount++; $batchtotal += $cust_pay_batch->amount; - $batch .= &{$info->{'row'}}($cust_pay_batch, $self, $batchcount, $batchtotal) . $delim; - + $batch .= + &{$info->{'row'}}($cust_pay_batch, $self, $batchcount, $batchtotal). + $delim; } my $f = $info->{'footer'}; - if(ref($f) eq 'CODE') { - $batch .= &$f($self, $batchcount, $batchtotal) . $delim; - } - else { - $batch .= $f . $delim; + if (ref($f) eq 'CODE') { + $batch .= &$f($self, $batchcount, $batchtotal). $delim; + } else { + $batch .= $f. $delim; } if ($info->{'autopost'}) {