X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_broadband.pm;h=fa904370b7e765fb6bc54a3302338978d993f926;hb=8ab105cd64ac310f567d0ef6d4f662069a6adb65;hp=d1235246ea50f980a0be9cd64ca9a071898e6531;hpb=6ca6c8ac1a3b4125be80763567a96304af1b7826;p=freeside.git diff --git a/FS/FS/svc_broadband.pm b/FS/FS/svc_broadband.pm index d1235246e..fa904370b 100755 --- a/FS/FS/svc_broadband.pm +++ b/FS/FS/svc_broadband.pm @@ -220,6 +220,24 @@ sub check { if($self->speed_up < 0) { return 'speed_up must be positive'; } if($self->speed_down < 0) { return 'speed_down must be positive'; } + my $cust_svc = $self->svcnum + ? qsearchs('cust_svc', { 'svcnum' => $self->svcnum } ) + : ''; + my $cust_pkg; + if ($cust_svc) { + $cust_pkg = $cust_svc->cust_pkg; + }else{ + $cust_pkg = qsearchs('cust_pkg', { 'pkgnum' => $self->pkgnum } ); + return "Invalid pkgnum" unless $cust_pkg; + } + + if ($cust_pkg) { + my $addr_agentnum = $self->addr_block->agentnum; + if ($addr_agentnum && $addr_agentnum != $cust_pkg->cust_main->agentnum) { + return "Address block does not service this customer"; + } + } + 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) { @@ -290,6 +308,9 @@ sub allowed_routers { The business with sb_field has been 'fixed', in a manner of speaking. +allowed_routers isn't agent virtualized because part_svc isn't agent +virtualized + =head1 SEE ALSO FS::svc_Common, FS::Record, FS::addr_block,