v3: prevent CARD/CHEK customers from inadvertantly going off auto-pay making an early...
[freeside.git] / FS / FS / svc_broadband.pm
index b9c89ce..7c18eda 100755 (executable)
@@ -2,10 +2,11 @@ package FS::svc_broadband;
 use base qw(
   FS::svc_Radius_Mixin
   FS::svc_Tower_Mixin
+  FS::svc_Torrus_Mixin
   FS::svc_IP_Mixin 
   FS::svc_MAC_Mixin
   FS::svc_Common
-  );
+);
 
 use strict;
 use vars qw($conf);
@@ -95,6 +96,8 @@ points to.  You can ask the object for a copy with the I<hash> method.
 =cut
 
 sub table_info {
+  my $conf = new FS::Conf;
+  my $ip_addr_required = $conf->exists('svc_broadband-allow_null_ip_addr') ? '' : '1';
   {
     'name' => 'Wireless broadband',
     'name_plural' => 'Wireless broadband services',
@@ -102,12 +105,24 @@ sub table_info {
     'display_weight' => 50,
     'cancel_weight'  => 70,
     'ip_field' => 'ip_addr',
+    'manual_require' => 1,
     'fields' => {
       'svcnum'      => 'Service',
       'description' => 'Descriptive label',
-      'speed_down'  => 'Download speed (Kbps)',
-      'speed_up'    => 'Upload speed (Kbps)',
-      'ip_addr'     => 'IP address',
+      'speed_up'    => {
+                         'label'    => 'Upload speed (Kbps)',
+                         'type'     => 'fcc_477_speed',
+                         'def_info' => 'both upload and download speed must be set to FCC 477 information if using that modifier',
+                       },
+      'speed_down'  => {
+                         'label'    => 'Download speed (Kbps)',
+                         'type'     => 'fcc_477_speed',
+                         'def_info' => 'both upload and download speed must be set to FCC 477 information if using that modifier',
+                       },
+      'ip_addr'     => {
+                         'label' => 'IP address',
+                         'required' => $ip_addr_required,
+                       },
       'blocknum'    => 
       { 'label' => 'Address block',
                          'type'  => 'select',
@@ -132,6 +147,7 @@ sub table_info {
                          #select_table => 'radius_group',
                          #select_key   => 'groupnum',
                          #select_label => 'groupname',
+                         disable_select => 1,
                          disable_inventory => 1,
                          multiple => 1,
                        },
@@ -144,6 +160,10 @@ sub table_info {
                              type              => 'search-svc_broadband',
                              disable_inventory => 1,
                            },
+      'serviceid' => 'Torrus serviceid', #but is should be hidden
+      'speed_test_up'      => { 'label' => 'Speed test upload (Kbps)' },
+      'speed_test_down'    => { 'label' => 'Speed test download (Kbps)' },
+      'speed_test_latency' => 'Speed test latency (ms)',
     },
   };
 }
@@ -349,6 +369,8 @@ sub check {
     || $self->ut_textn('description')
     || $self->ut_numbern('speed_up')
     || $self->ut_numbern('speed_down')
+    || $self->ut_numbern('speed_test_up')
+    || $self->ut_numbern('speed_test_down')
     || $self->ut_ipn('ip_addr')
     || $self->ut_hexn('mac_addr')
     || $self->ut_hexn('auth_key')
@@ -363,6 +385,7 @@ sub check {
     || $self->ut_snumbern('rssi')
     || $self->ut_numbern('suid')
     || $self->ut_foreign_keyn('shared_svcnum', 'svc_broadband', 'svcnum')
+    || $self->ut_textn('serviceid') #too lenient?
   ;
   return $error if $error;
 
@@ -519,4 +542,3 @@ FS::part_svc, schema.html from the base documentation.
 =cut
 
 1;
-