stray closing /TABLE in the no-ticket case
[freeside.git] / FS / FS / h_svc_forward.pm
index 231f9df..bc24fe9 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,22 @@ 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_search(@_),
-          );
+
+  local($FS::Record::qsearch_qualify_columns) = 0;
+
+  $_[0] ||= $self->history_date;
+  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 +56,21 @@ sub srcsvc_acct {
 
 sub dstsvc_acct {
   my $self = shift;
-  qsearchs( 'h_svc_acct',
-            { 'svcnum' => $self->dstsvc },
-            FS::h_svc_acct->sql_h_search(@_),
-          );
+
+  local($FS::Record::qsearch_qualify_columns) = 0;
+
+  $_[0] ||= $self->history_date;
+  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