3 my(@cust_bill, $sortby);
4 if ( $cgi->keywords ) {
5 my($query) = $cgi->keywords;
6 if ( $query eq 'invnum' ) {
7 $sortby = \*invnum_sort;
8 @cust_bill = qsearch('cust_bill', {} );
9 } elsif ( $query eq 'date' ) {
10 $sortby = \*date_sort;
11 @cust_bill = qsearch('cust_bill', {} );
12 } elsif ( $query eq 'custnum' ) {
13 $sortby = \*custnum_sort;
14 @cust_bill = qsearch('cust_bill', {} );
15 } elsif ( $query eq 'OPEN_invnum' ) {
16 $sortby = \*invnum_sort;
17 @cust_bill = grep $_->owed != 0, qsearch('cust_bill', {} );
18 } elsif ( $query eq 'OPEN_date' ) {
19 $sortby = \*date_sort;
20 @cust_bill = grep $_->owed != 0, qsearch('cust_bill', {} );
21 } elsif ( $query eq 'OPEN_custnum' ) {
22 $sortby = \*custnum_sort;
23 @cust_bill = grep $_->owed != 0, qsearch('cust_bill', {} );
24 } elsif ( $query =~ /^OPEN(\d+)_invnum$/ ) {
25 my $open = $1 * 86400;
26 $sortby = \*invnum_sort;
28 grep $_->owed != 0 && $_->_date < time - $open, qsearch('cust_bill', {} );
29 } elsif ( $query =~ /^OPEN(\d+)_date$/ ) {
30 my $open = $1 * 86400;
31 $sortby = \*date_sort;
33 grep $_->owed != 0 && $_->_date < time - $open, qsearch('cust_bill', {} );
34 } elsif ( $query =~ /^OPEN(\d+)_custnum$/ ) {
35 my $open = $1 * 86400;
36 $sortby = \*custnum_sort;
38 grep $_->owed != 0 && $_->_date < time - $open, qsearch('cust_bill', {} );
40 die "unknown query string $query";
43 $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/;
45 @cust_bill = qsearchs('cust_bill', { 'invnum' => $invnum } );
46 $sortby = \*invnum_sort;
49 if ( scalar(@cust_bill) == 1 ) {
50 my $invnum = $cust_bill[0]->invnum;
51 print $cgi->redirect(popurl(2). "view/cust_bill.cgi?$invnum"); #redirect
52 } elsif ( scalar(@cust_bill) == 0 ) {
56 eidiot("Invoice not found.");
61 my $total = scalar(@cust_bill);
62 print header("Invoice Search Results", menubar(
63 'Main Menu', popurl(2)
64 )), "$total matching invoices found<BR>", &table(), <<END;
76 my($tot_balance, $tot_amount) = (0, 0);
78 sort $sortby grep(!$saw{$_->invnum}++, @cust_bill)
80 my($invnum, $owed, $charged, $date ) = (
82 sprintf("%.2f", $cust_bill->owed),
83 sprintf("%.2f", $cust_bill->charged),
86 my $pdate = time2str("%b %d %Y", $date);
88 $tot_balance += $owed;
89 $tot_amount += $charged;
93 my $view = popurl(2). "view/cust_bill.cgi?$invnum";
96 <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$invnum</FONT></A></TD>
97 <TD ROWSPAN=$rowspan ALIGN="right"><A HREF="$view"><FONT SIZE=-1>\$$owed</FONT></A></TD>
98 <TD ROWSPAN=$rowspan ALIGN="right"><A HREF="$view"><FONT SIZE=-1>\$$charged</FONT></A></TD>
99 <TD ROWSPAN=$rowspan><A HREF="$view"><FONT SIZE=-1>$pdate</FONT></A></TD>
101 my $custnum = $cust_bill->custnum;
102 my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum } );
104 my $cview = popurl(2). "view/cust_main.cgi?". $cust_main->custnum;
105 my ( $name, $company ) = (
106 $cust_main->last. ', '. $cust_main->first,
110 <TD ROWSPAN=$rowspan><A HREF="$cview"><FONT SIZE=-1>$name</FONT></A></TD>
111 <TD ROWSPAN=$rowspan><A HREF="$cview"><FONT SIZE=-1>$company</FONT></A></TD>
115 <TD ROWSPAN=$rowspan COLSPAN=2>WARNING: couldn't find cust_main.custnum $custnum (cust_bill.invnum $invnum)</TD>
121 $tot_balance = sprintf("%.2f", $tot_balance);
122 $tot_amount = sprintf("%.2f", $tot_amount);
124 <TR><TD></TD><TH><FONT SIZE=-1>Total</FONT></TH><TH><FONT SIZE=-1>Total</FONT></TH></TR>
125 <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>
136 $a->invnum <=> $b->invnum;
140 $a->custnum <=> $b->custnum || $a->invnum <=> $b->invnum;
144 $a->_date <=> $b->_date || $a->invnum <=> $b->invnum;