finally fix part_svc!!!
[freeside.git] / FS / FS / svc_acct.pm
index 97117b5..a4ce3f7 100644 (file)
@@ -3,7 +3,7 @@ package FS::svc_acct;
 use strict;
 use vars qw( @ISA $nossh_hack $conf $dir_prefix @shells $usernamemin
              $usernamemax $passwordmin $username_letter $username_letterfirst
-             $shellmachine $useradd $usermod $userdel 
+             $shellmachine $useradd $usermod $userdel $mydomain
              @saltset @pw_set);
 use Carp;
 use FS::Conf;
@@ -50,6 +50,7 @@ $FS::UID::callback{'FS::svc_acct'} = sub {
   }
   $username_letter = $conf->exists('username-letter');
   $username_letterfirst = $conf->exists('username-letterfirst');
+  $mydomain = $conf->config('domain');
 };
 
 @saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
@@ -184,7 +185,7 @@ sub insert {
   my $part_svc = qsearchs( 'part_svc', { 'svcpart' => $self->svcpart } );
   return "Unknown svcpart" unless $part_svc;
   return "uid in use"
-    if $part_svc->svc_acct__uid_flag ne 'F'
+    if $part_svc->part_svc_column('uid')->columnflag ne 'F'
       && qsearchs( 'svc_acct', { 'uid' => $self->uid } )
       && $self->username !~ /^(hyla)?fax$/
     ;
@@ -455,7 +456,7 @@ sub check {
     ! $recref->{popnum} ||
     qsearchs('svc_acct_pop',{'popnum'=> $recref->{popnum} } );
 
-  unless ( $part_svc->getfield('svc_acct__uid_flag') eq 'F' ) {
+  unless ( $part_svc->part_svc_column('uid')->columnflag eq 'F' ) {
 
     $recref->{uid} =~ /^(\d*)$/ or return "Illegal uid";
     $recref->{uid} = $1 eq '' ? $self->unique('uid') : $1;
@@ -505,7 +506,7 @@ sub check {
       return "Can't have quota without uid" : ( $recref->{quota}='' );
   }
 
-  unless ( $part_svc->getfield('svc_acct__slipip_flag') eq 'F' ) {
+  unless ( $part_svc->part_svc_column('slipip')->columnflag eq 'F' ) {
     unless ( $recref->{slipip} eq '0e0' ) {
       $recref->{slipip} =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/
         or return "Illegal slipip". $self->slipip;
@@ -604,13 +605,17 @@ sub radius_check {
 
 Returns the domain associated with this account.
 
--cut
+=cut
 
 sub domain {
   my $self = shift;
-  my $svc_domain = qsearchs( 'svc_domain', { 'svcnum' => $self->domsvc } )
-    or die "svc_acct.domsvc ". $self->domsvc." not found in svc_domain.svcnum";
-  $svc_domain->domain;
+  if ( $self->domsvc ) {
+    my $svc_domain = qsearchs( 'svc_domain', { 'svcnum' => $self->domsvc } )
+      or die "no svc_domain.svcnum for svc_acct.domsvc ". $self->domsvc;
+    $svc_domain->domain;
+  } else {
+    $mydomain or die "svc_acct.domsvc is null and no legacy domain config file";
+  }
 }
 
 =item email
@@ -628,7 +633,7 @@ sub email {
 
 =head1 VERSION
 
-$Id: svc_acct.pm,v 1.27 2001-08-21 00:39:07 ivan Exp $
+$Id: svc_acct.pm,v 1.30 2001-09-06 20:41:59 ivan Exp $
 
 =head1 BUGS