warn during upgrade if addr_block records are missing, #17040
[freeside.git] / FS / FS / svc_broadband.pm
index 212a4bf..06a3001 100755 (executable)
@@ -421,7 +421,7 @@ sub check {
   
     my $router = $self->router;
     return "Router ".$self->routernum." does not serve this customer"
-      if $router->agentnum and $router->agentnum != $agentnum;
+      if $router->agentnum and $agentnum and $router->agentnum != $agentnum;
 
     if ( $router->manual_addr ) {
       $self->blocknum('');
@@ -599,7 +599,7 @@ sub allowed_routers {
   my $self = shift;
   my $svcpart = $self->svcnum ? $self->cust_svc->svcpart : $self->svcpart;
   my @r = map { $_->router } qsearch('part_svc_router', 
-    { svcpart => $self->cust_svc->svcpart });
+    { svcpart => $svcpart });
   if ( $self->cust_main ) {
     my $agentnum = $self->cust_main->agentnum;
     return grep { !$_->agentnum or $_->agentnum == $agentnum } @r;
@@ -640,6 +640,11 @@ sub _upgrade_data {
       routernum => ''
     })) {
     my $addr_block = $self->addr_block;
+    if ( !$addr_block ) {
+      # super paranoid mode
+      warn "WARNING: svcnum ".$self->svcnum." is assigned to addr_block ".$self->blocknum.", which does not exist; skipped.\n";
+      next;
+    }
     my $ip_addr = $self->ip_addr;
     my $routernum = $addr_block->routernum;
     if ( $routernum ) {