Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function load(ObjectManager $manager)
 {
     foreach ($this->data as $data) {
         /** @var Product $product */
         $product = $this->getReference($data['product']);
         /** @var PriceList $priceList */
         $priceList = $this->getReference($data['priceList']);
         /** @var ProductUnit $unit */
         $unit = $this->getReference($data['unit']);
         $price = Price::create($data['price'], $data['currency']);
         $productPrice = new ProductPrice();
         $productPrice->setPriceList($priceList)->setUnit($unit)->setQuantity($data['qty'])->setPrice($price)->setProduct($product);
         $manager->persist($productPrice);
         $this->setReference($data['reference'], $productPrice);
     }
     $manager->flush();
 }
 /**
  * @return ProductPrice
  */
 public function getProductPrice()
 {
     $priceList = new PriceList();
     $priceList->setCurrencies(['USD', 'EUR']);
     $productPrice = new ProductPrice();
     $productPrice->setPriceList($priceList);
     return $productPrice;
 }
 /**
  * @return array
  */
 public function submitProvider()
 {
     $product = new Product();
     $product->setSku('sku_test_001');
     $productUnitPrecision = new ProductUnitPrecision();
     $productUnitPrecision->setUnit((new ProductUnit())->setCode('kg'));
     $productUnitPrecision->setPrecision(5);
     $existingUnit = (new ProductUnit())->setCode('kg');
     $existingPrice = (new Price())->setValue(42)->setCurrency('USD');
     $product->addUnitPrecision($productUnitPrecision);
     /** @var PriceList $existingProductPriceList */
     $existingProductPriceList = $this->getEntity('OroB2B\\Bundle\\PricingBundle\\Entity\\PriceList', 1);
     $existingProductPrice = new ProductPrice();
     $existingProductPrice->setProduct($product)->setPriceList($existingProductPriceList)->setQuantity(123)->setUnit($existingUnit)->setPrice($existingPrice);
     /** @var PriceList $expectedPriceList */
     $expectedPriceList = $this->getEntity('OroB2B\\Bundle\\PricingBundle\\Entity\\PriceList', 2);
     $expectedUnit = (new ProductUnit())->setCode('item');
     $expectedPrice = (new Price())->setValue(43)->setCurrency('EUR');
     $expectedProductPrice = new ProductPrice();
     $expectedProductPrice->setPriceList($expectedPriceList)->setQuantity(124)->setUnit($expectedUnit)->setPrice($expectedPrice)->setProduct($product);
     $updatedExpectedProductPrice = clone $expectedProductPrice;
     $updatedExpectedProductPrice->setProduct($product);
     return ['product price with data' => ['defaultData' => (new ProductPrice())->setProduct($product)->setUnit($existingUnit), 'submittedData' => ['priceList' => 2, 'quantity' => 124, 'unit' => 'item', 'price' => ['value' => 43, 'currency' => 'EUR']], 'expectedData' => $expectedProductPrice], 'product price with precision' => ['defaultData' => $existingProductPrice, 'submittedData' => ['priceList' => 2, 'quantity' => 124, 'unit' => 'item', 'price' => ['value' => 43, 'currency' => 'EUR']], 'expectedData' => $updatedExpectedProductPrice, 'expectedOptions' => ['precision' => 5]]];
 }
 /**
  * @return array
  */
 public function submitProvider()
 {
     $priceList = new PriceList();
     $priceList->setCurrencies(['GBP']);
     /** @var Product $expectedProduct */
     $expectedProduct = $this->getProductEntityWithPrecision(2, 'kg', 3);
     $expectedPrice1 = (new Price())->setValue(42)->setCurrency('USD');
     $expectedPrice2 = (new Price())->setValue(42)->setCurrency('GBP');
     $expectedProductPrice = new ProductPrice();
     $expectedProductPrice->setProduct($expectedProduct)->setQuantity(123)->setUnit($expectedProduct->getUnitPrecision('kg')->getUnit())->setPrice($expectedPrice1)->setPriceList($priceList);
     $expectedProductPrice2 = clone $expectedProductPrice;
     $expectedProductPrice2->setQuantity(123.556)->setPrice($expectedPrice2);
     $defaultProductPrice = new ProductPrice();
     $defaultProductPrice->setPriceList($priceList);
     return ['product price without data' => ['defaultData' => $defaultProductPrice, 'submittedData' => [], 'expectedData' => clone $defaultProductPrice, 'rounding' => false], 'product price with data' => ['defaultData' => clone $defaultProductPrice, 'submittedData' => ['product' => 2, 'quantity' => 123, 'unit' => 'kg', 'price' => ['value' => 42, 'currency' => 'USD']], 'expectedData' => $expectedProductPrice, 'rounding' => true], 'product price with data for rounding' => ['defaultData' => clone $defaultProductPrice, 'submittedData' => ['product' => 2, 'quantity' => 123.5555, 'unit' => 'kg', 'price' => ['value' => 42, 'currency' => 'GBP']], 'expectedData' => $expectedProductPrice2, 'rounding' => true]];
 }
 /**
  * Create product form
  *
  * @Route(
  *      "/create/{priceListId}",
  *      name="orob2b_product_price_create_widget",
  *      requirements={"priceListId"="\d+"}
  * )
  * @Template("OroB2BPricingBundle:ProductPrice:widget/update.html.twig")
  * @Acl(
  *      id="orob2b_pricing_product_price_create",
  *      type="entity",
  *      class="OroB2BPricingBundle:ProductPrice",
  *      permission="CREATE"
  * )
  * @ParamConverter("priceList", class="OroB2BPricingBundle:PriceList", options={"id" = "priceListId"})
  *
  * @param PriceList $priceList
  * @return array|RedirectResponse
  */
 public function createAction(PriceList $priceList)
 {
     $productPrice = new ProductPrice();
     $productPrice->setPriceList($priceList);
     return $this->update($productPrice);
 }
 /**
  * @return ProductPrice
  */
 protected function createProductPrice()
 {
     /** @var Product $product */
     $product = $this->getReference('product.1');
     /** @var PriceList $priceList */
     $priceList = $this->getReference('price_list_1');
     /** @var ProductUnit $unit */
     $unit = $this->getReference('product_unit.liter');
     $price = Price::create(1.2, 'USD');
     $newProductPrice = new ProductPrice();
     $newProductPrice->setPriceList($priceList)->setProduct($product)->setQuantity(1)->setPrice($price)->setUnit($unit);
     return $newProductPrice;
 }
 /**
  * @return ProductPrice
  */
 public function getProductPrice()
 {
     $unit = new ProductUnit();
     $unit->setCode('kg');
     $unitPrecision = new ProductUnitPrecision();
     $unitPrecision->setUnit($unit)->setPrecision(3);
     $product = new Product();
     $product->setSku('testSku')->addUnitPrecision($unitPrecision);
     $price = new Price();
     $price->setValue('50')->setCurrency('USD');
     $productPrice = new ProductPrice();
     $productPrice->setPriceList(new PriceList())->setProduct($product)->setQuantity('10')->setPrice($price);
     return $productPrice;
 }