X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_broadband.pm;h=74cedfc77792a70ac05cfa2ce12c4e6680f4e32e;hb=70569273833d91085c6c562865a78a08ddde49a1;hp=d4d41018aa5d140f990fc8e40a30e39d5a9a398c;hpb=8d419aa7155fd8edd1f2f2338265ec372a8eea5d;p=freeside.git diff --git a/FS/FS/svc_broadband.pm b/FS/FS/svc_broadband.pm index d4d41018a..74cedfc77 100755 --- a/FS/FS/svc_broadband.pm +++ b/FS/FS/svc_broadband.pm @@ -6,6 +6,7 @@ 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; @ISA = qw( FS::svc_Common ); @@ -110,6 +111,8 @@ sub table_info { sub table { 'svc_broadband'; } +sub table_dupcheck_fields { ( 'mac_addr' ); } + =item search_sql STRING Class method which returns an SQL fragment to search for the given string. @@ -217,10 +220,6 @@ sub check { ; return $error if $error; - #redundant, but better error message - return "MAC already in use" - if scalar( qsearch( 'svc_broadband', { 'mac_addr', $self->mac_addr } ) ); - if($self->speed_up < 0) { return 'speed_up must be positive'; } if($self->speed_down < 0) { return 'speed_down must be positive'; } @@ -247,7 +246,19 @@ sub check { } } + $error = $self->_check_ip_addr; + return $error if $error; + + $self->SUPER::check; +} + +sub _check_ip_addr { + my $self = shift; + if (not($self->ip_addr) or $self->ip_addr eq '0.0.0.0') { + + return '' if $conf->exists('svc_broadband-allow_null_ip_addr'); #&& !$self->blocknum + return "Must supply either address or block" unless $self->blocknum; my $next_addr = $self->addr_block->next_free_addr; @@ -256,6 +267,7 @@ sub check { } else { return "No free addresses in addr_block (blocknum: ".$self->blocknum.")"; } + } if (not($self->blocknum)) { @@ -289,9 +301,21 @@ sub check { return 'Router '.$router->routernum.' cannot provide svcpart '.$self->svcpart; } - $self->SUPER::check; + ''; +} + +sub _check_duplicate { + my $self = shift; + + return "MAC already in use" + if ( $self->mac_addr && + scalar( qsearch( 'svc_broadband', { 'mac_addr', $self->mac_addr } ) ) + ); + + ''; } + =item NetAddr Returns a NetAddr::IP object containing the IP address of this service. The netmask