From a784d12ad3a85b37d652aefe67e7cefc7e18de10 Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Thu, 4 Sep 2025 15:31:11 +0200 Subject: [PATCH] Only create supports for checkouts going into charge status --- .../GatewayCheckoutSupportsListener.php | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/EventListener/GatewayCheckoutSupportsListener.php b/src/EventListener/GatewayCheckoutSupportsListener.php index a43956a..2249e88 100644 --- a/src/EventListener/GatewayCheckoutSupportsListener.php +++ b/src/EventListener/GatewayCheckoutSupportsListener.php @@ -21,19 +21,27 @@ class GatewayCheckoutSupportsListener { public function preFlush(Checkout $checkout, PreFlushEventArgs $args): void { - if (!$checkout->isCharged()) { - return; - } - - $supports = $this->prepareSupports($checkout); - /** @var EntityManagerInterface */ $em = $args->getObjectManager(); $uow = $em->getUnitOfWork(); - foreach ($supports as $support) { - $em->persist($support); - $uow->computeChangeSet($em->getClassMetadata(Support::class), $support); + foreach ($uow->getScheduledEntityUpdates() as $entity) { + if (!$entity instanceof Checkout) { + continue; + } + + $changes = $uow->getEntityChangeSet($entity); + + if (!isset($changes['status']) || !$entity->isCharged()) { + continue; + } + + $supports = $this->prepareSupports($entity); + + foreach ($supports as $support) { + $em->persist($support); + $uow->computeChangeSet($em->getClassMetadata(Support::class), $support); + } } }