[freeside-commits] branch master updated. 374f5934e8dba44b7abb8041af7fc9e640e316a9

Mark Wells mark at 420.am
Wed Dec 21 15:40:10 PST 2016


The branch, master has been updated
       via  374f5934e8dba44b7abb8041af7fc9e640e316a9 (commit)
      from  87c195131764ee7307e834bfb5b36b9e6ba14d07 (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 374f5934e8dba44b7abb8041af7fc9e640e316a9
Author: Mark Wells <mark at freeside.biz>
Date:   Wed Dec 21 15:25:35 2016 -0800

    fix payinfo_used on batch payments with encrypted payinfo, related to #19571

diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm
index b15920b..64ce7ec 100644
--- a/FS/FS/cust_pay.pm
+++ b/FS/FS/cust_pay.pm
@@ -1216,6 +1216,30 @@ sub _upgrade_data {  #class method
   ###
   $class->upgrade_set_cardtype;
 
+  # for batch payments, make sure paymask is set
+  do {
+    local $FS::payinfo_Mixin::allow_closed_replace = 1;
+    local $FS::payinfo_Mixin::ignore_masked_payinfo = 1;
+
+    my $cursor = FS::Cursor->new({
+      table => 'cust_pay',
+      extra_sql => ' WHERE paymask IS NULL AND payinfo IS NOT NULL
+                    AND payby IN(\'CARD\', \'CHEK\')
+                    AND batchnum IS NOT NULL',
+    });
+
+    # records from cursors for some reason don't decrypt payinfo, so
+    # call replace_old to fetch the record "normally"
+    while (my $cust_pay = $cursor->fetch) {
+      $cust_pay = $cust_pay->replace_old;
+      $cust_pay->set('paymask', $cust_pay->mask_payinfo);
+      my $error = $cust_pay->replace;
+      if ($error) {
+        die "$error (setting masked payinfo on payment#". $cust_pay->paynum.
+          ")\n"
+      }
+    }
+  };
 }
 
 sub process_upgrade_paybatch {
diff --git a/FS/FS/cust_pay_batch.pm b/FS/FS/cust_pay_batch.pm
index 8127c6a..d29c6d0 100644
--- a/FS/FS/cust_pay_batch.pm
+++ b/FS/FS/cust_pay_batch.pm
@@ -297,6 +297,7 @@ sub approve {
       'custnum'   => $new->custnum,
       'payby'     => $new->payby,
       'payinfo'   => $new->payinfo || $old->payinfo,
+      'paymask'   => $new->mask_payinfo,
       'paid'      => $new->paid,
       '_date'     => $new->_date,
       'usernum'   => $new->usernum,
diff --git a/FS/FS/payinfo_Mixin.pm b/FS/FS/payinfo_Mixin.pm
index 3a51022..1c45720 100644
--- a/FS/FS/payinfo_Mixin.pm
+++ b/FS/FS/payinfo_Mixin.pm
@@ -307,13 +307,12 @@ sub payinfo_used {
   my $payinfo = shift || $self->payinfo;
   my %hash = (
     'custnum' => $self->custnum,
-    'payby'   => 'CARD',
+    'payby'   => $self->payby,
   );
 
   return 1
   if qsearch('cust_pay', { %hash, 'payinfo' => $payinfo } )
-  || qsearch('cust_pay', 
-    { %hash, 'paymask' => $self->mask_payinfo('CARD', $payinfo) }  )
+  || qsearch('cust_pay', { %hash, 'paymask' => $self->mask_payinfo } )
   ;
 
   return 0;

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

Summary of changes:
 FS/FS/cust_pay.pm       |   24 ++++++++++++++++++++++++
 FS/FS/cust_pay_batch.pm |    1 +
 FS/FS/payinfo_Mixin.pm  |    5 ++---
 3 files changed, 27 insertions(+), 3 deletions(-)




More information about the freeside-commits mailing list