/** * Calculate * * @return void */ public function calculate() { $cost = null; if ($this->isShippable()) { $rate = $this->getSelectedRate(); if (isset($rate)) { $cost = $this->getOrder()->getCurrency()->roundValue($rate->getTotalRate()); } $this->addOrderSurcharge($this->code, doubleval($cost), false, isset($cost)); } else { foreach ($this->order->getSurcharges() as $s) { if ($s->getType() == $this->type && $s->getCode() == $this->code) { $this->order->getSurcharges()->remove($s); \XLite\Core\Database::geEM()->remove($s); } } } }