public function testSetProductUnit()
 {
     $item = new QuoteProductRequest();
     $this->assertNull($item->getProductUnitCode());
     $item->setProductUnit((new ProductUnit())->setCode('kg'));
     $this->assertEquals('kg', $item->getProductUnitCode());
 }
 public function testAddQuoteProductRequest()
 {
     $quoteProduct = new QuoteProduct();
     $quoteProductRequest = new QuoteProductRequest();
     $this->assertNull($quoteProductRequest->getQuoteProduct());
     $quoteProduct->addQuoteProductRequest($quoteProductRequest);
     $this->assertEquals($quoteProduct, $quoteProductRequest->getQuoteProduct());
 }
 /**
  * @param QuoteProductRequest $item
  * @return string
  */
 public function formatRequest(QuoteProductRequest $item)
 {
     $default = $this->translator->trans('N/A');
     if (!$item->getQuantity() && !$item->getPrice()) {
         return $default;
     }
     return $this->translator->trans('orob2b.sale.quoteproductrequest.item', ['{units}' => $this->formatProductUnit($item, $default), '{price}' => $this->formatPrice($item, $default), '{unit}' => $this->formatUnitCode($item)]);
 }
 /**
  * @param QuoteProductRequest $inputData
  * @param array $expectedData
  *
  * @dataProvider preSetDataProvider
  */
 public function testPreSetData(QuoteProductRequest $inputData = null, array $expectedData = [])
 {
     $form = $this->factory->create($this->formType);
     $unitCode = $inputData ? $inputData->getProductUnitCode() : '';
     $this->translator->expects($expectedData['empty_value'] ? $this->once() : $this->never())->method('trans')->with($expectedData['empty_value'], ['{title}' => $unitCode])->will($this->returnValue($expectedData['empty_value']));
     $this->formType->preSetData(new FormEvent($form, $inputData));
     $this->assertTrue($form->has('productUnit'));
     $config = $form->get('productUnit')->getConfig();
     $this->assertEquals(ProductUnitSelectionType::NAME, $config->getType()->getName());
     $options = $form->get('productUnit')->getConfig()->getOptions();
     foreach ($expectedData as $key => $value) {
         $this->assertEquals($value, $options[$key], $key);
     }
 }
Пример #5
0
 /**
  * @param int $productId
  * @param float $quantity
  * @param string $unitCode
  * @param OptionalPrice $price
  * @return QuoteProductOffer
  */
 protected function getQuoteProductRequest($productId = null, $quantity = null, $unitCode = null, OptionalPrice $price = null)
 {
     $quoteProductRequest = new QuoteProductRequest();
     $quoteProductRequest->setQuoteProduct($this->getQuoteProduct($productId));
     if (null !== $quantity) {
         $quoteProductRequest->setQuantity($quantity);
     }
     if (null !== $unitCode) {
         $quoteProductRequest->setProductUnit($this->getEntity('OroB2B\\Bundle\\ProductBundle\\Entity\\ProductUnit', $unitCode, 'code'));
     }
     if (null !== $price) {
         $quoteProductRequest->setPrice($price);
     }
     return $quoteProductRequest;
 }
 /**
  * "Success" form handler
  *
  * @param RFPRequest $entity
  * @return bool
  */
 protected function onSuccess(RFPRequest $entity)
 {
     $quote = new Quote();
     $quote->setRequest($entity)->setOwner($this->user)->setAccount($entity->getAccount())->setAccountUser($entity->getAccountUser())->setOrganization($this->user->getOrganization());
     foreach ($entity->getRequestProducts() as $requestProduct) {
         $quoteProduct = new QuoteProduct();
         $quoteProduct->setProduct($requestProduct->getProduct())->setType(QuoteProduct::TYPE_REQUESTED)->setCommentAccount($requestProduct->getComment());
         foreach ($requestProduct->getRequestProductItems() as $requestProductItem) {
             $quoteProductRequest = new QuoteProductRequest();
             $quoteProductRequest->setQuantity($requestProductItem->getQuantity())->setPrice($requestProductItem->getPrice())->setProductUnit($requestProductItem->getProductUnit())->setRequestProductItem($requestProductItem);
             $quoteProduct->addQuoteProductRequest($quoteProductRequest);
             $quoteProductOffer = new QuoteProductOffer();
             $quoteProductOffer->setQuantity($requestProductItem->getQuantity())->setProductUnit($requestProductItem->getProductUnit())->setPriceType(QuoteProductOffer::PRICE_TYPE_UNIT)->setAllowIncrements(true);
             $quoteProduct->addQuoteProductOffer($quoteProductOffer);
         }
         $quote->addQuoteProduct($quoteProduct);
     }
     try {
         $this->manager->persist($quote);
         $this->manager->flush();
         $this->quote = $quote;
     } catch (DBALException $e) {
         $this->exception = $e;
         return false;
     }
     return true;
 }
 /**
  * @param QuoteProduct $quoteProduct
  * @param RFPRequestProduct $requestProduct
  */
 protected function processRequestProductItems(QuoteProduct $quoteProduct, RFPRequestProduct $requestProduct)
 {
     foreach ($requestProduct->getRequestProductItems() as $requestProductItem) {
         $quoteProductRequest = new QuoteProductRequest();
         $quoteProductRequest->setPrice($requestProductItem->getPrice())->setQuantity($requestProductItem->getQuantity())->setProductUnit($requestProductItem->getProductUnit());
         $quoteProduct->addQuoteProductRequest($quoteProductRequest);
     }
 }