diff options
| author | ivan <ivan> | 2011-08-16 04:49:45 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2011-08-16 04:49:45 +0000 | 
| commit | c3da9b75b3ddc6567224f3ad37ff9681fb726201 (patch) | |
| tree | f504d27522bfd2fa8eaad1b9fe21ace68aa02ab5 | |
| parent | 35540b0694faa387546391a3e5f8d67b17244188 (diff) | |
fix paymentech batch download, RT#7905
| -rw-r--r-- | FS/FS/pay_batch.pm | 42 | 
1 files changed, 25 insertions, 17 deletions
| diff --git a/FS/FS/pay_batch.pm b/FS/FS/pay_batch.pm index 79c47498a..90b4eb8eb 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'}) { | 
