From: Stephan Köhler Date: Fri, 30 Dec 2005 12:47:55 +0000 (+0000) Subject: Merge von 711 aus unstable: Bugfix 233 + format_amount X-Git-Tag: release-2.2.0~59 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=58fcb69f65a255c0db6741ca7aed0a695cae68c8;p=kivitendo-erp.git Merge von 711 aus unstable: Bugfix 233 + format_amount Bug 233: Neues Zahlenformat für die Eingabe eingefuehrt. Es ist nun moeglich das Eingabezahlenformat getrennt anzugeben. Entweder Eingabeformat wie bisher (default) oder '1000.00 oder 1000,00'. Die zweite Option verhindert bei der Eingabe die Verwechselung von ',' und '.'. Es ist nun egal welchen Dezimaltrenner man benutzt, der erste Punkt oder Komma von rechts jedenfalls wird als Dezimaltrenner verwendet, alle anderen Punkte oder Kommas werden einfach ignoriert, bzw. entfernt --- diff --git a/SL/Form.pm b/SL/Form.pm index c5a30bf78..5fbed0d75 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -590,19 +590,44 @@ sub parse_amount { $main::lxdebug->enter_sub(); my ($self, $myconfig, $amount) = @_; - - if (!(substr($amount, -3, 1) eq ".")) { - if ( ($myconfig->{numberformat} eq '1.000,00') - || ($myconfig->{numberformat} eq '1000,00')) { - $amount =~ s/\.//g; - $amount =~ s/,/\./; - } - - $amount =~ s/,//g; - } - + $main::lxdebug->message(LXDebug::DEBUG2, "Start amount: $amount"); + + if ($myconfig->{in_numberformat} == 1){ + # Extra input number format 1000.00 or 1000,00 + $main::lxdebug->message(LXDebug::DEBUG2, "in_numberformat: " . $main::locale->text('1000,00 or 1000.00')); + $amount =~ s/,/\./g; + #$main::lxdebug->message(LXDebug::DEBUG2, "1.Parsed Number: $amount") if ($amount); + $amount = scalar reverse $amount; + #$main::lxdebug->message(LXDebug::DEBUG2, "2.Parsed Number: $amount") if ($amount); + $amount =~ s/\./DOT/; + #$main::lxdebug->message(LXDebug::DEBUG2, "3.Parsed Number: $amount") if ($amount); + $amount =~ s/\.//g; + #$main::lxdebug->message(LXDebug::DEBUG2, "4.Parsed Number: $amount") if ($amount); + $amount =~ s/DOT/\./; + #$main::lxdebug->message(LXDebug::DEBUG2, "5.Parsed Number:" . $amount) if ($amount); + $amount = scalar reverse $amount ; + $main::lxdebug->message(LXDebug::DEBUG2, "Parsed amount:" . $amount . "\n"); + + return ($amount * 1); + + } + $main::lxdebug->message(LXDebug::DEBUG2, "in_numberformat: " . $main::locale->text('equal Outputformat')); + $main::lxdebug->message(LXDebug::DEBUG2, " = numberformat: $myconfig->{numberformat}"); + if ( ($myconfig->{numberformat} eq '1.000,00') + || ($myconfig->{numberformat} eq '1000,00')) { + $amount =~ s/\.//g; + $amount =~ s/,/\./; + } + + if ($myconfig->{numberformat} eq "1'000.00") { + $amount =~ s/'//g; + } + + $amount =~ s/,//g; + + $main::lxdebug->message(LXDebug::DEBUG2, "Parsed amount:" . $amount. "\n") if ($amount); $main::lxdebug->leave_sub(); - + return ($amount * 1); } diff --git a/SL/User.pm b/SL/User.pm index 9fa0035c6..bf649c8cd 100644 --- a/SL/User.pm +++ b/SL/User.pm @@ -839,7 +839,7 @@ sub config_vars { my @conf = qw(acs address admin businessnumber charset company countrycode currency dateformat dbconnect dbdriver dbhost dbport dboptions - dbname dbuser dbpasswd email fax name numberformat password + dbname dbuser dbpasswd email fax name numberformat in_numberformat password printer role sid signature stylesheet tel templates vclimit angebote bestellungen rechnungen anfragen lieferantenbestellungen einkaufsrechnungen steuernummer ustid duns menustyle); diff --git a/bin/mozilla/am.pl b/bin/mozilla/am.pl index ab334edcf..48b875a57 100644 --- a/bin/mozilla/am.pl +++ b/bin/mozilla/am.pl @@ -1575,7 +1575,7 @@ sub config { ? "