summaryrefslogtreecommitdiff
path: root/FS/FS/pay_batch.pm
diff options
context:
space:
mode:
authorivan <ivan>2011-08-16 04:49:43 +0000
committerivan <ivan>2011-08-16 04:49:43 +0000
commitef665115c4e69001b9c0fc9d0677eb47939d6b82 (patch)
tree5e34dce7d449bf3f6fc373ba46c205f93d5ec50b /FS/FS/pay_batch.pm
parentdaf98ce13817230ffb103daf413190da3ed0f217 (diff)
fix paymentech batch download, RT#7905
Diffstat (limited to 'FS/FS/pay_batch.pm')
-rw-r--r--FS/FS/pay_batch.pm42
1 files changed, 25 insertions, 17 deletions
diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm
index 79c4749..90b4eb8 100644
--- a/FS/FS/pay_batch.pm
+++ b/FS/FS/pay_batch.pm
@@ -477,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;
@@ -507,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'}) {