public function calcTax($zip, Money $amount) { if ($zip === null) { return Money::fromFloat(0); } else { switch ($this->getMarketId()) { case Market::MARKET_NEW_ZEALAND: // New Zealand // New Zealand case Market::MARKET_AUSTRALIA: // Australia Mate // Australia Mate case Market::MARKET_GERMANY: // Germany // Germany case Market::MARKET_SPAIN: // Spain // Spain case Market::MARKET_FRANCE: // France // France case Market::MARKET_UNITED_KINGDOM: // United Kingdom return Money::fromFloat(0); break; case Market::MARKET_CANADA: //canada return Money::fromFloat(0); break; case Market::MARKET_USA: //US //US default: $useTax = ClassRegistry::init('Usetax'); break; } $rate = (double) $useTax->getTaxRate($zip); return $amount->copy()->times($rate); } }
/** * @return Money * @param Money $m */ public function subtract(Money $m) { return $this->add($m->copy()->makeNegative()); }