agent-virtualize credit card surcharge percentage, RT#72961
[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   $_[0] ||= $self->history_date;
33   qsearchs( 'h_svc_domain',
34             { 'svcnum' => $self->domsvc },
35             FS::h_svc_domain->sql_h_searchs(@_),
36           );
37 }
38
39 =item domain
40
41 Returns the domain associated with this account.
42
43 =cut
44
45 sub domain {
46   my $self = shift;
47   die "svc_acct.domsvc is null for svcnum ". $self->svcnum unless $self->domsvc;
48
49   my $svc_domain = $self->svc_domain(@_) || $self->SUPER::svc_domain()
50     or die 'no history svc_domain.svcnum for svc_acct.domsvc ' . $self->domsvc;
51
52   carp 'Using FS::svc_acct record in place of missing FS::h_svc_acct record.'
53     if ($svc_domain->isa('FS::svc_acct') and $DEBUG);
54
55   $svc_domain->domain;
56
57 }
58
59
60 =back
61
62 =head1 DESCRIPTION
63
64 An FS::h_svc_acct object represents a historical account.  FS::h_svc_acct
65 inherits from FS::h_Common and FS::svc_acct.
66
67 =head1 BUGS
68
69 =head1 SEE ALSO
70
71 L<FS::h_Common>, L<FS::svc_acct>, L<FS::Record>, schema.html from the base
72 documentation.
73
74 =cut
75
76 1;
77