/**
  * @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);
 }