/** * 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(); } } }
/** * insert delivery */ function insertDelivery($order_data) { require_once 'models/ecommerce/ecommerce_basket.php'; $Basket = new ecommerce_basket(); $Basket->setCacheable(false); $basket = $Basket->getFullDetail($order_data['basket_id']); $include_vat = $this->isVatEligible($order_data['delivery_address_id'], $basket['customer_id']); $Basket->calculateBasketSubTotals($basket, $include_vat); $code = $order_data['other_data']['promotion_code']; $verify_code = false; $promotion_detail = $Basket->calculateBasketDiscount($basket, $code, $verify_code); require_once 'models/ecommerce/ecommerce_delivery.php'; $Delivery = new ecommerce_delivery(); $delivery = $Delivery->calculateDelivery($basket, $order_data['other_data']['delivery_options']['carrier_id'], $order_data['delivery_address_id'], $promotion_detail); //prepare object require_once 'models/ecommerce/ecommerce_delivery.php'; $Ecommerce_Delivery = new ecommerce_delivery(); //format data $delivery_data['order_id'] = $order_data['id']; $delivery_data['carrier_id'] = $order_data['other_data']['delivery_options']['carrier_id']; $delivery_data['value_net'] = $delivery['value_net']; $delivery_data['vat'] = $delivery['vat']; $delivery_data['vat_rate'] = $delivery['vat_rate']; $delivery_data['required_datetime'] = $order_data['other_data']['delivery_options']['required_datetime']; $delivery_data['note_customer'] = ''; $delivery_data['note_backoffice'] = ''; $delivery_data['other_data'] = $order_data['other_data']['delivery_options']['other_data']; $delivery_data['weight'] = $delivery['weight']; //insert if ($id = $Ecommerce_Delivery->insertDelivery($delivery_data)) { return $id; } else { return false; } }