From 13cd94d994dc6f2abcaff830cda55c37f66f4d37 Mon Sep 17 00:00:00 2001 From: Jaap Jansma Date: Wed, 4 May 2022 16:15:50 +0200 Subject: [PATCH] Verbeteringen nav testen --- composer.json | 2 +- .../PackageSlipStatusChangedListener.php | 54 ++++++++++++++----- 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index 2488f84..e9a6e46 100644 --- a/composer.json +++ b/composer.json @@ -3,7 +3,7 @@ "description":"Isotope Packaging Slip Update Order status.", "type": "contao-bundle", "license":"AGPL-3.0-or-later", - "version": "1.0.0", + "version": "1.0.1", "require": { "contao/core-bundle": "^4.9", "isotope/isotope-core": "^2.6", diff --git a/src/EventListener/PackageSlipStatusChangedListener.php b/src/EventListener/PackageSlipStatusChangedListener.php index 65713df..588838b 100644 --- a/src/EventListener/PackageSlipStatusChangedListener.php +++ b/src/EventListener/PackageSlipStatusChangedListener.php @@ -19,6 +19,7 @@ namespace Krabo\IsotopePackagingSlipOrderStatusUpdateBundle\EventListener; use Contao\System; +use Isotope\Model\ProductCollection\Order; use Krabo\IsotopePackagingSlipBundle\Event\Events; use Krabo\IsotopePackagingSlipBundle\Event\StatusChangedEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -60,22 +61,49 @@ public static function getSubscribedEvents() { * @return void */ public function onStatusChanged(StatusChangedEvent $event) { + foreach ($event->getPackagingSlip()->getOrders() as $order) { + if ($order->isPaid()) { + $this->updatePaidStatus($order, $event->getNewStatus()); + } else { + $this->updateUnpaidStatus($order, $event->getNewStatus()); + } + } + } + + /** + * @param \Isotope\Model\ProductCollection\Order $order + * @param $newPackagingSlipStatus + * + * @return void + */ + protected function updatePaidStatus(Order $order, $newPackagingSlipStatus) { + if (!$order->isPaid()) { + return; + } $configs = System::getContainer()->getParameter('krabo.isotope-packaging-slip-order-status_update.config'); - $statusUpdated = false; foreach($configs as $config) { - if ($config['packaging_slip_status'] == $event->getNewStatus()) { - foreach ($event->getPackagingSlip()->getOrders() as $order) { - if ($config['order_is_paid'] && $order->isPaid()) { - $order->updateOrderStatus($config['order_status_id']); - $statusUpdated = true; - } elseif (!$config['order_is_paid'] && !$order->isPaid()) { - $order->updateOrderStatus($config['order_status_id']); - $statusUpdated = true; - } - } + if ($config['order_is_paid'] && $config['packaging_slip_status'] == $newPackagingSlipStatus) { + $order->updateOrderStatus($config['order_status_id']); + break; } - if ($statusUpdated) { - // Stop at the first processed rule. + } + } + + /** + * @param \Isotope\Model\ProductCollection\Order $order + * @param $newPackagingSlipStatus + * + * @return void + */ + protected function updateUnpaidStatus(Order $order, $newPackagingSlipStatus) { + if ($order->isPaid()) { + return; + } + $configs = System::getContainer()->getParameter('krabo.isotope-packaging-slip-order-status_update.config'); + foreach($configs as $config) { + if (!$config['order_is_paid'] && $config['packaging_slip_status'] == $newPackagingSlipStatus) { + $order->updateOrderStatus($config['order_status_id']); + $this->updatePaidStatus($order, $newPackagingSlipStatus); break; } }