chase canada E-xactBatch
[freeside.git] / FS / FS / h_svc_acct.pm
1 package FS::h_svc_acct;
2
3 use strict;
4 use vars qw( @ISA $DEBUG );
5 use Carp qw(carp);
6 use FS::Record qw(qsearchs);
7 use FS::h_Common;
8 use FS::svc_acct;
9 use FS::svc_domain;
10 use FS::h_svc_domain;
11
12 @ISA = qw( FS::h_Common FS::svc_acct );
13
14 $DEBUG = 0;
15
16 sub table { 'h_svc_acct' };
17
18 =head1 NAME
19
20 FS::h_svc_acct - Historical account objects
21
22 =head1 SYNOPSIS
23
24 =head1 METHODS
25
26 =over 4
27
28 =item svc_domain
29
30 =cut
31
32 sub svc_domain {
33   my $self = shift;
34   qsearchs( 'h_svc_domain',
35             { 'svcnum' => $self->domsvc },
36             FS::h_svc_domain->sql_h_searchs(@_),
37           );
38 }
39
40 =item domain
41
42 Returns the domain associated with this account.
43
44 =cut
45
46 sub domain {
47   my $self = shift;
48   die "svc_acct.domsvc is null for svcnum ". $self->svcnum unless $self->domsvc;
49
50   my $svc_domain = $self->svc_domain(@_) || $self->SUPER::svc_domain()
51     or die 'no history svc_domain.svcnum for svc_acct.domsvc ' . $self->domsvc;
52
53   carp 'Using FS::svc_acct record in place of missing FS::h_svc_acct record.'
54     if ($svc_domain->isa('FS::svc_acct') and $DEBUG);
55
56   $svc_domain->domain;
57
58 }
59
60
61 =back
62
63 =head1 DESCRIPTION
64
65 An FS::h_svc_acct object represents a historical account.  FS::h_svc_acct
66 inherits from FS::h_Common and FS::svc_acct.
67
68 =head1 BUGS
69
70 =head1 SEE ALSO
71
72 L<FS::h_Common>, L<FS::svc_acct>, L<FS::Record>, schema.html from the base
73 documentation.
74
75 =cut
76
77 1;
78