/** * 标记订单是否包括海外仓料号,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; }
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; } }