/** * calculateDiscountAndDelivery */ protected function calculateDiscountAndDelivery(&$basket) { $Delivery = new ecommerce_delivery(); // order exists? if ($this->orderFinished($basket['id'], $this->GET['order_id'])) { $Promotion = new ecommerce_promotion(); $Promotion->setCacheable(false); // get data from database $code = $Promotion->getPromotionCodeForOrder($this->GET['order_id']); $verify_code = false; $this->Basket->calculateBasketDiscount($basket, $code, $verify_code); $basket['delivery'] = $Delivery->getDeliveryByOrderId($this->GET['order_id']); } else { // calculate data $code = $_SESSION['promotion_code']; $verify_code = true; $promotion_detail = $this->Basket->calculateBasketDiscount($basket, $code, $verify_code); $this->Basket->saveDiscount($basket); if ($this->guest_customer) { $basket['delivery'] = $Delivery->calculateDeliveryForCountry($basket, $this->delivery_options['carrier_id'], $this->delivery_country, $promotion_detail); } else { $basket['delivery'] = $Delivery->calculateDelivery($basket, $this->delivery_options['carrier_id'], $this->delivery_address_id, $promotion_detail); } // this only applies when using wizard checkout if ($basket['delivery'] == false) { $this->redirectToDeliveryOptionsPage(); } } }
/** * get promotion code */ function getPromotionCode($order_id) { if (!is_numeric($order_id)) { return false; } require_once 'models/ecommerce/ecommerce_promotion.php'; $Promotion = new ecommerce_promotion(); return $Promotion->getPromotionCodeForOrder($order_id); }