my $paybatch = $param->{'paybatch'};
my @fields;
+ my $end_condition;
+ my $end_hook;
my $condition;
my $hook;
'', # 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 {
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();
$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 ) {
$dbh->rollback if $oldAutoCommit;
return "error adding payment paybatchnum $hash{'paybatchnum'}: $error\n";
}
+ $total += $hash{'paid'};
$cust_pay->cust_main->apply_payments;