use Date::Format;
use Text::Template;
use File::Temp 0.14;
+use String::ShellQuote;
use FS::UID qw( datasrc );
use FS::Record qw( qsearch qsearchs );
use FS::Misc qw( send_email );
my $self = shift;
my $template = scalar(@_) ? shift : '';
return 'N/A' if scalar(@_) && $_[0] && $self->cust_main->agentnum != shift;
- my $invoice_from = scalar(@_) ? shift : $conf->config('invoice_from');
+ 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;
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',
+ my $part_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'
);
- return '' unless $cust_bill_event;
+ return '' unless $part_bill_event;
- if ( $cust_bill_event->eventcode =~ /\(\s*'(.*)'\s*,\s*(\d+)\s*\)\;$/ ) {
+ if ( $part_bill_event->plandata =~ /^$option (.*)$/m ) {
return $1;
} else {
- warn "can't parse eventcode for agent-specific invoice template";
+ warn "can't parse part_bill_event eventpart#". $part_bill_event->eventpart.
+ " plandata for $option";
return '';
}
=cut
+#still some false laziness w/print_text
sub print_text {
my( $self, $today, $template ) = @_;
$today ||= time;
+
# my $invnum = $self->invnum;
- my $cust_main = qsearchs('cust_main', { 'custnum', $self->custnum } );
+ my $cust_main = $self->cust_main;
$cust_main->payname( $cust_main->first. ' '. $cust_main->getfield('last') )
- unless $cust_main->payname && $cust_main->payby ne 'CHEK';
+ unless $cust_main->payname && $cust_main->payby !~ /^(CHEK|DCHK)$/;
my( $pr_total, @pr_cust_bill ) = $self->previous; #previous balance
# my( $cr_total, @cr_cust_credit ) = $self->cust_credit; #credits
# my $invnum = $self->invnum;
my $cust_main = $self->cust_main;
$cust_main->payname( $cust_main->first. ' '. $cust_main->getfield('last') )
- unless $cust_main->payname && $cust_main->payby ne 'CHEK';
+ unless $cust_main->payname && $cust_main->payby !~ /^(CHEK|DCHK)$/;
my( $pr_total, @pr_cust_bill ) = $self->previous; #previous balance
# my( $cr_total, @cr_cust_credit ) = $self->cust_credit; #credits
my $dir = $FS::UID::conf_dir. "cache.". $FS::UID::datasrc;
chdir($dir);
- system("pslatex $file.tex >/dev/null 2>&1") == 0
+ my $sfile = shell_quote $file;
+
+ system("pslatex $sfile.tex >/dev/null 2>&1") == 0
or die "pslatex $file.tex failed: $!";
- system("pslatex $file.tex >/dev/null 2>&1") == 0
+ system("pslatex $sfile.tex >/dev/null 2>&1") == 0
or die "pslatex $file.tex failed: $!";
system('dvips', '-q', '-t', 'letter', "$file.dvi", '-o', "$file.ps" ) == 0
#system('pdflatex', "$file.tex");
#! LaTeX Error: Unknown graphics extension: .eps.
- system("pslatex $file.tex >/dev/null 2>&1") == 0
+ my $sfile = shell_quote $file;
+
+ system("pslatex $sfile.tex >/dev/null 2>&1") == 0
or die "pslatex $file.tex failed: $!";
- system("pslatex $file.tex >/dev/null 2>&1") == 0
+ system("pslatex $sfile.tex >/dev/null 2>&1") == 0
or die "pslatex $file.tex failed: $!";
#system('dvipdf', "$file.dvi", "$file.pdf" );
system(
- "dvips -q -t letter -f $file.dvi ".
- "| gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$file.pdf ".
+ "dvips -q -t letter -f $sfile.dvi ".
+ "| gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$sfile.pdf ".
" -c save pop -"
) == 0
or die "dvips | gs failed: $!";
#'description' => 'Credit ref\#'. $_->crednum.
# " (". time2str("%x",$_->cust_credit->_date) .")".
# $reason,
- 'description' => 'Credit applied'.
+ 'description' => 'Credit applied '.
time2str("%x",$_->cust_credit->_date). $reason,
'amount' => sprintf("%10.2f",$_->amount),
};