X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_pbx.pm;h=21aaa4e0b518fefc4962e232b975c8239b687731;hb=f8f4c51eaa6f5aa3d49672fe7a17f19fa22494c0;hp=37c7bb7195576cd7671e5d6d16f01d431b12b0b1;hpb=046395d0a66db2f057c80768e01ae0f5b06bc555;p=freeside.git diff --git a/FS/FS/svc_pbx.pm b/FS/FS/svc_pbx.pm index 37c7bb719..21aaa4e0b 100644 --- a/FS/FS/svc_pbx.pm +++ b/FS/FS/svc_pbx.pm @@ -2,8 +2,10 @@ package FS::svc_pbx; use strict; use base qw( FS::svc_External_Common ); -use FS::Record qw( qsearchs ); # qsearch ); +use FS::Record qw( qsearch qsearchs dbh ); use FS::cust_svc; +use FS::svc_phone; +use FS::svc_acct; =head1 NAME @@ -53,6 +55,10 @@ PBX name Maximum number of extensions +=item max_simultaneous + +Maximum number of simultaneous users + =back =head1 METHODS @@ -83,6 +89,7 @@ sub table_info { 'id' => 'ID', 'title' => 'Name', 'max_extensions' => 'Maximum number of User Extensions', + 'max_simultaneous' => 'Maximum number of simultaneous users', # 'field' => 'Description', # 'another_field' => { # 'label' => 'Description', @@ -157,11 +164,42 @@ Delete this record from the database. sub delete { my $self = shift; - my $error; - $error = $self->SUPER::delete; - return $error if $error; + 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; + + foreach my $svc_phone (qsearch('svc_phone', { 'pbxsvc' => $self->svcnum } )) { + $svc_phone->pbxsvc(''); + my $error = $svc_phone->replace; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } + + foreach my $svc_acct (qsearch('svc_acct', { 'pbxsvc' => $self->svcnum } )) { + my $error = $svc_acct->delete; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + } + + my $error = $self->SUPER::delete; + if ( $error ) { + $dbh->rollback if $oldAutoCommit; + return $error; + } + $dbh->commit or die $dbh->errstr if $oldAutoCommit; ''; } @@ -173,15 +211,15 @@ returns the error, otherwise returns false. =cut -sub replace { - my ( $new, $old ) = ( shift, shift ); - my $error; - - $error = $new->SUPER::replace($old); - return $error if $error; - - ''; -} +#sub replace { +# my ( $new, $old ) = ( shift, shift ); +# my $error; +# +# $error = $new->SUPER::replace($old); +# return $error if $error; +# +# ''; +#} =item suspend