for mod_perl: no more top-level my() variables; use vars instead
[freeside.git] / htdocs / search / cust_pkg.cgi
1 #!/usr/bin/perl -Tw
2 #
3 # $Id: cust_pkg.cgi,v 1.6 1999-01-19 05:14:13 ivan Exp $
4 #
5 # based on search/svc_acct.cgi ivan@sisd.com 98-jul-17
6 #
7 # $Log: cust_pkg.cgi,v $
8 # Revision 1.6  1999-01-19 05:14:13  ivan
9 # for mod_perl: no more top-level my() variables; use vars instead
10 # also the last s/create/new/;
11 #
12 # Revision 1.5  1999/01/18 09:41:38  ivan
13 # all $cgi->header calls now include ( '-expires' => 'now' ) for mod_perl
14 # (good idea anyway)
15 #
16 # Revision 1.4  1999/01/18 09:22:33  ivan
17 # changes to track email addresses for email invoicing
18 #
19 # Revision 1.3  1998/12/23 03:05:59  ivan
20 # $cgi->keywords instead of $cgi->query_string
21 #
22 # Revision 1.2  1998/12/17 09:41:09  ivan
23 # s/CGI::(Base|Request)/CGI.pm/;
24 #
25
26 use strict;
27 use vars qw ( $cgi @cust_pkg $sortby $query );
28 use CGI;
29 use CGI::Carp qw(fatalsToBrowser);
30 use FS::UID qw(cgisuidsetup);
31 use FS::Record qw(qsearch qsearchs);
32 use FS::CGI qw(header idiot popurl);
33
34 $cgi = new CGI;
35 &cgisuidsetup($cgi);
36
37 ($query) = $cgi->keywords;
38 #this tree is a little bit redundant
39 if ( $query eq 'pkgnum' ) {
40   $sortby=\*pkgnum_sort;
41   @cust_pkg=qsearch('cust_pkg',{});
42 } elsif ( $query eq 'APKG_pkgnum' ) {
43   $sortby=\*pkgnum_sort;
44
45   #perhaps this should go in cust_pkg as a qsearch-like constructor?
46   my($cust_pkg);
47   foreach $cust_pkg (qsearch('cust_pkg',{})) {
48     my($flag)=0;
49     my($pkg_svc);
50     PKG_SVC: 
51     foreach $pkg_svc (qsearch('pkg_svc',{ 'pkgpart' => $cust_pkg->pkgpart })) {
52       if ( $pkg_svc->quantity 
53            > scalar(qsearch('cust_svc',{
54                'pkgnum' => $cust_pkg->pkgnum,
55                'svcpart' => $pkg_svc->svcpart,
56              }))
57          )
58       {
59         $flag=1;
60         last PKG_SVC;
61       }
62     }
63     push @cust_pkg, $cust_pkg if $flag;
64   }
65 } else {
66   die "Empty QUERY_STRING!";
67 }
68
69 if ( scalar(@cust_pkg) == 1 ) {
70   my($pkgnum)=$cust_pkg[0]->pkgnum;
71   print $cgi->redirect(popurl(2). "view/cust_pkg.cgi?$pkgnum");
72   exit;
73 } elsif ( scalar(@cust_pkg) == 0 ) { #error
74   &idiot("No packages found");
75   exit;
76 } else {
77   my($total)=scalar(@cust_pkg);
78   print $cgi->header( '-expires' => 'now' ), header('Package Search Results',''), <<END;
79     $total matching packages found
80     <TABLE BORDER=4 CELLSPACING=0 CELLPADDING=0>
81       <TR>
82         <TH>Package #</TH>
83         <TH>Customer #</TH>
84         <TH>Name</TH>
85         <TH>Company</TH>
86       </TR>
87 END
88
89   my(%saw,$cust_pkg);
90   foreach $cust_pkg (
91     sort $sortby grep(!$saw{$_->pkgnum}++, @cust_pkg)
92   ) {
93     my($cust_main)=qsearchs('cust_main',{'custnum'=>$cust_pkg->custnum});
94     my($pkgnum,$custnum,$name,$company)=(
95       $cust_pkg->pkgnum,
96       $cust_main->custnum,
97       $cust_main->last. ', '. $cust_main->first,
98       $cust_main->company,
99     );
100     print <<END;
101     <TR>
102       <TD><A HREF="../view/cust_pkg.cgi?$pkgnum"><FONT SIZE=-1>$pkgnum</FONT></A></TD>
103       <TD><FONT SIZE=-1>$custnum</FONT></TD>
104       <TD><FONT SIZE=-1>$name</FONT></TD>
105       <TD><FONT SIZE=-1>$company</FONT></TD>
106     </TR>
107 END
108
109   }
110  
111   print <<END;
112     </TABLE>
113     </CENTER>
114   </BODY>
115 </HTML>
116 END
117   exit;
118
119 }
120
121 sub pkgnum_sort {
122   $a->getfield('pkgnum') <=> $b->getfield('pkgnum');
123 }
124