RT#71210: Update Payment Report for recent BIN changes
authorJonathan Prykop <jonathan@freeside.biz>
Fri, 10 Jun 2016 00:50:39 +0000 (19:50 -0500)
committerJonathan Prykop <jonathan@freeside.biz>
Fri, 10 Jun 2016 00:50:39 +0000 (19:50 -0500)
httemplate/search/elements/cust_pay_or_refund.html

index 9f725bb..c6617b1 100755 (executable)
@@ -327,7 +327,9 @@ if ( $cgi->param('magic') ) {
 
             #avoid posix regexes for portability
             $search =
 
             #avoid posix regexes for portability
             $search =
+              # Visa
               " ( (     substring($table.payinfo from 1 for 1) = '4'     ".
               " ( (     substring($table.payinfo from 1 for 1) = '4'     ".
+              #   is not Switch
               "     AND substring($table.payinfo from 1 for 4) != '4936' ".
               "     AND substring($table.payinfo from 1 for 6)           ".
               "         NOT $similar_to '49030[2-9]'                        ".
               "     AND substring($table.payinfo from 1 for 4) != '4936' ".
               "     AND substring($table.payinfo from 1 for 6)           ".
               "         NOT $similar_to '49030[2-9]'                        ".
@@ -340,13 +342,18 @@ if ( $cgi->param('magic') ) {
               "     AND substring($table.payinfo from 1 for 6)           ".
               "         NOT $similar_to '49118[1-2]'                        ".
               "   )".
               "     AND substring($table.payinfo from 1 for 6)           ".
               "         NOT $similar_to '49118[1-2]'                        ".
               "   )".
+              # MasterCard
               "   OR substring($table.payinfo from 1 for 2) = '51' ".
               "   OR substring($table.payinfo from 1 for 2) = '52' ".
               "   OR substring($table.payinfo from 1 for 2) = '53' ".
               "   OR substring($table.payinfo from 1 for 2) = '54' ".
               "   OR substring($table.payinfo from 1 for 2) = '54' ".
               "   OR substring($table.payinfo from 1 for 2) = '55' ".
               "   OR substring($table.payinfo from 1 for 2) = '51' ".
               "   OR substring($table.payinfo from 1 for 2) = '52' ".
               "   OR substring($table.payinfo from 1 for 2) = '53' ".
               "   OR substring($table.payinfo from 1 for 2) = '54' ".
               "   OR substring($table.payinfo from 1 for 2) = '54' ".
               "   OR substring($table.payinfo from 1 for 2) = '55' ".
-#              "   OR substring($table.payinfo from 1 for 2) = '36' ". #Diner's int'l was processed as Visa/MC inside US, now Discover
+              "   OR substring($table.payinfo from 1 for 4) $similar_to '222[1-9]' ".
+              "   OR substring($table.payinfo from 1 for 3) $similar_to '22[3-9]' ".
+              "   OR substring($table.payinfo from 1 for 2) $similar_to '2[3-6]' ".
+              "   OR substring($table.payinfo from 1 for 3) $similar_to '27[0-1]' ".
+              "   OR substring($table.payinfo from 1 for 4) = '2720' ".
               " ) ";
 
           } elsif ( $cardtype eq 'Amex' ) {
               " ) ";
 
           } elsif ( $cardtype eq 'Amex' ) {
@@ -363,14 +370,14 @@ if ( $cgi->param('magic') ) {
             $search =
               " (    substring($table.payinfo from 1 for 4 ) = '6011'  ".
               "   OR substring($table.payinfo from 1 for 2 ) = '65'    ".
             $search =
               " (    substring($table.payinfo from 1 for 4 ) = '6011'  ".
               "   OR substring($table.payinfo from 1 for 2 ) = '65'    ".
-              "   OR substring($table.payinfo from 1 for 3 ) = '300'   ".
+              "   OR substring($table.payinfo from 1 for 3 ) = '300'   ". # diner's 300-305
               "   OR substring($table.payinfo from 1 for 3 ) = '301'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '302'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '303'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '304'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '305'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '301'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '302'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '303'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '304'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '305'   ".
-              "   OR substring($table.payinfo from 1 for 4 ) = '3095'  ".
-              "   OR substring($table.payinfo from 1 for 2 ) = '36'    ".
+              "   OR substring($table.payinfo from 1 for 4 ) = '3095'  ". # diner's 3095
+              "   OR substring($table.payinfo from 1 for 2 ) = '36'    ". # diner's 36, 38, 39
               "   OR substring($table.payinfo from 1 for 2 ) = '38'    ".
               "   OR substring($table.payinfo from 1 for 2 ) = '39'    ".
               "   OR substring($table.payinfo from 1 for 3 ) = '644'   ".
               "   OR substring($table.payinfo from 1 for 2 ) = '38'    ".
               "   OR substring($table.payinfo from 1 for 2 ) = '39'    ".
               "   OR substring($table.payinfo from 1 for 3 ) = '644'   ".
@@ -379,8 +386,8 @@ if ( $cgi->param('magic') ) {
               "   OR substring($table.payinfo from 1 for 3 ) = '647'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '648'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '649'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '647'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '648'   ".
               "   OR substring($table.payinfo from 1 for 3 ) = '649'   ".
-              ( $country =~ /^(US|CA)$/
-               ?" OR substring($table.payinfo from 1 for 4 ) = '3528'  ". # JCB cards in the 3528-3589 range identified as Discover inside US/CA
+              ( $country =~ /^(US|PR|VI|MP|PW|GU)$/
+               ?" OR substring($table.payinfo from 1 for 4 ) = '3528'  ". # JCB cards in the 3528-3589 range identified as Discover inside US & territories (NOT Canada)
                 " OR substring($table.payinfo from 1 for 4 ) = '3529'  ".
                 " OR substring($table.payinfo from 1 for 3 ) = '353'   ".
                 " OR substring($table.payinfo from 1 for 3 ) = '354'   ".
                 " OR substring($table.payinfo from 1 for 4 ) = '3529'  ".
                 " OR substring($table.payinfo from 1 for 3 ) = '353'   ".
                 " OR substring($table.payinfo from 1 for 3 ) = '354'   ".
@@ -390,7 +397,10 @@ if ( $cgi->param('magic') ) {
                 " OR substring($table.payinfo from 1 for 3 ) = '358'   "
                :""
               ).
                 " OR substring($table.payinfo from 1 for 3 ) = '358'   "
                :""
               ).
-              "   OR substring($table.payinfo from 1 for 3 ) = '622'   ". #China Union Pay processed as Discover outside CN
+              ( $country =~ /^(US|MX|AI|AG|AW|BS|BB|BM|BQ|VG|KY|CW|DM|DO|GD|GP|JM|MQ|MS|BL|KN|LC|VC|MF|SX|TT|TC)$/
+               ?" OR substring($table.payinfo from 1 for 3 ) $similar_to '62[24-68]'   " #China Union Pay processed as Discover outside CN
+               :""
+              ).
               " ) ";
 
           } elsif ( $cardtype eq 'Maestro' ) {
               " ) ";
 
           } elsif ( $cardtype eq 'Maestro' ) {