X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Fcust_pay.cgi;h=51dd3b340779d34443c3bb0a3ae630228fbcf42c;hp=0f7b7b791be7ffba0698cc3b9c9ddedc92555140;hb=76e907f24d984319b7c1e0e9374b99535a99ab43;hpb=b541a7851e891c8fb8150ba930c90600a4c68465
diff --git a/httemplate/search/cust_pay.cgi b/httemplate/search/cust_pay.cgi
index 0f7b7b791..51dd3b340 100755
--- a/httemplate/search/cust_pay.cgi
+++ b/httemplate/search/cust_pay.cgi
@@ -5,27 +5,53 @@ my @cust_pay;
if ( $cgi->param('magic') && $cgi->param('magic') eq '_date' ) {
my %search;
+ my @search;
+
if ( $cgi->param('payby') ) {
- $cgi->param('payby') =~ /^(CARD|CHEK|BILL)$/
+ $cgi->param('payby') =~ /^(CARD|CHEK|BILL)(-(VisaMC|Amex|Discover))?$/
or die "illegal payby ". $cgi->param('payby');
$search{'payby'} = $1;
+ if ( $3 ) {
+ if ( $3 eq 'VisaMC' ) {
+ #avoid posix regexes for portability
+ push @search, " ( substring(payinfo from 1 for 1) = '4' ".
+ " OR substring(payinfo from 1 for 2) = '51' ".
+ " OR substring(payinfo from 1 for 2) = '52' ".
+ " OR substring(payinfo from 1 for 2) = '53' ".
+ " OR substring(payinfo from 1 for 2) = '54' ".
+ " OR substring(payinfo from 1 for 2) = '54' ".
+ " OR substring(payinfo from 1 for 2) = '55' ".
+ " ) ";
+ } elsif ( $3 eq 'Amex' ) {
+ push @search, " ( substring(payinfo from 1 for 2 ) = '34' ".
+ " OR substring(payinfo from 1 for 2 ) = '37' ".
+ " ) ";
+ } elsif ( $3 eq 'Discover' ) {
+ push @search, " substring(payinfo from 1 for 4 ) = '6011' ";
+ } else {
+ die "unknown card type $3";
+ }
+ }
}
#false laziness with cust_pkg.cgi
- my $range = '';
if ( $cgi->param('beginning')
&& $cgi->param('beginning') =~ /^([ 0-9\-\/]{0,10})$/ ) {
my $beginning = str2time($1);
- $range = " WHERE _date >= $beginning ";
+ push @search, "_date >= $beginning ";
}
if ( $cgi->param('ending')
&& $cgi->param('ending') =~ /^([ 0-9\-\/]{0,10})$/ ) {
- my $ending = str2time($1) + 86400;
- $range .= ( $range ? ' AND ' : ' WHERE ' ). " _date <= $ending ";
+ my $ending = str2time($1) + 86399;
+ push @search, " _date <= $ending ";
+ }
+ my $search;
+ if ( @search ) {
+ $search = ( scalar(keys %search) ? ' AND ' : ' WHERE ' ).
+ join(' AND ', @search);
}
- $range =~ s/^\s*WHERE/ AND/ if scalar(keys %search) ;
- @cust_pay = qsearch('cust_pay', \%search, '', $range );
+ @cust_pay = qsearch('cust_pay', \%search, '', $search );
$sortby = \*date_sort;
@@ -132,8 +158,10 @@ END
$tot_amount = sprintf("%.2f", $tot_amount);
print '
'. table(). < | Total Amount |
- | \$$tot_amount |
+
+ Total Amount |
+ \$$tot_amount |
+