so Search.tsf and Search.rdf work
[freeside.git] / FS / FS / h_svc_forward.pm
index a436815..25b2039 100644 (file)
@@ -1,12 +1,17 @@
 package FS::h_svc_forward;
 
 use strict;
-use vars qw( @ISA );
-se FS::Record qw(qsearchs);
+use vars qw( @ISA $DEBUG );
+use FS::Record qw(qsearchs);
 use FS::h_Common;
 use FS::svc_forward;
+use FS::svc_acct;
 use FS::h_svc_acct;
 
+use Carp qw(carp);
+
+$DEBUG = 0;
+
 @ISA = qw( FS::h_Common FS::svc_forward );
 
 sub table { 'h_svc_forward' };
@@ -27,10 +32,18 @@ FS::h_svc_forward - Historical mail forwarding alias objects
 
 sub srcsvc_acct {
   my $self = shift;
-  qsearchs( 'h_svc_acct',
-            { 'svcnum' => $self->srcsvc },
-            FS::h_svc_acct->sql_h_searchs(@_),
-          );
+  my $h_svc_acct = qsearchs(
+    'h_svc_acct',
+    { 'svcnum' => $self->srcsvc },
+    FS::h_svc_acct->sql_h_searchs(@_),
+  ) || $self->SUPER::srcsvc_acct
+    or die "no history svc_acct.svcnum for svc_forward.srcsvc ". $self->srcsvc;
+
+  carp 'Using svc_acct in place of missing h_svc_acct record.'
+    if ($h_svc_acct->isa('FS::domain_record') and $DEBUG);
+
+  return $h_svc_acct;
+
 }
 
 =item dstsvc_acct
@@ -39,10 +52,17 @@ sub srcsvc_acct {
 
 sub dstsvc_acct {
   my $self = shift;
-  qsearchs( 'h_svc_acct',
-            { 'svcnum' => $self->dstsvc },
-            FS::h_svc_acct->sql_h_searchs(@_),
-          );
+  my $h_svc_acct = qsearchs(
+    'h_svc_acct',
+    { 'svcnum' => $self->dstsvc },
+    FS::h_svc_acct->sql_h_searchs(@_),
+  ) || $self->SUPER::dstsvc_acct
+    or die "no history svc_acct.svcnum for svc_forward.dstsvc ". $self->dstsvc;
+
+  carp 'Using svc_acct in place of missing h_svc_acct record.'
+    if ($h_svc_acct->isa('FS::domain_record') and $DEBUG);
+
+  return $h_svc_acct;
 }
 
 =back