From 7d2700f0edb70d315c024a652ad4c3ab59f04543 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bernd=20Ble=C3=9Fmann?= Date: Fri, 27 Jul 2018 15:25:49 +0200 Subject: [PATCH] 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. --- SL/Controller/Order.pm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 { -- 2.20.1