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