use strict;
use base qw( FS::svc_External_Common );
-#use FS::Record qw( qsearch qsearchs );
+use FS::Record qw( qsearch qsearchs dbh );
use FS::cust_svc;
+use FS::svc_phone;
+use FS::svc_acct;
=head1 NAME
Maximum number of extensions
+=item max_simultaneous
+
+Maximum number of simultaneous users
+
=back
=head1 METHODS
'display_weight' => 70,
'cancel_weight' => 90,
'fields' => {
- 'id' => 'Thirdlane ID',
- 'title' => 'Description',
+ 'id' => 'ID',
+ 'title' => 'Name',
'max_extensions' => 'Maximum number of User Extensions',
+ 'max_simultaneous' => 'Maximum number of simultaneous users',
# 'field' => 'Description',
# 'another_field' => {
# 'label' => 'Description',
=item label
-Returns a meaningful identifier for this PBX tenant.
+Returns the title field for this PBX tenant.
=cut
sub label {
my $self = shift;
- $self->label_field; #or something more complicated if necessary
+ $self->title;
}
=item insert
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;
'';
}
=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
$self->SUPER::check;
}
+#XXX this is a way-too simplistic implementation
+# at the very least, title should be unique across exports that need that or
+# controlled by a conf setting or something
+sub _check_duplicate {
+ my $self = shift;
+
+ $self->lock_table;
+
+ if ( qsearchs( 'svc_pbx', { 'title' => $self->title } ) ) {
+ return "Name in use";
+ } else {
+ return '';
+ }
+}
+
=back
=head1 BUGS