From fdc7309a6a3af79cb0a3a60d312494da038eec56 Mon Sep 17 00:00:00 2001
From: Henning <leutz@pcsg.de>
Date: Sun, 23 Feb 2025 10:13:20 +0100
Subject: [PATCH] refactor(phpstan): improve order handling and cleanup code

Changes include:
- Updated `AbstractOrderingStep.php` to handle null case in `getOrder` method and modified return
type.
- Refactored `Order.php` to remove unnecessary checks and improve readability.
- Ensured safety against calling non-existent `save()` method in `Checkout.php`.
- Simplified address getting logic in `CustomerData.php`.
- Removed unnecessary check in isUserB2B function.

Related: quiqqer/order#172
---
 src/QUI/ERP/Order/Controls/AbstractOrderingStep.php | 11 ++++++++---
 src/QUI/ERP/Order/Controls/Order/Order.php          | 12 ++++--------
 .../ERP/Order/Controls/OrderProcess/Checkout.php    |  4 +++-
 .../Order/Controls/OrderProcess/CustomerData.php    | 13 +------------
 4 files changed, 16 insertions(+), 24 deletions(-)

diff --git a/src/QUI/ERP/Order/Controls/AbstractOrderingStep.php b/src/QUI/ERP/Order/Controls/AbstractOrderingStep.php
index 4a928c26..7c96473f 100644
--- a/src/QUI/ERP/Order/Controls/AbstractOrderingStep.php
+++ b/src/QUI/ERP/Order/Controls/AbstractOrderingStep.php
@@ -7,6 +7,7 @@
 namespace QUI\ERP\Order\Controls;
 
 use QUI;
+use QUI\ERP\Order\AbstractOrder;
 use QUI\Locale;
 use ReflectionClass;
 
@@ -48,11 +49,15 @@ public function getIcon(): string
     /**
      * Return the current order
      *
-     * @return QUI\ERP\Order\AbstractOrder
+     * @return AbstractOrder|null
      */
-    public function getOrder(): QUI\ERP\Order\AbstractOrder
+    public function getOrder(): ?QUI\ERP\Order\AbstractOrder
     {
-        return $this->getAttribute('Order');
+        if ($this->getAttribute('Order') instanceof QUI\ERP\Order\AbstractOrder) {
+            return $this->getAttribute('Order');
+        }
+
+        return null;
     }
 
     /**
diff --git a/src/QUI/ERP/Order/Controls/Order/Order.php b/src/QUI/ERP/Order/Controls/Order/Order.php
index 512d3554..8a4a4717 100644
--- a/src/QUI/ERP/Order/Controls/Order/Order.php
+++ b/src/QUI/ERP/Order/Controls/Order/Order.php
@@ -21,7 +21,7 @@ class Order extends QUI\Control
     /**
      * @var null|QUI\ERP\Order\AbstractOrder
      */
-    protected QUI\ERP\Order\AbstractOrder|null $Order = null;
+    protected QUI\ERP\Order\AbstractOrder | null $Order = null;
 
     /**
      * Order constructor.
@@ -83,16 +83,12 @@ public function getBody(): string
             if ($Order->hasInvoice()) {
                 $Invoice = $Order->getInvoice();
             }
-
-            if ($Invoice instanceof QUI\ERP\Accounting\Invoice\InvoiceTemporary) {
-                $View->setAttribute('downloadLink', false);
-            }
         } catch (QUI\Exception $Exception) {
             QUI\System\Log::writeDebugException($Exception);
+        }
 
-            if ($Invoice instanceof QUI\ERP\Accounting\Invoice\InvoiceTemporary) {
-                $View->setAttribute('downloadLink', false);
-            }
+        if ($Invoice instanceof QUI\ERP\Accounting\Invoice\InvoiceTemporary) {
+            $View->setAttribute('downloadLink', false);
         }
 
         switch ($this->getAttribute('template')) {
diff --git a/src/QUI/ERP/Order/Controls/OrderProcess/Checkout.php b/src/QUI/ERP/Order/Controls/OrderProcess/Checkout.php
index 52f058fd..0a269e9e 100644
--- a/src/QUI/ERP/Order/Controls/OrderProcess/Checkout.php
+++ b/src/QUI/ERP/Order/Controls/OrderProcess/Checkout.php
@@ -254,7 +254,9 @@ public function forceSave(): void
         $Order->setData('orderedWithCosts', 1);
         $Order->setData('orderedWithCostsPayment', $Payment->getId());
 
-        $Order->save();
+        if (method_exists($Order, 'save')) {
+            $Order->save();
+        }
     }
 
     /**
diff --git a/src/QUI/ERP/Order/Controls/OrderProcess/CustomerData.php b/src/QUI/ERP/Order/Controls/OrderProcess/CustomerData.php
index e62706a8..7b4c1713 100644
--- a/src/QUI/ERP/Order/Controls/OrderProcess/CustomerData.php
+++ b/src/QUI/ERP/Order/Controls/OrderProcess/CustomerData.php
@@ -64,14 +64,7 @@ public function getBody(): string
         }
 
         if (!$Address) {
-            try {
-                /* @var $User User */
-                $Address = $User->getStandardAddress();
-            } catch (QUI\Exception) {
-                // user has no address
-                // create a new standard address
-                $Address = $User->addAddress();
-            }
+            $Address = $User->getStandardAddress();
         }
 
         try {
@@ -83,10 +76,6 @@ public function getBody(): string
 
 
         $isUserB2B = function () use ($User) {
-            if (!$User) {
-                return '';
-            }
-
             if ($User->getAttribute('quiqqer.erp.isNettoUser') === QUI\ERP\Utils\User::IS_NETTO_USER) {
                 return ' selected="selected"';
             }
-- 
GitLab