From 4a89a75350a8a0b3675bdcea41169db47bfda743 Mon Sep 17 00:00:00 2001 From: Henning Leutz <leutz@pcsg.de> Date: Wed, 8 Nov 2023 09:13:18 +0100 Subject: [PATCH] fix: round shipping prices at the display --- locale.xml | 5 ++++ src/QUI/ERP/Shipping/Types/ShippingEntry.php | 27 +++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/locale.xml b/locale.xml index 9e2fc83..12b2fb5 100644 --- a/locale.xml +++ b/locale.xml @@ -571,6 +571,11 @@ <de><![CDATA[Versendet]]></de> <en><![CDATA[Sent]]></en> </locale> + + <locale name="shipping.plus"> + <de><![CDATA[zzgl.]]></de> + <en><![CDATA[plus]]></en> + </locale> </groups> diff --git a/src/QUI/ERP/Shipping/Types/ShippingEntry.php b/src/QUI/ERP/Shipping/Types/ShippingEntry.php index cbd7e8a..614b8f2 100644 --- a/src/QUI/ERP/Shipping/Types/ShippingEntry.php +++ b/src/QUI/ERP/Shipping/Types/ShippingEntry.php @@ -224,7 +224,32 @@ public function getPriceDisplay(): string $Price = new QUI\ERP\Money\Price($price, $DefaultCurrency); } - return '+' . $Price->getDisplayPrice(); + if (!$price) { + return ''; + } + + $numberAsString = strval($price); + $exploded = explode('.', $numberAsString); + $numberOfDecimalPlaces = isset($exploded[1]) ? strlen($exploded[1]) : 0; + + $priceStringTitle = ''; + $priceStringTitle .= QUI::getLocale()->get('quiqqer/shipping', 'shipping.plus'); + $priceStringTitle .= ' '; + $priceStringTitle .= $Price->getDisplayPrice(); + + $priceString = $priceStringTitle; + + if ($numberOfDecimalPlaces > 4) { + $priceRounded = round($price, 4); + $PriceDisplay = new QUI\ERP\Money\Price($priceRounded, $Price->getCurrency()); + + $priceString = ''; + $priceString .= QUI::getLocale()->get('quiqqer/shipping', 'shipping.plus'); + $priceString .= ' ~'; + $priceString .= $PriceDisplay->getDisplayPrice(); + } + + return '<span title="' . $priceStringTitle . '">' . $priceString . '</span>'; } /** -- GitLab