X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fcust_bill.pm;h=576e4c8468e86965e80fa186e8cb1c7776efc2a7;hp=367e1bc5ec5d00ca855117347a7da6a2ca8b1006;hb=4891d7608679ee4a742a8cd5ca03fbb4847b305e;hpb=e975ed0585280f4cbb90b02f57114dedc43f58be diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index 367e1bc5e..576e4c846 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -5,6 +5,7 @@ use vars qw( @ISA $conf $money_char ); use vars qw( $invoice_lines @buf ); #yuck use Date::Format; use Text::Template; +use File::Temp; use FS::UID qw( datasrc ); use FS::Record qw( qsearch qsearchs ); use FS::Misc qw( send_email ); @@ -1108,17 +1109,17 @@ sub print_latex { $var; } - my $dir = '/tmp'; #! /usr/local/etc/freeside/invoices.datasrc/ - my $unique = int(rand(2**31)); #UGH... use File::Temp or something + my $dir = $FS::UID::conf_dir. "cache.". $FS::UID::datasrc; + my $fh = new File::Temp( TEMPLATE => 'invoice.'. $self->invnum. '.XXXXXXXX', + DIR => $dir, + SUFFIX => '.tex', + UNLINK => 0, + ) or die "can't open temp file: $!\n"; + print $fh join("\n", @filled_in ), "\n"; + close $fh; - chdir($dir); - my $file = $self->invnum. ".$unique"; - - open(TEX,">$file.tex") or die "can't open $file.tex: $!\n"; - print TEX join("\n", @filled_in ), "\n"; - close TEX; - - return $file; + $fh->filename =~ /^(.*).tex$/ or die "unparsable filename: ". $fh->filename; + return $1; } @@ -1138,13 +1139,19 @@ sub print_ps { my $file = $self->print_latex(@_); - #error checking!! - system('pslatex', "$file.tex"); - system('pslatex', "$file.tex"); - system('dvips', '-q', '-t', 'letter', "$file.dvi", '-o', "$file.ps" ); + my $dir = $FS::UID::conf_dir. "cache.". $FS::UID::datasrc; + chdir($dir); + + system("pslatex $file.tex >/dev/null 2>&1") == 0 + or die "pslatex failed: $!"; + system("pslatex $file.tex >/dev/null 2>&1") == 0 + or die "pslatex failed: $!"; + + system('dvips', '-q', '-t', 'letter', "$file.dvi", '-o', "$file.ps" ) == 0 + or die "dbips failed: $!"; open(POSTSCRIPT, "<$file.ps") - or die "can't open $file.ps (probable error in LaTeX template): $!\n"; + or die "can't open $file.ps: $! (error in LaTeX template?)\n"; unlink("$file.dvi", "$file.log", "$file.aux", "$file.ps", "$file.tex"); @@ -1175,19 +1182,28 @@ sub print_pdf { my $file = $self->print_latex(@_); + my $dir = $FS::UID::conf_dir. "cache.". $FS::UID::datasrc; + chdir($dir); + #system('pdflatex', "$file.tex"); #system('pdflatex', "$file.tex"); #! LaTeX Error: Unknown graphics extension: .eps. - #error checking!! - system('pslatex', "$file.tex"); - system('pslatex', "$file.tex"); + system("pslatex $file.tex >/dev/null 2>&1") == 0 + or die "pslatex failed: $!"; + system("pslatex $file.tex >/dev/null 2>&1") == 0 + or die "pslatex failed: $!"; #system('dvipdf', "$file.dvi", "$file.pdf" ); - system("dvips -q -t letter -f $file.dvi | gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$file.pdf -c save pop -"); + system( + "dvips -q -t letter -f $file.dvi ". + "| gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$file.pdf ". + " -c save pop -" + ) == 0 + or die "dvips failed: $!"; open(PDF, "<$file.pdf") - or die "can't open $file.pdf (probably error in LaTeX tempalte: $!\n"; + or die "can't open $file.pdf: $! (error in LaTeX template?)\n"; unlink("$file.dvi", "$file.log", "$file.aux", "$file.pdf", "$file.tex");