Пример #1
0
 /**
  * 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;
     }
 }
Пример #2
0
 /**
  * main action
  */
 public function mainAction()
 {
     /**
      * get input
      */
     if (is_array($_POST['order'])) {
         $order_data = $_POST['order'];
     } else {
         $order_data = array();
     }
     /**
      * get node configuration
      */
     require_once 'models/common/common_node.php';
     $node_conf = common_node::initConfiguration();
     $this->tpl->assign('NODE_CONF', $node_conf);
     /**
      * init basket
      */
     require_once 'models/ecommerce/ecommerce_order.php';
     require_once 'models/ecommerce/ecommerce_basket.php';
     $Order = new ecommerce_order();
     $Basket = new ecommerce_basket();
     $Order->setCacheable(false);
     $Basket->setCacheable(false);
     //temp
     if ($_POST['client']['customer']['currency_code']) {
         $currency_code = $_POST['client']['customer']['currency_code'];
     } else {
         $currency_code = $_SESSION['client']['customer']['currency_code'];
     }
     if ($_SESSION['client']['customer']['id'] > 0) {
         if (is_numeric($basket_id = $_SESSION['basket']['id'])) {
             //update basket
             $basket_detail = $Basket->detail($basket_id);
             $basket_detail['customer_id'] = $_SESSION['client']['customer']['id'];
             $Basket->update($basket_detail);
             //insert order
             if (isset($_POST['confirm'])) {
                 if ($_POST['order_terms_agreed'] == 'on') {
                     //insert only orders with some items in the basket :)
                     $basket_content = $Basket->getFullDetail($basket_id);
                     if (count($basket_content['items']) > 0) {
                         $order_data = $_POST['order'];
                         $order_data['basket_id'] = $_SESSION['basket']['id'];
                         $order_data['invoices_address_id'] = $_SESSION['client']['customer']['invoices_address_id'];
                         $order_data['delivery_address_id'] = $_SESSION['client']['customer']['delivery_address_id'];
                         $order_data['other_data']['delivery_options'] = $_SESSION['delivery_options'];
                         $order_data['other_data']['promotion_code'] = $_SESSION['promotion_code'];
                         $order_data['php_session_id'] = session_id();
                         if ($inserted_order_id = $Order->insertOrder($order_data)) {
                             $_SESSION['promotion_code'] = null;
                             $_SESSION['basket']['id'] = null;
                             //forward to payment page with pre-selected payment method
                             //onxshopGoTo("page/" . $node_conf['id_map-payment'] . "?order_id=$inserted_order_id&selected_poyment_type={$order_data['payment_type']}");
                             onxshopGoTo("page/" . $node_conf['id_map-payment'] . "?order_id={$inserted_order_id}");
                         }
                     } else {
                         msg("Can't insert an empty order.", 'error');
                     }
                 } else {
                     msg("You must agree with our Terms & Conditions", 'error');
                 }
             }
         }
         /**
          * prepare list of payment options
          */
         require_once 'models/ecommerce/ecommerce_transaction.php';
         $Transaction = new ecommerce_transaction();
         $transaction_type_allowed = $Transaction->conf['allowed_types'];
         foreach ($transaction_type_allowed as $type) {
             $this->tpl->parse("content.{$type}");
         }
         /**
          * gift option
          */
         if ($_SESSION['gift'] == 1) {
             $this->tpl->assign("GIFT", 1);
             $this->tpl->parse('content.gift');
         } else {
             $this->tpl->assign('GIFT', 0);
         }
         /**
          * gift message
          */
         if ($_SESSION['gift_message'] != '') {
             $this->tpl->assign("GIFT_MESSAGE", $_SESSION['gift_message']);
             $this->tpl->parse('content.gift_message');
         } else {
             $this->tpl->assign("GIFT_MESSAGE", '');
         }
     } else {
         //msg('You must be logged in first.', 'error');
         $_SESSION['to'] = "page/" . $node_conf['id_map-checkout'];
         onxshopGoTo("page/" . $node_conf['id_map-login']);
     }
     $this->tpl->assign("ORDER", $_POST['order']);
     /**
      * display virtual product option
      */
     if ($this->isBasketVirtualProductOnly()) {
         $this->tpl->parse('content.virtual_product');
     }
     return true;
 }
Пример #3
0
 /**
  * main action
  */
 public function mainAction()
 {
     /**
      * find code
      */
     if ($_SESSION['promotion_code']) {
         $code = $_SESSION['promotion_code'];
     } else {
         if (trim($_POST['promotion_code']) != '') {
             $code = trim($_POST['promotion_code']);
         } else {
             $code = false;
         }
     }
     /**
      * Check Actions
      */
     if ($_POST['promotion_code_add'] && $code) {
         $_SESSION['promotion_code'] = $code;
         onxshopGoTo("/page/{$_SESSION['active_pages'][0]}");
     } else {
         if ($_POST['promotion_code_remove']) {
             $_SESSION['promotion_code'] = false;
             onxshopGoTo("/page/{$_SESSION['active_pages'][0]}");
         }
     }
     /**
      * initialize
      */
     require_once 'models/ecommerce/ecommerce_promotion.php';
     $Promotion = new ecommerce_promotion();
     $Promotion->setCacheable(false);
     require_once 'models/ecommerce/ecommerce_basket.php';
     $Basket = new ecommerce_basket();
     $Basket->setCacheable(false);
     /**
      * basket detail
      */
     if (is_numeric($_SESSION['basket']['id'])) {
         $basket = $Basket->getFullDetail($_SESSION['basket']['id']);
         $Basket->calculateBasketSubTotals($basket, $this->isVatEligible($basket['customer_id']));
         $Basket->calculateBasketDiscount($basket, $_SESSION['promotion_code']);
         $Basket->saveDiscount($basket);
     } else {
         $basket = false;
     }
     /**
      * Allow Guest Checkout
      */
     if ($basket['customer_id'] == 0 && $_SESSION['client']['customer']['guest'] == 1) {
         $customer_email = $_SESSION['client']['customer']['email'];
     } else {
         $customer_email = '';
     }
     /**
      * Display
      */
     if ($basket && ($promotion_code = $Promotion->checkCodeBeforeApply($code, $basket['customer_id'], $basket, $customer_email))) {
         $promotion_code['value'] = $code;
         $this->tpl->assign('PROMOTION_CODE', $promotion_code);
         if ($promotion_code['discount_percentage_value'] > 0) {
             $this->tpl->parse('content.applied.discount_percentage_value');
         }
         if ($promotion_code['discount_fixed_value'] > 0) {
             $this->tpl->parse('content.applied.discount_fixed_value');
         }
         if ($promotion_code['discount_free_delivery'] == 1) {
             $this->tpl->parse('content.applied.discount_free_delivery');
         }
         if ($promotion_code['free_promo_product']) {
             $this->tpl->parse('content.applied.free_item_info');
         }
         $this->tpl->parse('content.applied');
     } else {
         //remove code
         $code = false;
         $promotion_code = array();
         $promotion_code['value'] = $code;
         $this->tpl->assign('PROMOTION_CODE', $promotion_code);
         $this->tpl->parse('content.enter');
     }
     /**
      * Save to session
      */
     $_SESSION['promotion_code'] = $code;
     return true;
 }
Пример #4
0
 /**
  * check for virtual product only
  */
 public function isBasketVirtualProductOnly()
 {
     if ($gift_voucher_product_id = $this->getGiftVoucherProductId()) {
         if (is_numeric($basket_id = $_SESSION['basket']['id'])) {
             require_once 'models/ecommerce/ecommerce_basket.php';
             $Basket = new ecommerce_basket();
             $basket_content = $Basket->getFullDetail($basket_id);
             $voucher_basket_items = $this->getVoucherBasketItems($basket_content['items'], $gift_voucher_product_id);
             if (!$voucher_basket_items) {
                 return false;
             }
             if (count($voucher_basket_items) == count($basket_content['items'])) {
                 return true;
             }
             return false;
         } else {
             return false;
         }
     } else {
         return false;
     }
 }