X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=site_perl%2Fsvc_domain.pm;h=19aac3f88fcbf8bfdaeab7bf77693b8533b5ff2f;hp=c7e1e70bd91eabce6d3de9e14826bef156a6f838;hb=7613e14fd13aabb2a44bb26ca8640053f44930ea;hpb=1f2d8690193476319d61b20b78461eb1a3ff106e diff --git a/site_perl/svc_domain.pm b/site_perl/svc_domain.pm index c7e1e70bd..19aac3f88 100644 --- a/site_perl/svc_domain.pm +++ b/site_perl/svc_domain.pm @@ -9,10 +9,14 @@ use Mail::Internet; use Mail::Header; use Date::Format; use FS::Record qw(fields qsearch qsearchs); -use FS::cust_svc; use FS::Conf; +use FS::svc_Common; +use FS::cust_svc; +use FS::svc_acct; +use FS::cust_pkg; +use FS::cust_main; -@ISA = qw(FS::Record Exporter); +@ISA = qw( FS::svc_Common ); #ask FS::UID to run this stuff for us later $FS::UID::callback{'FS::domain'} = sub { @@ -68,7 +72,7 @@ FS::svc_domain - Object methods for svc_domain records =head1 DESCRIPTION An FS::svc_domain object represents a domain. FS::svc_domain inherits from -FS::Record. The following fields are currently supported: +FS::svc_Common. The following fields are currently supported: =over 4 @@ -120,6 +124,7 @@ sub insert { local $SIG{QUIT} = 'IGNORE'; local $SIG{TERM} = 'IGNORE'; local $SIG{TSTP} = 'IGNORE'; + local $SIG{PIPE} = 'IGNORE'; $error = $self->check; return $error if $error; @@ -133,24 +138,8 @@ sub insert { return "Domain not found (see whois)" if ( $self->action eq "M" && $whois =~ /^No match for/ ); - my $svcnum = $self->svcnum; - my $cust_svc; - unless ( $svcnum ) { - $cust_svc = new FS::cust_svc ( { - 'svcnum' => $svcnum, - 'pkgnum' => $self->pkgnum, - 'svcpart' => $self->svcpart, - } ); - my $error = $cust_svc->insert; - return $error if $error; - $svcnum = $self->setfield( 'svcnum', $cust_svc->svcnum ); - } - $error = $self->SUPER::insert; - if ( $error ) { - $cust_svc->delete if $cust_svc; - return $error; - } + return $error if $error; $self->submit_internic unless $whois_hack; @@ -164,24 +153,6 @@ error, otherwise returns false. The corresponding FS::cust_svc record will be deleted as well. -=cut - -sub delete { - my $self = shift; - my $error; - - my $svcnum = $self->svcnum; - - $error = $self->delete; - return $error if $error; - - my $cust_svc = qsearchs( 'cust_svc', { 'svcnum' => $svcnum } ); - $error = $cust_svc->delete; - return $error if $error; - - ''; -} - =item replace OLD_RECORD Replaces OLD_RECORD with this one in the database. If there is an error, @@ -206,36 +177,18 @@ Just returns false (no error) for now. Called by the suspend method of FS::cust_pkg (see L). -=cut - -sub suspend { - ''; #no error (stub) -} - =item unsuspend Just returns false (no error) for now. Called by the unsuspend method of FS::cust_pkg (see L). -=cut - -sub unsuspend { - ''; #no error (stub) -} - =item cancel Just returns false (no error) for now. Called by the cancel method of FS::cust_pkg (see L). -=cut - -sub cancel { - ''; #no error (stub) -} - =item check Checks all fields to make sure this is a valid domain. If there is an error, @@ -248,44 +201,28 @@ Sets any fixed values; see L. sub check { my $self = shift; - - my($recref) = $self->hashref; - my $error; - $error = - $self->ut_numbern('svcnum') - ; - return $error if $error; + my $x = $self->setfixed; + return $x unless ref($x); + my $part_svc = $x; - #get part_svc (and pkgnum) - my($svcpart,$pkgnum); - my($svcnum)=$self->getfield('svcnum'); - if ($svcnum) { - my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}); - return "Unknown svcnum" unless $cust_svc; - $svcpart=$cust_svc->svcpart; - $pkgnum=$cust_svc->pkgnum; + #hmm + my $pkgnum; + if ( $self->svcnum ) { + my $cust_svc = qsearchs( 'cust_svc', { 'svcnum' => $self->svcnum } ); + $pkgnum = $cust_svc->pkgnum; } else { - $svcpart=$self->svcpart; - $pkgnum=$self->pkgnum; - } - my($part_svc)=qsearchs('part_svc',{'svcpart'=>$svcpart}); - return "Unkonwn svcpart" unless $part_svc; - - #set fixed fields from part_svc - my($field); - foreach $field ( fields('svc_acct') ) { - if ( $part_svc->getfield('svc_domain__'. $field. '_flag') eq 'F' ) { - $self->setfield($field,$part_svc->getfield('svc_domain__'. $field) ); - } + $pkgnum = $self->pkgnum; } + my($recref) = $self->hashref; + unless ( $whois_hack ) { unless ( $self->email ) { #find out an email address - my(@svc_acct); - foreach ( qsearch('cust_svc',{'pkgnum'=>$pkgnum}) ) { - my($svc_acct)=qsearchs('svc_acct',{'svcnum'=>$_->svcnum}); + my @svc_acct; + foreach ( qsearch( 'cust_svc', { 'pkgnum' => $pkgnum } ) ) { + my $svc_acct = qsearchs( 'svc_acct', { 'svcnum' => $_->svcnum } ); push @svc_acct, $svc_acct if $svc_acct; } @@ -349,7 +286,7 @@ sub submit_internic { my $cust_pkg = qsearchs( 'cust_pkg', { 'pkgnum' => $self->pkgnum } ); return unless $cust_pkg; - my cust_main) = qsearchs( 'cust_main', { 'custnum' => $cust_pkg->custnum } ); + my $cust_main = qsearchs( 'cust_main', { 'custnum' => $cust_pkg->custnum } ); return unless $cust_main; my %subs = ( @@ -453,7 +390,7 @@ sub submit_internic { =head1 VERSION -$Id: svc_domain.pm,v 1.4 1998-12-29 11:59:55 ivan Exp $ +$Id: svc_domain.pm,v 1.7 1999-04-07 14:40:15 ivan Exp $ =head1 BUGS @@ -465,11 +402,12 @@ All registries should be supported. Should change action to a real field. +The $recref stuff in sub check should be cleaned up. + =head1 SEE ALSO -L, L, L, L, L, -L, L, L, schema.html from the base documentation, -config.html from the base documentation. +L, L, L, L, +L, L, L, L, L, schema.html from the base documentation, config.html from the base documentation. =head1 HISTORY @@ -488,8 +426,14 @@ ivan@sisd.com 98-jul-17-19 pod, some FS::Conf (not complete) ivan@sisd.com 98-sep-23 $Log: svc_domain.pm,v $ -Revision 1.4 1998-12-29 11:59:55 ivan -mostly properly OO, some work still to be done with svc_ stuff +Revision 1.7 1999-04-07 14:40:15 ivan +use all stuff that's qsearch'ed to avoid warnings + +Revision 1.6 1999/01/25 12:26:17 ivan +yet more mod_perl stuff + +Revision 1.5 1998/12/30 00:30:47 ivan +svc_ stuff is more properly OO - has a common superclass FS::svc_Common Revision 1.3 1998/11/13 09:56:57 ivan change configuration file layout to support multiple distinct databases (with