From: Bernd Bleßmann Date: Sat, 25 Apr 2015 20:59:51 +0000 (+0200) Subject: parse/format-Fehler bei Rabatten behoben X-Git-Tag: release-3.3.0beta~127 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=97908d779dfe277a4482c1be2c7e919dfd28026b;p=kivitendo-erp.git parse/format-Fehler bei Rabatten behoben Schon in der Maske eingegebene Rabatte wurden nicht geparsed, Kunden-/Lieferanten und -Typ-Rabatte wurden teilweise ohne Berücksichtigung schon eingegebener Rabatte gesetzt. Und beim Auswahl eines Artikels über die Auswahlmaske, wurden Rabatte falsch formatiert. behebt #50 (redmine) (unter anderem) --- diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index 67819fbc9..7e8eabb88 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -453,6 +453,7 @@ sub update_delivery_order { $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}); $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}); + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0); } display_form(); diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index 365afab02..70f850a98 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -655,7 +655,7 @@ sub item_selected { } my $amount = - $form->{"sellprice_$i"} * (1 - $form->{"discount_$i"} / 100) * + $form->{"sellprice_$i"} * (1 - $form->{"discount_$i"}) * $form->{"qty_$i"}; map { $form->{"${_}_base"} += $amount } (split / /, $form->{"taxaccounts_$i"}); @@ -672,6 +672,7 @@ sub item_selected { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, $decimalplaces) } qw(sellprice listprice lastcost qty) if $form->{item} ne 'assembly'; + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0) if $form->{item} ne 'assembly'; delete $form->{nextsub}; diff --git a/bin/mozilla/ir.pl b/bin/mozilla/ir.pl index 731f74737..5bd354816 100644 --- a/bin/mozilla/ir.pl +++ b/bin/mozilla/ir.pl @@ -484,6 +484,9 @@ sub update { my $rows = scalar @{ $form->{item_list} }; + $form->{"discount_$i"} = $form->parse_amount(\%myconfig, $form->{"discount_$i"}) / 100.0; + $form->{"discount_$i"} ||= $form->{vendor_discount}; + if ($rows) { $form->{"qty_$i"} = $form->parse_amount(\%myconfig, $form->{"qty_$i"}); if( !$form->{"qty_$i"} ) { @@ -500,8 +503,6 @@ sub update { # override sellprice if there is one entered my $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"}); - # ergaenzung fuer bug 736 Lieferanten-Rabatt auch in Einkaufsrechnungen vorbelegen jb - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{vendor_discount} * 100 ); map { $form->{item_list}[$i]{$_} =~ s/\"/"/g } qw(partnumber description unit); map { $form->{"${_}_$i"} = $form->{item_list}[0]{$_} } keys %{ $form->{item_list}[0] }; @@ -532,10 +533,11 @@ sub update { $form->{"sellprice_$i"} /= $exchangerate; } - my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"} / 100); + my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"}); $form->{creditremaining} -= $amount; $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0); } &display_form; diff --git a/bin/mozilla/is.pl b/bin/mozilla/is.pl index 1f9dd0843..a4f9e85b9 100644 --- a/bin/mozilla/is.pl +++ b/bin/mozilla/is.pl @@ -554,11 +554,8 @@ sub update { my $rows = scalar @{ $form->{item_list} }; - # Falls kein Kundenrabatt vorhanden ist, den aktuellen Rabatt nicht mit 0% überschreiben, - # da hier der Anwender schon manual einen Wert eingetragen haben könnte (analog zu qty) Bugfix: 1412 - if ($form->{customer_discount}){ - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{customer_discount} * 100); - } + $form->{"discount_$i"} = $form->parse_amount(\%myconfig, $form->{"discount_$i"}) / 100.0; + $form->{"discount_$i"} ||= $form->{customer_discount}; if ($rows) { $form->{"qty_$i"} = $form->parse_amount(\%myconfig, $form->{"qty_$i"}); @@ -609,7 +606,7 @@ sub update { $form->{"listprice_$i"} /= $exchangerate; - my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"} / 100); + my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"}); map { $form->{"${_}_base"} = 0 } split / /, $form->{taxaccounts}; map { $form->{"${_}_base"} += $amount } split / /, $form->{"taxaccounts_$i"}; map { $amount += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } split / /, $form->{"taxaccounts_$i"} if !$form->{taxincluded}; @@ -618,7 +615,8 @@ sub update { map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, $decimalplaces) } qw(sellprice lastcost); - $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}); + $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}); + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0); } &display_form; diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index 8075bc6dd..dd8db4379 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -631,11 +631,8 @@ sub update { my $rows = scalar @{ $form->{item_list} }; - # hier ist das problem fuer bug 817 $form->{discount} wird nicht durchgeschliffen - # ferner fallunterscheidung fuer verkauf oder einkauf s.a. bug 736 jb 04.05.2009 - # select discount as vendor_discount from vendor || - # select discount as customer_discount from customer - $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"$form->{vc}_discount"} * 100); + $form->{"discount_$i"} = $form->parse_amount(\%myconfig, $form->{"discount_$i"}) / 100.0; + $form->{"discount_$i"} ||= $form->{"$form->{vc}_discount"}; $form->{"lastcost_$i"} = $form->parse_amount(\%myconfig, $form->{"lastcost_$i"}); @@ -693,7 +690,7 @@ sub update { $form->{"sellprice_$i"} /= $exchangerate; # if there is an exchange rate adjust sellprice } - my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"} / 100); + my $amount = $form->{"sellprice_$i"} * $form->{"qty_$i"} * (1 - $form->{"discount_$i"}); map { $form->{"${_}_base"} = 0 } split / /, $form->{taxaccounts}; map { $form->{"${_}_base"} += $amount } split / /, $form->{"taxaccounts_$i"}; map { $amount += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } split / /, $form->{taxaccounts} if !$form->{taxincluded}; @@ -703,6 +700,7 @@ sub update { $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); + $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * 100.0); } display_form();