Revision 58fcb69f
Von Stephan Köhler vor etwa 19 Jahren hinzugefügt
SL/Form.pm | ||
---|---|---|
590 | 590 |
$main::lxdebug->enter_sub(); |
591 | 591 |
|
592 | 592 |
my ($self, $myconfig, $amount) = @_; |
593 |
|
|
594 |
if (!(substr($amount, -3, 1) eq ".")) { |
|
595 |
if ( ($myconfig->{numberformat} eq '1.000,00') |
|
596 |
|| ($myconfig->{numberformat} eq '1000,00')) { |
|
597 |
$amount =~ s/\.//g; |
|
598 |
$amount =~ s/,/\./; |
|
599 |
} |
|
600 |
|
|
601 |
$amount =~ s/,//g; |
|
602 |
} |
|
603 |
|
|
593 |
$main::lxdebug->message(LXDebug::DEBUG2, "Start amount: $amount"); |
|
594 |
|
|
595 |
if ($myconfig->{in_numberformat} == 1){ |
|
596 |
# Extra input number format 1000.00 or 1000,00 |
|
597 |
$main::lxdebug->message(LXDebug::DEBUG2, "in_numberformat: " . $main::locale->text('1000,00 or 1000.00')); |
|
598 |
$amount =~ s/,/\./g; |
|
599 |
#$main::lxdebug->message(LXDebug::DEBUG2, "1.Parsed Number: $amount") if ($amount); |
|
600 |
$amount = scalar reverse $amount; |
|
601 |
#$main::lxdebug->message(LXDebug::DEBUG2, "2.Parsed Number: $amount") if ($amount); |
|
602 |
$amount =~ s/\./DOT/; |
|
603 |
#$main::lxdebug->message(LXDebug::DEBUG2, "3.Parsed Number: $amount") if ($amount); |
|
604 |
$amount =~ s/\.//g; |
|
605 |
#$main::lxdebug->message(LXDebug::DEBUG2, "4.Parsed Number: $amount") if ($amount); |
|
606 |
$amount =~ s/DOT/\./; |
|
607 |
#$main::lxdebug->message(LXDebug::DEBUG2, "5.Parsed Number:" . $amount) if ($amount); |
|
608 |
$amount = scalar reverse $amount ; |
|
609 |
$main::lxdebug->message(LXDebug::DEBUG2, "Parsed amount:" . $amount . "\n"); |
|
610 |
|
|
611 |
return ($amount * 1); |
|
612 |
|
|
613 |
} |
|
614 |
$main::lxdebug->message(LXDebug::DEBUG2, "in_numberformat: " . $main::locale->text('equal Outputformat')); |
|
615 |
$main::lxdebug->message(LXDebug::DEBUG2, " = numberformat: $myconfig->{numberformat}"); |
|
616 |
if ( ($myconfig->{numberformat} eq '1.000,00') |
|
617 |
|| ($myconfig->{numberformat} eq '1000,00')) { |
|
618 |
$amount =~ s/\.//g; |
|
619 |
$amount =~ s/,/\./; |
|
620 |
} |
|
621 |
|
|
622 |
if ($myconfig->{numberformat} eq "1'000.00") { |
|
623 |
$amount =~ s/'//g; |
|
624 |
} |
|
625 |
|
|
626 |
$amount =~ s/,//g; |
|
627 |
|
|
628 |
$main::lxdebug->message(LXDebug::DEBUG2, "Parsed amount:" . $amount. "\n") if ($amount); |
|
604 | 629 |
$main::lxdebug->leave_sub(); |
605 |
|
|
630 |
|
|
606 | 631 |
return ($amount * 1); |
607 | 632 |
} |
608 | 633 |
|
Auch abrufbar als: Unified diff
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