/** * 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 testSubbingWithBCMathAndExponent() { if (!extension_loaded('bcmath')) { $this->markTestSkipped('BCMath extension not loaded, test skipped'); return; } $this->assertEquals('700', Zend_Locale_Math::Sub(1000, '0.3e3')); }