no default default_dir (ironic)
[freeside.git] / site_perl / cust_svc.pm
index 1d5051b..ef93f86 100644 (file)
@@ -2,8 +2,15 @@ package FS::cust_svc;
 
 use strict;
 use vars qw(@ISA);
+use Carp;
 use Exporter;
 use FS::Record qw(fields qsearchs);
+use FS::cust_pkg;
+use FS::part_pkg;
+use FS::part_svc;
+use FS::svc_acct;
+use FS::svc_acct_sm;
+use FS::svc_domain;
 
 @ISA = qw(FS::Record Exporter);
 
@@ -26,6 +33,8 @@ FS::cust_svc - Object method for cust_svc objects
 
   $error = $record->check;
 
+  ($label, $value) = $record->label;
+
 =head1 DESCRIPTION
 
 An FS::cust_svc represents a service.  FS::cust_svc inherits from FS::Record.
@@ -140,6 +149,38 @@ sub check {
   ''; #no error
 }
 
+=item label
+
+Returns a list consisting of:
+- The name of this service (from part_svc)
+- A meaningful identifier (username, domain, or mail alias)
+- The table name (i.e. svc_domain) for this service
+
+=cut
+
+sub label {
+  my($self)=@_;
+  my($part_svc) = qsearchs( 'part_svc', { 'svcpart' => $self->svcpart } );
+  my($svcdb) = $part_svc->svcdb;
+  my($svc_x) = qsearchs( $svcdb, { 'svcnum' => $self->svcnum } );
+  my($svc) = $part_svc->svc;
+  my($tag);
+  if ( $svcdb eq 'svc_acct' ) {
+    $tag = $svc_x->getfield('username');
+  } elsif ( $svcdb eq 'svc_acct_sm' ) {
+    my $domuser = $svc_x->domuser eq '*' ? '(anything)' : $svc_x->domuser;
+    my $svc_domain = qsearchs ( 'svc_domain', { 'svcnum' => $svc_x->domsvc } );
+    my $domain = $svc_domain->domain;
+    $tag = "$domuser\@$domain";
+  } elsif ( $svcdb eq 'svc_domain' ) {
+    return $svc, $svc_x->getfield('domain');
+  } else {
+    carp "warning: asked for label of unsupported svcdb; using svcnum";
+    $tag = $svc_x->getfield('svcnum');
+  }
+  $svc, $tag, $svcdb;
+}
+
 =back
 
 =head1 BUGS
@@ -147,7 +188,7 @@ sub check {
 Behaviour of changing the svcpart of cust_svc records is undefined and should
 possibly be prohibited, and pkg_svc records are not checked.
 
-pkg_svc records are not checket in general (here).
+pkg_svc records are not checked in general (here).
 
 =head1 SEE ALSO
 
@@ -162,6 +203,17 @@ no TableUtil, no FS::Lock ivan@sisd.com 98-mar-7
 
 pod ivan@sisd.com 98-sep-21
 
+$Log: cust_svc.pm,v $
+Revision 1.4  1998-11-12 07:58:15  ivan
+added svcdb to label
+
+Revision 1.3  1998/11/12 03:45:38  ivan
+use FS::table_name for all tables qsearch()'ed
+
+Revision 1.2  1998/11/12 03:32:46  ivan
+added label method
+
+
 =cut
 
 1;