X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/e998dd2f9cbfe2957484caee79bed2abc0762ec4..bebca3b60f8c019b9acbc436da7437d67dc19e67:/SL/Form.pm diff --git a/SL/Form.pm b/SL/Form.pm index 099a6736e..c59669c41 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -66,6 +66,7 @@ use SL::IC; use SL::IS; use SL::Layout::Dispatcher; use SL::Locale; +use SL::Locale::String; use SL::Mailer; use SL::Menu; use SL::MoreCommon qw(uri_encode uri_decode); @@ -821,6 +822,7 @@ sub format_amount { my $force_places = defined $places && $places >= 0; $amount = $self->round_amount($amount, abs $places) if $force_places; + $neg = 0 if $amount == 0; # don't show negative zero $amount = sprintf "%.*f", ($force_places ? $places : 10), abs $amount; # 6 is default for %fa # before the sprintf amount was a number, afterwards it's a string. because of the dynamic nature of perl @@ -980,7 +982,9 @@ sub round_amount { # part. If an overflow occurs then apply that overflow to the part # before the decimal sign as well using integer arithmetic again. - my $amount_str = sprintf '%.*f', $places + 10, abs($amount); + my $int_amount = int(abs $amount); + my $str_places = max(min(10, 16 - length("$int_amount") - $places), $places); + my $amount_str = sprintf '%.*f', $places + $str_places, abs($amount); return $amount unless $amount_str =~ m{^(\d+)\.(\d+)$}; @@ -2614,9 +2618,10 @@ sub mtime_ischanged { $ref->{mtime} ||= $ref->{itime}; if ($self->{lastmtime} && $self->{lastmtime} ne $ref->{mtime} ) { - my $etxt = ($option eq 'mail') ? "The document has been changed by another user. Please reopen it in another window and copy the changes to the new window" : - "The document has been changed by another user. No mail was sent. Please reopen it in another window and copy the changes to the new window"; - $self->error($main::locale->text($etxt)); + $self->error(($option eq 'mail') ? + t8("The document has been changed by another user. No mail was sent. Please reopen it in another window and copy the changes to the new window") : + t8("The document has been changed by another user. Please reopen it in another window and copy the changes to the new window") + ); ::end_of_request(); } }