summaryrefslogtreecommitdiff
path: root/FS/FS/pay_batch/eft_canada.pm
diff options
context:
space:
mode:
authorivan <ivan>2011-10-21 16:29:38 +0000
committerivan <ivan>2011-10-21 16:29:38 +0000
commitc44af9c50b752e059eaa1d446e038317258fd437 (patch)
tree017a8fbde29d12d8fa146ba719262f24a38afecd /FS/FS/pay_batch/eft_canada.pm
parentb3928e4fe8aa594e8eba7f0ef5bce83335022614 (diff)
fix for branch numbers, RT#14859
Diffstat (limited to 'FS/FS/pay_batch/eft_canada.pm')
-rw-r--r--FS/FS/pay_batch/eft_canada.pm15
1 files changed, 10 insertions, 5 deletions
diff --git a/FS/FS/pay_batch/eft_canada.pm b/FS/FS/pay_batch/eft_canada.pm
index 0e41610..23dcc2d 100644
--- a/FS/FS/pay_batch/eft_canada.pm
+++ b/FS/FS/pay_batch/eft_canada.pm
@@ -43,11 +43,16 @@ my ($trans_code, $process_date);
$cust_pay_batch->first, $cust_pay_batch->last;
}
my ($account, $aba) = split('@', $cust_pay_batch->payinfo);
- # standard format for Canadian bank ID
- $aba =~ /^0(\d{3})(\d{5})$/
- or die "invalid routing number '$aba'\n";
- push @fields, sprintf('%05s', $2),
- sprintf('%03s', $1),
+ my($bankno, $branch);
+ if ( $aba =~ /^0(\d{3})(\d{5})$/ ) { # standard format for Canadian bank ID
+ ($bankno, $branch) = ( $1, $2 );
+ } elsif ( $aba =~ /^(\d{5})\.(\d{3})$/ ) { #how we store branches
+ ($branch, $bankno) = ( $1, $2 );
+ } else {
+ die "invalid branch/routing number '$aba'\n";
+ }
+ push @fields, sprintf('%05s', $branch),
+ sprintf('%03s', $bankno),
sprintf('%012s', $account),
sprintf('%.02f', $cust_pay_batch->amount);
# DB = debit