summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
Diffstat (limited to 'FS')
-rw-r--r--FS/FS.pm2
-rw-r--r--FS/FS/MAC_Mixin.pm (renamed from FS/FS/svc_MAC_Mixin.pm)2
-rw-r--r--FS/FS/Mason.pm2
-rw-r--r--FS/FS/Schema.pm39
-rw-r--r--FS/FS/dsl_device.pm2
-rw-r--r--FS/FS/extension_device.pm110
-rw-r--r--FS/FS/pbx_device.pm114
-rw-r--r--FS/FS/phone_device.pm2
-rw-r--r--FS/FS/svc_External_Common.pm22
-rwxr-xr-xFS/FS/svc_broadband.pm2
-rw-r--r--FS/FS/svc_cable.pm2
-rw-r--r--FS/FS/svc_pbx.pm2
-rw-r--r--FS/FS/svc_video.pm2
-rw-r--r--FS/MANIFEST4
-rw-r--r--FS/t/extension_device.t5
-rw-r--r--FS/t/pbx_device.t5
16 files changed, 291 insertions, 26 deletions
diff --git a/FS/FS.pm b/FS/FS.pm
index 11d8b6e..c19d2a9 100644
--- a/FS/FS.pm
+++ b/FS/FS.pm
@@ -206,6 +206,8 @@ L<FS::svc_pbx> - PBX service class
L<FS::pbx_extension> - PBX extension class
+L<FS::pbx_device> - PBX device class
+
L<FS::svc_cert> - Certificate service class
L<FS::svc_dish> - Dish network service class
diff --git a/FS/FS/svc_MAC_Mixin.pm b/FS/FS/MAC_Mixin.pm
index 737a8e8..8715995 100644
--- a/FS/FS/svc_MAC_Mixin.pm
+++ b/FS/FS/MAC_Mixin.pm
@@ -1,4 +1,4 @@
-package FS::svc_MAC_Mixin;
+package FS::MAC_Mixin;
use strict;
#use FS::Record qw(qsearch);
diff --git a/FS/FS/Mason.pm b/FS/FS/Mason.pm
index 7d78376..a4eac45 100644
--- a/FS/FS/Mason.pm
+++ b/FS/FS/Mason.pm
@@ -369,6 +369,8 @@ if ( -e $addl_handler_use_file ) {
use FS::part_pkg_usageprice;
use FS::cust_pkg_usageprice;
use FS::pbx_extension;
+ use FS::pbx_device;
+ use FS::extension_device;
# Sammath Naur
if ( $FS::Mason::addl_handler_use ) {
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 2300c07..0447892 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -5676,6 +5676,45 @@ sub tables_hashref {
],
},
+ 'pbx_device' => {
+ 'columns' => [
+ 'devicenum', 'serial', '', '', '', '',
+ 'devicepart', 'int', '', '', '', '',
+ 'svcnum', 'int', '', '', '', '',
+ 'mac_addr', 'varchar', 'NULL', 12, '', '',
+ ],
+ 'primary_key' => 'devicenum',
+ 'unique' => [ [ 'mac_addr' ], ],
+ 'index' => [ [ 'devicepart' ], [ 'svcnum' ], ],
+ 'foreign_keys' => [
+ { columns => [ 'devicepart' ],
+ table => 'part_device',
+ },
+ { columns => [ 'svcnum' ],
+ table => 'svc_pbx',
+ },
+ ],
+ },
+
+ 'extension_device' => {
+ 'columns' => [
+ 'extensiondevicenum', 'serial', '', '', '', '',
+ 'extensionnum', 'int', '', '', '', '',
+ 'devicenum', 'int', '', '', '', '',
+ ],
+ 'primary_key' => 'extensiondevicenum',
+ 'unique' => [ [ 'extensionnum', 'devicenum' ] ],
+ 'index' => [],#both? which way do we need to query?
+ 'foreign_keys' => [
+ { columns => [ 'extensionnum' ],
+ table => 'pbx_extension',
+ },
+ { columns => [ 'devicenum' ],
+ table => 'pbx_device',
+ },
+ ],
+ },
+
'svc_mailinglist' => { #svc_group?
'columns' => [
'svcnum', 'int', '', '', '', '',
diff --git a/FS/FS/dsl_device.pm b/FS/FS/dsl_device.pm
index 39e8c34..1e86d44 100644
--- a/FS/FS/dsl_device.pm
+++ b/FS/FS/dsl_device.pm
@@ -1,5 +1,5 @@
package FS::dsl_device;
-use base qw( FS::Record );
+use base qw( FS::MAC_Mixin FS::Record );
use strict;
diff --git a/FS/FS/extension_device.pm b/FS/FS/extension_device.pm
new file mode 100644
index 0000000..23d881e
--- /dev/null
+++ b/FS/FS/extension_device.pm
@@ -0,0 +1,110 @@
+package FS::extension_device;
+use base qw( FS::Record );
+
+use strict;
+#use FS::Record qw( qsearch qsearchs );
+
+=head1 NAME
+
+FS::extension_device - Object methods for extension_device records
+
+=head1 SYNOPSIS
+
+ use FS::extension_device;
+
+ $record = new FS::extension_device \%hash;
+ $record = new FS::extension_device { 'column' => 'value' };
+
+ $error = $record->insert;
+
+ $error = $new_record->replace($old_record);
+
+ $error = $record->delete;
+
+ $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::extension_device object represents a PBX extension association with a
+specific PBX device (SIP phone or ATA). FS::extension_device inherits from
+FS::Record. The following fields are currently supported:
+
+=over 4
+
+=item extensiondevicenum
+
+primary key
+
+=item extensionnum
+
+extensionnum
+
+=item devicenum
+
+devicenum
+
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new record. To add the record to the database, see L<"insert">.
+
+Note that this stores the hash reference, not a distinct copy of the hash it
+points to. You can ask the object for a copy with the I<hash> method.
+
+=cut
+
+sub table { 'extension_device'; }
+
+=item insert
+
+Adds this record to the database. If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=item replace OLD_RECORD
+
+Replaces the OLD_RECORD with this one in the database. If there is an error,
+returns the error, otherwise returns false.
+
+=item check
+
+Checks all fields to make sure this is a valid record. If there is
+an error, returns the error, otherwise returns false. Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+ my $self = shift;
+
+ my $error =
+ $self->ut_numbern('extensiondevicenum')
+ || $self->ut_foreign_keyn('extensionnum', 'pbx_extension', 'extensionnum')
+ || $self->ut_foreign_keyn('devicenum', 'pbx_device', 'devicenum')
+ ;
+ return $error if $error;
+
+ $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::Record>
+
+=cut
+
+1;
+
diff --git a/FS/FS/pbx_device.pm b/FS/FS/pbx_device.pm
new file mode 100644
index 0000000..ec1c3b9
--- /dev/null
+++ b/FS/FS/pbx_device.pm
@@ -0,0 +1,114 @@
+package FS::pbx_device;
+use base qw( FS::MAC_Mixin FS::Record );
+
+use strict;
+#use FS::Record qw( qsearch qsearchs );
+
+=head1 NAME
+
+FS::pbx_device - Object methods for pbx_device records
+
+=head1 SYNOPSIS
+
+ use FS::pbx_device;
+
+ $record = new FS::pbx_device \%hash;
+ $record = new FS::pbx_device { 'column' => 'value' };
+
+ $error = $record->insert;
+
+ $error = $new_record->replace($old_record);
+
+ $error = $record->delete;
+
+ $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::pbx_device object represents a specific customer phone device, such
+as a SIP phone or ATA. FS::pbx_device inherits from FS::Record. The following fields are currently supported:
+
+=over 4
+
+=item devicenum
+
+primary key
+
+=item devicepart
+
+devicepart
+
+=item svcnum
+
+svcnum
+
+=item mac_addr
+
+mac_addr
+
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new record. To add the record to the database, see L<"insert">.
+
+Note that this stores the hash reference, not a distinct copy of the hash it
+points to. You can ask the object for a copy with the I<hash> method.
+
+=cut
+
+sub table { 'pbx_device'; }
+
+=item insert
+
+Adds this record to the database. If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=item replace OLD_RECORD
+
+Replaces the OLD_RECORD with this one in the database. If there is an error,
+returns the error, otherwise returns false.
+
+=item check
+
+Checks all fields to make sure this is a valid record. If there is
+an error, returns the error, otherwise returns false. Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+ my $self = shift;
+
+ my $error =
+ $self->ut_numbern('devicenum')
+ || $self->ut_foreign_key('devicepart', 'part_device', 'devicepart')
+ || $self->ut_foreign_key('svcnum', 'svc_pbx', 'svcnum')
+ || $self->ut_mac_addr('mac_addr')
+ ;
+ return $error if $error;
+
+ $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::Record>
+
+=cut
+
+1;
+
diff --git a/FS/FS/phone_device.pm b/FS/FS/phone_device.pm
index d5f80a2..b891bb2 100644
--- a/FS/FS/phone_device.pm
+++ b/FS/FS/phone_device.pm
@@ -1,5 +1,5 @@
package FS::phone_device;
-use base qw( FS::Record );
+use base qw( FS::MAC_Mixin FS::Record );
use strict;
use Scalar::Util qw( blessed );
diff --git a/FS/FS/svc_External_Common.pm b/FS/FS/svc_External_Common.pm
index a5805aa..32fe7f3 100644
--- a/FS/FS/svc_External_Common.pm
+++ b/FS/FS/svc_External_Common.pm
@@ -8,28 +8,12 @@ use FS::svc_Common;
=head1 NAME
-FS::svc_external - Object methods for svc_external records
+FS::svc_External_Common - Base class for svc_X classes which track external databases
=head1 SYNOPSIS
- use FS::svc_external;
-
- $record = new FS::svc_external \%hash;
- $record = new FS::svc_external { 'column' => 'value' };
-
- $error = $record->insert;
-
- $error = $new_record->replace($old_record);
-
- $error = $record->delete;
-
- $error = $record->check;
-
- $error = $record->suspend;
-
- $error = $record->unsuspend;
-
- $error = $record->cancel;
+ package FS::svc_newservice;
+ use base qw( FS::svc_External_Common );
=head1 DESCRIPTION
diff --git a/FS/FS/svc_broadband.pm b/FS/FS/svc_broadband.pm
index b9c89ce..ce50a0c 100755
--- a/FS/FS/svc_broadband.pm
+++ b/FS/FS/svc_broadband.pm
@@ -3,7 +3,7 @@ use base qw(
FS::svc_Radius_Mixin
FS::svc_Tower_Mixin
FS::svc_IP_Mixin
- FS::svc_MAC_Mixin
+ FS::MAC_Mixin
FS::svc_Common
);
diff --git a/FS/FS/svc_cable.pm b/FS/FS/svc_cable.pm
index 3a1dc5a..12a1dbb 100644
--- a/FS/FS/svc_cable.pm
+++ b/FS/FS/svc_cable.pm
@@ -1,5 +1,5 @@
package FS::svc_cable;
-use base qw( FS::svc_MAC_Mixin
+use base qw( FS::MAC_Mixin
FS::svc_Common
); #FS::device_Common
diff --git a/FS/FS/svc_pbx.pm b/FS/FS/svc_pbx.pm
index 7899621..d35b3a2 100644
--- a/FS/FS/svc_pbx.pm
+++ b/FS/FS/svc_pbx.pm
@@ -1,5 +1,5 @@
package FS::svc_pbx;
-use base qw( FS::o2m_Common FS::svc_External_Common );
+use base qw( FS::o2m_Common FS::device_Common FS::svc_External_Common );
use strict;
use Tie::IxHash;
diff --git a/FS/FS/svc_video.pm b/FS/FS/svc_video.pm
index a6ff136..999b87c 100644
--- a/FS/FS/svc_video.pm
+++ b/FS/FS/svc_video.pm
@@ -1,5 +1,5 @@
package FS::svc_video;
-use base qw( FS::svc_MAC_Mixin FS::svc_Common );
+use base qw( FS::MAC_Mixin FS::svc_Common );
use strict;
use Tie::IxHash;
diff --git a/FS/MANIFEST b/FS/MANIFEST
index f2f1e39..bedc26c 100644
--- a/FS/MANIFEST
+++ b/FS/MANIFEST
@@ -751,3 +751,7 @@ FS/cust_pkg_usageprice.pm
t/cust_pkg_usageprice.t
FS/pbx_extension.pm
t/pbx_extension.t
+FS/pbx_device.pm
+t/pbx_device.t
+FS/extension_device.pm
+t/extension_device.t
diff --git a/FS/t/extension_device.t b/FS/t/extension_device.t
new file mode 100644
index 0000000..5927a17
--- /dev/null
+++ b/FS/t/extension_device.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::extension_device;
+$loaded=1;
+print "ok 1\n";
diff --git a/FS/t/pbx_device.t b/FS/t/pbx_device.t
new file mode 100644
index 0000000..9cd5499
--- /dev/null
+++ b/FS/t/pbx_device.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::pbx_device;
+$loaded=1;
+print "ok 1\n";