X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fcust_bill.pm;h=1f402fca4875dec86e7d8e939ee6bde835b2b817;hb=17544eafba683f48cdc64fef09745d17be9b088a;hp=943c7b3ec25176d288cf5051bb9e113504e4357c;hpb=98c7a62610134dee28e0f3e7a3ab6cb3ac8de5ca;p=freeside.git diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 943c7b3ec..1f402fca4 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -1,7 +1,7 @@ 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 ); @@ -30,21 +30,6 @@ $FS::UID::callback{'FS::cust_bill'} = sub { $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'); @@ -383,12 +368,13 @@ emails or print. See L. =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 & fs_signup_server + #$ENV{SMTPHOSTS} = $smtpmachine; $ENV{MAILADDRESS} = $invoice_from; my $header = new Mail::Header ( [ "From: $invoice_from", @@ -400,12 +386,14 @@ sub send { ] ); 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 ) { @@ -470,7 +458,7 @@ sub realtime_card { 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"; @@ -490,6 +478,19 @@ sub realtime_card { my $email = $invoicing_list[0]; my( $action1, $action2 ) = split(/\s*\,\s*/, $bop_action ); + + my $description = 'Internet Services'; + if ( $conf->exists('business-onlinepayment-description') ) { + my $dtempl = $conf->config('business-onlinepayment-description'); + + my $agent = $self->cust_main->agent->agent; + my $pkgs = join(', ', + map { $_->cust_pkg->part_pkg->pkg } + grep { $_->pkgnum } $self->cust_bill_pkg + ); + $description = eval qq("$dtempl"); + + } my $transaction = new Business::OnlinePayment( $bop_processor, @bop_options ); @@ -498,7 +499,7 @@ sub realtime_card { 'login' => $bop_login, 'password' => $bop_password, 'action' => $action1, - 'description' => 'Internet Services', + 'description' => $description, 'amount' => $amount, 'invoice_number' => $self->invnum, 'customer_id' => $self->custnum, @@ -532,7 +533,7 @@ sub realtime_card { order_number => $ordernum, amount => $amount, authorization => $auth, - description => 'Internet Services', + description => $description, ); $capture->submit(); @@ -699,7 +700,7 @@ L and L for conversion functions. 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 } ); @@ -808,8 +809,25 @@ sub print_text { 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 ); @@ -844,13 +862,13 @@ sub print_text { $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 @@ -861,7 +879,9 @@ sub print_text { } ( 1 .. $lines ); } - + + + #and fill it in $FS::cust_bill::_template::page = 1; my $lines; my @collect; @@ -880,7 +900,7 @@ sub print_text { =head1 VERSION -$Id: cust_bill.pm,v 1.19 2002-02-12 18:56:16 ivan Exp $ +$Id: cust_bill.pm,v 1.26 2002-04-07 06:23:29 ivan Exp $ =head1 BUGS