get rid of header foo in individual templates
[freeside.git] / httemplate / search / cust_pkg.cgi
index d63d2d1..93ce7ae 100755 (executable)
@@ -1,54 +1,13 @@
 <%
-#
-# $Id: cust_pkg.cgi,v 1.1 2001-07-30 07:36:04 ivan Exp $
-#
-# based on search/svc_acct.cgi ivan@sisd.com 98-jul-17
-#
-# $Log: cust_pkg.cgi,v $
-# Revision 1.1  2001-07-30 07:36:04  ivan
-# templates!!!
-#
-# Revision 1.11  2000/07/17 16:45:41  ivan
-# first shot at invoice browsing and some other cleanups
-#
-# Revision 1.10  2000/07/17 12:49:29  ivan
-# better error message if a package isn't linked to a customer (that shouldn't happen)
-#
-# Revision 1.9  1999/07/17 10:38:52  ivan
-# scott nelson <scott@ultimanet.com> noticed this mod_perl-triggered bug and
-# gave me a great bugreport at the last rhythmethod
-#
-# Revision 1.8  1999/02/09 09:22:57  ivan
-# visual and bugfixes
-#
-# Revision 1.7  1999/02/07 09:59:37  ivan
-# more mod_perl fixes, and bugfixes Peter Wemm sent via email
-#
-# Revision 1.6  1999/01/19 05:14:13  ivan
-# for mod_perl: no more top-level my() variables; use vars instead
-# also the last s/create/new/;
-#
-# Revision 1.5  1999/01/18 09:41:38  ivan
-# all $cgi->header calls now include ( '-expires' => 'now' ) for mod_perl
-# (good idea anyway)
-#
-# Revision 1.4  1999/01/18 09:22:33  ivan
-# changes to track email addresses for email invoicing
-#
-# Revision 1.3  1998/12/23 03:05:59  ivan
-# $cgi->keywords instead of $cgi->query_string
-#
-# Revision 1.2  1998/12/17 09:41:09  ivan
-# s/CGI::(Base|Request)/CGI.pm/;
-#
+# <!-- $Id: cust_pkg.cgi,v 1.6 2001-10-30 14:54:07 ivan Exp $ -->
 
 use strict;
-use vars qw ( $cgi @cust_pkg $sortby $query );
+use vars qw ( $cgi @cust_pkg $sortby $query %part_pkg );
 use CGI;
 use CGI::Carp qw(fatalsToBrowser);
 use FS::UID qw(cgisuidsetup);
-use FS::Record qw(qsearch qsearchs);
-use FS::CGI qw(header eidiot popurl);
+use FS::Record qw(qsearch qsearchs dbdef);
+use FS::CGI qw(header eidiot popurl table);
 use FS::cust_pkg;
 use FS::pkg_svc;
 use FS::cust_svc;
@@ -57,6 +16,8 @@ use FS::cust_main;
 $cgi = new CGI;
 &cgisuidsetup($cgi);
 
+my %part_pkg = map { $_->pkgpart => $_ } qsearch('part_pkg', {});
+
 ($query) = $cgi->keywords;
 #this tree is a little bit redundant
 if ( $query eq 'pkgnum' ) {
@@ -97,54 +58,106 @@ if ( scalar(@cust_pkg) == 1 ) {
   eidiot("No packages found");
 } else {
   my($total)=scalar(@cust_pkg);
-  print $cgi->header( '-expires' => 'now' ), header('Package Search Results',''), <<END;
-    $total matching packages found
-    <TABLE BORDER=4 CELLSPACING=0 CELLPADDING=0>
+  print header('Package Search Results',''),
+        "$total matching packages found<BR>", &table(), <<END;
       <TR>
-        <TH>Package #</TH>
-        <TH>Customer #</TH>
-        <TH>Contact name</TH>
-        <TH>Company</TH>
+        <TH>Package</TH>
+        <TH><FONT SIZE=-1>Cust#</FONT></TH>
+        <TH>(bill) name</TH>
+        <TH>company</TH>
+END
+
+if ( defined dbdef->table('cust_main')->column('ship_last') ) {
+  print <<END;
+      <TH>(service) name</TH>
+      <TH>company</TH>
+END
+}
+
+print <<END;
+        <TH COLSPAN=2>Services</TH>
       </TR>
 END
 
+  my $n1 = '<TR>';
   my(%saw,$cust_pkg);
   foreach $cust_pkg (
     sort $sortby grep(!$saw{$_->pkgnum}++, @cust_pkg)
   ) {
     my($cust_main)=qsearchs('cust_main',{'custnum'=>$cust_pkg->custnum});
-    my($pkgnum,$custnum,$name,$company)=(
+    my($pkgnum, $custnum, $last, $first, $company) = (
       $cust_pkg->pkgnum,
       $cust_pkg->custnum,
-      $cust_main ? $cust_main->last. ', '. $cust_main->first : '',
+      $cust_main ? $cust_main->last : '',
+      $cust_main ? $cust_main->first : '',
       $cust_main ? $cust_main->company : '',
     );
+    my($ship_last, $ship_first, $ship_company);
+    if ( defined dbdef->table('cust_main')->column('ship_last') ) {
+      ($ship_last, $ship_first, $ship_company) = (
+        $cust_main
+          ? ( $cust_main->ship_last || $cust_main->getfield('last') )
+          : '',
+        $cust_main 
+          ? ( $cust_main->ship_last
+              ? $cust_main->ship_first
+              : $cust_main->first )
+          : '',
+        $cust_main 
+          ? ( $cust_main->ship_last
+              ? $cust_main->ship_company
+              : $cust_main->company )
+          : '',
+      );
+    }
+    my $pkg = $part_pkg{$cust_pkg->pkgpart}->pkg;
+    #$pkg .= ' - '. $part_pkg{$cust_pkg->pkgpart}->comment;
+    my @cust_svc = qsearch( 'cust_svc', { 'pkgnum' => $pkgnum } );
+    my $rowspan = scalar(@cust_svc) || 1;
     my $p = popurl(2);
-    print <<END;
-    <TR>
-      <TD><A HREF="${p}view/cust_pkg.cgi?$pkgnum"><FONT SIZE=-1>$pkgnum</FONT></A></TD>
+    print $n1, <<END;
+      <TD ROWSPAN=$rowspan><A HREF="${p}view/cust_pkg.cgi?$pkgnum"><FONT SIZE=-1>$pkgnum - $pkg</FONT></A></TD>
 END
     if ( $cust_main ) {
       print <<END;
-      <TD><FONT SIZE=-1><A HREF="${p}view/cust_main.cgi?$custnum">$custnum</A></FONT></TD>
-      <TD><FONT SIZE=-1><A HREF="${p}view/cust_main.cgi?$custnum">$name</A></FONT></TD>
-      <TD><FONT SIZE=-1><A HREF="${p}view/cust_main.cgi?$custnum">$company</A></FONT></TD>
-    </TR>
+      <TD ROWSPAN=$rowspan><FONT SIZE=-1><A HREF="${p}view/cust_main.cgi?$custnum">$custnum</A></FONT></TD>
+      <TD ROWSPAN=$rowspan><FONT SIZE=-1><A HREF="${p}view/cust_main.cgi?$custnum">$last, $first</A></FONT></TD>
+      <TD ROWSPAN=$rowspan><FONT SIZE=-1><A HREF="${p}view/cust_main.cgi?$custnum">$company</A></FONT></TD>
 END
+      if ( defined dbdef->table('cust_main')->column('ship_last') ) {
+        print <<END;
+      <TD ROWSPAN=$rowspan><FONT SIZE=-1><A HREF="${p}view/cust_main.cgi?$custnum">$ship_last, $ship_first</A></FONT></TD>
+      <TD ROWSPAN=$rowspan><FONT SIZE=-1><A HREF="${p}view/cust_main.cgi?$custnum">$ship_company</A></FONT></TD>
+END
+      }
     } else {
+      my $colspan = defined dbdef->table('cust_main')->column('ship_last')
+                    ? 5 : 3;
       print <<END;
-      <TD COLSPAN=3>WARNING: couldn't find cust_main.custnum $custnum (cust_pkg.pkgnum $pkgnum)</TD>
-    </TR>
+      <TD ROWSPAN=$rowspan COLSPAN=$colspan>WARNING: couldn't find cust_main.custnum $custnum (cust_pkg.pkgnum $pkgnum)</TD>
 END
     }
+
+    my $n2 = '';
+    foreach my $cust_svc ( @cust_svc ) {
+      my($label, $value, $svcdb) = $cust_svc->label;
+      my $svcnum = $cust_svc->svcnum;
+      my $sview = $p. "view";
+      print $n2,qq!<TD><A HREF="$sview/$svcdb.cgi?$svcnum"><FONT SIZE=-1>$label</FONT></A></TD>!,
+            qq!<TD><A HREF="$sview/$svcdb.cgi?$svcnum"><FONT SIZE=-1>$value</FONT></A></TD>!;
+      $n2="</TR><TR>";
+    }
+
+    $n1 = "</TR><TR>";
+
   }
+    print '</TR>';
  
   print <<END;
     </TABLE>
   </BODY>
 </HTML>
 END
-  exit;
 
 }