From: Moritz Bunkus Date: Thu, 16 Jul 2015 15:04:54 +0000 (+0200) Subject: SL::DB::CustomVariable->value für Typ Nummer auch wirklich Nummer zurückgeben X-Git-Tag: release-3.3.0beta~31^2~53 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=0e75a632271124a628dd600cb7eac739b595144d;p=kivitendo-erp.git SL::DB::CustomVariable->value für Typ Nummer auch wirklich Nummer zurückgeben 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. --- 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;