コード例 #1
0
ファイル: orders.php プロジェクト: heg-arc-ne/cscart
 if (!empty($params['status']) && $params['status'] == STATUS_INCOMPLETED_ORDER) {
     $params['include_incompleted'] = true;
 }
 if (fn_allowed_for('MULTIVENDOR')) {
     $params['company_name'] = true;
 }
 list($orders, $search, $totals) = fn_get_orders($params, Registry::get('settings.Appearance.admin_orders_per_page'), true);
 if (!empty($params['include_incompleted']) || !empty($search['include_incompleted'])) {
     Registry::get('view')->assign('incompleted_view', true);
 }
 if (!empty($_REQUEST['redirect_if_one']) && count($orders) == 1) {
     return array(CONTROLLER_STATUS_REDIRECT, 'orders.details?order_id=' . $orders[0]['order_id']);
 }
 $shippings = fn_get_shippings(true, CART_LANGUAGE);
 if (Registry::get('runtime.company_id')) {
     $company_shippings = fn_get_companies_shipping_ids(Registry::get('runtime.company_id'));
     if (fn_allowed_for('ULTIMATE')) {
         $company_shippings = db_get_fields('SELECT shipping_id FROM ?:shippings');
     }
     foreach ($shippings as $shipping_id => $shipping) {
         if (!in_array($shipping_id, $company_shippings)) {
             unset($shippings[$shipping_id]);
         }
     }
 }
 $remove_cc = db_get_field("SELECT COUNT(*) FROM ?:status_data WHERE type = 'O' AND param = 'remove_cc_info' AND value = 'N'");
 $remove_cc = $remove_cc > 0 ? true : false;
 Registry::get('view')->assign('remove_cc', $remove_cc);
 Registry::get('view')->assign('orders', $orders);
 Registry::get('view')->assign('search', $search);
 Registry::get('view')->assign('totals', $totals);
コード例 #2
0
function fn_companies_prepare_google_shippings(&$shipping_methods)
{
    // Find out the needed suppliers and the shipping available for them
    $needed_suppliers = array();
    $needed_suppliers_empty = array();
    $is_default_filled = false;
    foreach ($_SESSION['cart']['products'] as $k => $v) {
        if (!empty($v['company_id'])) {
            $s_id = $v['company_id'];
            if (empty($needed_suppliers[$s_id])) {
                $needed_suppliers[$s_id] = array();
                $ship_suppliers = fn_get_companies_shipping_ids($s_id);
                foreach ($shipping_methods as $k => $v) {
                    if (in_array($v['shipping_id'], $ship_suppliers)) {
                        $needed_suppliers[$s_id][$v['shipping_id']] = $v['shipping'];
                    }
                }
                if (empty($needed_suppliers[$s_id])) {
                    $shipping_methods = array();
                    return true;
                }
            }
        } elseif (!$is_default_filled && empty($needed_suppliers_empty[0])) {
            $is_default_filled = true;
            $ship_suppliers = db_get_fields("SELECT shipping_id FROM ?:shippings WHERE company_id = '0'");
            foreach ($shipping_methods as $k => $v) {
                if (in_array($v['shipping_id'], $ship_suppliers)) {
                    $needed_suppliers_empty[0][$v['shipping_id']] = $v['shipping'];
                }
            }
        }
    }
    if (empty($needed_suppliers)) {
        return true;
    } else {
        $needed_suppliers = $needed_suppliers_empty + $needed_suppliers;
    }
    // Generate the available combiantions of all shippings for suppliers
    ksort($needed_suppliers, SORT_NUMERIC);
    $combination_count = 1;
    $j = 0;
    $supp_count = count($needed_suppliers);
    $curr_pos = array();
    $curr_pos['ship_count'] = 1;
    foreach ($needed_suppliers as $s_id => $shippings) {
        $j++;
        $curr_count = count($shippings);
        $combination_count *= $curr_count;
        $shippings_count[$s_id] = $curr_count;
        $magic[$s_id] = 1;
        if ($j == $supp_count) {
            $curr_pos['supp_id'] = $s_id;
        }
    }
    $new = array();
    for ($i = 0; $i < $combination_count; $i++) {
        if ($i > 0) {
            if (fn_companies_update_magic_hash($magic, $shippings_count, $curr_pos) === false) {
                break;
            }
        }
        fn_companies_add_combination($i, $new, $magic, $needed_suppliers);
    }
    // Form the list of shippings
    $_shipping_methods = array();
    if (!empty($new)) {
        foreach ($new as $items) {
            $string = '';
            $is_identical = true;
            $f_s_id = key($items);
            $f_shipping_id = current($items);
            foreach ($items as $k => $v) {
                if ($f_shipping_id != $v) {
                    $is_identical = false;
                }
                $string .= $needed_suppliers[$k][$v] . ' + ';
            }
            if (!$is_identical) {
                $string = rtrim($string, ' + ');
            } else {
                $string = $needed_suppliers[$f_s_id][$f_shipping_id];
            }
            if (array_key_exists(implode('_', $items), $_shipping_methods) == false) {
                $_shipping_methods[implode('_', $items)] = array('shipping' => $string, 'shipping_id' => implode('_', $items));
            }
        }
    }
    $shipping_methods = $_shipping_methods;
    return true;
}