Example #1
0
 function loadOrder()
 {
     global $toC_Json;
     $osC_Order = new osC_Order(isset($_REQUEST['orders_id']) ? $_REQUEST['orders_id'] : null);
     require_once '../includes/classes/customer.php';
     $osC_Customer = new osC_Customer();
     $osC_Customer->setCustomerData($osC_Order->getCustomersID());
     $enable_store_credit = false;
     if ($osC_Order->isUseStoreCredit() || $osC_Customer->hasStoreCredit()) {
         $enable_store_credit = true;
     }
     $data = array('customers_name' => $osC_Order->_customer['name'], 'currency' => $osC_Order->getCurrency(), 'email_address' => $osC_Order->_customer['email_address'], 'coupon_code' => $osC_Order->_coupon_code, 'payment_method' => $osC_Order->getPaymentModule(), 'use_store_credit' => $osC_Order->isUseStoreCredit(), 'has_payment_method' => $osC_Order->hasPaymentMethod(), 'enable_store_credit' => $enable_store_credit, 'gift_wrapping' => $osC_Order->_customer['gift_wrapping'] == '1' ? true : false, 'wrapping_message' => $osC_Order->_customer['wrapping_message'], 'billing_address' => str_replace(',', ' ', $osC_Order->getBilling('name')) . ',' . $osC_Order->getBilling('company') . ',' . $osC_Order->getBilling('street_address') . ',' . $osC_Order->getBilling('suburb') . ',' . $osC_Order->getBilling('city') . ',' . $osC_Order->getBilling('postcode') . ',' . $osC_Order->getBilling('state') . ',' . $osC_Order->getBilling('country_title'), 'shipping_address' => str_replace(',', ' ', $osC_Order->getDelivery('name')) . ',' . $osC_Order->getDelivery('company') . ',' . $osC_Order->getDelivery('street_address') . ',' . $osC_Order->getDelivery('suburb') . ',' . $osC_Order->getDelivery('city') . ',' . $osC_Order->getDelivery('postcode') . ',' . $osC_Order->getDelivery('state') . ',' . $osC_Order->getDelivery('country_title'));
     unset($_SESSION['osC_Customer_data']);
     $response = array('success' => true, 'data' => $data);
     echo $toC_Json->encode($response);
 }
 function _calculate($set_shipping = true)
 {
     global $osC_Currencies, $osC_Tax, $osC_Weight, $osC_Shipping, $osC_OrderTotal, $osC_Customer;
     //put the order currency code in the session for order total modules and shipping modules
     $_SESSION['currency'] = $this->getCurrency();
     $this->restoreStoreCredit();
     require_once '../includes/classes/customer.php';
     $osC_Customer = new osC_Customer();
     $osC_Customer->setCustomerData($this->getCustomersID());
     $this->_sub_total = 0;
     $this->_total = 0;
     $this->_weight = 0;
     $this->_tax = 0;
     $this->_tax_groups = array();
     $this->_shipping_boxes_weight = 0;
     $this->_shipping_boxes = 0;
     $this->_shipping_quotes = array();
     $this->_order_totals = array();
     if ($this->hasContents()) {
         foreach ($this->_contents as $products_id => $data) {
             $products_weight = $osC_Weight->convert($data['weight'], $data['weight_class_id'], SHIPPING_WEIGHT_UNIT);
             $this->_weight += $products_weight * $data['quantity'];
             $tax = $osC_Tax->getTaxRate($data['tax_class_id'], $this->getTaxingAddress('country_id'), $this->getTaxingAddress('zone_id'));
             $tax_description = $osC_Tax->getTaxRateDescription($data['tax_class_id'], $this->getTaxingAddress('country_id'), $this->getTaxingAddress('zone_id'));
             //update tax to database
             $this->_contents[$products_id]['tax'] = $tax;
             $this->_updateProductTax($this->_contents[$products_id]['orders_products_id'], $tax);
             $shown_price = $osC_Currencies->addTaxRateToPrice($data['final_price'], $tax, $data['quantity']);
             $this->_sub_total += $shown_price;
             $this->_total += $shown_price;
             if (DISPLAY_PRICE_WITH_TAX == '1') {
                 $tax_amount = $shown_price - $shown_price / ($tax < 10 ? '1.0' . str_replace('.', '', $tax) : '1.' . str_replace('.', '', $tax));
             } else {
                 $tax_amount = $tax / 100 * $shown_price;
                 //oscommerce 3 bug, no matter the tax is displayed or not, tax should not be add to total
                 $this->_total += $tax_amount;
             }
             $this->_tax += $tax_amount;
             if (isset($this->_tax_groups[$tax_description])) {
                 $this->_tax_groups[$tax_description] += $tax_amount;
             } else {
                 $this->_tax_groups[$tax_description] = $tax_amount;
             }
         }
         $this->_shipping_boxes_weight = $this->_weight;
         $this->_shipping_boxes = 1;
         if (SHIPPING_BOX_WEIGHT >= $this->_shipping_boxes_weight * SHIPPING_BOX_PADDING / 100) {
             $this->_shipping_boxes_weight = $this->_shipping_boxes_weight + SHIPPING_BOX_WEIGHT;
         } else {
             $this->_shipping_boxes_weight = $this->_shipping_boxes_weight + $this->_shipping_boxes_weight * SHIPPING_BOX_PADDING / 100;
         }
         if ($this->_shipping_boxes_weight > SHIPPING_MAX_WEIGHT) {
             // Split into many boxes
             $this->_shipping_boxes = ceil($this->_shipping_boxes_weight / SHIPPING_MAX_WEIGHT);
             $this->_shipping_boxes_weight = $this->_shipping_boxes_weight / $this->_shipping_boxes;
         }
         if ($set_shipping === true) {
             unset($_SESSION['osC_ShoppingCart_data']['shipping_quotes']);
             if (!class_exists('osC_Shipping')) {
                 include 'includes/classes/shipping.php';
             }
             //check if this order already have a delivery method
             if (!empty($this->_deliver_module)) {
                 $osC_Shipping = new osC_Shipping($this->_deliver_module);
                 $this->setShippingMethod($osC_Shipping->getQuote(), false);
             } else {
                 if (!$this->hasShippingMethod() || $this->getShippingMethod('is_cheapest') === true) {
                     $osC_Shipping = new osC_Shipping();
                     $this->setShippingMethod($osC_Shipping->getCheapestQuote(), false);
                 } else {
                     $osC_Shipping = new osC_Shipping($this->getShippingMethod('id'));
                     $this->setShippingMethod($osC_Shipping->getQuote(), false);
                 }
             }
         }
     }
     if (!class_exists('osC_OrderTotal')) {
         include 'includes/classes/order_total.php';
     }
     $osC_OrderTotal = new osC_OrderTotal();
     $this->_order_totals = $osC_OrderTotal->getResult();
     if ($this->isUseStoreCredit()) {
         $this->insertStoreCredit();
     }
     unset($_SESSION['currency']);
     unset($_SESSION['osC_Customer_data']);
 }