예제 #1
0
 /**
  * @param money $amount
  * @return money
  */
 public function add(Money $amount)
 {
     if (!$this->currency->equals($amount->getCurrency())) {
         throw new \InvalidArgumentException('Currency mismatch');
     }
     return new Money($this->currency, $this->amount + $amount->getValue());
 }
예제 #2
0
 public function testValueCanBeReturned()
 {
     $amount = 123;
     $money = new Money(new USD(), $amount);
     $this->assertEquals($amount, $money->getValue());
 }
예제 #3
0
 /**
  * @param Money $another
  *
  * @return bool
  */
 public function greaterThan(Money $another)
 {
     return bccomp($this->getValue(), $another->getValue(), self::PRECISION) > 0;
 }
예제 #4
0
파일: Price.php 프로젝트: ayeo/price
 /**
  * @param float $grossValue
  * @return Price
  */
 public function addGross($grossValue)
 {
     $gross = new Money($grossValue);
     $newGross = $this->getGross() + $gross->getValue();
     return new Price($this->getTax()->calculateNett($newGross), $newGross, $this->getCurrencySymbol(), $this->tax->getValue());
 }
예제 #5
0
파일: Money.php 프로젝트: ayeo/price
 /**
  * @param Money $money
  * @return bool
  */
 public function isGreaterThan(Money $money)
 {
     //floating point calculations precision problem here
     return round($this->getValue(), 6) > round($money->getValue(), 6);
 }
예제 #6
0
 /**
  * compare
  * 
  * Compares two instances for equality. Returns a value suitable for a sort
  * callback. i.e. 1 if $first is larger than $second, 0 if equal, and -1 if
  * $first is smaller than $second.
  * 
  * @param Money $first
  * @param Money $second
  * @return int -1, 0, or 1
  */
 public function compare(Money $first, Money $second)
 {
     $secondValue = $first->getCurrency()->getCode() === $second->getCurrency()->getCode() ? $second->getValue() : $this->converter->convert($second, $first->getCurrency())->getValue();
     return bccomp($first->getValue(), $secondValue, max([$first->getPrecision(), $second->getPrecision()]));
 }
예제 #7
0
 /**
  * normalizeMoneyValue
  * 
  * Returns the value of $second in terms of $first's currency.
  * 
  * @param Money $first
  * @param Money $second
  * @return string
  */
 private function normalizeMoneyValue(Money $first, Money $second)
 {
     return $first->getCurrency()->getCode() === $second->getCurrency()->getCode() ? $second->getValue() : $this->converter->convert($second, $first->getCurrency())->getValue();
 }