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