tower tracking, RT#15538
[freeside.git] / FS / FS / svc_broadband.pm
index a0cd090..c5034b0 100755 (executable)
@@ -2,12 +2,13 @@ package FS::svc_broadband;
 
 use strict;
 use vars qw(@ISA $conf);
+use NetAddr::IP;
 use FS::Record qw( qsearchs qsearch dbh );
 use FS::svc_Common;
 use FS::cust_svc;
 use FS::addr_block;
 use FS::part_svc_router;
-use NetAddr::IP;
+use FS::tower_sector;
 
 @ISA = qw( FS::svc_Radius_Mixin FS::svc_Common );
 
@@ -95,11 +96,14 @@ sub table_info {
     'longname_plural' => 'Fixed wireless broadband services',
     'display_weight' => 50,
     'cancel_weight'  => 70,
+    'ip_field' => 'ip_addr',
     'fields' => {
-      'description' => 'Descriptive label for this particular device.',
+      'svcnum'      => 'Service',
+      'description' => 'Descriptive label for this particular device',
       'speed_down'  => 'Maximum download speed for this service in Kbps.  0 denotes unlimited.',
       'speed_up'    => 'Maximum upload speed for this service in Kbps.  0 denotes unlimited.',
       'ip_addr'     => 'IP address.  Leave blank for automatic assignment.',
+      'sectornum'   => 'Tower sector',
       'blocknum'    => { 'label' => 'Address block',
                          'type'  => 'select',
                          'select_table' => 'addr_block',
@@ -355,6 +359,7 @@ sub check {
   my $error =
     $self->ut_numbern('svcnum')
     || $self->ut_numbern('blocknum')
+    || $self->ut_foreign_keyn('sectornum', 'tower_sector', 'sectornum')
     || $self->ut_textn('description')
     || $self->ut_numbern('speed_up')
     || $self->ut_numbern('speed_down')
@@ -477,6 +482,16 @@ sub NetAddr {
   new NetAddr::IP ($self->ip_addr);
 }
 
+=item tower_sector
+
+=cut
+
+sub tower_sector {
+  my $self = shift;
+  return '' unless $self->sectornum;
+  qsearchs('tower_sector', { sectornum => $self->sectornum });
+}
+
 =item addr_block
 
 Returns the FS::addr_block record (i.e. the address block) for this broadband service.