remove
[freeside.git] / httemplate / search / cust_bill.cgi
1 <!-- $Id: cust_bill.cgi,v 1.6 2002-01-30 14:18:09 ivan Exp $ -->
2 <%
3
4 my(@cust_bill, $sortby);
5 if ( $cgi->keywords ) {
6   my($query) = $cgi->keywords;
7   if ( $query eq 'invnum' ) {
8     $sortby = \*invnum_sort;
9     @cust_bill = qsearch('cust_bill', {} );
10   } elsif ( $query eq 'date' ) {
11     $sortby = \*date_sort;
12     @cust_bill = qsearch('cust_bill', {} );
13   } elsif ( $query eq 'custnum' ) {
14     $sortby = \*custnum_sort;
15     @cust_bill = qsearch('cust_bill', {} );
16   } elsif ( $query eq 'OPEN_invnum' ) {
17     $sortby = \*invnum_sort;
18     @cust_bill = grep $_->owed != 0, qsearch('cust_bill', {} );
19   } elsif ( $query eq 'OPEN_date' ) {
20     $sortby = \*date_sort;
21     @cust_bill = grep $_->owed != 0, qsearch('cust_bill', {} );
22   } elsif ( $query eq 'OPEN_custnum' ) {
23     $sortby = \*custnum_sort;
24     @cust_bill = grep $_->owed != 0, qsearch('cust_bill', {} );
25   } elsif ( $query =~ /^OPEN(\d+)_invnum$/ ) {
26     my $open = $1 * 86400;
27     $sortby = \*invnum_sort;
28     @cust_bill =
29       grep $_->owed != 0 && $_->_date < time - $open, qsearch('cust_bill', {} );
30   } elsif ( $query =~ /^OPEN(\d+)_date$/ ) {
31     my $open = $1 * 86400;
32     $sortby = \*date_sort;
33     @cust_bill =
34       grep $_->owed != 0 && $_->_date < time - $open, qsearch('cust_bill', {} );
35   } elsif ( $query =~ /^OPEN(\d+)_custnum$/ ) {
36     my $open = $1 * 86400;
37     $sortby = \*custnum_sort;
38     @cust_bill =
39       grep $_->owed != 0 && $_->_date < time - $open, qsearch('cust_bill', {} );
40   } else {
41     die "unknown query string $query";
42   }
43 } else {
44   $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/;
45   my $invnum = $2;
46   @cust_bill = qsearchs('cust_bill', { 'invnum' => $invnum } );
47   $sortby = \*invnum_sort;
48 }
49
50 if ( scalar(@cust_bill) == 1 ) {
51   my $invnum = $cust_bill[0]->invnum;
52   print $cgi->redirect(popurl(2). "view/cust_bill.cgi?$invnum");  #redirect
53 } elsif ( scalar(@cust_bill) == 0 ) {
54   eidiot("Invoice not found.");
55 } else {
56   my $total = scalar(@cust_bill);
57   print header("Invoice Search Results", menubar(
58           'Main Menu', popurl(2)
59         )), "$total matching invoices found<BR>", &table(), <<END;
60       <TR>
61         <TH></TH>
62         <TH>Balance</TH>
63         <TH>Amount</TH>
64         <TH>Date</TH>
65         <TH>Contact name</TH>
66         <TH>Company</TH>
67       </TR>
68 END
69
70   my(%saw, $cust_bill);
71   my($tot_balance, $tot_amount) = (0, 0);
72   foreach $cust_bill (
73     sort $sortby grep(!$saw{$_->invnum}++, @cust_bill)
74   ) {
75     my($invnum, $owed, $charged, $date ) = (
76       $cust_bill->invnum,
77       sprintf("%.2f", $cust_bill->owed),
78       sprintf("%.2f", $cust_bill->charged),
79       $cust_bill->_date,
80     );
81     my $pdate = time2str("%b %d %Y", $date);
82
83     $tot_balance += $owed;
84     $tot_amount += $charged;
85
86     my $rowspan = 1;
87
88     my $view = popurl(2). "view/cust_bill.cgi?$invnum";
89     print <<END;
90       <TR>
91         <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$invnum</FONT></A></TD>
92         <TD ROWSPAN=$rowspan ALIGN="right"><A HREF="$view"><FONT SIZE=-1>\$$owed</FONT></A></TD>
93         <TD ROWSPAN=$rowspan ALIGN="right"><A HREF="$view"><FONT SIZE=-1>\$$charged</FONT></A></TD>
94         <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$pdate</FONT></A></TD>
95 END
96     my $custnum = $cust_bill->custnum;
97     my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } );
98     if ( $cust_main ) {
99       my $cview = popurl(2). "view/cust_main.cgi?". $cust_main->custnum;
100       my ( $name, $company ) = (
101         $cust_main->last. ', '. $cust_main->first,
102         $cust_main->company,
103       );
104       print <<END;
105         <TD ROWSPAN=$rowspan><A HREF="$cview"><FONT SIZE=-1>$name</FONT></A></TD>
106         <TD ROWSPAN=$rowspan><A HREF="$cview"><FONT SIZE=-1>$company</FONT></A></TD>
107 END
108     } else {
109       print <<END
110         <TD ROWSPAN=$rowspan COLSPAN=2>WARNING: couldn't find cust_main.custnum $custnum (cust_bill.invnum $invnum)</TD>
111 END
112     }
113
114     print "</TR>";
115   }
116   $tot_balance = sprintf("%.2f", $tot_balance);
117   $tot_amount = sprintf("%.2f", $tot_amount);
118   print <<END;
119       <TR><TD></TD><TH><FONT SIZE=-1>Total</FONT></TH><TH><FONT SIZE=-1>Total</FONT></TH></TR>
120       <TR><TD></TD><TD ALIGN="right"><FONT SIZE=-1>\$$tot_balance</FONT></TD><TD ALIGN="right"><FONT SIZE=-1>\$$tot_amount</FONT></TD></TD></TR>
121     </TABLE>
122   </BODY>
123 </HTML>
124 END
125
126 }
127
128 #
129
130 sub invnum_sort {
131   $a->invnum <=> $b->invnum;
132 }
133
134 sub custnum_sort {
135   $a->custnum <=> $b->custnum || $a->invnum <=> $b->invnum;
136 }
137
138 sub date_sort {
139   $a->_date <=> $b->_date || $a->invnum <=> $b->invnum;
140 }
141 %>