public function getPriceForDays($days) { $price = Price::fromString('0', $this->price->getCurrency()); while ($days > 0) { $days -= $this->unitInDays; $price = $price->add($this->price); } return $price; }
/** * Returns the amount minus percentage from Measure. * * @param Price $forAmount * @return Price */ public function discountedAmount($forAmount) { if ($this->owner->UsePercentageColumn) { $price = new Price(); if ($forAmount instanceof Money) { $price->setAmount($forAmount->getAmount()); $price->setCurrency($forAmount->getCurrency()); } else { $price->setAmount($forAmount); $price->setCurrency(ShopConfig::current_shop_config()->BaseCurrency); } // only recalculate if there is a percentage if ($this->owner->Measure != 0) { $original = $price->getAmount(); $percentage = Zend_Locale_Math::Div($this->owner->Measure, self::OneHundred, 10); $difference = Zend_Locale_Math::Mul($original, $percentage, 10); $price->setAmount(Zend_Locale_Math::Sub($original, $difference, 10)); } return $price; } return null; }
/** * @param Price $priceToSubtract * @return Price */ public function subtract(Price $priceToSubtract) { $this->checkCurrencies($this->getCurrency(), $priceToSubtract->getCurrency()); if ($this->isGreaterThan($priceToSubtract)) { $newGross = $this->getGross() - $priceToSubtract->getGross(); $newNett = $this->getNett() - $priceToSubtract->getNett(); return new Price($newNett, $newGross, $this->getCurrencySymbol(), $this->getTaxForPrices($this, $priceToSubtract)); } return Price::buildEmpty($this->getCurrencySymbol()); }
/** * @param Price $other */ private function currencyGuard(Price $other) { if (!$this->getCurrency()->equals($other->getCurrency())) { throw new \InvalidArgumentException(); } }
public function testGetters() { $cartItem = new Price(123, new Currency(Currency::USD)); $this->assertSame(123, $cartItem->getAmount()); $this->assertSame(Currency::USD, $cartItem->getCurrency()->getValue()); }