X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Fcust_pay.cgi;h=01a2ed95a7a620b2603e6be65af345afad374409;hp=3f5b72ab59833a8615ff461d130e4fe666e081bc;hb=34647c32b50ce3b8ee1b6d3d7aef4ba9d0297bdb;hpb=b8cfd0780aa40bb07f3215bf9cb58011f5e32a35 diff --git a/httemplate/search/cust_pay.cgi b/httemplate/search/cust_pay.cgi index 3f5b72ab5..01a2ed95a 100755 --- a/httemplate/search/cust_pay.cgi +++ b/httemplate/search/cust_pay.cgi @@ -1,14 +1,21 @@ <% + my $title = 'Payment Search Results'; my( $count_query, $sql_query ); if ( $cgi->param('magic') && $cgi->param('magic') eq '_date' ) { - my %search; - my @search; + my @search = (); + + if ( $cgi->param('agentnum') && $cgi->param('agentnum') =~ /^(\d+)$/ ) { + push @search, "agentnum = $1"; # $search{'agentnum'} = $1; + my $agent = qsearchs('agent', { 'agentnum' => $1 } ); + die "unknown agentnum $1" unless $agent; + $title = $agent->agent. " $title"; + } if ( $cgi->param('payby') ) { $cgi->param('payby') =~ /^(CARD|CHEK|BILL)(-(VisaMC|Amex|Discover))?$/ or die "illegal payby ". $cgi->param('payby'); - $search{'payby'} = $1; + push @search, "cust_pay.payby = '$1'"; if ( $3 ) { if ( $3 eq 'VisaMC' ) { #avoid posix regexes for portability @@ -52,21 +59,21 @@ push @search, " _date < $1 "; } - my $search; + my $search = ''; if ( @search ) { - $search = ( scalar(keys %search) ? ' AND ' : ' WHERE ' ). - join(' AND ', @search); + $search = ' WHERE '. join(' AND ', @search); } - my $hsearch = join(' AND ', map { "$_ = '$search{$_}'" } keys %search ); - $count_query = "SELECT COUNT(*), SUM(paid) FROM cust_pay ". - ( $hsearch ? " WHERE $hsearch " : '' ). + $count_query = "SELECT COUNT(*), SUM(paid) ". + "FROM cust_pay LEFT JOIN cust_main USING ( custnum )". $search; $sql_query = { 'table' => 'cust_pay', - 'hashref' => \%search, + 'select' => 'cust_pay.*, cust_main.last, cust_main.first, cust_main.company', + 'hashref' => {}, 'extra_sql' => "$search ORDER BY _date", + 'addl_from' => 'LEFT JOIN cust_main USING ( custnum )', }; } else { @@ -91,47 +98,42 @@ my $link = [ "${p}view/cust_main.cgi?", 'custnum' ]; -%> -<%= include( 'elements/search.html', - 'title' => 'Payment Search Results', - 'name' => 'payments', - 'query' => $sql_query, - 'count_query' => $count_query, - 'count_addl' => [ '$%.2f total paid', ], - 'header' => - [ qw(Payment Amount Date), 'Cust #', 'Contact name', - 'Company', ], - 'fields' => [ - sub { - my $cust_pay = shift; - if ( $cust_pay->payby eq 'CARD' ) { - 'Card #'. $cust_pay->payinfo_masked; - } elsif ( $cust_pay->payby eq 'CHEK' ) { - 'E-check acct#'. $cust_pay->payinfo; - } elsif ( $cust_pay->payby eq 'BILL' ) { - 'Check #'. $cust_pay->payinfo; - } else { - $cust_pay->payby. ' '. $cust_pay->payinfo; - } - }, - sub { sprintf('$%.2f', shift->paid ) }, - sub { time2str('%b %d %Y', shift->_date ) }, - 'custnum', - sub { my $cust_main = shift->cust_main; - $cust_main->get('last'). ', '. $cust_main->first; - }, - sub { my $cust_main = shift->cust_main; - $cust_main->company; - }, - ], - 'align' => 'lrrrll', - 'links' => [ - '', - '', - '', - $link, - $link, - $link, - ], - ) +%><%= include( 'elements/search.html', + 'title' => $title, + 'name' => 'payments', + 'query' => $sql_query, + 'count_query' => $count_query, + 'count_addl' => [ '$%.2f total paid', ], + 'header' => + [ qw(Payment Amount Date), 'Cust #', 'Contact name', + 'Company', ], + 'fields' => [ + sub { + my $cust_pay = shift; + if ( $cust_pay->payby eq 'CARD' ) { + 'Card #'. $cust_pay->payinfo_masked; + } elsif ( $cust_pay->payby eq 'CHEK' ) { + 'E-check acct#'. $cust_pay->payinfo; + } elsif ( $cust_pay->payby eq 'BILL' ) { + 'Check #'. $cust_pay->payinfo; + } else { + $cust_pay->payby. ' '. $cust_pay->payinfo; + } + }, + sub { sprintf('$%.2f', shift->paid ) }, + sub { time2str('%b %d %Y', shift->_date ) }, + 'custnum', + sub { $_[0]->get('last'). ', '. $_[0]->first; }, + 'company', + ], + 'align' => 'lrrrll', + 'links' => [ + '', + '', + '', + $link, + $link, + $link, + ], + ) %>