preliminary web config editor
[freeside.git] / httemplate / search / svc_acct.cgi
index 15f74ac..64085ea 100755 (executable)
@@ -1,74 +1,18 @@
 <%
-#
-# $Id: svc_acct.cgi,v 1.1 2001-07-30 07:36:04 ivan Exp $
-#
-# Usage: post form to:
-#        http://server.name/path/svc_acct.cgi
-#
-# Note: Should be run setuid freeside as user nobody.
-#
-# loosely (sp?) based on search/cust_main.cgi
-#
-# ivan@voicenet.com 96-jan-3 -> 96-jan-4
-#
-# rewrite (now does browsing too) ivan@sisd.com 98-mar-9
-#
-# Changes to allow page to work at a relative position in server
-#       bmccane@maxbaud.net     98-apr-3
-#
-# show unlinked accounts ivan@sisd.com 98-jun-22
-#
-# use FS::CGI, show total ivan@sisd.com 98-jul-17
-#
-# give service and customer info too ivan@sisd.com 98-aug-16
-#
-# $Log: svc_acct.cgi,v $
-# Revision 1.1  2001-07-30 07:36:04  ivan
-# templates!!!
-#
-# Revision 1.11  1999/04/14 11:25:33  ivan
-# *** empty log message ***
-#
-# Revision 1.10  1999/04/14 11:20:21  ivan
-# visual fix
-#
-# Revision 1.9  1999/04/10 01:53:18  ivan
-# oops, search usernames limited to 8 chars
-#
-# Revision 1.8  1999/04/09 23:43:29  ivan
-# just in case
-#
-# Revision 1.7  1999/02/07 09:59:38  ivan
-# more mod_perl fixes, and bugfixes Peter Wemm sent via email
-#
-# Revision 1.6  1999/01/19 05:14:14  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:39  ivan
-# all $cgi->header calls now include ( '-expires' => 'now' ) for mod_perl
-# (good idea anyway)
-#
-# Revision 1.4  1999/01/18 09:22:34  ivan
-# changes to track email addresses for email invoicing
-#
-# Revision 1.3  1998/12/23 03:06:28  ivan
-# $cgi->keywords instead of $cgi->query_string
-#
-# Revision 1.2  1998/12/17 09:41:10  ivan
-# s/CGI::(Base|Request)/CGI.pm/;
-#
+# <!-- $Id: svc_acct.cgi,v 1.6 2001-10-24 15:29:31 ivan Exp $ -->
 
 use strict;
-use vars qw( $cgi @svc_acct $sortby $query );
+use vars qw( $cgi @svc_acct $sortby $query $mydomain );
 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 table);
+use FS::Record qw(qsearch qsearchs dbdef);
+use FS::CGI qw(header idiot popurl table);
 use FS::svc_acct;
 use FS::cust_main;
 
+$mydomain = '';
+
 $cgi = new CGI;
 &cgisuidsetup($cgi);
 
@@ -110,9 +54,9 @@ if ( $query eq 'svcnum' ) {
 if ( scalar(@svc_acct) == 1 ) {
   my($svcnum)=$svc_acct[0]->svcnum;
   print $cgi->redirect(popurl(2). "view/svc_acct.cgi?$svcnum");  #redirect
-  exit;
+  #exit;
 } elsif ( scalar(@svc_acct) == 0 ) { #error
-  eidiot("Account not found");
+  idiot("Account not found");
 } else {
   my($total)=scalar(@svc_acct);
   print $cgi->header( '-expires' => 'now' ),
@@ -120,15 +64,22 @@ if ( scalar(@svc_acct) == 1 ) {
         "$total matching accounts found",
         &table(), <<END;
       <TR>
-        <TH><FONT SIZE=-1>Service #</FONT></TH>
+        <TH><FONT SIZE=-1>#</FONT></TH>
         <TH><FONT SIZE=-1>Username</FONT></TH>
+        <TH><FONT SIZE=-1>Domain</FONT></TH>
         <TH><FONT SIZE=-1>UID</FONT></TH>
         <TH><FONT SIZE=-1>Service</FONT></TH>
-        <TH><FONT SIZE=-1>Customer #</FONT></TH>
-        <TH><FONT SIZE=-1>Contact name</FONT></TH>
-        <TH><FONT SIZE=-1>Company</FONT></TH>
-      </TR>
+        <TH><FONT SIZE=-1>Cust#</FONT></TH>
+        <TH><FONT SIZE=-1>(bill) name</FONT></TH>
+        <TH><FONT SIZE=-1>company</FONT></TH>
+END
+  if ( defined dbdef->table('cust_main')->column('ship_last') ) {
+    print <<END;
+        <TH><FONT SIZE=-1>(service) name</FONT></TH>
+        <TH><FONT SIZE=-1>company</FONT></TH>
 END
+  }
+  print "</TR>";
 
   my(%saw,$svc_acct);
   my $p = popurl(2);
@@ -139,6 +90,22 @@ END
       or die "No cust_svc record for svcnum ". $svc_acct->svcnum;
     my $part_svc = qsearchs('part_svc', { 'svcpart' => $cust_svc->svcpart })
       or die "No part_svc record for svcpart ". $cust_svc->svcpart;
+
+    my $domain;
+    my $svc_domain = qsearchs('svc_domain', { 'svcnum' => $svc_acct->domsvc });
+    if ( $svc_domain ) {
+      $domain = "<A HREF=\"${p}view/svc_domain.cgi?". $svc_domain->svcnum.
+                "\">". $svc_domain->domain. "</A>";
+    } else {
+      unless ( $mydomain ) {
+        my $conf = new FS::Conf;
+        unless ( $mydomain = $conf->config('domain') ) {
+          die "No legacy domain config file and no svc_domain.svcnum record ".
+              "for svc_acct.domsvc: ". $cust_svc->domsvc;
+        }
+      }
+      $domain = "<i>$mydomain</i><FONT COLOR=\"#FF0000\">*</FONT>";
+    }
     my($cust_pkg,$cust_main);
     if ( $cust_svc->pkgnum ) {
       $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $cust_svc->pkgnum })
@@ -146,7 +113,7 @@ END
       $cust_main = qsearchs('cust_main', { 'custnum' => $cust_pkg->custnum })
         or die "No cust_main record for custnum ". $cust_pkg->custnum;
     }
-    my($svcnum,$username,$uid,$svc,$custnum,$last,$first,$company)=(
+    my($svcnum, $username, $uid, $svc, $custnum, $last, $first, $company) = (
       $svc_acct->svcnum,
       $svc_acct->getfield('username'),
       $svc_acct->getfield('uid'),
@@ -160,29 +127,56 @@ END
       ? "<A HREF=\"${p}view/cust_main.cgi?$custnum\"><FONT SIZE=-1>$custnum</FONT></A>"
       : "<I>(unlinked)</I>"
     ;
-    my($pname) = $custnum ? "<A HREF=\"${p}view/cust_main.cgi?$custnum\">$last, $first</A>" : '';
+    my $pname = $custnum ? "<A HREF=\"${p}view/cust_main.cgi?$custnum\">$last, $first</A>" : '';
     my $pcompany = $custnum ? "<A HREF=\"${p}view/cust_main.cgi?$custnum\">$company</A>" : '';
+    my($pship_name, $pship_company);
+    if ( defined dbdef->table('cust_main')->column('ship_last') ) {
+      my($ship_last, $ship_first, $ship_company) = (
+        $cust_svc->pkgnum ? ( $cust_main->ship_last || $last ) : '',
+        $cust_svc->pkgnum ? ( $cust_main->ship_last
+                              ? $cust_main->ship_first
+                              : $first
+                            ) : '',
+        $cust_svc->pkgnum ? ( $cust_main->ship_last
+                              ? $cust_main->ship_company
+                              : $company
+                            ) : '',
+      );
+      $pship_name = $custnum ? "<A HREF=\"${p}view/cust_main.cgi?$custnum\">$ship_last, $ship_first</A>" : '';
+      $pship_company = $custnum ? "<A HREF=\"${p}view/cust_main.cgi?$custnum\">$ship_company</A>" : '';
+    }
     print <<END;
     <TR>
       <TD><A HREF="${p}view/svc_acct.cgi?$svcnum"><FONT SIZE=-1>$svcnum</FONT></A></TD>
       <TD><A HREF="${p}view/svc_acct.cgi?$svcnum"><FONT SIZE=-1>$username</FONT></A></TD>
+      <TD><FONT SIZE=-1>$domain</FONT></TD>
       <TD><A HREF="${p}view/svc_acct.cgi?$svcnum"><FONT SIZE=-1>$uid</FONT></A></TD>
       <TD><FONT SIZE=-1>$svc</FONT></TH>
       <TD><FONT SIZE=-1>$pcustnum</FONT></TH>
       <TD><FONT SIZE=-1>$pname<FONT></TH>
       <TD><FONT SIZE=-1>$pcompany</FONT></TH>
-    </TR>
 END
+    if ( defined dbdef->table('cust_main')->column('ship_last') ) {
+      print <<END;
+      <TD><FONT SIZE=-1>$pship_name<FONT></TH>
+      <TD><FONT SIZE=-1>$pship_company</FONT></TH>
+END
+    }
+    print "</TR>";
 
   }
  
-  print <<END;
-    </TABLE>
-    </CENTER>
-  </BODY>
-</HTML>
-END
-  exit;
+  print '</TABLE>';
+
+  if ( $mydomain ) {
+    print "<BR><FONT COLOR=\"#FF0000\">*</FONT> The <I>$mydomain</I> domain ".
+          "is contained in your legacy <CODE>domain</CODE> ".
+          "<A HREF=\"${p}docs/config.html#domain\">configuration file</A>.  ".
+          "You should run the <CODE>bin/fs-migrate-svc_acct_sm</CODE> script ".
+          "to create a proper svc_domain record for this domain."
+  }
+
+  print '</BODY></HTML>';
 
 }