X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDN.pm;h=5ffb4ba6629374be03d58c791a031599577ed65c;hb=fb4d2ffa6aae03b36e4db77be10c3d9dce4413f8;hp=2566cbed7621ddfd20c1a3b62da174ce809f28e2;hpb=fd6900cca59ac4a35d5fa4c20db91165f9310ea3;p=kivitendo-erp.git diff --git a/SL/DN.pm b/SL/DN.pm index 2566cbed7..5ffb4ba66 100644 --- a/SL/DN.pm +++ b/SL/DN.pm @@ -324,7 +324,7 @@ sub get_invoices { my %columns = ( "ordnumber" => "a.ordnumber", "invnumber" => "a.invnumber", - "notes" => "a.notes", + "notes" => "a.notes", ); foreach my $key (keys(%columns)) { next unless ($form->{$key}); @@ -333,7 +333,7 @@ sub get_invoices { } if ($form->{dunning_level}) { - $where .= qq| AND a.dunning_config_id = ?|; + $where .= qq| AND nextcfg.id = ?|; push(@values, conv_i($form->{dunning_level})); } @@ -500,12 +500,15 @@ sub parse_strings { my ($myconfig, $form, $userspath, $string) = @_; + local (*IN, *OUT); + my $format = $form->{format}; $form->{format} = "html"; $tmpstring = "parse_string.html"; $tmpfile = "$myconfig->{templates}/$tmpstring"; - open(OUT, ">$tmpfile") or $form->error("$tmpfile : $!"); + open(OUT, ">", $tmpfile) or $form->error("$tmpfile : $!"); + print(OUT $string); close(OUT); @@ -515,12 +518,8 @@ sub parse_strings { my $fileid = time; $form->{tmpfile} = "$userspath/${fileid}.$tmpstring"; - $out = $form->{OUT}; - $form->{OUT} = ">$form->{tmpfile}"; - if ($form->{OUT}) { - open(OUT, "$form->{OUT}") or $form->error("$form->{OUT} : $!"); - } + open(OUT, ">", $form->{tmpfile}) or $form->error("$form->{OUT} : $!"); if (!$template->parse(*OUT)) { $form->cleanup(); $form->error("$form->{IN} : " . $template->get_error()); @@ -528,7 +527,7 @@ sub parse_strings { close(OUT); my $result = ""; - open(IN, $form->{tmpfile}) or $form->error($form->cleanup . "$form->{tmpfile} : $!"); + open(IN, "<", $form->{tmpfile}) or $form->error($form->cleanup . "$form->{tmpfile} : $!"); while () { $result .= $_; @@ -550,43 +549,34 @@ sub melt_pdfs { my ($self, $myconfig, $form, $userspath) = @_; - foreach my $file (@{ $form->{DUNNING_PDFS} }) { - $inputfiles .= " $userspath/$file "; - } + local (*IN, *OUT); + + # Don't allow access outside of $userspath. + map { $_ =~ s|.*/||; } @{ $form->{DUNNING_PDFS} }; + my $inputfiles = join " ", map { "$userspath/$_" } @{ $form->{DUNNING_PDFS} }; my $outputfile = "$userspath/dunning.pdf"; + system("gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=$outputfile $inputfiles"); - foreach my $file (@{ $form->{DUNNING_PDFS} }) { - unlink("$userspath/$file"); - } - $out = ""; - $form->{OUT} = $out; + map { unlink("$userspath/$_") } @{ $form->{DUNNING_PDFS} }; my $numbytes = (-s $outputfile); - open(IN, $outputfile) - or $form->error($self->cleanup . "$outputfile : $!"); + open(IN, $outputfile) || $form->error($self->cleanup() . "$outputfile : $!"); $form->{copies} = 1 unless $form->{media} eq 'printer'; - chdir("$self->{cwd}"); + chdir($self->{cwd}); for my $i (1 .. $form->{copies}) { - if ($form->{OUT}) { - open(OUT, $form->{OUT}) - or $form->error($form->cleanup . "$form->{OUT} : $!"); - } else { - - # launch application - print qq|Content-Type: Application/PDF + # launch application + print qq|Content-Type: Application/PDF Content-Disposition: attachment; filename="$outputfile" Content-Length: $numbytes |; - open(OUT, ">-") or $form->error($form->cleanup . "$!: STDOUT"); - - } + open(OUT, ">-") or $form->error($form->cleanup . "$!: STDOUT"); while () { print OUT $_; @@ -598,7 +588,7 @@ Content-Length: $numbytes } close(IN); - unlink("$userspath/$outputfile"); + unlink($outputfile); $main::lxdebug->leave_sub(); } @@ -648,7 +638,7 @@ sub print_dunning { qq|SELECT cfg.interest_rate, cfg.template AS formname, cfg.email_subject, cfg.email_body, cfg.email_attachment, - d.fee, d.dunning_date, + d.fee, d.transdate AS dunning_date, (SELECT SUM(interest) FROM dunning WHERE dunning_id = ?)