From c4a8cd8ca761b16e89fa7ed5616d0e3fd888b82f Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 3 Dec 2020 11:05:10 +0100 Subject: [PATCH] Order-Controller: Umwandlung: Berechnung bereits gelieferter/abgerechneter Mengen gefixt MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit In $::form steht der Wert für die gelieferte Menge in `ship_$row`. Dieser Wert wird überall im Programm als unformatiert angenommen, nur bisher in der Methode nicht, die berechnet, wie viel von jeder Position bereits abgerechnet/geliefert war. Ergebnis war, dass ein unformatierter Wert noch mal durch `$::form->parse_amount` gejagt wurde. Für einen Wert mit Nachkommaanteil ist das dann problematisch. Wurden bereits z.B. 123,45 geliefert, so steht in `$::form->{ship_1}` der Wert `123.45`, einmal durch `parse_amount` ergibt `12345`, was um einen Faktor 100 zu viel ist. --- bin/mozilla/oe.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index 555822a2f..d2cceeaf3 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -2246,7 +2246,7 @@ sub _remove_full_delivered_rows { next unless $::form->{"id_$row"}; my $base_factor = SL::DB::Manager::Unit->find_by(name => $::form->{"unit_$row"})->base_factor; my $base_qty = $::form->parse_amount(\%::myconfig, $::form->{"qty_$row"}) * $base_factor; - my $ship_qty = $::form->parse_amount(\%::myconfig, $::form->{"ship_$row"}) * $base_factor; + my $ship_qty = $::form->{"ship_$row"} * $base_factor; #$main::lxdebug->message(LXDebug->DEBUG2(),"shipto=".$ship_qty." qty=".$base_qty); if (!$ship_qty || ($ship_qty < $base_qty)) { -- 2.20.1