예제 #1
0
 /**
  * 标记订单是否包括海外仓料号,0为国内订单、1为包含海外料号和国内料号订单、2为美国A仓订单(先考虑手动拆分,如果业务部门OK考虑自动拆分)
  * 预留数字3、4、5、6.....扩展到多个海外仓订单
  * 该功能关联到后面的缺货拦截和超大订单拦截
  */
 public function MarkOverSeaOrder()
 {
     $contain_os_item = false;
     //$ow_status = array();
     $allskuinfo = array();
     $orderDetail = $this->orderData['detail'];
     foreach ($orderDetail as $detail) {
         $sku = $detail['base']['sku'];
         $skuinfo = M("InterfacePc")->getSkuinfo($sku);
         foreach ($skuinfo['skuInfo'] as $or_sku => $skuinfoDetailValue) {
             $amount = $skuinfoDetailValue['amount'];
             $or_sku = $skuinfoDetailValue['skuDetail']['sku'];
             $allskuinfo[] = $or_sku;
             if (preg_match("/^US01\\+.*/", $or_sku, $matchArr) || preg_match("/^US1\\+.*/", $or_sku, $matchArr)) {
                 //$log_data .= "[".date("Y-m-d H:i:s")."]\t包含海外仓料号订单---{$ebay_id}-----料号:{$or_sku}--!\n\n";
                 $contain_os_item = true;
                 if (strpos($or_sku, "US01+") !== false) {
                     $matchStr = substr($matchArr[0], 5);
                     //去除前面
                     //$matchStr = str_replace("US1+", "", $or_sku);
                 } else {
                     //$matchStr=substr($matchArr[0],5);//去除前面
                     $matchStr = str_replace("US1+", "", $or_sku);
                 }
                 $n = strpos($matchStr, ':');
                 //寻找位置
                 if ($n) {
                     $matchStr = substr($matchStr, 0, $n);
                 }
                 //删除后面
                 if (preg_match("/^0+(\\w+)/", $matchStr, $matchArr)) {
                     $matchStr = $matchArr[1];
                 }
                 $sql = "update ebay_orderdetail set sku ='{$matchStr}' where ebay_id = {$orderdetail['ebay_id']} ";
                 //add by Herman.Xi 替换海外仓料号为正确料号
                 $dbcon->execute($sql);
                 $virtualnum = check_oversea_stock($matchStr);
                 //检查海外仓虚拟库存  预留接口
                 //insert_mark_shipping($ebay_id);
                 /*if($virtualnum >= 0){
                 			$ow_status[] = 705;
                 		}else{
                 			$ow_status[] = 714; //海外仓缺货
                 		}*/
             }
             /*if(!$contain_os_item && empty($ebay_note) && $totalweight <=2){
             			//如果不是海外仓的,就去检查是否为B仓的料号
             			$location = get_sku_location($or_sku);
             			if(strpos($location,'WH') === 0 || strpos($location,'HW') === 0){
             				$contain_wh_item = true;
             			}
             		}*/
         }
     }
     if ($contain_os_item) {
         //$orderType = C('STATEPENDING_OVERSEA');
         //$log_data .= "[".date("Y-m-d H:i:s")."]\t更新海外仓料号订单状态为{$orderType}---{$ebay_id}--{$sql}-!\n\n";
         //if($orderType == 705){
         $totalweight = calcWeight($ebay_id);
         //预留接口
         $skunums = checkSkuNum($ebay_id);
         //预留接口
         if ($skunums === true) {
             continue;
         } else {
             if ($totalweight > 20) {
                 if ($skunums == 1) {
                     usCalcShipCost($ebay_id);
                     //预留接口
                 }
             } else {
                 usCalcShipCost($ebay_id);
                 //预留接口
             }
         }
         //}
         return $orderType = C('STATEPENDING_OVERSEA');
     }
     return false;
 }
예제 #2
0
function checkSkuNum($orderid)
{
    global $dbcon;
    $sql = "SELECT ebay_ordersn from ebay_order where ebay_id={$orderid} ";
    $sql = $dbcon->execute($sql);
    $ordersn_arr = $dbcon->fetch_one($sql);
    $ordersn = $ordersn_arr["ebay_ordersn"];
    //$sql = "SELECT count(*) as total FROM ebay_orderdetail WHERE ebay_ordersn = '{$ordersn}'";
    $sql = "SELECT sku,ebay_amount  FROM ebay_orderdetail WHERE ebay_ordersn = '{$ordersn}'";
    $sql = $dbcon->execute($sql);
    //$ret = $dbcon->fetch_one($sql);
    $ret_arr = $dbcon->getResultArray($sql);
    $totals = 0;
    $order_status = array();
    foreach ($ret_arr as $ret) {
        $totals += $ret['ebay_amount'];
        $combine = checkCombine($ret["sku"]);
        if ($combine) {
            $combine_arr = explode(",", $combine);
            for ($j = 0; $j < count($combine_arr); $j++) {
                $sku = substr($combine_arr[$j], 0, strpos($combine_arr[$j], '*'));
                $amount = substr($combine_arr[$j], strpos($combine_arr[$j], '*') + 1);
                $virtualnum = check_oversea_stock($sku);
                $orderNum = $ret["ebay_amount"] * $amount;
                $log_data = "订单号:{$orderid} sku :{$sku} 虚拟库存:{$virtualnum} 订单sku数:{$orderNum} \n\n";
                write_scripts_log('auto_contrast_intercept', "oversea", $log_data);
                if ($virtualnum < 0) {
                    $order_status[] = 714;
                    // 海外仓缺货
                }
            }
            $real_sku = $sku;
        } else {
            $virtualnum = check_oversea_stock($ret["sku"]);
            if ($virtualnum < 0) {
                $order_status[] = 714;
                // 海外仓缺货
            }
        }
    }
    $stockout = false;
    if (in_array(714, $order_status)) {
        $sql = "update ebay_order set ebay_status ='714' where ebay_id ={$orderid}  ";
        insert_mark_shipping($orderid);
        if ($dbcon->execute($sql)) {
            $stockout = true;
        }
    }
    if ($stockout) {
        return $stockout;
    } else {
        return $totals;
    }
}