Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
 /**
  * 配货收货
  * @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;
 }