Fixes for float parsing for csv importrs

This commit is contained in:
David Bomba 2024-01-11 00:18:40 +11:00
parent caa5b4b430
commit a52025dabd
3 changed files with 30 additions and 3 deletions

View File

@ -316,7 +316,7 @@ class BaseTransformer
{
if (array_key_exists($field, $data)) {
//$number = preg_replace('/[^0-9-.]+/', '', $data[$field]);
return Number::parseStringFloat($data[$field]);
return Number::parseFloat($data[$field]);
} else {
//$number = 0;
return 0;
@ -334,7 +334,7 @@ class BaseTransformer
public function getFloatOrOne($data, $field)
{
if (array_key_exists($field, $data)) {
return Number::parseStringFloat($data[$field]) > 0 ? Number::parseStringFloat($data[$field]) : 1;
return Number::parseFloat($data[$field]) > 0 ? Number::parseFloat($data[$field]) : 1;
}
return 1;

View File

@ -20,6 +20,34 @@ use Tests\TestCase;
*/
class NumberTest extends TestCase
{
public function testConvertDecimalCommaFloats()
{
$value = '22,00';
$res = Number::parseFloat($value);
$this->assertEquals(22.0, $res);
$value = '22.00';
$res = Number::parseFloat($value);
$this->assertEquals(22.0, $res);
$value = '1,000.00';
$res = Number::parseFloat($value);
$this->assertEquals(1000.0, $res);
$value = '1.000,00';
$res = Number::parseFloat($value);
$this->assertEquals(1000.0, $res);
}
public function testFloatPrecision()
{
$value = 1.1;

View File

@ -20,7 +20,6 @@ use Tests\TestCase;
class WithTypeHelpersTest extends TestCase
{
use DatabaseMigrations;
public function testIsImageHelper(): void
{