2 #<!-- $Id: cust_bill.cgi,v 1.2 2001-08-21 02:31:56 ivan Exp $ -->
5 use vars qw ( $cgi $invnum $query $sortby @cust_bill );
7 use CGI::Carp qw(fatalsToBrowser);
9 use FS::UID qw(cgisuidsetup);
10 use FS::CGI qw(popurl header menubar eidiot table );
11 use FS::Record qw(qsearch qsearchs);
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;
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;
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;
52 grep $_->owed != 0 && $_->_date < time - $open, qsearch('cust_bill', {} );
54 die "unknown query string $query";
57 $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/;
59 @cust_bill = qsearchs('cust_bill', { 'invnum' => $invnum } );
60 $sortby = \*invnum_sort;
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.");
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;
86 sort $sortby grep(!$saw{$_->invnum}++, @cust_bill)
88 my($invnum, $owed, $charged, $date ) = (
94 my $pdate = time2str("%b %d %Y", $date);
98 my $view = popurl(2). "view/cust_bill.cgi?$invnum";
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>
106 my $custnum = $cust_bill->custnum;
107 my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } );
109 my $cview = popurl(2). "view/cust_main.cgi?". $cust_main->custnum;
110 my ( $name, $company ) = (
111 $cust_main->last. ', '. $cust_main->first,
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>
120 <TD ROWSPAN=$rowspan COLSPAN=2>WARNING: couldn't find cust_main.custnum $custnum (cust_bill.invnum $invnum)</TD>
138 $a->invnum <=> $b->invnum;
142 $a->custnum <=> $b->custnum || $a->invnum <=> $b->invnum;
146 $a->_date <=> $b->_date || $a->invnum <=> $b->invnum;