From 6445e518dc935054a6c37f2a2c61d2e169ed91eb Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 16 Feb 2024 14:28:57 +1100 Subject: [PATCH] Fixes for parse float --- app/Import/Transformer/BaseTransformer.php | 11 ++++------- app/Utils/Number.php | 12 +++++++++++- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/Import/Transformer/BaseTransformer.php b/app/Import/Transformer/BaseTransformer.php index ee9b137dcff5..81d38ba75e75 100644 --- a/app/Import/Transformer/BaseTransformer.php +++ b/app/Import/Transformer/BaseTransformer.php @@ -315,14 +315,11 @@ class BaseTransformer public function getFloat($data, $field) { if (array_key_exists($field, $data)) { - //$number = preg_replace('/[^0-9-.]+/', '', $data[$field]); return Number::parseFloat($data[$field]); - } else { - //$number = 0; - return 0; - } - - // return Number::parseFloat($number); + } + + return 0; + } /** diff --git a/app/Utils/Number.php b/app/Utils/Number.php index 67568d6da81b..2fa7e64a462a 100644 --- a/app/Utils/Number.php +++ b/app/Utils/Number.php @@ -95,6 +95,14 @@ class Number */ public static function parseFloat($value) { + if(!$value) + return 0; + + $multiplier = false; + + if(substr($value, 0,1) == '-') + $multiplier = -1; + // convert "," to "." $s = str_replace(',', '.', $value); @@ -108,7 +116,9 @@ class Number // remove all separators from first part and keep the end $s = str_replace('.', '', substr($s, 0, -3)).substr($s, -3); - // return float + if($multiplier) + $s = floatval($s)*-1; + return (float) $s; }