add safety check for existence of h_svc_* modules, #39779, #34107, #22009, #15902...
authorMark Wells <mark@freeside.biz>
Mon, 11 Jan 2016 20:20:08 +0000 (12:20 -0800)
committerMark Wells <mark@freeside.biz>
Mon, 11 Jan 2016 20:20:08 +0000 (12:20 -0800)
FS/FS/part_svc.pm

index 518e847..08003dd 100644 (file)
@@ -12,6 +12,11 @@ use FS::export_svc;
 use FS::cust_svc;
 use FS::part_svc_class;
 
+FS::UID->install_callback(sub {
+    # preload the cache and make sure all modules load
+    my $svc_defs = FS::part_svc->_svc_defs;
+});
+
 $DEBUG = 0;
 
 =head1 NAME
@@ -649,9 +654,17 @@ sub _svc_defs {
         next;
       }
       $info{$mod} = $info;
+
+      # all svc_* modules are required to have h_svc_* modules for invoice
+      # display. check for them as early as possible.
+      eval "use FS::h_$mod;";
+      if ( $@ ) {
+        die "couldn't load history record module h_$mod: $@\n";
+      }
     }
   }
 
+
   tie my %svc_defs, 'Tie::IxHash', 
     map  { $_ => $info{$_}->{'fields'} }
     sort { $info{$a}->{'display_weight'} <=> $info{$b}->{'display_weight'} }