summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2003-10-09 17:40:01 +0000
committerivan <ivan>2003-10-09 17:40:01 +0000
commit66562460929986330756490d98982f368ad32cbe (patch)
treea69a7e1a9208e94ef7f3c54543b8c813011bc777
parentfb113dec34b94d0dfa71b976dbde5a3c83e72c1a (diff)
parse last line from TD Canada Trust
-rw-r--r--FS/FS/cust_pay_batch.pm31
1 files changed, 30 insertions, 1 deletions
diff --git a/FS/FS/cust_pay_batch.pm b/FS/FS/cust_pay_batch.pm
index 137dd6bbf..50a971b13 100644
--- a/FS/FS/cust_pay_batch.pm
+++ b/FS/FS/cust_pay_batch.pm
@@ -210,6 +210,8 @@ sub import_results {
my $paybatch = $param->{'paybatch'};
my @fields;
+ my $end_condition;
+ my $end_hook;
my $condition;
my $hook;
@@ -236,9 +238,23 @@ sub import_results {
'', # Terminal ID: Terminal ID used to process the transaction
);
+ $end_condition = sub {
+ my $hash = shift;
+ $hash->{'type'} eq '0BC';
+ };
+
+ $end_hook = sub {
+ my( $hash, $total) = @_;
+ $total = sprintf("%.2f", $total);
+ my $batch_total = sprintf("%.2f", $hash->{'paybatchnum'} / 100 );
+ return "Our total $total does not match bank total $batch_total!"
+ if $total != $batch_total;
+ '';
+ };
+
$condition = sub {
my $hash = shift;
- $hash->{'result'} == 3 && $hash->{'type'} == 0;
+ $hash->{'result'} == 3 && $hash->{'type'} eq '0';
};
$hook = sub {
@@ -269,9 +285,12 @@ sub import_results {
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
+ my $total = 0;
my $line;
while ( defined($line=<$fh>) ) {
+ next if $line =~ /^\s*$/; #skip blank lines
+
$csv->parse($line) or do {
$dbh->rollback if $oldAutoCommit;
return "can't parse: ". $csv->error_input();
@@ -285,6 +304,15 @@ sub import_results {
$hash{$field} = $value;
}
+ if ( &{$end_condition}(\%hash) ) {
+ my $error = &{$end_hook}(\%hash, $total);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return $error;
+ }
+ last;
+ }
+
my $cust_pay_batch =
qsearchs('cust_pay_batch', { 'paybatchnum' => $hash{'paybatchnum'} } );
unless ( $cust_pay_batch ) {
@@ -314,6 +342,7 @@ sub import_results {
$dbh->rollback if $oldAutoCommit;
return "error adding payment paybatchnum $hash{'paybatchnum'}: $error\n";
}
+ $total += $hash{'paid'};
$cust_pay->cust_main->apply_payments;