public function view_savescan() { $id = intval($_POST['id'] ? $_POST['id'] : $_GET['id']); $waveId = WhWaveInfoModel::number_decode($_POST['waveId'] ? $_POST['waveId'] : $_GET['waveId']); $neednum = $_POST['neednum'] ? $_POST['neednum'] : $_GET['neednum']; $readynum = $_POST['readynum'] ? $_POST['readynum'] : $_GET['readynum']; $sku = get_goodsSn($_POST['sku'] ? $_POST['sku'] : $_GET['sku']); $record = WhWaveScanRecordModel::find($id); if (!$readynum) { $return = array('status' => 0, 'msg' => '配货数量不能为0'); echo json_encode($return); exit; } if (!$record) { $return = array('status' => 0, 'msg' => '错误料号信息,料号不存在'); echo json_encode($return); exit; } if ($waveId != $record['waveId']) { $return = array('status' => 0, 'msg' => '配货单号与系统记录不符'); echo json_encode($return); exit; } if (strtoupper($sku) != strtoupper($record['sku'])) { $return = array('status' => 0, 'msg' => '料号与系统记录不符'); echo json_encode($return); exit; } if ($readynum > $record['skuAmount']) { $return = array('status' => 0, 'msg' => '配货数量不能大于总配货数'); echo json_encode($return); exit; } $amount = $record['amount'] + $readynum; if ($amount > $record['skuAmount']) { $return = array('status' => 0, 'msg' => '当前配货数量超过待配货数'); echo json_encode($return); exit; } $data = array('amount' => $amount, 'scanStatus' => $amount == $record['skuAmount'] ? 1 : 0); if ($data['scanStatus']) { $data['scanTime'] = time(); } $result = WhWaveScanRecordModel::update($data, $id); if ($result) { if ($data['scanStatus']) { //检查当前配货单在当前区域已否已配完 $waveId = $record['waveId']; $area = $record['area']; $wave_area = WhWaveScanRecordModel::find("waveId='{$waveId}' AND area='{$area}' AND scanStatus=0 AND is_delete=0"); if (!$wave_area) { //当前区域已配完 $update_data = array('scanStatus' => 1); WhWaveReceiveRecordModel::update($update_data, "waveId='{$waveId}' AND area='{$area}' AND is_delete=0"); $wave = WhWaveScanRecordModel::find("waveId='{$waveId}' AND scanStatus=0 AND is_delete=0"); if (!$wave) { /*//当前波次已配完 $update_data = array( 'waveStatus' => 3, ); WhWaveInfoModel::update($update_data, "id='$waveId' AND is_delete=0");*/ } } } $return = array('status' => 1, 'msg' => '配货成功'); echo json_encode($return); } else { $return = array('status' => 0, 'msg' => '配货失败,未知错误'); echo json_encode($return); } }
/** * 配货收货 * @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; }