This commit was generated by cvs2svn to compensate for changes in r2526,
[freeside.git] / httemplate / search / cust_pay.cgi
1 <%
2
3 my $sortby;
4 my @cust_pay;
5 if ( $cgi->param('magic') && $cgi->param('magic') eq '_date' ) {
6
7   my %search;
8   if ( $cgi->param('payby') ) {
9     $cgi->param('payby') =~ /^(CARD|CHEK|BILL)$/
10       or die "illegal payby ". $cgi->param('payby');
11     $search{'payby'} = $1;
12   }
13
14   #false laziness with cust_pkg.cgi
15   my $range = '';
16   if ( $cgi->param('beginning')
17        && $cgi->param('beginning') =~ /^([ 0-9\-\/]{0,10})$/ ) {
18     my $beginning = str2time($1);
19     $range = " WHERE _date >= $beginning ";
20   }
21   if ( $cgi->param('ending')
22             && $cgi->param('ending') =~ /^([ 0-9\-\/]{0,10})$/ ) {
23     my $ending = str2time($1) + 86400;
24     $range .= ( $range ? ' AND ' : ' WHERE ' ). " _date <= $ending ";
25   }
26   $range =~ s/^\s*WHERE/ AND/ if scalar(keys %search) ;
27
28   @cust_pay = qsearch('cust_pay', \%search, '', $range );
29
30   $sortby = \*date_sort;
31
32 } else {
33
34   $cgi->param('payinfo') =~ /^\s*(\d+)\s*$/ or die "illegal payinfo";
35   my $payinfo = $1;
36
37   $cgi->param('payby') =~ /^(\w+)$/ or die "illegal payby";
38   my $payby = $1;
39
40   @cust_pay = qsearch('cust_pay', { 'payinfo' => $payinfo,
41                                      'payby'   => $payby    } );
42   $sortby = \*date_sort;
43
44 }
45
46 if (0) {
47 #if ( scalar(@cust_pay) == 1 ) {
48 #  my $invnum = $cust_bill[0]->invnum;
49 #  print $cgi->redirect(popurl(2). "view/cust_bill.cgi?$invnum");  #redirect
50 } elsif ( scalar(@cust_pay) == 0 ) {
51 %>
52 <!-- mason kludge -->
53 <%
54   idiot("Payment not found.");
55   #exit;
56 } else {
57   my $total = scalar(@cust_pay);
58   my $s = $total > 1 ? 's' : '';
59 %>
60 <!-- mason kludge -->
61 <%
62   print header("Payment Search Results", menubar(
63           'Main Menu', popurl(2)
64         )), "$total matching payment$s found<BR>", &table(), <<END;
65       <TR>
66         <TH></TH>
67         <TH>Amount</TH>
68         <TH>Date</TH>
69         <TH>Contact name</TH>
70         <TH>Company</TH>
71       </TR>
72 END
73
74   my(%saw, $cust_pay);
75   foreach my $cust_pay (
76     sort $sortby grep(!$saw{$_->paynum}++, @cust_pay)
77   ) {
78     my($paynum, $custnum, $payby, $payinfo, $amount, $date ) = (
79       $cust_pay->paynum,
80       $cust_pay->custnum,
81       $cust_pay->payby,
82       $cust_pay->payinfo,
83       sprintf("%.2f", $cust_pay->paid),
84       $cust_pay->_date,
85     );
86     my $pdate = time2str("%b&nbsp;%d&nbsp;%Y", $date);
87
88     my $rowspan = 1;
89
90     my $view = popurl(2). "view/cust_main.cgi?". $custnum. 
91                "#". $payby. $payinfo;
92
93     my $payment_info;
94     if ( $payby eq 'CARD' ) {
95       $payment_info = 'Card&nbsp;#'. 'x'x(length($payinfo)-4).
96                       substr($payinfo,(length($payinfo)-4));
97     } elsif ( $payby eq 'CHEK' ) {
98       $payment_info = "E-check&nbsp;acct#$payinfo";
99     } elsif ( $payby eq 'BILL' ) {
100       $payment_info = "Check&nbsp;#$payinfo";
101     } else {
102       $payment_info = "$payby&nbsp;$payinfo";
103     }
104
105     print <<END;
106       <TR>
107         <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$payment_info</FONT></A></TD>
108         <TD ROWSPAN=$rowspan ALIGN="right"><A HREF="$view"><FONT SIZE=-1>\$$amount</FONT></A></TD>
109         <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$pdate</FONT></A></TD>
110 END
111     my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } );
112     if ( $cust_main ) {
113       #my $cview = popurl(2). "view/cust_main.cgi?". $cust_main->custnum;
114       my ( $name, $company ) = (
115         $cust_main->last. ', '. $cust_main->first,
116         $cust_main->company,
117       );
118       print <<END;
119         <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$name</FONT></A></TD>
120         <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$company</FONT></A></TD>
121 END
122     } else {
123       print <<END
124         <TD ROWSPAN=$rowspan COLSPAN=2>WARNING: couldn't find cust_main.custnum $custnum (cust_pay.paynum $paynum)</TD>
125 END
126     }
127
128     print "</TR>";
129   }
130   print <<END;
131     </TABLE>
132   </BODY>
133 </HTML>
134 END
135
136 }
137
138 #
139
140 #sub invnum_sort {
141 #  $a->invnum <=> $b->invnum;
142 #}
143 #
144 #sub custnum_sort {
145 #  $a->custnum <=> $b->custnum || $a->invnum <=> $b->invnum;
146 #}
147
148 sub date_sort {
149   $a->_date <=> $b->_date || $a->invnum <=> $b->invnum;
150 }
151 %>