package FS::cust_bill;
use strict;
-use vars qw( @ISA $conf $invoice_template $money_char );
+use vars qw( @ISA $conf $money_char );
use vars qw( $lpr $invoice_from $smtpmachine );
use vars qw( $processor );
use vars qw( $xaction $E_NoErr );
$money_char = $conf->config('money_char') || '$';
- my @invoice_template = $conf->config('invoice_template')
- or die "cannot load config file invoice_template";
- $invoice_lines = 0;
- foreach ( grep /invoice_lines\(\d+\)/, @invoice_template ) { #kludgy
- /invoice_lines\((\d+)\)/;
- $invoice_lines += $1;
- }
- die "no invoice_lines() functions in template?" unless $invoice_lines;
- $invoice_template = new Text::Template (
- TYPE => 'ARRAY',
- SOURCE => [ map "$_\n", @invoice_template ],
- ) or die "can't create new Text::Template object: $Text::Template::ERROR";
- $invoice_template->compile()
- or die "can't compile template: $Text::Template::ERROR";
-
$lpr = $conf->config('lpr');
$invoice_from = $conf->config('invoice_from');
$smtpmachine = $conf->config('smtpmachine');
=cut
sub send {
- my $self = shift;
+ my($self,$template) = @_;
#my @print_text = $cust_bill->print_text; #( date )
my @invoicing_list = $self->cust_main->invoicing_list;
if ( grep { $_ ne 'POST' } @invoicing_list ) { #email invoice
- $ENV{SMTPHOSTS} = $smtpmachine;
+ #false laziness w/FS::cust_pay::delete
+ #$ENV{SMTPHOSTS} = $smtpmachine;
$ENV{MAILADDRESS} = $invoice_from;
my $header = new Mail::Header ( [
"From: $invoice_from",
] );
my $message = new Mail::Internet (
'Header' => $header,
- 'Body' => [ $self->print_text ], #( date)
+ 'Body' => [ $self->print_text('', $template) ], #( date)
);
- $message->smtpsend
- or return "(customer # ". $self->custnum. ") can't send invoice email".
- " for ". join(', ', grep { $_ ne 'POST' } @invoicing_list ).
- " to server $smtpmachine!";
+ $!=0;
+ $message->smtpsend( Host => $smtpmachine )
+ or $message->smtpsend( Host => $smtpmachine, Debug => 1 )
+ or return "(customer # ". $self->custnum. ") can't send invoice email".
+ " to ". join(', ', grep { $_ ne 'POST' } @invoicing_list ).
+ " via server $smtpmachine with SMTP: $!";
#} elsif ( grep { $_ eq 'POST' } @invoicing_list ) {
} elsif ( ! @invoicing_list || grep { $_ eq 'POST' } @invoicing_list ) {
my($payname, $payfirst, $paylast);
if ( $cust_main->payname ) {
$payname = $cust_main->payname;
- $payname =~ /^\s*([\w \,\.\-\']*\w)?\s+([\w\,\.\-\']+)$/
+ $payname =~ /^\s*([\w \,\.\-\']*)?\s+([\w\,\.\-\']+)$/
or do {
#$dbh->rollback if $oldAutoCommit;
return "Illegal payname $payname";
sub print_text {
- my( $self, $today ) = ( shift, shift );
+ my( $self, $today, $template ) = @_;
$today ||= time;
# my $invnum = $self->invnum;
my $cust_main = qsearchs('cust_main', { 'custnum', $self->custnum } );
push @buf,['Balance Due', $money_char.
sprintf("%10.2f", $balance_due ) ];
+ #create the template
+ my $templatefile = 'invoice_template';
+ $templatefile .= "_$template" if $template;
+ my @invoice_template = $conf->config($templatefile)
+ or die "cannot load config file $templatefile";
+ $invoice_lines = 0;
+ foreach ( grep /invoice_lines\(\d+\)/, @invoice_template ) { #kludgy
+ /invoice_lines\((\d+)\)/;
+ $invoice_lines += $1;
+ }
+ die "no invoice_lines() functions in template?" unless $invoice_lines;
+ my $invoice_template = new Text::Template (
+ TYPE => 'ARRAY',
+ SOURCE => [ map "$_\n", @invoice_template ],
+ ) or die "can't create new Text::Template object: $Text::Template::ERROR";
+ $invoice_template->compile()
+ or die "can't compile template: $Text::Template::ERROR";
+
#setup template variables
-
package FS::cust_bill::_template; #!
use vars qw( $invnum $date $page $total_pages @address $overdue @buf );
$FS::cust_bill::_template::address[$l++] = $cust_main->country
unless $cust_main->country eq 'US';
- #overdue? (variable for the template)
- $FS::cust_bill::_template::overdue = (
- $balance_due > 0
- && $today > $self->_date
-# && $self->printed > 1
- && $self->printed > 0
- );
+ # #overdue? (variable for the template)
+ # $FS::cust_bill::_template::overdue = (
+ # $balance_due > 0
+ # && $today > $self->_date
+ ## && $self->printed > 1
+ # && $self->printed > 0
+ # );
#and subroutine for the template
}
( 1 .. $lines );
}
-
+
+
+ #and fill it in
$FS::cust_bill::_template::page = 1;
my $lines;
my @collect;
=head1 VERSION
-$Id: cust_bill.pm,v 1.19 2002-02-12 18:56:16 ivan Exp $
+$Id: cust_bill.pm,v 1.24 2002-03-18 21:40:17 ivan Exp $
=head1 BUGS