[freeside-commits] branch master updated. a6b56c331ccd2fa42c74c5f01555ff407c14e3cf

Mark Wells mark at 420.am
Tue Aug 11 17:08:13 PDT 2015


The branch, master has been updated
       via  a6b56c331ccd2fa42c74c5f01555ff407c14e3cf (commit)
      from  61dafd243f7a633ce75b709a96e86d0696ae625d (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 a6b56c331ccd2fa42c74c5f01555ff407c14e3cf
Author: Mark Wells <mark at freeside.biz>
Date:   Tue Aug 11 17:05:16 2015 -0700

    throw an error during RBC batch import if the batch has the wrong account number, #37476

diff --git a/FS/FS/pay_batch/RBC.pm b/FS/FS/pay_batch/RBC.pm
index 53f8108..644c73c 100644
--- a/FS/FS/pay_batch/RBC.pm
+++ b/FS/FS/pay_batch/RBC.pm
@@ -5,6 +5,7 @@ use vars qw(@ISA %import_info %export_info $name);
 use Date::Format 'time2str';
 use FS::Conf;
 use Encode 'encode';
+use feature 'state';
 
 my $conf;
 my ($client_num, $shortname, $longname, $trans_code, $testmode, $i, $declined, $totaloffset);
@@ -30,9 +31,10 @@ $name = 'RBC';
   'filetype'    => 'fixed',
   #this only really applies to Debit Detail, but we otherwise only need first char
   'formatre'    => 
-  '^(.).{18}(.{4}).{3}(.).{11}(.{19}).{6}(.{30}).{17}(.{9})(.{18}).{6}(.{14}).{23}(.).{9}\r?$',
+  '^(.).{3}(.{10}).{5}(.{4}).{3}(.).{11}(.{19}).{6}(.{30}).{17}(.{9})(.{18}).{6}(.{14}).{23}(.).{9}\r?$',
   'fields' => [ qw(
     recordtype
+    clientnum
     batchnum
     subtype
     paybatchnum
@@ -43,11 +45,24 @@ $name = 'RBC';
     status
     ) ],
   'hook' => sub {
-      my $hash = shift;
-      $hash->{'paid'} = sprintf("%.2f", $hash->{'paid'} / 100 );
-      $hash->{'_date'} = time;
-      $hash->{'payinfo'} =~ s/^(\S+).*/$1/; # these often have trailing spaces
-      $hash->{'payinfo'} = $hash->{'payinfo'} . '@' . $hash->{'bank'};
+    # pull client_num from config and check it against what's in the batch
+    state $clientnum ||= do {
+      my $conf = FS::Conf->new;
+      my @config = $conf->config("batchconfig-RBC");
+      $config[0];
+    };
+
+    my $hash = shift;
+    $hash->{'paid'} = sprintf("%.2f", $hash->{'paid'} / 100 );
+    $hash->{'_date'} = time;
+    $hash->{'payinfo'} =~ s/^(\S+).*/$1/; # these often have trailing spaces
+    $hash->{'payinfo'} = $hash->{'payinfo'} . '@' . $hash->{'bank'};
+
+    if ( $clientnum and $hash->{clientnum} ne $clientnum ) {
+      die "RBC client number in batch (".$hash->{clientnum}.") does not ".
+        "match configuration.\n";
+    }
+    '';
   },
   'approved'    => sub { 
       my $hash = shift;

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

Summary of changes:
 FS/FS/pay_batch/RBC.pm |   27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)




More information about the freeside-commits mailing list