1 package FS::cust_main_invoice;
4 use vars qw(@ISA $conf $mydomain);
6 use FS::Record qw( qsearchs );
11 @ISA = qw( FS::Record );
13 #ask FS::UID to run this stuff for us later
14 $FS::UID::callback{'FS::cust_main_invoice'} = sub {
16 $mydomain = $conf->config('domain');
21 FS::cust_main_invoice - Object methods for cust_main_invoice records
25 use FS::cust_main_invoice;
27 $record = new FS::cust_main_invoice \%hash;
28 $record = new FS::cust_main_invoice { 'column' => 'value' };
30 $error = $record->insert;
32 $error = $new_record->replace($old_record);
34 $error = $record->delete;
36 $error = $record->check;
38 $email_address = $record->address;
42 An FS::cust_main_invoice object represents an invoice destination. FS::cust_main_invoice inherits from
43 FS::Record. The following fields are currently supported:
47 =item destnum - primary key
49 =item custnum - customer (see L<FS::cust_main>)
51 =item dest - Invoice destination: If numeric, a svcnum (see L<FS::svc_acct>), if string, a literal email address, or `POST' to enable mailing (the default if no cust_main_invoice records exist)
61 Creates a new invoice destination. To add the invoice destination to the database, see L<"insert">.
63 Note that this stores the hash reference, not a distinct copy of the hash it
64 points to. You can ask the object for a copy with the I<hash> method.
68 sub table { 'cust_main_invoice'; }
72 Adds this record to the database. If there is an error, returns the error,
73 otherwise returns false.
77 Delete this record from the database.
79 =item replace OLD_RECORD
81 Replaces the OLD_RECORD with this one in the database. If there is an error,
82 returns the error, otherwise returns false.
87 my ( $new, $old ) = ( shift, shift );
89 return "Can't change custnum!" unless $old->custnum == $new->custnum;
97 Checks all fields to make sure this is a valid invoice destination. If there is
98 an error, returns the error, otherwise returns false. Called by the insert
106 my $error = $self->ut_numbern('destnum')
107 || $self->ut_number('custnum')
110 return $error if $error;
112 return "Unknown customer"
113 unless qsearchs('cust_main',{ 'custnum' => $self->custnum });
120 Checks the dest field only. If it finds that the account ends in the
121 same domain configured in the configuration files, it will change the
122 invoice destination from an email address to a service number instead.
129 my $error = $self->ut_text('dest');
130 return $error if $error;
132 if ( $self->dest eq 'POST' ) {
133 #contemplate our navel
134 } elsif ( $self->dest =~ /^(\d+)$/ ) {
135 return "Unknown local account (specified by svcnum)"
136 unless qsearchs( 'svc_acct', { 'svcnum' => $self->dest } );
137 } elsif ( $self->dest =~ /^([\w\.\-]+)\@(([\w\.\-]+\.)+\w+)$/ ) {
138 my($user, $domain) = ($1, $2);
139 if ( $domain eq $mydomain ) {
140 my $svc_acct = qsearchs( 'svc_acct', { 'username' => $user } );
141 return "Unknown local account (specified literally)" unless $svc_acct;
142 $svc_acct->svcnum =~ /^(\d+)$/ or die "Non-numeric svcnum?!";
146 return "Illegal destination!";
154 Returns the literal email address for this record (or `POST').
160 if ( $self->dest =~ /(\d+)$/ ) {
161 my $svc_acct = qsearchs( 'svc_acct', { 'svcnum' => $1 } );
162 $svc_acct->username . '@' . $mydomain;
172 $Id: cust_main_invoice.pm,v 1.3 2001-07-27 06:17:46 thalakan Exp $
178 L<FS::Record>, L<FS::cust_main>