projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tax report!
[freeside.git]
/
FS
/
FS
/
cust_bill.pm
diff --git
a/FS/FS/cust_bill.pm
b/FS/FS/cust_bill.pm
index
13c48d9
..
49d53bc
100644
(file)
--- a/
FS/FS/cust_bill.pm
+++ b/
FS/FS/cust_bill.pm
@@
-5,7
+5,7
@@
use vars qw( @ISA $conf $money_char );
use vars qw( $invoice_lines @buf ); #yuck
use Date::Format;
use Text::Template;
use vars qw( $invoice_lines @buf ); #yuck
use Date::Format;
use Text::Template;
-use File::Temp;
+use File::Temp
0.14
;
use FS::UID qw( datasrc );
use FS::Record qw( qsearch qsearchs );
use FS::Misc qw( send_email );
use FS::UID qw( datasrc );
use FS::Record qw( qsearch qsearchs );
use FS::Misc qw( send_email );
@@
-317,7
+317,7
@@
sub owed {
$balance;
}
$balance;
}
-=item send [ TEMPLATENAME [ , AGENTNUM ] ]
+=item send [ TEMPLATENAME [ , AGENTNUM
[ , INVOICE_FROM ]
] ]
Sends this invoice to the destinations configured for this customer: send
emails or print. See L<FS::cust_main_invoice>.
Sends this invoice to the destinations configured for this customer: send
emails or print. See L<FS::cust_main_invoice>.
@@
-327,12
+327,18
@@
TEMPLATENAME, if specified, is the name of a suffix for alternate invoices.
AGENTNUM, if specified, means that this invoice will only be sent for customers
of the specified agent.
AGENTNUM, if specified, means that this invoice will only be sent for customers
of the specified agent.
+INVOICE_FROM, if specified, overrides the default email invoice From: address.
+
=cut
sub send {
my $self = shift;
my $template = scalar(@_) ? shift : '';
=cut
sub send {
my $self = shift;
my $template = scalar(@_) ? shift : '';
- return '' if scalar(@_) && $_[0] && $self->cust_main->agentnum ne shift;
+ return 'N/A' if scalar(@_) && $_[0] && $self->cust_main->agentnum != shift;
+ my $invoice_from =
+ scalar(@_)
+ ? shift
+ : ( $self->_agent_invoice_from || $conf->config('invoice_from') );
my @print_text = $self->print_text('', $template);
my @invoicing_list = $self->cust_main->invoicing_list;
my @print_text = $self->print_text('', $template);
my @invoicing_list = $self->cust_main->invoicing_list;
@@
-340,10
+346,10
@@
sub send {
if ( grep { $_ ne 'POST' } @invoicing_list or !@invoicing_list ) { #email
#better to notify this person than silence
if ( grep { $_ ne 'POST' } @invoicing_list or !@invoicing_list ) { #email
#better to notify this person than silence
- @invoicing_list = ($
conf->config('invoice_from')
) unless @invoicing_list;
+ @invoicing_list = ($
invoice_from
) unless @invoicing_list;
my $error = send_email(
my $error = send_email(
- 'from' => $
conf->config('invoice_from')
,
+ 'from' => $
invoice_from
,
'to' => [ grep { $_ ne 'POST' } @invoicing_list ],
'subject' => 'Invoice',
'body' => \@print_text,
'to' => [ grep { $_ ne 'POST' } @invoicing_list ],
'subject' => 'Invoice',
'body' => \@print_text,
@@
-665,13
+671,26
@@
sub batch_card {
sub _agent_template {
my $self = shift;
sub _agent_template {
my $self = shift;
+ $self->_agent_plandata('agent_templatename');
+}
+
+sub _agent_invoice_from {
+ my $self = shift;
+ $self->_agent_plandata('agent_invoice_from');
+}
+
+sub _agent_plandata {
+ my( $self, $option ) = @_;
my $cust_bill_event = qsearchs( 'part_bill_event',
{
'payby' => $self->cust_main->payby,
'plan' => 'send_agent',
my $cust_bill_event = qsearchs( 'part_bill_event',
{
'payby' => $self->cust_main->payby,
'plan' => 'send_agent',
- 'eventcode' => { 'op' => 'LIKE',
- 'value' => '_%, '. $self->cust_main->agentnum. ');' },
+ 'plandata' => { 'op' => '~',
+ 'value' => "(^|\n)agentnum ".
+ $self->cust_main->agentnum.
+ "(\n|\$)",
+ },
},
'',
'ORDER BY seconds LIMIT 1'
},
'',
'ORDER BY seconds LIMIT 1'
@@
-679,10
+698,10
@@
sub _agent_template {
return '' unless $cust_bill_event;
return '' unless $cust_bill_event;
- if ( $cust_bill_event->
eventcode =~ /\(\s*'(.*)'\s*,\s*(\d+)\s*\)\;$/
) {
+ if ( $cust_bill_event->
plandata =~ /^$option (.*)$/m
) {
return $1;
} else {
return $1;
} else {
- warn "can't parse
eventcode for agent-specific invoice template
";
+ warn "can't parse
plandata for $1
";
return '';
}
return '';
}
@@
-1111,7
+1130,7
@@
sub print_latex {
my $dir = $FS::UID::conf_dir. "cache.". $FS::UID::datasrc;
my $fh = new File::Temp( TEMPLATE => 'invoice.'. $self->invnum. '.XXXXXXXX',
my $dir = $FS::UID::conf_dir. "cache.". $FS::UID::datasrc;
my $fh = new File::Temp( TEMPLATE => 'invoice.'. $self->invnum. '.XXXXXXXX',
- DIR => $dir
+ DIR => $dir
,
SUFFIX => '.tex',
UNLINK => 0,
) or die "can't open temp file: $!\n";
SUFFIX => '.tex',
UNLINK => 0,
) or die "can't open temp file: $!\n";
@@
-1143,12
+1162,12
@@
sub print_ps {
chdir($dir);
system("pslatex $file.tex >/dev/null 2>&1") == 0
chdir($dir);
system("pslatex $file.tex >/dev/null 2>&1") == 0
- or die "pslatex failed: $!";
+ or die "pslatex
$file.tex
failed: $!";
system("pslatex $file.tex >/dev/null 2>&1") == 0
system("pslatex $file.tex >/dev/null 2>&1") == 0
- or die "pslatex failed: $!";
+ or die "pslatex
$file.tex
failed: $!";
system('dvips', '-q', '-t', 'letter', "$file.dvi", '-o', "$file.ps" ) == 0
system('dvips', '-q', '-t', 'letter', "$file.dvi", '-o', "$file.ps" ) == 0
- or die "d
b
ips failed: $!";
+ or die "d
v
ips failed: $!";
open(POSTSCRIPT, "<$file.ps")
or die "can't open $file.ps: $! (error in LaTeX template?)\n";
open(POSTSCRIPT, "<$file.ps")
or die "can't open $file.ps: $! (error in LaTeX template?)\n";
@@
-1190,9
+1209,9
@@
sub print_pdf {
#! LaTeX Error: Unknown graphics extension: .eps.
system("pslatex $file.tex >/dev/null 2>&1") == 0
#! LaTeX Error: Unknown graphics extension: .eps.
system("pslatex $file.tex >/dev/null 2>&1") == 0
- or die "pslatex failed: $!";
+ or die "pslatex
$file.tex
failed: $!";
system("pslatex $file.tex >/dev/null 2>&1") == 0
system("pslatex $file.tex >/dev/null 2>&1") == 0
- or die "pslatex failed: $!";
+ or die "pslatex
$file.tex
failed: $!";
#system('dvipdf', "$file.dvi", "$file.pdf" );
system(
#system('dvipdf', "$file.dvi", "$file.pdf" );
system(
@@
-1200,7
+1219,7
@@
sub print_pdf {
"| gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$file.pdf ".
" -c save pop -"
) == 0
"| gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$file.pdf ".
" -c save pop -"
) == 0
- or die "dvips failed: $!";
+ or die "dvips
| gs
failed: $!";
open(PDF, "<$file.pdf")
or die "can't open $file.pdf: $! (error in LaTeX template?)\n";
open(PDF, "<$file.pdf")
or die "can't open $file.pdf: $! (error in LaTeX template?)\n";