add restore paymask script, RT#74758
authorIvan Kohler <ivan@freeside.biz>
Tue, 7 Mar 2017 02:31:25 +0000 (18:31 -0800)
committerIvan Kohler <ivan@freeside.biz>
Tue, 7 Mar 2017 02:31:25 +0000 (18:31 -0800)
bin/cust_main.restore-paymask [new file with mode: 0755]

diff --git a/bin/cust_main.restore-paymask b/bin/cust_main.restore-paymask
new file mode 100755 (executable)
index 0000000..c6c8a75
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+use strict;
+use FS::UID qw( adminsuidsetup );
+use FS::Record qw( qsearch dbh );
+
+adminsuidsetup shift
+  or die "Usage: cust_main.restore-paymask freeside_username\n";
+
+foreach my $cust_main ( 
+  qsearch({ 'table' => 'cust_main',
+            'extra_sql' => q[WHERE payby IN ('CARD','DCRD') AND paymask IS NULL OR paymask = 'N/A (tokenized)'],
+         })
+) {
+
+  my $custnum = $cust_main->custnum;
+
+  my $paymask = FS::Record->scalar_sql(qq[
+    SELECT paymask FROM h_cust_main WHERE custnum = $custnum AND history_action = 'replace_old' AND paymask IS NOT NULL AND paymask != 'N/A (tokenized)' ORDER BY historynum desc LIMIT 1
+  ]);
+
+  #dbh->do(
+  print
+    qq[UPDATE cust_main SET paymask = '$paymask' WHERE custnum = $custnum;]
+  ."\n"
+  ;
+
+  #print "$custnum: $paymask\n";
+}
+
+1;