public function act_manualSortingCheck() { $userId = $_SESSION['userId']; $waveId = isset($_POST['waveId']) ? $_POST['waveId'] : ""; $where = "number='{$waveId}'"; $waveInfo = WhWaveInfoModel::get_wave_info("*", $where); if (!$waveInfo) { self::$errCode = 502; self::$errMsg = "此配货单号不存在!"; return false; } if ($waveInfo[0]['waveStatus'] != WAVE_FINISH_GET_GOODS) { self::$errCode = 514; self::$errMsg = "此配货单不在【配货完成】状态,不能进行分拣操作!"; return false; } if ($waveInfo[0]['waveType'] == 3) { self::$errCode = 518; self::$errMsg = "此配货单属于多SKU生成的配货单,不能进行人工分拣!"; return false; } //一个发货单对应多个配货单的时候,发货单是唯一的, if ($waveInfo[0]['waveType'] == 1) { $waveId = $waveInfo[0]['id']; $result = WhWaveShippingRelationModel::select_not_scanning($waveId); $shipOrderId = $result[0]['shipOrderId']; if ($result[0]['pickUserId'] != 0) { self::$errCode = 520; self::$errMsg = "此配货单已经分拣过了!"; return false; } WhShippingOrderModel::begin(); $update = WhWaveShippingRelationModel::update(array('pickUserId' => $userId, 'pickTime' => time()), array('is_delete' => 0, 'waveId' => $waveId)); if (!$update) { self::$errCode = 519; self::$errMsg = "扫描该配货单失败,请联系负责人!"; WhShippingOrderModel::rollback(); return false; // $result = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId); //$shipOrderId = $result[0]['shipOrderId']; //查询还没有扫描的配货单 } $select_not_scanning = WhWaveShippingRelationModel::select_not_scanning_by_id($shipOrderId); $not_scanning_waveId = ''; //还没有分拣的配货单 if ($select_not_scanning) { foreach ($select_not_scanning as $val) { $not_scanning_waveId .= $val['waveId'] . ','; } self::$errMsg = "扫描该配货单'{$waveId}'成功,对应发货单'{$shipOrderId}'的配货单'{$not_scanning_waveId}'还没有分拣!"; } else { self::$errMsg = "扫描该配货单'{$waveId}'成功,对应的发货单'{$shipOrderId}'已经分拣完成,请处理完成之后拿去复核!"; //获取一个发货单对应多个配货单的每个配货单号 $result = OmAvailableModel::getTNameList("wh_wave_shipping_relation", "waveId", "where shipOrderId='{$shipOrderId}' and is_delete=0 "); $wave_all = ''; foreach ($result as $values) { $wave_all .= $values['waveId'] . ','; } $wave_all = trim($wave_all, ','); //得到该发货单下所有配货单的信息 $scan_record = OmAvailableModel::getTNameList("wh_wave_scan_record", "waveId,sku,skuAmount,amount", "where waveId in ('{$wave_all}') and scanStatus = 1 and is_delete=0 "); $picklist_all = array(); foreach ($scan_record as $record) { $data = array('waveId' => $record['waveId'], 'shipOrderId' => $shipOrderId, 'sku' => $record['sku'], 'skuAmount' => $record['skuAmount'], 'amount' => $record['amount'], 'pickStatus' => 1, 'pickUserId' => intval($_SESSION['userId']), 'pickTime' => time(), 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0'); $picklist_all[] = $data; } if (!WhWavePickRecordModel::insert($picklist_all, true)) { WhShippingOrderModel::rollback(); self::$errCode = 517; self::$errMsg = "该配货单插入分拣记录失败!"; return false; } $where = "id = '{$shipOrderId}' AND orderStatus='" . PKS_WAITING_SORTING . "'"; if (!WhShippingOrderModel::update_shipping_order($where, "orderStatus='" . PKS_WIQC . "'")) { WhShippingOrderModel::rollback(); self::$errCode = 516; self::$errMsg = "此配货单所属发货单{$shipOrderId}更新状态失败!"; return false; } } WhPushModel::pushOrderStatus($shipOrderId, 'PKS_WIQC', $_SESSION['userId'], time()); //状态推送,需要改为待复核单(订单系统提供状态常量) WhShippingOrderModel::commit(); self::$errCode = 200; return true; } /* if(empty($waveInfo[0]['sku'])){ self::$errCode = 515; self::$errMsg = "此配货单不属于单SKU生成的配货单,不能进行人工分拣!"; return false; } */ $waveId = $waveInfo[0]['id']; //echo $waveId; $shippOrders = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId); //var_dump($shippOrders); WhShippingOrderModel::begin(); foreach ($shippOrders as $shippOrder) { $shipOrderId = $shippOrder['shipOrderId']; $where = "id = '{$shipOrderId}' AND orderStatus='" . PKS_WAITING_SORTING . "'"; if (!WhShippingOrderModel::update_shipping_order($where, "orderStatus='" . PKS_WIQC . "'")) { WhShippingOrderModel::rollback(); self::$errCode = 516; self::$errMsg = "此配货单所属发货单{$shipOrderId}更新状态失败!"; return false; } } $pick = WhWavePickRecordModel::find("waveId='{$waveId}'"); if (!$pick) { $picklist = array(); $list = WhShippingOrderdetailModel::getShippingOrderSkuList($waveId); foreach ($list as $val) { $data = array('waveId' => $val['waveId'], 'shipOrderId' => $val['shipOrderId'], 'sku' => $val['sku'], 'skuAmount' => $val['amount'], 'amount' => 0, 'pickStatus' => 1, 'pickUserId' => intval($_SESSION['userId']), 'pickTime' => time(), 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0'); $picklist[] = $data; } if (!WhWavePickRecordModel::insert($picklist, true)) { WhShippingOrderModel::rollback(); self::$errCode = 517; self::$errMsg = "该配货单插入分拣记录失败!"; return false; } else { foreach ($picklist as $lists) { WhPushModel::pushOrderStatus($lists['shipOrderId'], 'PKS_WIQC', $_SESSION['userId'], time()); //状态推送,需要改为待复核单(订单系统提供状态常量) } } } WhShippingOrderModel::commit(); self::$errCode = 200; self::$errMsg = "该配货单分拣成功,请处理完成之后拿去复核!"; return true; }
private function buildWhereSql() { $sql_where_storeId = ''; $storeId = isset($_GET['storeId']) ? intval($_GET['storeId']) : 0; if ($storeId != 0) { $sql_where_storeId = " and po.storeId={$storeId}"; } $this->smarty->assign('storeId', $storeId); $keywords = isset($_GET['keywords']) ? trim($_GET['keywords']) : ''; //关键字 $sql_where_keywords = ''; $keytype = isset($_GET['keytype']) ? intval($_GET['keytype']) : ''; //关键字类型 //echo $keytype;exit; if (!empty($keywords) && $keytype != 0) { //有关键字搜索条件 $keywords = mysql_real_escape_string($keywords); if ($keytype == 1) { //按订单号搜索 $sql_where_keywords = " and por.originOrderId='{$keywords}'"; } elseif ($keytype == 2) { //按配货单号搜索 $sql_where_keywords = " and po.id='{$keywords}'"; } elseif ($keytype == 3) { //按sku搜索 $sql_where_keywords = " and pd.sku='{$keywords}'"; } elseif ($keytype == 4) { $sql_where_keywords = " and ot.tracknumber='{$keywords}'"; } else { if ($keytype == 5) { //按配货单号搜索 $wave = WhBaseModel::number_decode($keywords); //获取配货单ID $shipOrderIds = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($wave); //获取发货单ID $orderIds = array(); if (!empty($shipOrderIds)) { $orderIds = get_filed_array('shipOrderId', $shipOrderIds); } else { $orderIds = array(0); } $orderIds = implode(',', $orderIds); $sql_where_keywords = " and po.id in ({$orderIds})"; } } } $this->smarty->assign('keywords', $keywords); $this->smarty->assign('keytype', $keytype); $sql_where_status = ''; $status = intval($_GET['status']); //订单状态 if (!isset($_GET['status'])) { $status = PKS_WGETGOODS; } if ($status != 0) { //状态 $sql_where_status = " and po.orderStatus={$status}"; } $this->smarty->assign('status', $status); $sql_where_orderstarttime = ''; $ordertimestart = isset($_GET['startdate']) ? trim($_GET['startdate']) : ''; //下单日期 开始 if ($ordertimestart != 0) { //开始时间 $ordertimestart_int = strtotime($ordertimestart); $sql_where_orderstarttime = " and po.createdTime >= {$ordertimestart_int}"; } $this->smarty->assign('ordertimestart', $ordertimestart); $sql_where_orderendtime = ''; $ordertimeend = isset($_GET['enddate']) ? trim($_GET['enddate']) : ''; //下单日期 结束 if ($ordertimeend != 0) { //结束时间 $ordertimeend_int = strtotime($ordertimeend); //$ordertimeend_int += 86400; $sql_where_orderendtime = " and po.createdTime < {$ordertimeend_int}"; } $this->smarty->assign('ordertimeend', $ordertimeend); $sql_where_goodsoutstarttime = ''; $goodsouttimestart = isset($_GET['goodsouttimestart']) ? trim($_GET['goodsouttimestart']) : ''; //出库日期 开始 if ($goodsouttimestart != 0) { //出库开始时间 $goodsouttimestart_int = strtotime($goodsouttimestart); $sql_where_goodsoutstarttime = " and po.weighTime >= {$goodsouttimestart_int}"; } $this->smarty->assign('goodsouttimestart', $goodsouttimestart); $sql_where_goodsoutendtime = ''; $goodsouttimeend = isset($_GET['goodsouttimeend']) ? trim($_GET['goodsouttimeend']) : ''; //出库日期 结束 if ($goodsouttimeend != 0) { //出库结束时间 $goodsouttimeend_int = strtotime($goodsouttimeend); //$goodsouttimeend += 86400; $sql_where_goodsoutstarttime = " and po.weighTime < {$goodsouttimeend_int}"; } $this->smarty->assign('goodsouttimeend', $goodsouttimeend); $sql_where_isnote = ''; $isNote = intval($_GET['isNote']); if ($isNote) { //echo $isNote;exit; switch ($isNote) { case 1: //有留言 $sql_where_isnote = ' and po.isNote=1'; break; case 2: //没留言 $sql_where_isnote = ' and po.isNote=0'; break; } } $this->smarty->assign('isNote', $isNote); $sql_where_orderTypeId = ''; /* $orderTypeId = intval($_GET['orderTypeId']); if(!isset($_GET['orderTypeId'])){ $orderTypeId = 1; } switch ($orderTypeId){ case 1: //有留言 $sql_where_orderTypeId = ' and po.orderTypeId=1'; break; case 2: //没留言 $sql_where_orderTypeId = ' and po.orderTypeId=2'; break; } $this->smarty->assign('orderTypeId', $orderTypeId);*/ $sql_where_shiptype = ''; $shiptype = trim($_GET['shiptype']); //运输方式 if ($shiptype != 0) { //运输方式 if ($shiptype == 200) { $nshiptype = "1,2,3"; } else { if ($shiptype == 300) { $nshiptype = "6,10,52,53"; } else { $nshiptype = $shiptype; } } $sql_where_shiptype = " and po.transportId in({$nshiptype})"; } else { if (!empty($_SESSION['shippingList'])) { $nshiptype = implode(',', $_SESSION['shippingList']); $sql_where_shiptype = " and po.transportId in({$nshiptype})"; } } $this->smarty->assign('shiptype', $shiptype); $sql_where_clientname = ''; $client_name = trim($_GET['clientname']); if ($client_name != '') { //按客户id搜索 $sql_where_clientname = " and po.platformUsername='******'"; } $this->smarty->assign('clientname', $client_name); $sql_where_salesaccount = ''; $salesaccount = trim($_GET['salesaccount']); if ($salesaccount != '') { //按客户id搜索 $sql_where_salesaccount = " and po.accountId='{$salesaccount}'"; } else { if (!empty($_SESSION['accountList'])) { $accountInfo = implode(',', $_SESSION['accountList']); $sql_where_salesaccount = " and po.accountId in({$accountInfo})"; } } $this->smarty->assign('salesaccount', $salesaccount); $sql_where_hunhe = ''; $hunhe = intval($_GET['hunhe']); //echo $hunhe;exit; switch ($hunhe) { case 2: //单料号 $sql_where_hunhe = ' and po.orderAttributes=' . SOA_SINGLE; break; case 1: //多料号 $sql_where_hunhe = ' and po.orderAttributes=' . SOA_MULTIY; break; case 3: //组合订单 $sql_where_hunhe = ' and po.orderAttributes=' . SOA_COMBIN; break; } $this->smarty->assign('hunhe', $hunhe); $sql_where_platformName = ''; $platformName = trim($_GET['platformName']); if ($platformName != '') { //平台 $sql_where_platformName = " and po.platformId= {$platformName}"; } else { if (!empty($_SESSION['platformList'])) { $platformInfo = implode(',', $_SESSION['platformList']); $sql_where_platformName = " and po.platformId in({$platformInfo})"; } } $this->smarty->assign('platformName', $platformName); return $sql_where_storeId . $sql_where_keywords . $sql_where_status . $sql_where_orderstarttime . $sql_where_orderendtime . $sql_where_goodsoutstarttime . $sql_where_goodsoutendtime . $sql_where_isnote . $sql_where_orderTypeId . $sql_where_shiptype . $sql_where_clientname . $sql_where_salesaccount . $sql_where_hunhe . $sql_where_platformName; }
/** * 配货收货 * @return boolean * @author czq */ public function act_orderPicking() { $zone = isset($_POST['zone']) ? strtoupper(trim($_POST['zone'])) : ""; $invoiceNumber = isset($_POST['invoice']) ? trim($_POST['invoice']) : ""; if (empty($zone)) { self::$errCode = 502; self::$errMsg = "区域不能为空"; return false; } if (empty($invoiceNumber)) { self::$errCode = 502; self::$errMsg = "配货单号不能为空!"; return false; } /*$start = time();*/ $waveId = WhWaveInfoModel::number_decode($invoiceNumber); /*$firstF = strpos($zone,'F'); $floor = substr($zone,0,$firstF); $area = substr($zone,$firstF+1);*/ /*$end = time(); echo $end - $start; echo "<br>"; $start = $end;*/ $waveReceiveInfo = WhWaveReceiveRecordModel::find(array('waveId' => $waveId, 'area' => $zone)); /*$end = time(); echo $end - $start; echo "<br>"; $start = $end;*/ if (!$waveReceiveInfo) { //检查是否已经配货完成 self::$errCode = 502; self::$errMsg = "此区域无需处理该配货单!"; return false; } if ($waveReceiveInfo['scanStatus'] == 0) { //检查是否已经配货完成 self::$errCode = 502; self::$errMsg = "此区域未配货完成!"; return false; } else { if ($waveReceiveInfo['scanStatus'] == 2) { //检查是否已收货,防止重复收货 self::$errCode = 502; self::$errMsg = "请不要重复收货!"; return false; } } //插入记录配货表 $receiveData = array('userId' => $_SESSION['userId'], 'time' => time(), 'scanStatus' => 2); WhWaveReceiveRecordModel::begin(); if (!WhWaveReceiveRecordModel::update($receiveData, array('waveId' => $waveId, 'area' => $zone, 'is_delete' => 0))) { self::$errCode = 502; self::$errMsg = "更新收货失败!"; WhWaveReceiveRecordModel::rollback(); return false; } //查找是否已经全部收货 $waveReceiveNum = WhWaveReceiveRecordModel::count(" waveId='{$waveId}' AND scanStatus !=2 AND is_delete=0 "); $statusMessage = ''; if ($waveReceiveNum == 0) { //已经完结,更新波次为完结状态 $waveInfoData = array('waveStatus' => WAVE_FINISH_GET_GOODS); if (!WhWaveInfoModel::update($waveInfoData, $waveId)) { self::$errCode = 502; self::$errMsg = "更新配货单完结状态失败!"; WhWaveReceiveRecordModel::rollback(); return false; } $statusMessage = '此配货单已经完结'; //如果此波次全部已收货,那么需要把发货单的状态改为待分拣 $shippingOrders = WhWaveShippingRelationModel::getShippingOrderIdsByWaveId($waveId); //更新发货单状态为待分拣 foreach ($shippingOrders as $shipOrder) { if (!WhShippingOrderModel::update(array('orderStatus' => PKS_WAITING_SORTING), $shipOrder['shipOrderId'])) { self::$errCode = 502; self::$errMsg = '更新发货单状态失败!'; WhWaveReceiveRecordModel::rollback(); return false; } } } WhWaveReceiveRecordModel::commit(); self::$errCode = 200; self::$errMsg = "收货成功!请扫描下一个配货单 " . $statusMessage; return true; }