projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add customer class event condition, RT#26997
[freeside.git]
/
FS
/
FS
/
pay_batch
/
RBC.pm
diff --git
a/FS/FS/pay_batch/RBC.pm
b/FS/FS/pay_batch/RBC.pm
index
33a725e
..
6ee5771
100644
(file)
--- a/
FS/FS/pay_batch/RBC.pm
+++ b/
FS/FS/pay_batch/RBC.pm
@@
-14,10
+14,11
@@
$name = 'RBC';
%import_info = (
'filetype' => 'fixed',
'formatre' =>
%import_info = (
'filetype' => 'fixed',
'formatre' =>
- '^(.).{18}(.{4}).{
15}(.{19}).{6}(.{30}).{17}(.{9})(.{18}).{6}(.{14}).{23}(.).{9}
$',
+ '^(.).{18}(.{4}).{
3}(.).{11}(.{19}).{6}(.{30}).{17}(.{9})(.{18}).{6}(.{14}).{23}(.).{9}\r?
$',
'fields' => [ qw(
recordtype
batchnum
'fields' => [ qw(
recordtype
batchnum
+ subtype
paybatchnum
custname
bank
paybatchnum
custname
bank
@@
-27,8
+28,9
@@
$name = 'RBC';
) ],
'hook' => sub {
my $hash = shift;
) ],
'hook' => sub {
my $hash = shift;
- $hash->{'paid'} = sprintf("%.
d
f", $hash->{'paid'} / 100 );
+ $hash->{'paid'} = sprintf("%.
2
f", $hash->{'paid'} / 100 );
$hash->{'_date'} = time;
$hash->{'_date'} = time;
+ $hash->{'payinfo'} =~ s/^(\S+).*/$1/; # these often have trailing spaces
$hash->{'payinfo'} = $hash->{'payinfo'} . '@' . $hash->{'bank'};
},
'approved' => sub {
$hash->{'payinfo'} = $hash->{'payinfo'} . '@' . $hash->{'bank'};
},
'approved' => sub {
@@
-39,17
+41,27
@@
$name = 'RBC';
my $hash = shift;
grep { $hash->{'status'} eq $_ } ('E', 'R', 'U', 'T');
},
my $hash = shift;
grep { $hash->{'status'} eq $_ } ('E', 'R', 'U', 'T');
},
+ 'begin_condition' => sub {
+ my $hash = shift;
+ $hash->{recordtype} eq '1'; # Detail Record
+ },
'end_hook' => sub {
my( $hash, $total, $line ) = @_;
$total = sprintf("%.2f", $total);
'end_hook' => sub {
my( $hash, $total, $line ) = @_;
$total = sprintf("%.2f", $total);
- my $batch_total = sprintf("%.2f", substr($line, 140, 18) / 100);
+ # We assume here that this is an 'All Records' or 'Input Records'
+ # report.
+ my $batch_total = sprintf("%.2f", substr($line, 59, 18) / 100);
return "Our total $total does not match bank total $batch_total!"
if $total != $batch_total;
'';
},
'end_condition' => sub {
my $hash = shift;
return "Our total $total does not match bank total $batch_total!"
if $total != $batch_total;
'';
},
'end_condition' => sub {
my $hash = shift;
- $hash->{recordtype} == '3'; # Account Trailer Record
+ $hash->{recordtype} eq '4'; # Client Trailer Record
+ },
+ 'skip_condition' => sub {
+ my $hash = shift;
+ $hash->{'subtype'} ne '0';
},
);
},
);
@@
-92,7
+104,7
@@
$name = 'RBC';
sprintf("%09u", $aba).
sprintf("%-18s", $account).
' '.
sprintf("%09u", $aba).
sprintf("%-18s", $account).
' '.
- sprintf("%010
u
",$cust_pay_batch->amount*100).
+ sprintf("%010
.0f
",$cust_pay_batch->amount*100).
' '.
time2str("%Y%j", $pay_batch->download).
sprintf("%-30s", $cust_pay_batch->cust_main->first . ' ' .
' '.
time2str("%Y%j", $pay_batch->download).
sprintf("%-30s", $cust_pay_batch->cust_main->first . ' ' .
@@
-119,7
+131,7
@@
$name = 'RBC';
sprintf("%10s", $client_num).
' ' x 20 .
sprintf("%06u", $batchcount).
sprintf("%10s", $client_num).
' ' x 20 .
sprintf("%06u", $batchcount).
- sprintf("%014
u
", $batchtotal*100).
+ sprintf("%014
.0f
", $batchtotal*100).
'00' .
'000000' . # total number of customer information records
' ' x 84
'00' .
'000000' . # total number of customer information records
' ' x 84