From 99fb55051a82d8a580363d6cda9bac3cea3f2762 Mon Sep 17 00:00:00 2001 From: jekkos-t520 Date: Thu, 2 Apr 2020 09:12:41 +0200 Subject: [PATCH] Divide quantity and price according to configured precision --- application/libraries/Token_lib.php | 4 ++-- application/tests/libraries/Token_lib_test.php | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/application/libraries/Token_lib.php b/application/libraries/Token_lib.php index da896155e..e2978925d 100644 --- a/application/libraries/Token_lib.php +++ b/application/libraries/Token_lib.php @@ -88,10 +88,10 @@ class Token_lib foreach($barcode_formats as $barcode_format) { $parsed_results = $this->parse($item_id_or_number_or_item_kit_or_receipt, $barcode_format, $barcode_tokens); - $quantity = (isset($parsed_results['W'])) ? (int) $parsed_results['W'] / 1000 : 1; + $quantity = (isset($parsed_results['W'])) ? (int) $parsed_results['W'] / pow(10, $this->CI->config->item('quantity_decimals')) : 1; $item_id_or_number_or_item_kit_or_receipt = (isset($parsed_results['I'])) ? $parsed_results['I'] : $item_id_or_number_or_item_kit_or_receipt; - $price = (isset($parsed_results['P'])) ? (double) $parsed_results['P'] : NULL; + $price = (isset($parsed_results['P'])) ? (double) $parsed_results['P'] / pow(10, $this->CI->config->item('currency_decimals') - 1) : NULL; } } } diff --git a/application/tests/libraries/Token_lib_test.php b/application/tests/libraries/Token_lib_test.php index 8f493461b..3889b4db1 100644 --- a/application/tests/libraries/Token_lib_test.php +++ b/application/tests/libraries/Token_lib_test.php @@ -10,6 +10,9 @@ class Token_lib_test extends UnitTestCase $this->resetInstance(); $this->obj = $this->newLibrary('Token_lib'); + $this->CI->config->set_item('currency_decimals', 3); + $this->CI->config->set_item('quantity_decimals', 3); + } public function test_token_parser() @@ -46,7 +49,7 @@ class Token_lib_test extends UnitTestCase $this->obj->parse_barcode($quantity, $price, $item_number); - $this->assertEquals($price, 10); + $this->assertEquals($price, 0.10); $this->assertEquals($item_number, 123456); $this->assertEquals($quantity, 50.001); }