X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fh_svc_forward.pm;h=bc24fe911450e40d01e800b97bbe40aa66ad7623;hp=a436815409cf592405f741dc503178e4e507c2bf;hb=ff27c3f36240aee48ed50153dd5d8fe3ac3f2443;hpb=8f11e2a03067829dc5f8cd6ae7fa0e3f249d61c1 diff --git a/FS/FS/h_svc_forward.pm b/FS/FS/h_svc_forward.pm index a43681540..bc24fe911 100644 --- a/FS/FS/h_svc_forward.pm +++ b/FS/FS/h_svc_forward.pm @@ -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_searchs(@_), - ); + + 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_searchs(@_), - ); + + 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