X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/00f9b4aace493f778a1470a00bd750d6ce298cd5..6b378ca7ca0e5fc0933ea90fc66a45d7440b08f7:/SL/Form.pm?ds=sidebyside
diff --git a/SL/Form.pm b/SL/Form.pm
index 537799a34..70a559d35 100644
--- a/SL/Form.pm
+++ b/SL/Form.pm
@@ -852,6 +852,7 @@ sub format_amount {
$main::lxdebug->enter_sub(2);
my ($self, $myconfig, $amount, $places, $dash) = @_;
+ $dash ||= '';
if ($amount eq "") {
$amount = 0;
@@ -868,9 +869,10 @@ sub format_amount {
$amount *= 1;
$places *= -1;
- my ($actual_places) = ($amount =~ /\.(\d+)/);
- $actual_places = length($actual_places);
- $places = $actual_places > $places ? $actual_places : $places;
+ if ($amount =~ /\.(\d+)/) {
+ my $actual_places = length $1;
+ $places = $actual_places if $actual_places > $places;
+ }
}
}
$amount = $self->round_amount($amount, $places);
@@ -882,7 +884,7 @@ sub format_amount {
$p[0] =~ s/\B(?=(...)*$)/$d[1]/g if $d[1]; # add 1,000 delimiters
$amount = $p[0];
- $amount .= $d[0].$p[1].(0 x ($places - length $p[1])) if ($places || $p[1] ne '');
+ $amount .= $d[0].($p[1]||'').(0 x ($places - length ($p[1]||''))) if ($places || $p[1] ne '');
$amount = do {
($dash =~ /-/) ? ($neg ? "($amount)" : "$amount" ) :
@@ -1107,15 +1109,20 @@ sub parse_template {
close $temp_fh;
if ($template->uses_temp_file() || $self->{media} eq 'email') {
- $out = $self->{OUT};
- $out_mode = $self->{OUT_MODE} || '>';
- $self->{OUT} = "$self->{tmpfile}";
+ $out = $self->{OUT};
+ $out_mode = $self->{OUT_MODE} || '>';
+ $self->{OUT} = "$self->{tmpfile}";
$self->{OUT_MODE} = '>';
}
my $result;
+ my $command_formatter = sub {
+ my ($out_mode, $out) = @_;
+ return $out_mode eq '|-' ? SL::Template::create(type => 'ShellCommand', form => $self)->parse($out) : $out;
+ };
if ($self->{OUT}) {
+ $self->{OUT} = $command_formatter->($self->{OUT_MODE}, $self->{OUT});
open(OUT, $self->{OUT_MODE}, $self->{OUT}) or $self->error("error on opening $self->{OUT} with mode $self->{OUT_MODE} : $!");
} else {
*OUT = ($::dispatcher->get_standard_filehandles)[1];
@@ -1155,19 +1162,15 @@ sub parse_template {
# if we send html or plain text inline
if (($self->{format} eq 'html') && ($self->{sendmode} eq 'inline')) {
- $mail->{contenttype} = "text/html";
-
- $mail->{message} =~ s/\r//g;
- $mail->{message} =~ s/\n/
\n/g;
- $myconfig->{signature} =~ s/\n/
\n/g;
- $mail->{message} .= "
\n--
\n$myconfig->{signature}\n
";
+ $mail->{contenttype} = "text/html";
+ $mail->{message} =~ s/\r//g;
+ $mail->{message} =~ s/\n/
\n/g;
+ $myconfig->{signature} =~ s/\n/
\n/g;
+ $mail->{message} .= "
\n--
\n$myconfig->{signature}\n
";
open(IN, "<", $self->{tmpfile})
or $self->error($self->cleanup . "$self->{tmpfile} : $!");
- while () {
- $mail->{message} .= $_;
- }
-
+ $mail->{message} .= $_ while ;
close(IN);
} else {
@@ -1204,10 +1207,12 @@ sub parse_template {
#print(STDERR "OUT $self->{OUT}\n");
for my $i (1 .. $self->{copies}) {
if ($self->{OUT}) {
- open OUT, $self->{OUT_MODE}, $self->{OUT} or $self->error($self->cleanup . "$self->{OUT} : $!");
+ $self->{OUT} = $command_formatter->($self->{OUT_MODE}, $self->{OUT});
+
+ open OUT, $self->{OUT_MODE}, $self->{OUT} or $self->error($self->cleanup . "$self->{OUT} : $!");
print OUT $_ while ;
close OUT;
- seek IN, 0, 0;
+ seek IN, 0, 0;
} else {
$self->{attachment_filename} = ($self->{attachment_filename})
@@ -2516,7 +2521,7 @@ sub get_name {
return scalar(@{ $self->{name_list} });
}
-# the selection sub is used in the AR, AP, IS, IR and OE module
+# the selection sub is used in the AR, AP, IS, IR, DO and OE module
#
sub all_vc {
$main::lxdebug->enter_sub();