X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_svc.pm;h=e6194b5b7c917d804dec6c34dcee15ccef978b5c;hb=e5f29642854dbdb606aa5763213e944ca449fc8a;hp=8a8dbe7c933735e9e7dbfe71a002aca360c06900;hpb=bb88a75467993505e2e3d37e8ce313f254ca5325;p=freeside.git diff --git a/FS/FS/cust_svc.pm b/FS/FS/cust_svc.pm index 8a8dbe7c9..e6194b5b7 100644 --- a/FS/FS/cust_svc.pm +++ b/FS/FS/cust_svc.pm @@ -94,6 +94,43 @@ Called by the cancel method of the package (see L). Replaces the OLD_RECORD with this one in the database. If there is an error, returns the error, otherwise returns false. +=cut + +sub replace { + my ( $new, $old ) = ( shift, shift ); + + local $SIG{HUP} = 'IGNORE'; + local $SIG{INT} = 'IGNORE'; + local $SIG{QUIT} = 'IGNORE'; + local $SIG{TERM} = 'IGNORE'; + local $SIG{TSTP} = 'IGNORE'; + local $SIG{PIPE} = 'IGNORE'; + + my $oldAutoCommit = $FS::UID::AutoCommit; + local $FS::UID::AutoCommit = 0; + my $dbh = dbh; + + my $error = $new->SUPER::replace($old); + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error if $error; + } + + if ( $new->svcpart != $old->svcpart ) { + my $svc_x = $new->svc_x; + my $new_svc_x = ref($svc_x)->new({$svc_x->hash}); + my $error = $new_svc_x->replace($svc_x); + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error if $error; + } + } + + $dbh->commit or die $dbh->errstr if $oldAutoCommit; + ''; #no error + +} + =item check Checks all fields to make sure this is a valid service. If there is an error, @@ -122,13 +159,17 @@ sub check { 'pkgpart' => $cust_pkg->pkgpart, 'svcpart' => $self->svcpart, }); + # or new FS::pkg_svc ( { 'pkgpart' => $cust_pkg->pkgpart, + # 'svcpart' => $self->svcpart, + # 'quantity' => 0 } ); + my @cust_svc = qsearch('cust_svc', { 'pkgnum' => $self->pkgnum, 'svcpart' => $self->svcpart, }); return "Already ". scalar(@cust_svc). " ". $part_svc->svc. " services for pkgnum ". $self->pkgnum - if $pkg_svc->quantity >= scalar(@cust_svc); + if scalar(@cust_svc) >= $pkg_svc->quantity; } ''; #no error @@ -245,7 +286,7 @@ sub seconds_since { =head1 VERSION -$Id: cust_svc.pm,v 1.11 2002-02-10 21:37:24 ivan Exp $ +$Id: cust_svc.pm,v 1.14 2002-04-20 02:06:38 ivan Exp $ =head1 BUGS