shorter names and rearranged weights for a brighter tommorow^W^Wbetter price plan...
[freeside.git] / FS / FS / svc_broadband.pm
index 07821f9..d123524 100755 (executable)
@@ -97,7 +97,13 @@ sub table_info {
       '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.',
-      'blocknum'    => 'Address block.',
+      'blocknum'    => { 'label' => 'Address block',
+                         'type'  => 'select',
+                         'select_table' => 'addr_block',
+                         'select_key'   => 'blocknum',
+                         'select_label' => 'cidr',
+                         'disable_inventory' => 1,
+                       },
     },
   };
 }
@@ -114,6 +120,10 @@ sub search_sql {
   my( $class, $string ) = @_;
   if ( $string =~ /^(\d{1,3}\.){3}\d{1,3}$/ ) {
     $class->search_sql_field('ip_addr', $string );
+  }elsif ( $string =~ /^([a-fA-F0-9]{12})$/ ) {
+    $class->search_sql_field('mac_addr', uc($string));
+  }elsif ( $string =~ /^(([a-fA-F0-9]{1,2}:){5}([a-fA-F0-9]{1,2}))$/ ) {
+    $class->search_sql_field('mac_addr', uc("$2$3$4$5$6$7") );
   } else {
     '1 = 0'; #false
   }
@@ -200,8 +210,8 @@ sub check {
     || $self->ut_ipn('ip_addr')
     || $self->ut_hexn('mac_addr')
     || $self->ut_hexn('auth_key')
-    || $self->ut_sfloatn('latitude')
-    || $self->ut_sfloatn('longitude')
+    || $self->ut_coordn('latitude', -90, 90)
+    || $self->ut_coordn('longitude', -180, 180)
     || $self->ut_sfloatn('altitude')
     || $self->ut_textn('vlan_profile')
   ;
@@ -210,13 +220,6 @@ sub check {
   if($self->speed_up < 0) { return 'speed_up must be positive'; }
   if($self->speed_down < 0) { return 'speed_down must be positive'; }
 
-  if($self->latitude < -90 || $self->latitude > 90) {
-    return 'latitude must be between -90 and 90';
-  }
-  if($self->longitude < -180 || $self->longitude > 180) {
-    return 'longitude must be between -180 and 180';
-  }
-
   if (not($self->ip_addr) or $self->ip_addr eq '0.0.0.0') {
     my $next_addr = $self->addr_block->next_free_addr;
     if ($next_addr) {
@@ -256,7 +259,7 @@ is /32.
 
 sub NetAddr {
   my $self = shift;
-  return new NetAddr::IP ($self->ip_addr);
+  new NetAddr::IP ($self->ip_addr);
 }
 
 =item addr_block
@@ -267,8 +270,7 @@ Returns the FS::addr_block record (i.e. the address block) for this broadband se
 
 sub addr_block {
   my $self = shift;
-
-  return qsearchs('addr_block', { blocknum => $self->blocknum });
+  qsearchs('addr_block', { blocknum => $self->blocknum });
 }
 
 =back
@@ -281,8 +283,7 @@ Returns a list of allowed FS::router objects.
 
 sub allowed_routers {
   my $self = shift;
-
-  return map { $_->router } qsearch('part_svc_router', { svcpart => $self->svcpart });
+  map { $_->router } qsearch('part_svc_router', { svcpart => $self->svcpart });
 }
 
 =head1 BUGS