Ejemplo n.º 1
0
function mod_calculate_shipping_cost($products_id, $products_price)
{
    // set globals
    global $xtPrice, $total_weight, $shipping_weight, $shipping_quoted, $shipping_num_boxes, $em_shipping_countries;
    // init shipping content array
    $shipping_content = array();
    foreach ($em_shipping_countries as $country) {
        // init order class for dummy order
        $order = new order();
        //Data for shipping cost
        $default_data_query_raw = "SELECT countries_id,\n\t\t\t\t\t\t\t\t\t\tcountries_name,\n\t\t\t\t\t\t\t\t\t\tcountries_iso_code_2,\n\t\t\t\t\t\t\t\t\t\tcountries_iso_code_3,\n\t\t\t\t\t\t\t\t\t\taddress_format_id\n\t\t\t\t\t\t\t\t   FROM " . TABLE_COUNTRIES . "\n\t\t\t\t\t\t\t\t  WHERE countries_iso_code_2 = '" . strtoupper(trim($country)) . "'";
        $default_data_query = xtc_db_query($default_data_query_raw);
        $default_data = xtc_db_fetch_array($default_data_query);
        $default_data['entry_postcode'] = '10000';
        $default_data['zone_name'] = '';
        $default_data['zone_id'] = '';
        // set customer data
        $order->customer = array('postcode' => $default_data['entry_postcode'], 'state' => $default_data['zone_name'], 'zone_id' => $default_data['zone_id'], 'format_id' => $default_data['address_format_id'], 'country' => array('id' => $default_data['countries_id'], 'title' => $default_data['countries_name'], 'iso_code_2' => $default_data['countries_iso_code_2'], 'iso_code_3' => $default_data['countries_iso_code_3']));
        // set delivery data
        $order->delivery = array('postcode' => $default_data['entry_postcode'], 'state' => $default_data['zone_name'], 'zone_id' => $default_data['zone_id'], 'format_id' => $default_data['address_format_id'], 'country' => array('id' => $default_data['countries_id'], 'title' => $default_data['countries_name'], 'iso_code_2' => $default_data['countries_iso_code_2'], 'iso_code_3' => $default_data['countries_iso_code_3']));
        $GLOBALS['order'] = $order;
        // set session for calculation shipping costs
        $_SESSION['delivery_zone'] = $order->delivery['country']['iso_code_2'];
        // init shipping class
        $shipping = new shipping();
        // init shipping modules
        $quotes = $shipping->quote();
        $free_shipping = false;
        if (defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') {
            switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
                case 'national':
                    if ($order->delivery['country']['id'] == STORE_COUNTRY) {
                        $pass = true;
                    }
                    break;
                case 'international':
                    if ($order->delivery['country']['id'] != STORE_COUNTRY) {
                        $pass = true;
                    }
                    break;
                case 'both':
                    $pass = true;
                    break;
                default:
                    $pass = false;
                    break;
            }
            if ($pass == true && $products_price >= $xtPrice->xtcFormat(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER, false, 0, true)) {
                $free_shipping = true;
            }
        }
        $has_freeamount = false;
        $free_shipping_freeamount = false;
        foreach ($quotes as $quote) {
            if ($quote['id'] == 'freeamount') {
                $has_freeamount = true;
                if (isset($quote['methods'])) {
                    $free_shipping_freeamount = true;
                    break;
                }
            }
        }
        if ($free_shipping == true) {
            $shipping_content[] = array('country' => $order->delivery['country']['iso_code_2'], 'service' => mod_convert_string(FREE_SHIPPING_TITLE), 'price' => floatval(0));
        } elseif ($free_shipping_freeamount) {
            $shipping_content[] = array('country' => $order->delivery['country']['iso_code_2'], 'service' => mod_convert_string($quote['module']), 'price' => floatval(0));
        } else {
            foreach ($quotes as $quote) {
                if ($quote['id'] != 'freeamount') {
                    $quote['methods'][0]['cost'] = $xtPrice->xtcCalculateCurr($quote['methods'][0]['cost']);
                    $value = isset($quote['tax']) && $quote['tax'] > 0 ? $xtPrice->xtcAddTax($quote['methods'][0]['cost'], $quote['tax']) : (!empty($quote['methods'][0]['cost']) ? $quote['methods'][0]['cost'] : '0');
                    $value = $xtPrice->xtcFormat($value, false);
                    $shipping_content[] = array('country' => $order->delivery['country']['iso_code_2'], 'service' => mod_convert_string($quote['module'] . (!empty($quote['methods'][0]['title']) ? ' - ' . $quote['methods'][0]['title'] : '')), 'price' => floatval($value));
                }
            }
        }
        // unset used variables and objects
        unset($quotes);
        unset($shipping);
        unset($order);
        unset($_SESSION['delivery_zone']);
        unset($_SESSION['shipping']);
    }
    // return cheapest Shipping module
    return $shipping_content;
}
Ejemplo n.º 2
0
chdir('../../');
require_once 'includes/application_top.php';
// include easymarketing api header
require_once DIR_FS_CATALOG . 'api/easymarketing/includes/header.php';
// include easymarketing functions
require_once 'includes/functions.php';
$parent_id = isset($_GET['parent_id']) ? (int) $_GET['parent_id'] : NULL;
$oLanguage = new language($_GET['lang']);
// process request
if (isset($parent_id)) {
    // init array
    $categories_array = array();
    // sql query for categories
    $categories_query_raw = "SELECT c.categories_id,\n                                  cd.categories_name\n                             FROM " . TABLE_CATEGORIES . " c\n                             JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd\n                                  ON (c.categories_id = cd.categories_id\n                                     AND cd.language_id = '" . $oLanguage->language['id'] . "')\n                            WHERE c.categories_status = '1'\n                              AND c.categories_id = '" . xtc_db_prepare_input($parent_id) . "'";
    // make sql query
    $categories_query_result = xtc_db_query($categories_query_raw);
    // check for result
    if (xtc_db_num_rows($categories_query_result) > 0) {
        while ($categories = xtc_db_fetch_array($categories_query_result)) {
            // build categories array
            $categories_array = array('id' => $categories['categories_id'], 'name' => mod_convert_string($categories['categories_name']), 'url' => xtc_href_link(FILENAME_DEFAULT, xtc_category_link($categories['categories_id'], $categories['categories_name']), 'NONSSL', false), 'children' => mod_get_sub_categories($categories['categories_id']));
        }
    } elseif ($parent_id == '0') {
        // build categories array
        $categories_array = array('id' => $parent_id, 'name' => mod_convert_string(STORE_NAME), 'url' => xtc_href_link(FILENAME_DEFAULT, '', 'NONSSL', false), 'children' => mod_get_sub_categories($parent_id));
    }
    // output categories
    mod_stream_response($categories_array);
} else {
    mod_stream_invalid_request();
}
Ejemplo n.º 3
0
             foreach ($mappings as $key => $data) {
                 foreach ($data['values'] as $value) {
                     if (isset($product_details[$value])) {
                         $products_mapping[$key] = $product_details[$value];
                         break 1;
                     }
                 }
             }
             if (empty($products_mapping['name'])) {
                 $products_mapping['name'] = $products['products_name'];
             }
             if (empty($products_mapping['description'])) {
                 $products_mapping['description'] = mod_get_description(array('products_description' => $products['products_description'], 'products_short_description' => $products['products_short_description']));
             }
             // build products array
             $products_array[] = array('id' => $products['products_id'], 'name' => mod_convert_string($products_mapping['name']), 'categories' => mod_get_categories_array($products['products_id']), 'google_category' => mod_get_google_category($products['products_id']), 'condition' => mod_get_condition($condition), 'availability' => mod_get_availability($products_item_codes['google_export_availability_id'], $products['products_quantity']), 'currency' => DEFAULT_CURRENCY, 'price' => $products_price['plain'], 'rrp' => $products_rrp['plain'], 'discount_absolute' => $discount_absolute > 0 ? $discount_absolute : 0, 'discount_percentage' => $discount_percentage > 0 ? $discount_percentage : 0, 'url' => xtc_href_link(FILENAME_PRODUCT_INFO, xtc_product_link($products['products_id'], $products['products_name']), 'NONSSL', false), 'image_url' => !empty($products['products_image']) ? HTTP_SERVER . DIR_WS_CATALOG . DIR_WS_POPUP_IMAGES . $products['products_image'] : 'null', 'shipping' => mod_calculate_shipping_cost($products['products_id'], $products_price), 'description' => mod_convert_string($products_mapping['description']), 'age_group' => mod_get_age_group($products_item_codes['age_group']), 'gender' => mod_get_gender($products_item_codes['gender']), 'gtin' => $products['products_ean'] != '' ? $products['products_ean'] : 'null', 'adult' => $products['products_fsk18'] == '1' ? true : false, 'mpn' => mod_convert_string($products_item_codes['code_mpn']), 'brand' => mod_convert_string($products_item_codes['brand_name']));
         }
     }
 }
 // init response array
 $response = array();
 // normal products
 if (isset($offset)) {
     $response['offset'] = $offset;
 }
 // new products
 if (isset($newer_than)) {
     $response['time'] = $newer_than;
     $response['newer_than'] = $limit;
 }
 // add products