<%
-#
-# $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.4 2001-08-21 02:16:36 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::Record qw(qsearch qsearchs dbdef);
use FS::CGI qw(header eidiot popurl table);
use FS::svc_acct;
use FS::cust_main;
"$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);
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 })
$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'),
? "<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>';
}