Пример #1
0
 public function view_waveinit()
 {
     $waveId = WhWaveInfoModel::number_decode($_POST['waveId']);
     //判断每个区域是否已配货完结
     $list = WhWaveReceiveRecordModel::select("waveId='{$waveId}'");
     if (!$list) {
         $result = array('status' => 'A00', 'msg' => '配货单收货记录不存在');
         echo json_encode($result);
         exit;
     } else {
         $areas = array();
         foreach ($list as $val) {
             if ($val['scanStatus'] < 2) {
                 $areas[] = $val['area'];
             }
         }
         if ($areas) {
             $result = array('status' => 'A00', 'msg' => '部分区域未完成收货,暂不能执行分拣<br/>' . implode(', ', $areas));
             echo json_encode($result);
             exit;
         }
     }
     //分配筒号(亮灯)
     $orderlist = WhWaveShippingRelationModel::select("waveId='{$waveId}' AND is_delete=0 order by shipOrderId asc");
     $light = 1;
     $shipOrderPickData = array();
     foreach ($orderlist as $val) {
         $data = array('pickLight' => $light, 'pickTime' => time(), 'pickUserId' => $_SESSION['userId']);
         WhWaveShippingRelationModel::update($data, $val['id']);
         //生成发货单投放记录表
         $shipOrderPickData[] = array('waveId' => $waveId, 'shipOrderId' => $val['shipOrderId'], 'pickStatus' => 0, 'pickTime' => 0, 'pickUserId' => 0, 'is_delete' => 0);
         $light++;
     }
     //查看是否有此波次的发货单投放记录
     $shipOrderPick = WhWaveShippingPickRecordModel::find(' waveId=' . $waveId);
     if (!$shipOrderPick) {
         WhWaveShippingPickRecordModel::insert($shipOrderPickData, true);
     }
     //生成分拣记录表
     $pick = WhWavePickRecordModel::find("waveId='{$waveId}'");
     if (!$pick) {
         $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' => 0, 'pickUserId' => 0, 'pickTime' => 0, 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0');
             $picklist[] = $data;
         }
         WhWavePickRecordModel::insert($picklist, true);
     }
     //扫描配货单的时候,查看配货单是否已经配货完成
     $shipOrderPicks = WhWaveShippingPickRecordModel::select(' waveId=' . $waveId . ' AND pickStatus = 0', '*');
     $hasShippingPick = false;
     $message = '配货单筒号分配正常,可以执行分拣(当前流程是SKU分拣)';
     if (count($shipOrderPicks) > 0) {
         $hasShippingPick = true;
         $message = '配货单筒号分配正常,可以执行分拣(当前流程是发货单投放)';
     }
     $result = array('status' => 'A99', 'hasShippingPick' => $hasShippingPick, 'msg' => $message);
     echo json_encode($result);
 }
Пример #2
0
 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;
 }
Пример #3
0
 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;
 }
Пример #4
0
 /**
  * WaveOrderPrintingView::view_prints()
  * 对配货单进行打印预览
  * @author cxy 
  * @return void
  */
 public function view_prints()
 {
     $shipOrderId = trim($_GET['shipOrderId']);
     $waveId = trim($_GET['waveId']);
     $wave = WhWaveInfoModel::find($waveId);
     if ($wave['waveType'] == 2) {
         //单料号的配货单
         //if($shipOrderId !='null'){
         //    echo $shipOrderId;
         //   	$orderlist = WhWaveScanRecordModel::getShipOrders($waveId, $shipOrderId);
         // }else{
         $orderlist = WhWaveScanRecordModel::getShipOrders($waveId);
         // }
         $onesku = true;
     } else {
         // if($shipOrderId !='null'){
         //    	$orderlist = WhWaveShippingRelationModel::getShipOrders($waveId, $shipOrderId);
         //}else{
         $orderlist = WhWaveShippingRelationModel::getShipOrders($waveId);
         // }
         $onesku = false;
     }
     if (!$orderlist) {
         $return = array('status' => 1, 'msg' => '该配货单下无此发货单,不能打印');
         echo $return;
         exit;
     }
     $carries = WhBaseModel::cache('trans.carrier.info.get');
     if (!$carries) {
         //接口获取快递运输方式
         require_once WEB_PATH . "html/api/include/opensys_functions.php";
         $paramArr = array('method' => 'trans.carrier.info.get', 'format' => 'json', 'v' => '1.0', 'username' => 'purchase', 'type' => 1);
         $result = json_decode(callOpenSystem($paramArr), true);
         $templist = $result['data'];
         if ($templist) {
             foreach ($templist as $val) {
                 $carries[$val['id']] = $val;
                 $carries['express_ids'][] = $val['id'];
             }
         }
         WhBaseModel::cache('trans.carrier.info.get', $carries);
     }
     foreach ($orderlist as $key => $val) {
         if ($val['transportId'] && in_array($val['transportId'], $carries['express_ids'])) {
             $val['isexpress'] = 1;
             $express_ordids[] = $val['shipOrderId'];
         } else {
             $val['isexpress'] = 0;
             $ordids[] = $val['shipOrderId'];
         }
         $orderlist[$key] = $val;
     }
     // var_dump($onesku);
     // print_r($orderlist);
     $this->smarty->assign('onesku', $onesku);
     $this->smarty->assign('orderlist', $orderlist);
     $this->smarty->display('waveOrderPrinting_startprint.htm');
 }
Пример #5
0
 /**
  * WaveBuildAct::make_wave()
  * 生成配货单  (单料号和单发货单)
  * @param int $shipOrderId  发货单ID
  * @param int $wave_id  发货单ID
  * @param integer $wave_status wave_id 没有传递时 生成的配货单状态 0可以继续添加 1完结配货单不许再添加
  * @param array $order_detail  订单明细
  * @param int $wave_type 配货单类型  1=》单个发货单 2-单料号 3-多料号
  * @return bool
  */
 public function make_wave($shipOrderId, $wave_id = 0, $wave_status = 0, $order_detail = '', $wave_type = 1)
 {
     $shipOrderId = intval(trim($shipOrderId));
     $wave_id = intval(trim($wave_id));
     $wave_status = intval(trim($wave_status));
     //print_r($shipOrderId);exit;
     if (!$shipOrderId) {
         self::$errCode = 200;
         self::$errMsg = '无效发货单ID!';
         return FALSE;
     }
     if (empty($order_detail)) {
         $order_detail = WhShippingOrderdetailModel::getShipDetails($shipOrderId);
         //获取订单明细
         if (empty($order_detail)) {
             //没有订单明细则直接返回
             self::$errCode = 201;
             self::$errMsg = '该发货单没有料号明细!';
             return FALSE;
         }
     }
     $order_limit = self::get_order_limit_info($order_detail);
     //获取当前订单的重量、料号数量、体积信息
     $area_info = self::get_area_info($order_detail);
     //获取订单区域、楼层信息
     //print_r($area_info);exit;
     WhBaseModel::begin();
     if (!$wave_id) {
         //不存在配货单号
         $startArea = current($area_info['areas']);
         //print_r($startArea);exit;
         $startArea = WhWaveAreaInfoModel::get_area_info('areaName', $startArea);
         //判断配货单区域类型
         $waveZone = self::judge_wave_zone($area_info['storey'], $area_info['areas']);
         //判断配货单区域类型
         if ($waveZone === FALSE) {
             self::$errCode = 203;
             self::$errMsg = '获取配货单区域类型失败!';
             return FALSE;
         }
         $data = array('storey' => implode(',', $area_info['storey']), 'startArea' => $startArea[0]['areaName'], 'totalWeight' => $order_limit['limitWeight'], 'totalVolume' => $order_limit['limitVolume'], 'totalSkus' => $order_limit['limitSkuNums'], 'totalOrders' => 1, 'waveStatus' => $wave_status, 'waveZone' => $waveZone, 'waveType' => $wave_type, 'createTime' => time(), 'printStorey' => $area_info['storey'][0]);
         if ($wave_type == 2) {
             //单料号配货单
             $data['sku'] = $order_detail[0]['sku'];
         }
         //print_r($data);exit;
         $wave_id = WhWaveInfoModel::insert_wave_info($data);
         //echo '生成配货单'.$wave_id."<br />";
         if ($wave_id === FALSE) {
             self::$errCode = 100;
             self::$errMsg = '生成配货单失败!';
             WhBaseModel::rollback();
             return FALSE;
         }
         $wave_number = WhWaveInfoModel::number_encode($wave_id);
         //生成配货单编号
         //print_r($wave_number);exit;
         /** 更新配货单编号**/
         $info = WhWaveInfoModel::update_wave_info(array('number' => $wave_number), array('id' => $wave_id));
         if (!$info) {
             self::$errCode = 108;
             self::$errMsg = '更新配货单编号失败!';
             WhBaseModel::rollback();
             return FALSE;
         }
         //echo '更新配货单编号'.$wave_number."<br />";
         /** end**/
     } else {
         //已存在配货单号
         $where = array('id' => $wave_id);
         $wave_info = WhWaveInfoModel::get_wave_info('*', $where);
         //获取配货单信息
         if (empty($wave_info)) {
             self::$errCode = 101;
             self::$errMsg = '没有该配货单信息!';
             return FALSE;
         }
         $wave_info = $wave_info[0];
         if ($wave_info['waveStatus'] != 0) {
             self::$errCode = 102;
             self::$errMsg = '该配货单已不能添加订单!';
             return FALSE;
         }
         $wave_type = $wave_info['waveType'];
         //配货单类型 单料号 多料号
         $order_limit['limitSkuNums'] += $wave_info['totalSkus'];
         $order_limit['limitWeight'] += $wave_info['totalWeight'];
         $order_limit['limitVolume'] += $wave_info['totalVolume'];
         $order_limit['limitOrderNums'] = $wave_info['totalOrders'] + 1;
         $is_wave = self::judge_single_shiporder($order_limit, $wave_type);
         //判断加上新订单是否超过单个配货单限制
         //var_dump($is_wave);exit;
         if ($is_wave === TRUE) {
             //完结配货单
             $update = array('waveStatus' => 1);
             $where = array('id' => $wave_id);
             $info = WhWaveInfoModel::update_wave_info($update, $where);
             //超过限制则完结该配货单
             return self::make_wave($shipOrderId, 0, $wave_status, $order_detail, $wave_type);
             //重新分配配货单
         } else {
             /** 更新配货单信息**/
             $update = array('totalSkus' => $order_limit['limitSkuNums'], 'totalWeight' => $order_limit['limitWeight'], 'totalVolume' => $order_limit['limitVolume'], 'totalOrders' => $order_limit['limitOrderNums']);
             $combine_area = self::combine_area_info($wave_info['startArea'], $area_info['areas']);
             //合并新加入订单的区域信息
             //print_r($combine_area);exit;
             $startArea = WhWaveAreaInfoModel::get_area_info('areaName', current($combine_area));
             $combine_storey = self::combine_storey_info($wave_info['storey'], $area_info['storey']);
             //合并楼层
             $waveZone = self::judge_wave_zone($combine_storey, $combine_area);
             //判断配货单区域类型
             $update['storey'] = implode(',', $combine_storey);
             $update['startArea'] = $startArea[0]['areaName'];
             $update['waveZone'] = $waveZone;
             $update['printStorey'] = $combine_storey[0];
             $where = array('id' => $wave_id);
             $info = WhWaveInfoModel::update_wave_info($update, $where);
             if (!$info) {
                 self::$errCode = 103;
                 self::$errMsg = '更新配货单信息失败!';
                 WhBaseModel::rollback();
                 return FALSE;
             }
             //echo '更新配货单'.$wave_id."<br />";
             /** 更新配货单信息end**/
         }
     }
     /** 插入收货记录表数据**/
     if (empty($area_info['areas'])) {
         self::$errCode = 111;
         self::$errMsg = '发货单区域信息为空!';
         WhBaseModel::rollback();
         return false;
     }
     $area_names = self::get_area_names($area_info['areas']);
     $storey = self::get_storey_list();
     //获取楼层列表
     //print_r($area_names);exit;
     $info = WhWaveReceiveRecordModel::insert_receive_data($wave_id, $area_names, $storey);
     //插入收获记录表区域信息
     if ($info === FALSE) {
         self::$errCode = 104;
         self::$errMsg = '插入收货记录表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入收货记录'.json_encode($area_names)."<br />";
     /** end**/
     /** 插入配货记录表数据**/
     $order_detail = self::merge_order_detail($order_detail);
     //合并同一生成时间下相同料号,相同仓位的料号信息
     //print_r($order_detail);exit;
     $scan_details = self::process_scan_details($order_detail);
     //处理订单详情生成相对应配货记录
     $info = WhWaveScanRecordModel::inser_scan_data($wave_id, $scan_details);
     if ($info === FALSE) {
         self::$errCode = 105;
         self::$errMsg = '插入配货记录表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入配货记录'.json_encode($scan_details)."<br />";
     /** end**/
     /** 插入配货单、发货单关系表**/
     $info = WhWaveShippingRelationModel::insert_relation_data($wave_id, $shipOrderId);
     if ($info === FALSE) {
         self::$errCode = 106;
         self::$errMsg = '插入配货单关系表失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '插入配货单关系'.$wave_id.'----'.$shipOrderId."<br />";
     /** end**/
     /** 更新发货单分配状态**/
     $info = WhShippingOrderModel::update(array('is_wave' => 1), array('id' => $shipOrderId));
     if ($info === FALSE) {
         self::$errCode = 107;
         self::$errMsg = '更新发货单分配状态失败!';
         WhBaseModel::rollback();
         return false;
     }
     //echo '更新发货单分配状态'.$shipOrderId."<br />";
     /** end**/
     /** 更新多料号临时存放表**/
     if ($wave_type == 3) {
         //多料号发货单
         $info = whWaveMultiShipAreaRecordModel::update(array('is_wave' => 1), array('shipOrderId' => $shipOrderId));
         if ($info === FALSE) {
             self::$errCode = 108;
             self::$errMsg = '更新多料号订单临时存放表状态失败!';
             WhBaseModel::rollback();
             return false;
         }
         //echo '更新多料号订单临时存放表'.$shipOrderId."<br />";
     }
     /** end**/
     WhBaseModel::commit();
     return TRUE;
 }
Пример #6
0
 public function view_orderdelivery()
 {
     $toptitle = "发货单投放";
     $this->smarty->assign('toptitle', $toptitle);
     $this->smarty->assign("action", $toptitle);
     if ($_POST['shipOrderId']) {
         $shipOrderId = trim($_POST['shipOrderId']);
         $order = WhWaveShippingRelationModel::find("shipOrderId='{$shipOrderId}'");
         if ($order) {
             $return = array('status' => '1', 'msg' => $order['pickLight'] . '号筒');
         } else {
             $return = array('status' => '0', 'msg' => '发货单[' . $_POST['shipOrderId'] . ']不存在');
         }
         echo json_encode($return);
         exit;
     } else {
         $this->smarty->display('pda_waveScanRecord_orderdelivery.htm');
     }
 }
Пример #7
0
 /**
  * PdaManagementAct::act_searchSortingInfo()
  * @author cxy
  * @param mixed $orderid
  * @return
  */
 function act_searchSortingInfo($orderid)
 {
     if (empty($orderid)) {
         return '请输入分拣的配货单号';
     }
     $orderid = trim($orderid);
     $scan_record = OmAvailableModel::getTNameList("wh_wave_info", "*", "where id='{$orderid}'  and is_delete=0 ");
     if (empty($scan_record)) {
         return '输入分拣的配货单号不存在';
     }
     $waveStatus = $scan_record[0]['waveStatus'];
     if ($waveStatus == WAVE_WAITING_GET_GOODS) {
         $status = '待配货';
     } else {
         if ($waveStatus == WAVE_PROCESS_GET_GOODS) {
             $status = '配货中';
         } else {
             $status = '配货完成';
         }
     }
     if ($scan_record[0]['waveType'] == 1) {
         $detail = WhWaveShippingRelationModel::select_not_scanning($orderid);
         //   echo '<pre>';  print_r($detail);     echo '<pre>';exit;
         if ($detail) {
             //分拣人
             $usermodel = UserModel::getInstance();
             $iqc_user = $usermodel->getGlobalUserLists('global_user_name', "where a.global_user_id={$detail[0]['pickUserId']}");
             $op_name = $iqc_user[0]['global_user_name'];
             $time = empty($detail[0]['pickTime']) ? "" : date('Y-m-d H:i:s', $detail[0]['pickTime']);
             $show = '配货单为' . $orderid . ',属于人工分拣单发货单, ' . '发货单为' . $detail[0]['shipOrderId'] . ',该配货单状态为' . $status . ', 人工分拣操作人为' . $op_name . ', 操作时间为' . $time . '<br />';
             $result = OmAvailableModel::getTNameList("wh_wave_pick_record", "*", "where shipOrderId='{$detail[0]['shipOrderId']}'  and is_delete=0 ");
             foreach ($result as $list) {
                 if ($list['pickStatus'] == 0) {
                     $status_SKU = '未分拣完成';
                 } else {
                     if ($list['pickStatus'] == 1) {
                         $status_SKU = '分拣完成';
                     } else {
                         $status_SKU = '手动完结分拣完成';
                     }
                 }
                 $dataTime = empty($list['pickTime']) ? '' : date('Y-m-d H:i:s', $list['pickTime']);
                 $show .= 'sku为' . $list['sku'] . ',该SKU需要分拣的数量为' . $list['skuAmount'] . ',状态为' . $status_SKU . ',分拣时间为' . $dataTime . '<br />';
             }
             return $show;
         } else {
             return '该配货单的相关信息不存在';
         }
     } else {
         if ($scan_record[0]['waveType'] == 2) {
             $result = OmAvailableModel::getTNameList("wh_wave_pick_record", "*", "where waveId='{$orderid}'  and is_delete=0 ");
             $show = '该配货是属于单SKU配货单,状态为' . $status;
             foreach ($result as $value) {
                 $dataTimes = empty($value['pickTime']) ? '' : date('Y-m-d H:i:s', $value['pickTime']);
                 $show .= '发货单为' . $value['shipOrderId'] . 'sku为' . $value['sku'] . ',该SKU需要分拣的数量为' . $value['skuAmount'] . ',分拣人为' . $value['pickUserId'] . ',分拣时间为' . $dataTimes . '<br/>';
             }
             return $show;
         } else {
             $result = OmAvailableModel::getTNameList("wh_wave_pick_record", "*", "where waveId='{$orderid}'  and is_delete=0 ");
             $show = '该配货是属于多SKU配货单,状态为' . $status;
             foreach ($result as $value) {
                 if ($value['pickStatus'] == 0) {
                     $status_SKU = '未分拣完成';
                 } else {
                     if ($value['pickStatus'] == 1) {
                         $status_SKU = '分拣完成';
                     } else {
                         $status_SKU = '手动完结分拣完成';
                     }
                 }
                 $dataTime = empty($value['pickTime']) ? '' : date('Y-m-d H:i:s', $value['pickTime']);
                 $show .= '发货单为' . $value['shipOrderId'] . ',sku为' . $value['sku'] . ',该SKU需要分拣的数量为' . $value['skuAmount'] . ',已经分拣的数量为' . $value['amount'] . '状态为' . $status_SKU . ',分拣人为' . $value['pickUserId'] . ',分拣时间为' . $dataTime . '<br />';
             }
             return $show;
         }
     }
 }
Пример #8
0
 /**
  * WaveInfoManageView::get_search_where()
  * 处理配货单搜索条件
  * @author Gary
  * @return void
  */
 private function get_search_where()
 {
     $areaUser = trim($_GET['areaUser']) ? intval(trim($_GET['areaUser'])) : '';
     //区域负责人
     $shipOrderId = trim($_GET['shipOrderId']) ? intval(trim($_GET['shipOrderId'])) : '';
     //发货单ID
     $waveType = trim($_GET['waveType']) ? intval(trim($_GET['waveType'])) : '';
     //配货单类型
     $waveZone = trim($_GET['waveZone']) ? intval(trim($_GET['waveZone'])) : '';
     //配货单区域类型
     $storey = isset($_REQUEST['storey']) ? intval(trim($_REQUEST['storey'])) : '';
     //配货单打印楼层
     $choose_area = trim($_GET['choose_area']);
     //选择的区域
     $waveStatus = trim($_GET['waveStatus']);
     //配货单状态
     $waveNumber = trim($_GET['waveNumber']);
     //配货单编号
     $startdate = trim($_GET['startdate']);
     //开始日期
     $enddate = trim($_GET['enddate']);
     //结束日日
     foreach ($_GET as $key => $v) {
         //传递搜索条件到配货单管理页面
         $this->smarty->assign($key, ${$key});
     }
     //print_r($choose_area);exit;
     $searchArr = array();
     $areas = array();
     //区域集合
     $wave_ids = array();
     //配货单ID数组
     if ($choose_area) {
         $areas[] = $choose_area;
     }
     if ($areaUser) {
         //区域负责人
         $areaId = WhWaveAreaUserRelationModel::select(array('userId' => $areaUser, 'is_delete' => 0), 'areaId');
         if (!empty($areaId)) {
             $areaName = WhWaveAreaInfoModel::get_area_info('areaName', $areaId[0]['areaId']);
             if (!empty($areaName)) {
                 $areas[] = $areaName[0]['areaName'];
             }
         }
     }
     if ($waveNumber) {
         $wave_id = WhBaseModel::number_decode($waveNumber);
         //获取配货单ID
         $wave_ids[] = $wave_id;
     }
     if ($startdate) {
         $searchArr['a.createTime >='] = strtotime($startdate);
     }
     if ($enddate) {
         $searchArr['a.createTime <='] = strtotime($enddate);
     }
     if ($shipOrderId) {
         $ids = WhWaveShippingRelationModel::select(array('shipOrderId' => $shipOrderId, 'is_delete' => 0), 'waveId');
         $tmp_ids = array();
         if (!empty($ids)) {
             foreach ($ids as $val) {
                 $tmp_ids[] = $val['waveId'];
             }
         } else {
             $tmp_ids[] = 0;
         }
         if (!empty($wave_ids)) {
             $wave_ids = array_intersect($wave_ids, $tmp_ids);
             $wave_ids = empty($wave_ids) ? array(0) : $wave_ids;
         } else {
             $wave_ids = $tmp_ids;
         }
     }
     if ($waveStatus) {
         $searchArr['a.waveStatus'] = $waveStatus;
     }
     if ($waveType) {
         $searchArr['a.waveType'] = $waveType;
     }
     if ($waveZone) {
         $searchArr['a.waveZone'] = $waveZone;
     }
     if (!empty($areas)) {
         $searchArr['c.area in'] = array_unique($areas);
     }
     if (!empty($wave_ids)) {
         $searchArr['a.id in'] = array_unique($wave_ids);
     }
     if ($storey) {
         $searchArr['a.printStorey'] = $storey;
     }
     $searchArr['a.waveStatus !='] = 0;
     $searchArr['a.createUserId !='] = 0;
     $searchArr['a.is_delete'] = 0;
     $searchArr['group by'] = 'a.id';
     return $searchArr;
 }
Пример #9
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;
 }