/** * Returns amount reduced by $this->Measure. * * @param Price|number $amount * @param $discount * @return Price */ public function discountedAmount($forAmount) { if ($this->owner->UsePriceColumn) { $price = new Price(); $price->setCurrency(ShopConfig::current_shop_config()->BaseCurrency); if ($forAmount instanceof Money) { $price->setAmount($forAmount->getAmount()); } else { $price->setAmount($forAmount); } $price->setAmount(Zend_Locale_Math::Sub($price->getAmount(), $this->owner->Measure, 10)); return $price; } return null; }
/** * 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; }
public function add(Price $price) { $scale = max($this->getScale(), $price->getScale()); return new Price(bcadd($this->amount, $price->getAmount(), $scale)); }
public function testGetters() { $cartItem = new Price(123, new Currency(Currency::USD)); $this->assertSame(123, $cartItem->getAmount()); $this->assertSame(Currency::USD, $cartItem->getCurrency()->getValue()); }