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