/** * 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(); } } }
/** * main action */ public function mainAction() { /** * Input data */ if (is_numeric($this->GET['id'])) { $order_id = $this->GET['id']; } else { return false; } /** * Create objects */ require_once 'models/ecommerce/ecommerce_order.php'; $Order = new ecommerce_order(); require_once 'models/ecommerce/ecommerce_delivery.php'; $Delivery = new ecommerce_delivery(); /** * Get details for order to be able make a security check */ if (is_numeric($order_id)) { $order_data = $Order->getOrder($order_id); } //security check of owner if ($order_data['basket']['customer_id'] !== $_SESSION['client']['customer']['id'] && !Onxshop_Bo_Authentication::getInstance()->isAuthenticated()) { msg('unauthorized access to view transaction detail', 'error'); } else { $delivery_list = $Delivery->getDeliveryListByOrderId($order_id); //print_r($transaction_list); if (is_array($delivery_list)) { foreach ($delivery_list as $item) { $item['other_data'] = unserialize($item['other_data']); if ($item['customer_note'] == "") { $item['customer_note'] = 'n/a'; } $this->tpl->assign('ITEM', $item); $this->tpl->parse('content.item'); } } } return true; }
/** * 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; } }