assign entire address blocks to services for RADIUS Framed-Route option, #20742
[freeside.git] / FS / FS / svc_Common.pm
index 0aea455..3993d3d 100644 (file)
@@ -367,6 +367,7 @@ sub delete {
              || $self->SUPER::delete
               || $self->export('delete', @$export_args)
              || $self->return_inventory
+              || $self->release_router
              || $self->predelete_hook
              || $self->cust_svc->delete
   ;
@@ -989,6 +990,24 @@ sub inventory_item {
   });
 }
 
+=item release_router 
+
+Delete any routers associated with this service.  This will release their
+address blocks, also.
+
+=cut
+
+sub release_router {
+  my $self = shift;
+  my @routers = qsearch('router', { svcnum => $self->svcnum });
+  foreach (@routers) {
+    my $error = $_->delete;
+    return "$error (removing router '".$_->routername."')" if $error;
+  }
+  '';
+}
+
+
 =item cust_svc
 
 Returns the cust_svc record associated with this svc_ record, as a FS::cust_svc