From 638386b92f1581e36f3754f04115ce2beaf758a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20M=C3=BCller?= <p.mueller@pcsg.de> Date: Thu, 29 Jul 2021 13:57:36 +0200 Subject: [PATCH] fix: possible fix for quiqqer/shipping#35 --- events.xml | 3 ++ src/QUI/ERP/Shipping/EventHandler.php | 46 ++++++++++++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/events.xml b/events.xml index a1ff2d3..4b4e976 100644 --- a/events.xml +++ b/events.xml @@ -12,6 +12,9 @@ <event on="onQuiqqerOrderCustomerDataSave" fire="\QUI\ERP\Shipping\EventHandler::onQuiqqerOrderCustomerDataSave" /> + <event on="onQuiqqerOrderOrderProcessCheckoutOutput" + fire="\QUI\ERP\Shipping\EventHandler::onQuiqqerOrderOrderProcessCheckoutOutput" + /> <event on="onUserSaveBegin" fire="\QUI\ERP\Shipping\EventHandler::onUserSaveBegin" /> diff --git a/src/QUI/ERP/Shipping/EventHandler.php b/src/QUI/ERP/Shipping/EventHandler.php index 3fe98ca..fe90ad8 100644 --- a/src/QUI/ERP/Shipping/EventHandler.php +++ b/src/QUI/ERP/Shipping/EventHandler.php @@ -8,7 +8,7 @@ use QUI; use QUI\ERP\Products\Handler\Fields as ProductFields; -use QUI\ERP\Shipping\ShippingStatus\Handler; +use QUI\ERP\Order\Controls\OrderProcess\Checkout as OrderCheckoutStepControl; use \Quiqqer\Engine\Collector; /** @@ -210,6 +210,50 @@ public static function onOrderProcessCustomerDataEnd( $Collector->append($Control->create()); } + /** + * quiqqer/order: onQuiqqerOrderOrderProcessCheckoutOutput + * + * @param OrderCheckoutStepControl $Checkout + * @param string $text + * @return void + */ + public static function onQuiqqerOrderOrderProcessCheckoutOutput(OrderCheckoutStepControl $Checkout, string $text) + { + if (Shipping::getInstance()->shippingDisabled()) { + return; + } + + $Order = $Checkout->getOrder(); + + if (!$Order) { + return; + } + + $DeliveryAddress = $Order->getDeliveryAddress(); + + if ($DeliveryAddress->getId() === 0) { + $customerId = $Order->getCustomer()->getId(); + $Customer = QUI::getUsers()->get($customerId); + + $deliveryAddressId = $Customer->getAttribute('quiqqer.delivery.address'); + + if (!empty($deliveryAddressId)) { + try { + $DeliveryAddress = $Customer->getAddress($deliveryAddressId); + $ErpDeliveryAddres = new QUI\ERP\Address( + \json_decode($DeliveryAddress->toJSON(), true), + $Order->getCustomer() + ); + + $Order->setDeliveryAddress($ErpDeliveryAddres); + $Order->save(QUI::getUsers()->getSystemUser()); + } catch (\Exception $Exception) { + QUI\System\Log::writeException($Exception); + } + } + } + } + /** * @param QUI\ERP\Order\Controls\OrderProcess\CustomerData $CustomerData * -- GitLab