Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Xentral\Modules\Datanorm\Handler;
|
||||
|
||||
use Xentral\Modules\Datanorm\Exception\WrongDiscountFormatException;
|
||||
use Xentral\Modules\Datanorm\Exception\WrongPriceFormatException;
|
||||
|
||||
class AbstractDatanormReaderHandler
|
||||
{
|
||||
|
||||
/**
|
||||
* @param string $price
|
||||
*
|
||||
* @throws WrongPriceFormatException
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
protected function convertPrice(string $price): float
|
||||
{
|
||||
if (empty($price)) {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
if (preg_match('/[^0-9]/', $price)) {
|
||||
throw new WrongPriceFormatException('price has a wrong format: ' . $price);
|
||||
}
|
||||
|
||||
return (float)$price / 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $discountKey
|
||||
* @param string $discount
|
||||
*
|
||||
* @throws WrongDiscountFormatException
|
||||
*
|
||||
* @return float
|
||||
*/
|
||||
protected function convertDiscount(string $discountKey, string $discount): float
|
||||
{
|
||||
if (preg_match('/[^0-9]/', $discount)) {
|
||||
throw new WrongDiscountFormatException('discount has a wrong format: ' . $discount);
|
||||
}
|
||||
|
||||
// Discount
|
||||
if ($discountKey === '1') {
|
||||
$formatted = (float)$discount / 100;
|
||||
} // Factor
|
||||
elseif ($discountKey === '2') {
|
||||
$formatted = (float)$discount / 1000;
|
||||
} // Surcharge
|
||||
elseif ($discountKey === '3') {
|
||||
$formatted = (float)$discount / 100;
|
||||
} else {
|
||||
throw new WrongDiscountFormatException(
|
||||
'DiscountKey has wrong format. Only 1,2,3 are allowed. ' . $discountKey . ' given'
|
||||
);
|
||||
}
|
||||
|
||||
return (float)$formatted;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user