/** * @param Quote $quote * @param LifecycleEventArgs $event */ public function postPersist(Quote $quote, LifecycleEventArgs $event) { if ($quote->getQid()) { return; } $unitOfWork = $event->getEntityManager()->getUnitOfWork(); $changeSet = ['qid' => [null, $quote->getId()]]; $unitOfWork->scheduleExtraUpdate($quote, $changeSet); }
public function testPersistQuote() { /* @var $em EntityManager */ $em = static::getContainer()->get('doctrine')->getManagerForClass('OroB2BSaleBundle:Quote'); $quote = new Quote(); $quote->setOwner($this->getReference(LoadUserData::USER1)); $this->assertNull($quote->getQid()); $em->persist($quote); $this->assertEquals(null, $quote->getQid()); $em->flush(); $this->assertNotNull($quote->getId()); $em->clear(); $quote = $em->getRepository('OroB2BSaleBundle:Quote')->find($quote->getId()); $this->assertEquals($quote->getId(), $quote->getQid()); }
/** * @param ObjectManager $manager * @param Quote $quote * @param string $sku * @param array $items */ protected function addQuoteProduct(ObjectManager $manager, Quote $quote, $sku, $items) { $product = new QuoteProduct(); if ($this->hasReference($sku)) { $product->setProduct($this->getReference($sku)); } else { $product->setProductSku($sku); } foreach ($items as $index => $item) { $productOffer = new QuoteProductOffer(); $productOffer->setAllowIncrements($item['allow_increments'])->setQuantity($item['quantity'])->setPriceType($item['priceType'])->setPrice((new Price())->setValue($item['price'])->setCurrency($item['currency'])); if ($this->hasReference($item['unit'])) { $productOffer->setProductUnit($this->getReference($item['unit'])); } else { $productOffer->setProductUnitCode($item['unit']); } $manager->persist($productOffer); // e.g sale.quote.1.product.1.offer.1 $this->addReference($quote->getQid() . '.' . $sku . '.offer.' . ($index + 1), $productOffer); $product->addQuoteProductOffer($productOffer); } $manager->persist($product); $quote->addQuoteProduct($product); }