Ejemplo n.º 1
0
 public function view_startscan()
 {
     $toptitle = "区域配货";
     $userId = $_SESSION['userId'];
     $this->smarty->assign('toptitle', $toptitle);
     $this->smarty->assign("action", $toptitle);
     $waveId = WhWaveInfoModel::number_decode($_GET['waveId']);
     //生成配货单明细 //cmf 2014-8-5取消 由订单分配时生成配货明细
     //$this->createWaveScanRecord($waveId);
     $areas = $this->getUserAreaList($userId);
     $skulist = WhWaveScanRecordModel::getUserAreaSkuList($waveId, $userId, $areas);
     if (!$skulist) {
         //如果当前波次无可配货信息,查询下一波次
         if ($areas) {
             $nextwave = WhWaveReceiveRecordModel::find("scanStatus=0 AND is_delete=0 AND area IN('" . implode("','", $areas) . "')");
             $nextWaveId = WhWaveInfoModel::number_encode($nextwave['waveId']);
             $url = 'index.php?mod=pda_waveScanRecord&act=startscan&waveId=' . $nextWaveId;
         } else {
             //无配货信息,跳转到初始配货页面
             $url = 'index.php?mod=pda_waveScanRecord&act=index';
         }
         header("Location:" . $url);
         exit;
     }
     $sku_ids = array();
     foreach ($skulist as $val) {
         if (!$val['scanUserId']) {
             $sku_ids[] = $val['id'];
         }
     }
     if ($sku_ids) {
         //更新配货人
         $data = array('scanUserId' => $_SESSION['userId']);
         WhWaveScanRecordModel::update($data, "id IN('" . implode("','", $sku_ids) . "') AND scanUserId=0");
     }
     $this->smarty->assign('skulist', $skulist);
     $this->smarty->assign('waveId', $_GET['waveId']);
     $this->smarty->display('pda_waveScanRecord_startscan.htm');
 }
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;
 }