public function testCreate() { $productQuantityDiscount = $this->dummyData->getProductQuantityDiscount(); $catalogPromotion = $this->dummyData->getCatalogPromotion(); $this->pricing->setProductQuantityDiscounts([$productQuantityDiscount]); $this->pricing->setCatalogPromotions([$catalogPromotion]); $this->assertTrue($this->pricing->getPrice(new Product(), 1) instanceof Price); $this->assertTrue($this->pricing->getDate() instanceof DateTime); $this->assertTrue($this->pricing->getProductQuantityDiscounts()[0] instanceof ProductQuantityDiscount); $this->assertTrue($this->pricing->getCatalogPromotions()[0] instanceof CatalogPromotion); }
private function calculateProductQuantityDiscounts() { foreach ($this->pricing->getProductQuantityDiscounts() as $productQuantityDiscount) { if ($productQuantityDiscount->isValid($this->pricing->getDate(), $this->quantity)) { $this->price->unitPrice = $productQuantityDiscount->getUnitPrice($this->price->unitPrice); $this->price->addProductQuantityDiscount($productQuantityDiscount); break; } } // No prices below zero! $this->price->unitPrice = max(0, $this->price->unitPrice); }