diff --git a/src/Event/Product/PostFlushEvent.php b/src/Event/Product/PostFlushEvent.php new file mode 100644 index 00000000..99acb0ab --- /dev/null +++ b/src/Event/Product/PostFlushEvent.php @@ -0,0 +1,21 @@ +product; + } +} diff --git a/src/Processor/Resource/Product/ProductModelResourceProcessor.php b/src/Processor/Resource/Product/ProductModelResourceProcessor.php index ead25af6..ed499b31 100644 --- a/src/Processor/Resource/Product/ProductModelResourceProcessor.php +++ b/src/Processor/Resource/Product/ProductModelResourceProcessor.php @@ -16,6 +16,7 @@ use Synolia\SyliusAkeneoPlugin\Checker\Product\IsProductProcessableCheckerInterface; use Synolia\SyliusAkeneoPlugin\Event\Product\AfterProcessingProductEvent; use Synolia\SyliusAkeneoPlugin\Event\Product\BeforeProcessingProductEvent; +use Synolia\SyliusAkeneoPlugin\Event\Product\PostFlushEvent; use Synolia\SyliusAkeneoPlugin\Processor\Product\ProductProcessorChainInterface; use Synolia\SyliusAkeneoPlugin\Processor\ProductGroup\ProductGroupProcessor; use Synolia\SyliusAkeneoPlugin\Processor\Resource\AkeneoResourceProcessorInterface; @@ -69,6 +70,7 @@ public function process(array $resource): void $this->dispatcher->dispatch(new AfterProcessingProductEvent($resource, $product)); $this->entityManager->flush(); + $this->dispatcher->dispatch(new PostFlushEvent($resource, $product)); } catch (ORMInvalidArgumentException $ormInvalidArgumentException) { ++$this->retryCount; usleep($this->retryWaitTime); diff --git a/src/Processor/Resource/ProductVariant/SimpleProductVariantResourceProcessor.php b/src/Processor/Resource/ProductVariant/SimpleProductVariantResourceProcessor.php index ec72df16..66c03d50 100644 --- a/src/Processor/Resource/ProductVariant/SimpleProductVariantResourceProcessor.php +++ b/src/Processor/Resource/ProductVariant/SimpleProductVariantResourceProcessor.php @@ -16,6 +16,7 @@ use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use Synolia\SyliusAkeneoPlugin\Event\Product\AfterProcessingProductEvent; use Synolia\SyliusAkeneoPlugin\Event\Product\BeforeProcessingProductEvent; +use Synolia\SyliusAkeneoPlugin\Event\Product\PostFlushEvent; use Synolia\SyliusAkeneoPlugin\Event\ProductVariant\AfterProcessingProductVariantEvent; use Synolia\SyliusAkeneoPlugin\Event\ProductVariant\BeforeProcessingProductVariantEvent; use Synolia\SyliusAkeneoPlugin\Processor\Product\ProductProcessorChainInterface; @@ -91,8 +92,9 @@ public function process(array $resource): void $product = $this->getOrCreateEntity($resource); $this->productProcessorChain->chain($product, $resource); - $this->dispatcher->dispatch(new AfterProcessingProductEvent($resource, $product)); + $this->entityManager->flush(); + $this->dispatcher->dispatch(new PostFlushEvent($resource, $product)); $this->dispatcher->dispatch(new BeforeProcessingProductVariantEvent($resource, $product));