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); }
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; }
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; }
/** * 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'); }
/** * 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; }
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'); } }
/** * 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; } } }
/** * 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; }
/** * 配货收货 * @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; }