so Search.tsf and Search.rdf work
[freeside.git] / FS / FS / h_cust_svc.pm
index 0cbac4a..718f2c7 100644 (file)
@@ -73,16 +73,21 @@ cancelled before START_TIMESTAMP.
 sub h_svc_x {
   my $self = shift;
   my $svcdb = $self->part_svc->svcdb;
-  #if ( $svcdb eq 'svc_acct' && $self->{'_svc_acct'} ) {
-  #  $self->{'_svc_acct'};
-  #} else {
-    warn "requiring FS/h_$svcdb.pm" if $DEBUG;
-    require "FS/h_$svcdb.pm";
-    qsearchs( "h_$svcdb",
-              { 'svcnum'       => $self->svcnum, },
-              "FS::h_$svcdb"->sql_h_searchs(@_),
-            );
-  #}
+
+  warn "requiring FS/h_$svcdb.pm" if $DEBUG;
+  require "FS/h_$svcdb.pm";
+  my $svc_x = qsearchs(
+    "h_$svcdb",
+    { 'svcnum' => $self->svcnum, },
+    "FS::h_$svcdb"->sql_h_searchs(@_),
+  ) || $self->SUPER::svc_x
+    or die "no history ${svcdb}.svcnum for cust_svc.svcnum ". $self->svcnum;
+
+  carp "Using $svcdb in place of missing h_${svcdb} record."
+   if ($svc_x->isa('FS::' . $svcdb) and $DEBUG);
+
+  return $svc_x;
+
 }
 
 =back