<?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; } }