/** * {@inheritdoc} * * @param RequestProductItemEntity $requestProductItem * @param Constraint|RequestProductItem $constraint */ public function validate($requestProductItem, Constraint $constraint) { if (!$requestProductItem instanceof RequestProductItemEntity) { throw new UnexpectedTypeException($requestProductItem, 'OroB2B\\Bundle\\RFPBundle\\Entity\\RequestProductItem'); } if (null === ($requestProduct = $requestProductItem->getRequestProduct())) { $this->addViolation($constraint); return; } if (null === ($product = $requestProduct->getProduct())) { $this->addViolation($constraint); return; } if ([] === ($allowedUnits = $product->getAvailableUnitCodes())) { $this->addViolation($constraint); return; } if (null === ($productUnit = $requestProductItem->getProductUnit())) { $this->addViolation($constraint); return; } if (!in_array($productUnit->getCode(), $allowedUnits, true)) { $this->addViolation($constraint); return; } }
/** * @depends testProperties */ public function testAddRequestProductItem() { $requestProduct = new RequestProduct(); $requestProductItem = new RequestProductItem(); $this->assertNull($requestProductItem->getRequestProduct()); $requestProduct->addRequestProductItem($requestProductItem); $this->assertEquals($requestProduct, $requestProductItem->getRequestProduct()); }
public function testUpdatePrice() { $item = new RequestProductItem(); $item->setPrice(Price::create(11, 'EUR')); $item->updatePrice(); $this->assertEquals(11, $this->getProperty($item, 'value')); $this->assertEquals('EUR', $this->getProperty($item, 'currency')); }
/** * @param RequestProductItem $inputData * @param array $expectedData * * @dataProvider preSetDataProvider */ public function testPreSetData(RequestProductItem $inputData = null, array $expectedData = []) { $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'])); $form = $this->factory->create($this->formType); $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); } }
/** * "Success" form handler * * @param ShoppingList $entity * @return bool */ protected function onSuccess(ShoppingList $entity) { $rfpRequest = new RFPRequest(); $rfpRequest->setFirstName($this->user->getFirstName())->setLastName($this->user->getLastName())->setEmail($this->user->getEmail())->setPhone('')->setRole('')->setBody('')->setCompany($this->user->getOrganization() ? $this->user->getOrganization()->getName() : '')->setAccountUser($this->user)->setAccount($this->user->getAccount())->setStatus($this->requestStatus); foreach ($entity->getLineItems() as $shoppingListLineItem) { $requestProduct = new RequestProduct(); $requestProduct->setProduct($shoppingListLineItem->getProduct()); $requestProductItem = new RequestProductItem(); $requestProductItem->setQuantity($shoppingListLineItem->getQuantity())->setProductUnit($shoppingListLineItem->getUnit()); $requestProduct->addRequestProductItem($requestProductItem); $rfpRequest->addRequestProduct($requestProduct); } try { $this->manager->persist($rfpRequest); $this->manager->flush(); $this->rfpRequest = $rfpRequest; } catch (DBALException $e) { $this->exception = $e; return false; } return true; }
/** * @param Request $request * @param ObjectManager $manager */ protected function processRequestProducts(Request $request, ObjectManager $manager) { $products = $this->getProducts($manager); $currencies = $this->getCurrencies(); for ($i = 0; $i < rand(1, 10); $i++) { $product = $products[rand(0, count($products) - 1)]; $unitPrecisions = $product->getUnitPrecisions(); if (!count($unitPrecisions)) { continue; } $requestProduct = new RequestProduct(); $requestProduct->setProduct($product); $requestProduct->setComment(sprintf('Notes %s', $i)); for ($j = 0; $j < rand(1, 10); $j++) { $productUnit = $unitPrecisions[rand(0, count($unitPrecisions) - 1)]->getUnit(); $currency = $currencies[rand(0, count($currencies) - 1)]; $requestProductItem = new RequestProductItem(); $requestProductItem->setPrice(Price::create(rand(1, 100), $currency))->setQuantity(rand(1, 100))->setProductUnit($productUnit); $requestProduct->addRequestProductItem($requestProductItem); } $request->addRequestProduct($requestProduct); } }
/** * @param int $productId * @param int $quantity * @param string $unitCode * @param OptionalPrice $price * @return RequestProductItem */ protected function getRequestProductItem($productId, $quantity = null, $unitCode = null, OptionalPrice $price = null) { $requestProductItem = new RequestProductItem(); $requestProductItem->setRequestProduct($this->getRequestProduct($productId)); if (null !== $quantity) { $requestProductItem->setQuantity($quantity); } if (null !== $unitCode) { $requestProductItem->setProductUnit($this->getEntity('OroB2B\\Bundle\\ProductBundle\\Entity\\ProductUnit', $unitCode, 'code')); } if (null !== $price) { $requestProductItem->setPrice($price); } return $requestProductItem; }