From: Bernd Bleßmann Date: Fri, 27 Jul 2018 13:25:49 +0000 (+0200) Subject: Auftrags-Controller: Null-Werte in Eingabezeile von leer unterscheiden. X-Git-Tag: release-3.5.4~341 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=7d2700f0edb70d315c024a652ad4c3ab59f04543;p=kivitendo-erp.git Auftrags-Controller: Null-Werte in Eingabezeile von leer unterscheiden. Die Idee war, bei einem leeren Wert in der Eingabezeile ein default zu nehmen (Menge => 1, Preis => "bester" Preis, Rabatt => "bester" Rabatt). Bisher wurde aber nicht zwischen leer und 0 bzw. 0,00 unterschieden, so dass dann auch die default-Werte genommen wurden. Das wird jetzt unterschieden. --- diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index f355167b4..fd9aa72df 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -1193,6 +1193,14 @@ sub _new_item { my ($record, $attr) = @_; my $item = SL::DB::OrderItem->new; + + # Remove attributes where the user left or set the inputs empty. + # So these attributes will be undefined and we can distinguish them + # from zero later on. + for (qw(qty_as_number sellprice_as_number discount_as_percent)) { + delete $attr->{$_} if $attr->{$_} eq ''; + } + $item->assign_attributes(%$attr); my $part = SL::DB::Part->new(id => $attr->{parts_id})->load; @@ -1205,7 +1213,7 @@ sub _new_item { # add assortment items with price 0, as the components carry the price $price_src = $price_source->price_from_source(""); $price_src->price(0); - } elsif ($item->sellprice) { + } elsif (defined $item->sellprice) { $price_src = $price_source->price_from_source(""); $price_src->price($item->sellprice); } else { @@ -1216,7 +1224,7 @@ sub _new_item { } my $discount_src; - if ($item->discount) { + if (defined $item->discount) { $discount_src = $price_source->discount_from_source(""); $discount_src->discount($item->discount); } else {