From 0e75a632271124a628dd600cb7eac739b595144d Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 16 Jul 2015 17:04:54 +0200 Subject: [PATCH] =?utf8?q?SL::DB::CustomVariable->value=20f=C3=BCr=20Typ?= =?utf8?q?=20Nummer=20auch=20wirklich=20Nummer=20zur=C3=BCckgeben?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Da die Spalte number_value in der DB vom Typ numeric() ist, wird das von Rose als String eingelesen. Das bedeutet, dass ->number_value z.B. der Wert '0.00000' liefert, was im Booleschen Kontext trueish ist – nicht das, was der Programmierer erwarten würde. Statt dessen erwartet der Programmierer, dass !$zahl für den Wert 0 auch wirklich zutrifft. Daher sollte ->value für CVars vom Typ Nummer auch wirklich eine Zahl zurückgeben, was durch ein * 1 erzwungen wird. Ausnahme: undef, was weiterhin undef bleibt. --- SL/DB/CustomVariable.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/SL/DB/CustomVariable.pm b/SL/DB/CustomVariable.pm index 08dd663c8..0971e6466 100644 --- a/SL/DB/CustomVariable.pm +++ b/SL/DB/CustomVariable.pm @@ -63,7 +63,10 @@ sub value { goto &bool_value if $type eq 'bool'; goto ×tamp_value if $type eq 'timestamp'; - goto &number_value if $type eq 'number'; + + if ($type eq 'number') { + return defined($self->number_value) ? $self->number_value * 1 : undef; + } if ( $type eq 'customer' ) { require SL::DB::Customer; -- 2.20.1