[freeside-commits] branch master updated. af501d08494e5930d53da1cb1f02e65e2a6ebd07

Jeremy Davis jeremyd at 420.am
Thu Nov 13 14:00:59 PST 2014


The branch, master has been updated
       via  af501d08494e5930d53da1cb1f02e65e2a6ebd07 (commit)
       via  9184d33172400ebf4d6c6bec1b52a0d9f3319eea (commit)
      from  395160f885a698dd557fd48d316c431789f4c47d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit af501d08494e5930d53da1cb1f02e65e2a6ebd07
Merge: 9184d33 395160f
Author: Jeremy Davis <jeremyd at freeside.biz>
Date:   Thu Nov 13 16:59:54 2014 -0500

    Merge branch 'master' of git.freeside.biz:/home/git/freeside


commit 9184d33172400ebf4d6c6bec1b52a0d9f3319eea
Author: Jeremy Davis <jeremyd at freeside.biz>
Date:   Thu Nov 13 16:58:55 2014 -0500

    Ticket #31847 CIBC batch format

diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 77267cf..b1ef901 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -3729,7 +3729,7 @@ and customer address. Include units.',
     'type'        => 'select',
     'select_enum' => [ 'NACHA', 'csv-td_canada_trust-merchant_pc_batch',
                        'csv-chase_canada-E-xactBatch', 'BoM', 'PAP',
-                       'paymentech', 'ach-spiritone', 'RBC'
+                       'paymentech', 'ach-spiritone', 'RBC', 'CIBC',
                     ]
   },
 
@@ -3791,7 +3791,7 @@ and customer address. Include units.',
     'type'        => 'select',
     'select_enum' => [ 'NACHA', 'csv-td_canada_trust-merchant_pc_batch', 'BoM',
                        'PAP', 'paymentech', 'ach-spiritone', 'RBC',
-                       'td_eft1464', 'eft_canada'
+                       'td_eft1464', 'eft_canada', 'CIBC'
                      ]
   },
 
@@ -3809,6 +3809,13 @@ and customer address. Include units.',
     'type'        => 'textarea',
   },
 
+{
+    'key'         => 'batchconfig-CIBC',
+    'section'     => 'billing',
+    'description' => 'Configuration for Canadian Imperial Bank of Commerce, six lines: 1. Origin ID, 2. Datacenter, 3. Typecode, 4. Short name, 5. Bank, 6. Bank account',
+    'type'        => 'textarea',
+  },
+
   {
     'key'         => 'batchconfig-PAP',
     'section'     => 'billing',
diff --git a/FS/FS/pay_batch/CIBC.pm b/FS/FS/pay_batch/CIBC.pm
new file mode 100644
index 0000000..2c72bef
--- /dev/null
+++ b/FS/FS/pay_batch/CIBC.pm
@@ -0,0 +1,87 @@
+package FS::pay_batch::CIBC;
+
+use strict;
+use vars qw(@ISA %import_info %export_info $name);
+use Date::Format 'time2str';
+use FS::Conf;
+
+my $conf;
+my ($origid, $datacenter, $transcode, $shortname, $mybank, $myacct);
+
+$name = 'CIBC';
+
+%import_info = (
+  'filetype'    => 'CSV',
+  'fields'      => [],
+  'hook'        => sub { die "Can't import CIBC" },
+  'approved'    => sub { 1 },
+  'declined'    => sub { 0 },
+);
+
+%export_info = (
+  init => sub {
+    $conf = shift;
+    ($origid,
+     $datacenter,
+     $transcode, 
+     $shortname, 
+     $mybank, 
+     $myacct) = $conf->config("batchconfig-CIBC");
+  },
+  header => sub { 
+    my $pay_batch = shift;
+    sprintf( "1%2s%05u%-5s%010u%6s%04u%1s%04u%5u%-12u%2s%-15s%1s%3s%4s \n",  #80
+      '',
+      substr(0,5, $origid),
+      '',
+      $origid,
+      time2str('%y%m%d', $pay_batch->download),
+      $pay_batch->batchnum,
+      ' ',
+      '0010',
+      $mybank,
+      $myacct,
+      '',
+      $shortname,
+      ' ',
+      'CAD',
+      '', ) .
+    sprintf( "5%46s%03u%-10s%6s%14s", #80
+      '',
+      $transcode,
+      '           ',
+      time2str('%y%m%d', $pay_batch->download),
+      '               ');
+  },
+  row => sub {
+    my ($cust_pay_batch, $pay_batch) = @_;
+    my ($account, $aba) = split('@', $cust_pay_batch->payinfo);
+    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";
+    }
+    sprintf( "6%1s%1s%04u%05u%-12u%5u%10s%-13s%-22s%6s ", #80
+      'D',
+      '',
+      $bankno,
+      $branch,
+      $account,
+      '',
+      $cust_pay_batch->amount * 100,
+      $cust_pay_batch->paybatchnum,
+      $cust_pay_batch->payname,
+      '     ',
+      );
+  },
+  footer => sub {
+    my ($pay_batch, $batchcount, $batchtotal) = @_;
+    sprintf( "7%03u%06f%010s%20s%012s%28s \n", $transcode, $batchcount,'0','',$batchtotal*100,''). #80
+    sprintf( "9%06s%06s%67s", 1, $batchcount,''); #80
+  },
+);
+
+1;
diff --git a/httemplate/search/elements/cust_pay_batch_top.html b/httemplate/search/elements/cust_pay_batch_top.html
index a773dd0..2dbf620 100644
--- a/httemplate/search/elements/cust_pay_batch_top.html
+++ b/httemplate/search/elements/cust_pay_batch_top.html
@@ -149,6 +149,7 @@ tie my %download_formats, 'Tie::IxHash', (
   'RBC' => 'Royal Bank of Canada PDS batch',
   'td_eft1464' => '1464 byte file for TD Commercial Banking EFT',
   'eft_canada' => 'EFT Canada CSV batch',
+  'CIBC'       => '80 byte file for Canadian Imperial Bank of Commerce',
 # insert new batch formats here
 );
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Conf.pm                                      |   11 ++-
 FS/FS/pay_batch/CIBC.pm                            |   87 ++++++++++++++++++++
 httemplate/search/elements/cust_pay_batch_top.html |    1 +
 3 files changed, 97 insertions(+), 2 deletions(-)
 create mode 100644 FS/FS/pay_batch/CIBC.pm




More information about the freeside-commits mailing list