public function act_applyfor() { $pid = isset($_GET['pid']) ? trim($_GET['pid']) : 0; if ($pid == '') { self::$errCode = 0; self::$errMsg = '输入非法值!'; return; } $idar = explode(',', $pid); foreach ($idar as $key => $idval) { $idar[$key] = intval($idval); } $o_count = count($idar); $orderist = OrderPrintListModel::getPrintList('*', ' where id in (' . implode(',', $idar) . ') and status!=1001 and storeId=1'); $n_count = count($orderist); if ($o_count != $n_count) { self::$errCode = 0; self::$errMsg = '申请配货不能包含未打印地址条订单或包含B仓订单'; return; } $oidar = array(); //发货单id数组 foreach ($orderist as $orlval) { //验证合法性 if ($orlval['is_delete'] == 1) { $data = array('data' => array('包含已经删除单号!', '单号id为' . $orlval['id']), 'link' => 'index.php?mod=orderWaitforPrint&act=printList'); goErrMsgPage($data); exit; } $tempar = explode(',', $orlval['orderIds']); $oidar = array_merge($oidar, $tempar); } $po_obj = new PackingOrderModel(); $qresult = $po_obj->changeStatusToWaitGetGoods(implode(',', $oidar)); OrderPrintListModel::deleteAsetOfPrint(implode(',', $idar)); printLabelModel::inserRecords($oidar, $_SESSION['userId']); if ($qresult) { $time = time(); foreach ($oidar as $oid) { WhPushModel::pushOrderStatus($oid, 'STATESHIPPED_BEPICKING', $_SESSION['userId'], $time); } self::$errCode = 1; self::$errMsg = '申请成功'; return; } else { self::$errCode = 0; self::$errMsg = '失败'; return FALSE; } }
function act_complete() { $order_id = trim($_POST['ebay_id']); //先核对订单 $p_real_ebayid = '#^\\d+$#'; if (!preg_match($p_real_ebayid, $order_id)) { self::$errCode = "100"; self::$errMsg = "订单号[" . $order_id . "]格式有误"; return false; } $ordercheck = ShippingOrderModel::getShippingOrder("*", "where id='{$order_id}'"); $complete = ShippingOrderModel::update(array('orderStatus' => PKS_WWEIGHING), "and id='{$ordercheck[0]['id']}'"); // $complete = 111; if ($complete) { $time = time(); OmAvailableModel::updateTNameRow("wh_shipping_order_records", "set reviewerId='{$_SESSION['userId']}',reviewTime={$time}", "where shipOrderId={$ordercheck[0]['id']}"); WhPushModel::pushOrderStatus($ordercheck[0]['id'], 'PKS_WWEIGHING', $_SESSION['userId'], $time); //状态推送,需要改为待包装称重(订单系统提供状态常量) self::$errMsg = '订单[' . $ordercheck[0]['id'] . ']复核(拍照)成功,请扫描复核下一订单'; return $ordercheck[0]['id']; } else { self::$errCode = "006"; self::$errMsg = '订单复核出现异常,请重新复核'; return false; } }
/** * pda_shippingGroupReviewAct::act_outReview() * 扫描口袋编号通过AJAX传递口袋编号来对该编号进行操作 * @author cxy * @return boolean array */ public function act_outReview() { $userId = $_SESSION['userId']; $packageId = intval(trim($_POST['packageid'])); //得到发货单分区列表信息 $get_orderPartion = WhOrderPartionPrintModel::get_OrderPartion($packageId); if (empty($get_orderPartion)) { self::$errCode = '202'; self::$errMsg = '该口袋编号不存在分区列表中'; return false; } if ($get_orderPartion['status'] == 0) { self::$errCode = '202'; self::$errMsg = '该口袋编号还没有进行打包!'; return false; } //得到该口袋编号下的发货单 $all_order = WhOrderPartionRecordsModel::get_OrderPartionRecordsByPackageId($packageId); if ($all_order) { foreach ($all_order as $value) { $result_status = WhShippingOrderModel::get_order_info('orderStatus', array('id' => $value['shipOrderId'])); if ($result_status[0]['orderStatus'] != PKS_WAITING_SHIPPING_CHECKING) { self::$errCode = '202'; self::$errMsg = '该口袋编号下有发货单的状态不是在待发货组复核!'; return false; } } } //发货组复核信息 $get_groupReview = WhWaveOrderPartionShippingReviewModel::get_pocket($packageId); if ($get_groupReview) { self::$errCode = '211'; self::$errMsg = '该口袋编号已经在发货组复核中复核过了'; return true; } //分区复核的信息 $get_orderReview = WhWaveOrderPartionScanReviewModel::get_shippingNews($packageId); // print_r($get_orderReview); // echo $get_orderReview['review_weight'];exit; if ($get_orderPartion['totalWeight'] == $get_orderReview['review_weight'] && $get_orderPartion['totalNum'] == $get_orderReview['review_num']) { $is_error = 0; self::$errCode = '200'; self::$errMsg = '请随机扫描一个订单!'; $data = array('packageId' => $packageId, 'is_error' => $is_error, 'userId' => $userId, 'scantime' => time()); $partion_arr = array(); $review_arr = array(); //分区扫描得到的发货单 $get_orderPartion_detail = WhOrderPartionRecordsModel::get_OrderPartionRecordsByPackageId($packageId); //得到分区复核的发货单列表 $get_review_detail = WhWaveOrderPartionScanReviewModel::get_shipping_review($packageId); foreach ($get_orderPartion_detail as $v) { $partion_arr[$v['shipOrderId']] = $v; } foreach ($get_review_detail as $v) { $review_arr[$v['shipOrderId']] = $v; } $diversity_a = array_diff_key($partion_arr, $review_arr); $diversity_b = array_diff_key($review_arr, $partion_arr); if (!empty($diversity_a) || !empty($diversity_b)) { self::$errCode = '500'; self::$errMsg = '分区的发货单与分区复核的发货单不符合'; $order_str = ''; if ($diversity_a) { foreach ($diversity_a as $k => $val) { $order_str .= $k . ','; } } elseif ($diversity_b) { foreach ($diversity_b as $k => $val) { $order_str .= $k . ','; } } return trim($order_str, ','); } $res = array(); WhBaseModel::begin(); $result = WhWaveOrderPartionShippingReviewModel::insert($data); if ($result) { foreach ($get_review_detail as $ks => $val) { //更新发货操作记录表 $update = WhWaveOrderPartionShippingReviewModel::updateOrderRecords($val['shipOrderId'], $userId); if (!$update) { self::$errCode = '206'; self::$errMsg = '更新操作记录失败,请联系负责人!'; WhBaseModel::rollback(); return false; } //更新发货表状态 $ostatus = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($val['shipOrderId'], $status = PKS_WAITING_LOADING); if (!$ostatus) { self::$errCode = 608; self::$errMsg = "更新发货单状态失败!"; WhBaseModel::rollback(); return false; } WhPushModel::pushOrderStatus($val['shipOrderId'], 'PKS_WAITING_LOADING', $_SESSION['userId'], time()); //状态推送,需要改为装车扫描(订单系统提供状态常量) } self::$errCode = '200'; self::$errMsg = '该口袋编号正确,请复核下该口袋编号下的发货单!'; $get_orderPartion['totalWeight'] = round($get_orderPartion['totalWeight'] / 1000, 3); $get_orderReview['review_weight'] = round($get_orderReview['review_weight'] / 1000, 3); $res['partion_data'] = $get_orderPartion; $res['review_data'] = $get_orderReview; $res['packageid'] = $packageId; } else { self::$errCode = '206'; self::$errMsg = '该发货组复核口袋编号失败,请联系负责人!'; WhBaseModel::rollback(); return false; } WhBaseModel::commit(); return $res; } else { self::$errCode = '201'; self::$errMsg = '分区和分区复核的数据不一致!'; } $res['partion_data'] = $get_orderPartion; $res['review_data'] = $get_orderReview; $res['packageid'] = $packageId; return $res; }
function act_submitInfo() { $userId = $_SESSION['userId']; $show_mes = array(); $shipOrderGroup = $_POST['order_group']; $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $submit_orders = trim($_POST['submit_orders'], ','); $submit_nums = trim($_POST['submit_nums'], ','); $group_id = $_POST['now_group_id']; $now_sku = trim($_POST['now_sku']); $now_sku = get_goodsSn($now_sku); $now_pname = $_POST['now_pname']; $orders_arr = explode(',', $submit_orders); $nums_arr = explode(',', $submit_nums); if ($sku != $now_sku) { $sku = $now_sku; } if ($sku != 'undefined') { foreach ($orders_arr as $key => $order) { $i_data = array('status' => 1, 'amount' => $nums_arr[$key]); $inser_info = GroupDistributionModel::update($i_data, "and shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and shipOrderId='{$order}'"); if ($inser_info) { //outskunums2($sku,$nums_arr[$key],$order); //出库记录 $position_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$now_pname}' and storeId=1"); $positionId = $position_info[0]['id']; $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'"); $paraArr = array('ordersn' => $order, 'sku' => $sku, 'amount' => $nums_arr[$key], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 2, 'userId' => $userId, 'reason' => '清单配货出库', 'positionId' => $positionId); $WhIoRecordsAct = new WhIoRecordsAct(); $WhIoRecordsAct->act_addIoRecoresForWh($paraArr); //出库记录 $this->inser_scan_record_by_sku($order, $sku, $nums_arr[$key], $userId); //插入扫描表 $complete_sql = GroupDistributionModel::getGroupDistList("*", "where shipOrderGroup='{$shipOrderGroup}' and shipOrderId='{$order}' and status=0"); if (empty($complete_sql)) { //更新订单到复核状态 GroupDistributionModel::updateShipOrder(array('orderStatus' => 403), "and id='{$order}' and orderStatus=402"); WhPushModel::pushOrderStatus($order, 'STATESHIPPED_PENDREVIEW', $_SESSION['userId'], time()); //状态推送 } } } } $status_sql = GroupDistributionModel::getGroupDistList("*", "where shipOrderGroup='{$shipOrderGroup}' and status=0"); if (empty($status_sql)) { self::$errCode = 1; self::$errMsg = "配货清单出库完成,请扫描下一清单1!"; return true; } else { $show_info = array(); $show_sql = GroupDistributionModel::getGroupSkuInfo("and a.shipOrderGroup='{$shipOrderGroup}' and a.status=0 and a.groupId>'{$group_id}' group by a.pName order by a.groupId asc"); if (!empty($show_sql)) { foreach ($show_sql as $show) { $order_sku_info = $this->get_valid_order($show['shipOrderGroup'], $show['sku'], $show['pName']); if ($order_sku_info['sku_amount'] != 0) { $show_info['group_id'] = $show['groupId']; $show_info['sku'] = $show['sku']; $show_info['sku_amount'] = $order_sku_info['sku_amount']; $show_info['goods_location'] = $show['pName']; break; } } } if (empty($show_info)) { $show_info2 = array(); $show_sql = GroupDistributionModel::getGroupSkuInfo("and a.shipOrderGroup='{$shipOrderGroup}' and a.status=0 and a.groupId<'{$group_id}' group by a.pName order by a.groupId asc"); if (!empty($show_sql)) { foreach ($show_sql as $show) { $order_sku_info = $this->get_valid_order($show['shipOrderGroup'], $show['sku'], $show['pName']); if ($order_sku_info['sku_amount'] != 0) { $show_info2['group_id'] = $show['groupId']; $show_info2['sku'] = $show['sku']; $show_info2['sku_amount'] = $order_sku_info['sku_amount']; $show_info2['goods_location'] = $show['pName']; break; } } } else { self::$errCode = 1; self::$errMsg = "配货清单出库完成,请扫描下一清单2!"; return true; } if (!empty($show_info2)) { $show_mes = $show_info2; } else { self::$errCode = 1; self::$errMsg = "配货清单出库完成,请扫描下一清单3!"; return true; } } else { $show_mes = $show_info; } self::$errMsg = "出库成功,请扫描下一个料号!"; return $show_mes; } }
public function view_savepacket() { $packageid = intval($_POST['packageid']); $packet = WhOrderPartionPrintModel::find($packageid, 'status,partion,partitionId'); if (!$packet) { $result = array('status' => 0, 'msg' => '口袋编号不存在'); echo json_encode($result); exit; } $status = $packet['status']; $partion = $packet['partion']; $partionId = $packet['partitionId']; unset($packet); if ($status != 0) { $result = array('status' => 0, 'msg' => '该包裹已使用,请更换包裹编号!'); echo json_encode($result); exit; } if (!$_SESSION['userId']) { $result = array('status' => 0, 'msg' => '请先登录系统'); echo json_encode($result); exit; } $record = WhOrderPartionRecordsModel::getPartionRecords($partionId, $_SESSION['userId']); $totalnum = $record['totalnum']; $totalweight = $record['totalweight']; if (!$totalnum && !$totalweight) { $result = array('status' => 0, 'msg' => '该包裹分区下没有订单'); echo json_encode($result); exit; } //更新口袋分区 $data = array('packageId' => $packageid, 'modifyTime' => time()); WhOrderPartionRecordsModel::update($data, "partitionId='" . $partionId . "' AND packageId=0 AND scanUserId='" . $_SESSION['userId'] . "'"); //更新口袋打包 $packet_data = array('totalWeight' => $totalweight, 'totalNum' => $totalnum, 'status' => 1, 'modifyTime' => time()); WhOrderPartionPrintModel::update($packet_data, $packageid); $result = array('status' => 1, 'totalWeight' => round($totalweight / 1000, 3), 'totalNum' => $totalnum, 'msg' => '口袋打包成功'); //更新订单状态 $orders = WhOrderPartionRecordsModel::select("partitionId='" . $partionId . "' AND packageId='" . $packageid . "' AND scanUserId='" . $_SESSION['userId'] . "'"); foreach ($orders as $val) { $orderIds[] = $val['shipOrderId']; WhPushModel::pushOrderStatus($val['shipOrderId'], 'PKS_DISTRICT_CHECKING', $_SESSION['userId'], time()); //状态推送,需要改为待分区复核(订单系统提供状态常量) } $data = array('orderStatus' => PKS_DISTRICT_CHECKING); WhShippingOrderModel::update($data, array('id in' => $orderIds)); echo json_encode($result); }
public function act_weighingSubmitFZ() { $weight = isset($_POST['num']) ? floatval($_POST['num']) : 0; if ($weight <= 0) { self::$errCode = 0; self::$errMsg = '请输入正确的重量!'; return; } // $weight = $weight * 1000; $weight = round($weight); $packinguser = isset($_POST['userid']) ? intval($_POST['userid']) : 0; if ($packinguser <= 1) { self::$errCode = 0; self::$errMsg = '请输入配货人员!'; return; } $orderid = isset($_POST['orderid']) ? intval($_POST['orderid']) : 0; if (empty($orderid)) { self::$errCode = 0; self::$errMsg = '请填写单号!'; return; } $expressstr = isset($_POST['express']) ? trim($_POST['express']) : ''; if (empty($expressstr)) { self::$errCode = 0; self::$errMsg = '请填写快递单号!'; return; } $po_obj = new PackingOrderModel(); $orderinfo = $po_obj->getOrderInfoById($orderid); if (empty($orderinfo)) { self::$errCode = 0; self::$errMsg = '单号不存在!'; return; } if ($orderinfo['orderStatus'] != PKS_WWEIGHING_EX) { // 该订单不在国内称重状态 self::$errCode = 0; self::$errMsg = '该发货单不在国内称重组!'; return; } $data = array('weight' => $weight, 'userid' => $packinguser, 'orderid' => $orderid, 'status' => PKS_DONE, 'express' => $expressstr, 'storid' => 1); $result = $po_obj->recordWeightInfoFZ($data); if ($result) { //成功 WhPushModel::pushOrderStatus($orderid, 'STATEHASSHIPPED', $_SESSION['userId'], time(), $weight); //状态推送 self::$errCode = 1; self::$errMsg = 'OK'; return; } else { self::$errCode = 0; self::$errMsg = '操作失败!'; return; } }
/** * pda_TrackingAct::act_tracking_binding() * 快递绑定跟踪号 * @author cxy * @return */ public function act_tracking_binding() { $userId = $_SESSION['userId']; $ebay_id = trim($_POST['ebay_id']); $tracking = trim($_POST['tracking']); if (empty($userId)) { self::$errCode = '0'; self::$errMsg = '系统登录超时,请先关闭浏览器 然后登录扫描!!'; return false; } if (empty($ebay_id)) { self::$errCode = 0; self::$errMsg = '请填写单号!'; return; } if (empty($tracking)) { self::$errCode = 0; self::$errMsg = '请输入正确的跟踪号!'; return; } //查询扫描的跟踪号是否已经扫描过了的 $result_select = WhOrderTracknumberModel::select_ByTracknumber($tracking); if ($result_select) { self::$errCode = 211; self::$errMsg = '该跟踪号已经绑定' . $result_select['shipOrderId'] . ',请检查!'; return false; } $data = array('tracknumber' => $tracking, 'shipOrderId' => $ebay_id, 'createdTime' => time()); $array = array('shipOrderId' => $ebay_id, 'is_delete' => 0); //根据发货单号获取快递需要的箱子和跟踪号数量 $result_tracking_count = WhWaveTrackingBoxModel::select_by_shipOrderId($ebay_id); //说明该快递单只有一个箱子和一个跟踪号,所以不需要在wh_wave_tracking_box "快递单号的箱子与跟踪号数量表"添加记录 if (empty($result_tracking_count)) { $count_binding = WhOrderTracknumberModel::count($array); //发货单已经绑定跟踪号的数量 if ($count_binding > 0) { self::$errCode = 24; self::$errMsg = '该发货单号已经绑定好跟踪号了,不在需要绑定'; return false; } WhBaseModel::begin(); $result_insert = WhOrderTracknumberModel::insert($data); if (!$result_insert) { WhBaseModel::rollback(); self::$errCode = 20; self::$errMsg = '跟踪号绑定失败,请联系负责人'; return false; } //更新发货表状态 $ostatus = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($ebay_id, $status = PKS_WAITING_LOADING); if (!$ostatus) { WhBaseModel::rollback(); self::$errCode = 20; self::$errMsg = '更新发货单状态失败,请联系负责人'; return false; } WhPushModel::pushOrderStatus($ebay_id, 'PKS_WAITING_LOADING', $_SESSION['userId'], time()); //状态推送,需要改为待装车扫描(订单系统提供状态常量) WhBaseModel::commit(); self::$errCode = 200; self::$errMsg = '绑定成功,请扫描另外一个发货单!'; return true; } else { $result_tracking_count = $result_tracking_count['trackingCount']; //发货单需要绑定跟踪号的数量 $count_binding = WhOrderTracknumberModel::count($array); //发货单已经绑定跟踪号的数量 if ($result_tracking_count > $count_binding) { WhBaseModel::begin(); $result_insert = WhOrderTracknumberModel::insert($data); if (!$result_insert) { WhBaseModel::rollback(); self::$errCode = 21; self::$errMsg = '跟踪号绑定失败,请联系负责人'; return false; } $num = $result_tracking_count - $count_binding - 1; if ($num == 0) { //更新发货表状态 $ostatus = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($ebay_id, $status = PKS_WAITING_LOADING); if (!$ostatus) { WhBaseModel::rollback(); self::$errCode = 20; self::$errMsg = '更新发货单状态失败,请联系负责人'; return false; } WhPushModel::pushOrderStatus($ebay_id, ' ', $_SESSION['userId'], time()); //状态推送,需要改为待装车扫描(订单系统提供状态常量) WhBaseModel::commit(); self::$errMsg = '绑定成功,该发货单不需要绑定跟踪号了'; self::$errCode = 200; return true; } else { WhBaseModel::commit(); self::$errMsg = '绑定成功,该发货单还需要绑定' . $num . '个跟踪号'; self::$errCode = 400; return true; } } else { self::$errCode = 22; self::$errMsg = '绑定失败,绑定的跟踪号已经够' . $result_tracking_count . '个,请扫描另外一个发货单!'; return true; } } }
public function act_orderWeighingFlat() { $orderid = isset($_POST['orderid']) ? $_POST['orderid'] : ""; $mailway = isset($_POST['channelId']) ? $_POST['channelId'] : ""; //$partionId = isset($_POST['partionId'])?$_POST['partionId']:"";//不作处理 $orderweight = isset($_POST['orderweight']) ? $_POST['orderweight'] : ""; if (!is_numeric($orderid) || empty($orderid)) { self::$errCode = 501; self::$errMsg = "错误的发货单号!"; return false; } $where = "where id={$orderid}"; $lists = orderWeighingModel::selectRecord($where); $calcweight = $lists[0]['calcWeight'] * 1000; //估算重量 $userName = $_SESSION['userCnName']; /**重量拦截的逻辑**/ $vip_users = C('weight_vip'); //获取具有VIP权限的 $lists = orderWeighingModel::selectOrderDetail($orderid); if (!in_array($userName, $vip_users)) { //判断是否具有vip操作权限 $minRate = 0.8; $maxRate = 1.2; } else { $minRate = 0.5; $maxRate = 2; } if ($calcweight < 50 && $orderweight < 50) { if (abs($orderweight - $calcweight) >= 20) { self::$errCode = 509; self::$errMsg = "该订单重量与实际不符合!系统重量为{$calcweight}称重重量为{$orderweight}"; return false; } } else { if (($orderweight < $calcweight * $minRate || $orderweight > $calcweight * $maxRate) && $calcweight != 0) { self::$errCode = 510; self::$errMsg = "该订单重量与实际不符合!系统重量为{$calcweight}称重重量为{$orderweight}"; return false; } } TransactionBaseModel::begin(); //更新状态,插入记录 $userId = $_SESSION['userId']; $msg = orderWeighingModel::insertRecord($orderid, $userId); if (!$msg) { self::$errCode = 511; self::$errMsg = "插入称重记录失败!"; TransactionBaseModel::rollback(); return false; } $msg = orderWeighingModel::updateRecord($orderid, $orderweight, $userId); if (!$msg) { self::$errCode = 512; self::$errMsg = "更新操作记录表失败!"; TransactionBaseModel::rollback(); return false; } //更新发货单实际重量和状态 $orderData = array('orderWeight' => $orderweight, 'orderStatus' => PKS_WDISTRICT); $msg = WhShippingOrderModel::update($orderData, $orderid); //orderWeighingModel::updateStatus($orderid); if (!$msg) { self::$errCode = 513; self::$errMsg = "更新发货单重量和状态失败!"; TransactionBaseModel::rollback(); return false; } //插入运输方式跟踪号申请记录表 $transportData = array('shipOrderId' => $orderid, 'createTime' => time()); $msg = WhWaveOrderTransportModel::insert($transportData); if (!$msg) { self::$errCode = 514; self::$errMsg = "插入运输方式跟踪号记录表失败!"; TransactionBaseModel::rollback(); return false; } WhPushModel::pushOrderStatus($orderid, 'PKS_WDISTRICT', $userId, time()); //状态推送 TransactionBaseModel::commit(); return true; }
/** * pda_ExpressWeighingAct::act_trackingCount() * @author cxy *快递箱子和跟踪号数量添加到数据库 * @return */ public function act_trackingCount() { $userId = $_SESSION['userId']; $ebay_id = trim($_POST['ebay_id']); $count_box = trim(intval($_POST['count_box'])); $tracking_count = trim(intval($_POST['tracking'])); $weighing = trim($_POST['weighing']); $weighing = $weighing * 1000; if (empty($userId)) { self::$errCode = '0'; self::$errMsg = '系统登录超时,请先关闭浏览器 然后登录扫描!!'; return false; } if (empty($ebay_id)) { self::$errCode = 0; self::$errMsg = '请填写单号!'; return; } if ($count_box <= 1) { self::$errCode = 0; self::$errMsg = '请输入正确的箱子数量,最小是2!'; return false; } if ($tracking_count < 1) { self::$errCode = 0; self::$errMsg = '请输入正确的跟踪号数量,最小是1!'; return false; } if ($weighing <= 0) { self::$errCode = 0; self::$errMsg = '请输入正确的重量!'; return; } $where = "where id={$ebay_id}"; $order = orderPartionModel::selectOrder($where); if ($order[0]['transportId'] == 48) { //顺丰快递的跟踪号值能是一个 $tracking_count = 1; } else { if ($tracking_count != $count_box) { self::$errCode = 0; self::$errMsg = '跟踪号数量与箱子数量不相等!'; return; } } //逻辑删除以前称重的记录 $update = WhWaveTrackingBoxModel::update(array('is_delete' => 1), array('shipOrderId' => $ebay_id)); $data = array('boxCount' => $count_box, 'trackingCount' => $tracking_count, 'shipOrderId' => $ebay_id, 'weighTime' => time()); $result = WhWaveTrackingBoxModel::insert($data); if ($result) { WhBaseModel::begin(); $status = PKS_PRINT_SHIPPING_INVOICE; $result = WhShippingOrderModel::update_shipping_order_by_id("id = '{$ebay_id}' and is_delete = 0", "orderStatus = '{$status}',orderWeight = '{$weighing}'"); if (!$result) { WhBaseModel::rollback(); self::$errCode = 0; self::$errMsg = '称重添加失败,请联系负责人'; return false; } $msg = orderWeighingModel::insertRecord($ebay_id, $userId); if (!$msg) { self::$errCode = 511; self::$errMsg = "插入称重记录失败!"; WhBaseModel::rollback(); return false; } $msg_update = orderWeighingModel::updateRecord($ebay_id, $weighing, $userId); if (!$msg_update) { self::$errCode = 512; self::$errMsg = "更新操作记录表失败!"; WhBaseModel::rollback(); return false; } WhPushModel::pushOrderStatus($ebay_id, 'PKS_PRINT_SHIPPING_INVOICE', $_SESSION['userId'], time()); //状态推送,需要改为待打印面单(订单系统提供状态常量) WhBaseModel::commit(); self::$errCode = 200; self::$errMsg = '操作成功,请称重下一个发货单号'; return true; } else { self::$errCode = 211; self::$errMsg = '操作失败,请联系IT部门'; return false; } }
function act_checkSku() { $userId = $_SESSION['userId']; $starttime = time(); $Msg = ''; $res_data = array(); $state_status = array(402); //准备状态 $final_status = array(403); //配货完成状态 $no_express_delivery = array('中国邮政平邮', '中国邮政挂号', '香港小包平邮', '香港小包挂号', '德国邮政', '新加坡邮政', 'EUB', 'Global Mail'); $order_id = $_POST['ebay_id']; //先核对订单 //兼容 EUB或者 包裹 扫描的是 trackno 而非ebayid $p_real_ebayid = '#^\\d+$#'; $p_trackno_eub = '#^(LK|RA|RB|RC|RR|RF|LN)\\d+(CN|HK|DE200)$#'; $is_eub_package_type = false; if (preg_match($p_real_ebayid, $order_id)) { } else { if (preg_match($p_trackno_eub, $order_id)) { $is_eub_package_type = true; } else { self::$errCode = "001"; self::$errMsg = "订单号[" . $order_id . "]格式有误"; return false; } } if ($is_eub_package_type === true) { $ordercheck = ShippingOrderModel::getShippingOrderInfo("b.*", "where a.tracknumber='{$order_id}' and a.is_delete=0"); } else { $ordercheck = ShippingOrderModel::getShippingOrder("*", "where id='{$order_id}'"); } if (empty($ordercheck)) { self::$errCode = '001'; self::$errMsg = '未找到订单/跟踪号[' . $order_id . ']'; return false; } else { $ebay_carrier = CommonModel::getShipingNameById($ordercheck[0]['transportId']); if (!in_array($ebay_carrier, $no_express_delivery)) { self::$errCode = '001'; self::$errMsg = '请选择非快递订单!'; return false; } } if ($ordercheck[0]['orderStatus'] == 900) { self::$errCode = '002'; self::$errMsg = "该发货单[{$order_id}][已经废弃]!"; return false; } else { if (in_array($ordercheck[0]['orderStatus'], $final_status)) { self::$errCode = '005'; self::$errMsg = "该发货单已经扫描完成!"; return false; } } if (!in_array($ordercheck[0]['orderStatus'], $state_status)) { self::$errCode = '002'; self::$errMsg = "该发货单[{$order_id}][不在待配货]!"; return false; } //配货单所有料号及数量 $skuinfos = array(); $key_skuinfos = array(); $skuinfo = GroupRouteModel::getOrderPositionID($ordercheck[0]['id']); foreach ($skuinfo as $info) { //$s_key = $info['sku']."-".$info['pName']; $s_key = $info['id']; $skuinfos[$s_key] = $info['amount']; $key_skuinfo[$info['sku']] = $info['amount']; } //print_r($skuinfos);die; $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0"); if (!$eosr_arr2) { self::$errCode = '005'; self::$errMsg = "该发货单已经扫描完成!"; return false; } else { if (count($eosr_arr2) <= count($skuinfos)) { //初次和二次配货 $ebay_sku = trim($_POST['ebay_sku']); $ebay_sku = get_goodsSn($ebay_sku); $now_sku = trim($_POST['now_sku']); $now_pname = trim($_POST['now_pname']); $now_detailid = trim($_POST['now_detailid']); //$s_key = $now_sku."-".$now_pname; $s_key = $now_detailid; $detail_info = OmAvailableModel::getTNameList("wh_shipping_orderdetail", "storeId,shipOrderId", "where id={$now_detailid}"); $arr_eosr = OrderPickingRecordsModel::getPickingRecords("sku", "where shipOrderId={$ordercheck[0]['id']} and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0"); $key_skuinfos = array_keys($key_skuinfo); if ($ebay_sku != $now_sku) { self::$errCode = '011'; self::$errMsg = "记录料号与扫描料号不符1!" . $ebay_sku; return $ebay_sku; } if (!empty($arr_eosr)) { if (!in_array($ebay_sku, $key_skuinfos)) { self::$errCode = '009'; self::$errMsg = "记录料号与扫描料号不符2!" . $ebay_sku; return $ebay_sku; } else { if ($skuinfos[$s_key] < 1) { self::$errCode = '021'; self::$errMsg = "料号数量小于1!({$key_skuinfos[0]})"; return $ebay_sku; } else { if ($skuinfos[$s_key] > 1) { if (isset($_POST['pskunum'])) { if ($_POST['pskunum'] != $skuinfos[$s_key]) { self::$errCode = '022'; self::$errMsg = "请输入正确的数量,不要配错数量{$_POST['pskunum']}-{$skuinfos[$s_key]}!"; return $ebay_sku; } } else { self::$errCode = '020'; self::$errMsg = "多数量料号需要输入数量!"; return $ebay_sku; } } } } if ($arr_eosr[0]['isScan'] == 0) { //$sku_stock = OrderPickingRecordsModel::getSkuStock("actualStock","where sku='$ebay_sku'"); $sku_stock = GroupRouteModel::getSkuPosition("where a.sku='{$ebay_sku}' and c.pName='{$now_pname}' and b.is_delete=0"); if ($detail_info[0]['storeId'] == 1) { if (isset($sku_stock[0]['nums'])) { if ($sku_stock[0]['nums'] >= $skuinfos[$s_key]) { $ssname = $order_id . "," . $ebay_sku; session_start(); if (isset($_SESSION[$ssname]) && $_SESSION[$ssname] == "yes") { self::$errCode = '502'; self::$errMsg = "数据同步中!请不要重复提交!"; return false; } $u_data = array(); $u_data = array('isScan' => 1, 'scanUserId' => $userId, 'amount' => $skuinfos[$s_key], 'scanTime' => time()); OrderPickingRecordsModel::update($u_data, "and shipOrderId='{$ordercheck[0]['id']}' and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0"); $position_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$now_pname}' and storeId=1"); $positionId = $position_info[0]['id']; $skuinfo = whShelfModel::selectSku(" where sku = '{$ebay_sku}'"); $paraArr = array('ordersn' => $ordercheck[0]['id'], 'sku' => $ebay_sku, 'amount' => $skuinfos[$s_key], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 2, 'userId' => $userId, 'reason' => '配货单配货出库', 'positionId' => $positionId); $WhIoRecordsAct = new WhIoRecordsAct(); $WhIoRecordsAct->act_addIoRecoresForWh($paraArr); //出库记录 self::$errCode = '300'; $Msg = "实际料号出库扫描成功!" . $ebay_sku; $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0"); if (!$eosr_arr2) { //更新订单到复核状态 GroupDistributionModel::updateShipOrder(array('orderStatus' => 403), "and id='{$ordercheck[0]['id']}' and orderStatus=402"); WhPushModel::pushOrderStatus($ordercheck[0]['id'], 'STATESHIPPED_PENDREVIEW', $_SESSION['userId'], time()); //状态推送 self::$errCode = '005'; self::$errMsg = "该订单已经扫描完成!"; return true; } } else { self::$errCode = '007'; $Msg = "所需数量大于库存,禁止出库!"; } } else { self::$errCode = '008'; $Msg = "该料号仓储信息有误!" . $ebay_sku; } } else { $snapStock_info = OmAvailableModel::getTNameList("wh_order_review_records_b", "snapStock,id", "where FIND_IN_SET('{$detail_info[0]['shipOrderId']}',shipOrderId) and status=1 and sku='{$ebay_sku}' order by id desc limit 1"); if (empty($snapStock_info)) { self::$errCode = '020'; self::$errMsg = "该B仓料号提货未复核"; return $ebay_sku; } else { if ($snapStock_info[0]['snapStock'] >= $skuinfos[$s_key]) { $u_data = array(); $u_data = array('isScan' => 1, 'scanUserId' => $userId, 'amount' => $skuinfos[$s_key], 'scanTime' => time()); OrderPickingRecordsModel::update($u_data, "and shipOrderId='{$ordercheck[0]['id']}' and sku='{$ebay_sku}' and pName='{$now_pname}' and is_delete=0"); ReviewBModel::updateSnapStock($skuinfos[$s_key], $snapStock_info[0]['id']); self::$errCode = '300'; $Msg = "实际料号出库扫描成功!" . $ebay_sku; $eosr_arr2 = OrderPickingRecordsModel::getPickingRecords("*", "where shipOrderId={$ordercheck[0]['id']} and isScan=0 and is_delete=0"); if (!$eosr_arr2) { //更新订单到复核状态 GroupDistributionModel::updateShipOrder(array('orderStatus' => 403), "and id='{$ordercheck[0]['id']}' and orderStatus=402"); WhPushModel::pushOrderStatus($ordercheck[0]['id'], 'STATESHIPPED_PENDREVIEW', $_SESSION['userId'], time()); //状态推送 self::$errCode = '005'; self::$errMsg = "该订单已经扫描完成!"; return true; } } else { self::$errCode = '013'; $Msg = "B仓提货数量不够配货,请确认"; } } } foreach ($eosr_arr2 as $value) { $goods_sn = array(); $eg = GroupRouteModel::getSkuPosition("where a.sku='{$value['sku']}' and c.pName='{$value['pName']}' and b.is_delete=0"); $goods_sn['detailId'] = $value['shipOrderdetailId']; $goods_sn['sku'] = $value['sku']; $goods_sn['gl'] = $value['pName']; $goods_sn['nums'] = $value['totalNums']; $goods_sn['goods_count'] = $eg[0]['nums']; $res_data['detail'][] = $goods_sn; } $gl_arr = array(); $s_arr = array(); foreach ($res_data['detail'] as $value) { $s_arr[] = $value['sku']; $gl_arr[] = $value['gl']; } array_multisort($gl_arr, $s_arr, $res_data['detail']); } else { self::$errCode = '010'; $Msg = "请不要重复扫描该订单下的料号!" . $ebay_sku; } } else { self::$errCode = '009'; $Msg = "记录料号与扫描料号不符!" . $ebay_sku; } } else { self::$errCode = '009'; $Msg = "记录料号与扫描料号不符!"; } } $difftime = time() - $starttime; self::$errMsg = $Msg . '--' . $difftime; return $res_data; }
/** * Pda_orderLoadingAct::act_orderExpress() * 如果装车扫描的时候是扫描快递的,那么该模块接收的变量的值是追踪号$ebay_id,发货单号是$shipOrderId * @author cxy * @return */ public function act_orderExpress() { $userId = $_SESSION['userId']; $shipOrderId = trim($_POST['shipOrderId']); //快递单号 $ebay_id = trim($_POST['ebay_id']); //扫描的跟踪号 if (empty($shipOrderId)) { self::$errCode = '201'; self::$errMsg = '请输入发货单号!'; return false; } if (empty($ebay_id)) { self::$errCode = '201'; self::$errMsg = '请输入跟踪号!'; return false; } // $arr_track[] = $ebay_id; //记录表里和发货单关联的跟踪号 $tracknumber = WhOrderTracknumberModel::select_TracknumberByOrderId($shipOrderId); //print_r($tracknumber);exit(); $tracking_arr = array(); foreach ($tracknumber as $track) { $tracking_arr[] = $track['tracknumber']; } // print_r($arr_track); // print_r($tracking_arr);exit; if (!in_array($ebay_id, $tracking_arr)) { self::$errCode = '202'; self::$errMsg = '输入的跟踪号没有和该发货单号绑定!'; return false; } $data = array('packageId' => $shipOrderId, 'scantime' => time(), 'userId' => $userId, 'tracking' => $ebay_id, 'isExpress' => 1); $select_loading = WhWaveOrderLoadingModel::select_loading_express($shipOrderId, $ebay_id); if ($select_loading) { self::$errCode = '003'; self::$errMsg = '该' . $shipOrderId . '下的跟踪号' . $ebay_id . '已经进行过装车扫描了!'; return false; } $insert_loading = WhWaveOrderLoadingModel::insert($data); if (empty($insert_loading)) { self::$errCode = '003'; self::$errMsg = '装车扫描失败,请联系负责人!'; return false; } $count_load = WhWaveOrderLoadingModel::select_loading_count($shipOrderId); //已经装车扫描的记录 //当需要扫描的跟踪号等于已经扫描的跟踪号的时候就改变发货单的状态 if ($count_load['muns'] == count($tracknumber)) { $result = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($shipOrderId, $status = PKS_DONE); if (!$result) { self::$errCode = '003'; self::$errMsg = '更新' . $shipOrderId . '发货单号失败,请联系负责人!'; return false; } WhPushModel::pushOrderStatus($shipOrderId, 'PKS_DONE', $_SESSION['userId'], time()); //状态推送,需要改为已发货(订单系统提供状态常量) self::$errMsg = '扫描' . $shipOrderId . '快递单成功,请扫描下一个发货单号!'; } else { self::$errMsg = '扫描' . $shipOrderId . '快递单的跟踪号成功,请扫描该快递单的下一个跟踪号!'; } self::$errCode = '200'; return true; // WhOrderTracknumberModel::select_ByTracknumber($ebay_id); // echo $ebay_id.'--'.$shipOrderId;exit; }
public function view_formDataImport() { // $tir_obj = new TrackInfoRecordModel(); $ebay_id = $_POST['order'][1]; $tracking = $_POST['express'][1]; if (empty($ebay_id) && empty($tracking)) { $data = array("data" => array('发货单和跟踪号不能是空!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); } $where = "where id={$ebay_id}"; $order = orderPartionModel::selectOrder($where); if (!$order) { $data = array("data" => array('发货单不存在!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } if ($order[0]['orderStatus'] != PKS_PRINT_SHIPPING_INVOICE) { $data = array("data" => array($ebay_id . '此发货单状态不是在待打印面单状态!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } $array = array('shipOrderId' => $ebay_id, 'is_delete' => 0); //根据发货单号获取快递需要的箱子和跟踪号数量 $result_tracking_count = WhWaveTrackingBoxModel::select_by_shipOrderId($ebay_id); $count_binding = WhOrderTracknumberModel::count($array); //发货单已经绑定跟踪号的数量 if (empty($result_tracking_count)) { if ($count_binding > 0) { $data = array("data" => array($ebay_id . "该发货单已经绑定好跟踪号了!"), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } } else { $result_tracking_count = $result_tracking_count['trackingCount']; //发货单需要绑定跟踪号的数量 if ($result_tracking_count <= $count_binding) { $data = array("data" => array($ebay_id . "该发货单已经绑定好跟踪号了!"), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } } //查询扫描的跟踪号是否已经扫描过了的 $result_select = WhOrderTracknumberModel::select_ByTracknumber($tracking); if ($result_select) { $data = array("data" => array('该跟踪号已经绑定' . $result_select['shipOrderId'] . ',请检查!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } $data_insert = array('tracknumber' => $tracking, 'shipOrderId' => $ebay_id, 'createdTime' => time()); $array_count = array('shipOrderId' => $ebay_id, 'is_delete' => 0); //根据发货单号获取快递需要的箱子和跟踪号数量 $result_tracking_count = WhWaveTrackingBoxModel::select_by_shipOrderId($ebay_id); //说明该快递单只有一个箱子和一个跟踪号,所以不需要在wh_wave_tracking_box "快递单号的箱子与跟踪号数量表"添加记录 if (empty($result_tracking_count)) { $count_binding = WhOrderTracknumberModel::count($array_count); //发货单已经绑定跟踪号的数量 if ($count_binding > 0) { $data = array("data" => array('该发货单号已经绑定好跟踪号了,不在需要和这个跟踪号绑定!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } WhBaseModel::begin(); $result_insert = WhOrderTracknumberModel::insert($data_insert); if (!$result_insert) { WhBaseModel::rollback(); $data = array("data" => array('跟踪号绑定失败,请联系负责人!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } //更新发货表状态 $ostatus = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($ebay_id, $status = PKS_WAITING_LOADING); if (!$ostatus) { WhBaseModel::rollback(); $data = array("data" => array('更新发货单状态失败,请联系负责人!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } WhPushModel::pushOrderStatus($ebay_id, 'PKS_WAITING_LOADING', $_SESSION['userId'], time()); //状态推送,需要改为待装车扫描(订单系统提供状态常量) WhBaseModel::commit(); $data = array("data" => array('绑定成功,请扫描另外一个发货单!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goOkMsgPage($data); } else { $result_tracking_count = $result_tracking_count['trackingCount']; //发货单需要绑定跟踪号的数量 $count_binding = WhOrderTracknumberModel::count($array_count); //发货单已经绑定跟踪号的数量 if ($result_tracking_count > $count_binding) { WhBaseModel::begin(); $result_insert = WhOrderTracknumberModel::insert($data_insert); if (!$result_insert) { WhBaseModel::rollback(); $data = array("data" => array('跟踪号绑定失败,请联系负责人!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } $num = $result_tracking_count - $count_binding - 1; if ($num == 0) { //更新发货表状态 $ostatus = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($ebay_id, $status = PKS_WAITING_LOADING); if (!$ostatus) { WhBaseModel::rollback(); $data = array("data" => array('更新发货单状态失败,请联系负责人!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } WhPushModel::pushOrderStatus($ebay_id, ' ', $_SESSION['userId'], time()); //状态推送,需要改为待装车扫描(订单系统提供状态常量) WhBaseModel::commit(); $data = array("data" => array('绑定成功,该发货单不需要绑定跟踪号了!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); } else { WhBaseModel::commit(); $data = array("data" => array('绑定成功,该发货单还需要绑定' . $num . '个跟踪号!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goOkMsgPage($data); } } else { $data = array("data" => array('绑定失败,绑定的跟踪号已经够' . $result_tracking_count . '个,请扫描另外一个发货单!'), 'link' => 'index.php?mod=expressRecheck&act=trackNumberInput'); goErrMsgPage($data); exit; } } $navlist = array(array('url' => '', 'title' => '出库'), array('url' => 'index.php?mod=expressRecheck&act=ExpressList', 'title' => '快递待复核'), array('url' => '', 'title' => '快递待复核数据导入 ')); $this->smarty->assign('navlist', $navlist); $toptitle = '待复核'; // 顶部链接 $this->smarty->assign('toptitle', $toptitle); $toplevel = 2; // 顶层菜单 $this->smarty->assign('toplevel', $toplevel); $secondlevel = '28'; // 当前的二级菜单 $this->smarty->assign('secondlevel', $secondlevel); $this->smarty->assign('secnev', 3); // 二级导航 $this->smarty->assign('list', TrackInfoRecordModel::$data); $this->smarty->display('tracknumimport.htm'); }
/** * pda_partitionCheckingAct::act_scanOrderReview() * 在PDA扫描分区编号后对订单号进行分区复核 * @author cxy * @return boolean */ public function act_scanOrderReview() { $userId = $_SESSION['userId']; $ebay_id = trim($_POST['ebay_id']); $ebay_id = substr($ebay_id, -22); $partion = trim($_POST['partion']); $package_id = intval(trim($_POST['package_id'])); if (empty($userId)) { self::$errCode = '0'; self::$errMsg = '系统登录超时,请先关闭浏览器 然后登录扫描!!'; return false; } //先核对订单 //兼容 EUB或者 包裹 扫描的是 trackno 而非ebayid 拿LN229773466CN追踪号对应1012970发货单号测试 $p_real_ebayid = '#^\\d+$#'; $p_trackno_eub = '#^(LK|RA|RI|RL|RB|RM|RC|RD|RR|RF|LN|LM|AG)\\d+(CN|HK|DE200)$#'; $p_trackno_ups = '#^(BLVS|1ZR)\\d+$#'; $p_ups = '/^(1ZA)/'; $is_eub_package_type = false; if (preg_match($p_real_ebayid, $ebay_id)) { } else { if (preg_match($p_trackno_eub, $ebay_id)) { $is_eub_package_type = true; } else { if (preg_match($p_trackno_ups, $ebay_id)) { $is_eub_package_type = true; } else { if (preg_match($p_ups, $ebay_id)) { $is_eub_package_type = true; } else { self::$errCode = '001'; self::$errMsg = '订单号[' . $ebay_id . ']格式有误'; return false; } } } } if (strlen($ebay_id) > 20) { $is_eub_package_type = true; } if ($is_eub_package_type == true) { //$is_eub_package_type是真的时候$ebay_id是跟踪号 $info = orderWeighingModel::selectOrderId($ebay_id); if (!$info) { self::$errCode = 501; self::$errMsg = "此跟踪号不存在!"; return false; } //得到发货单号 $shipOrderId = $info[0]['shipOrderId']; } else { $shipOrderId = $ebay_id; } //得到发货单明细 $order_records = WhOrderPartionRecordsModel::get_OrderPartionRecords($shipOrderId); if (empty($order_records)) { self::$errCode = 0; self::$errMsg = "此跟踪号/发货单号还没有进行分区!"; return false; } if ($order_records['packageId'] != $package_id) { self::$errCode = 0; self::$errMsg = "此跟踪号/发货单号应该在{$order_records['packageId']}口袋编号中!"; return false; } if ($order_records['partion'] != $partion) { self::$errCode = 0; self::$errMsg = "此跟踪号/发货单号没有在{$partion}分区中!"; return false; } $where = "where id={$shipOrderId}"; $order = orderPartionModel::selectOrder($where); if (!$order) { self::$errCode = 0; self::$errMsg = "此发货单不存在!"; return false; } if ($order[0]['orderStatus'] != PKS_DISTRICT_CHECKING) { self::$errCode = 0; self::$errMsg = "此发货单状态不是在待分区复核!"; return false; } $review_list = WhWaveOrderPartionScanReviewModel::get_reviewById($shipOrderId); if (!empty($review_list)) { self::$errCode = 0; self::$errMsg = "此发货单已经分区复核过了!"; return false; } else { WhBaseModel::begin(); $data = array('shipOrderId' => $shipOrderId, 'partion' => $partion, 'userId' => $userId, 'scantime' => time(), 'packageId' => $package_id); $result = WhWaveOrderPartionScanReviewModel::insert($data); if ($result) { $update = WhWaveOrderPartionScanReviewModel::updateOrderRecords($shipOrderId, $userId); if (!$update) { self::$errCode = '206'; self::$errMsg = '更新操作记录失败,请联系负责人!'; WhBaseModel::rollback(); return false; } //更新发货表状态 $ostatus = WhWaveOrderPartionScanReviewModel::updateShippingOrderStatus($shipOrderId, $status = PKS_PRINT_SHIPPING_INVOICE); if (!ostatus) { self::$errCode = 608; self::$errMsg = "更新发货单状态失败!"; WhBaseModel::rollback(); return false; } WhPushModel::pushOrderStatus($shipOrderId, 'PKS_PRINT_SHIPPING_INVOICE', $_SESSION['userId'], time()); //状态推送,需要改为待打印面单(订单系统提供状态常量) } else { self::$errCode = '206'; self::$errMsg = '该订单分区复核失败,请联系负责人!'; WhBaseModel::rollback(); return false; } self::$errCode = '200'; self::$errMsg = '该订单分区正确,请复核下一订单!'; WhBaseModel::commit(); return true; } }
/** * OrderPrintAct::act_check_order() * 检查发货单信息 * @return void */ public function act_check_order() { $shipOrderId = intval($_REQUEST['order']); $is_preview = isset($_REQUEST['is_preview']) ? $_REQUEST['is_preview'] : 0; if (!$shipOrderId) { self::$errCode = '201'; self::$errMsg = '请输入发货单'; return FALSE; } $shipOrderInfo = WhShippingOrderModel::get_order_info(array('orderStatus', 'transportId', 'accountId'), $shipOrderId); if (empty($shipOrderInfo)) { self::$errCode = 202; self::$errMsg = '发货单' . $shipOrderInfo . ':没有该发货单信息!'; return FALSE; } if (!$is_preview) { //打印模式 if ($shipOrderInfo[0]['orderStatus'] != PKS_PRINT_SHIPPING_INVOICE) { self::$errCode = 203; self::$errMsg = '发货单' . $shipOrderInfo . ':不是待打印面单状态!'; return FALSE; } } //得到非快递的运输方式ID $arr_transportId = C('flat_transport'); $arr_transportId = array_keys($arr_transportId); $res = self::orderPrint($shipOrderId, $shipOrderInfo[0]['transportId'], $shipOrderInfo[0]['accountId']); if ($res) { $partion = WhOrderPartionRecordsModel::get_OrderPartionRecords($shipOrderId); //获取分区记录 $partion = empty($partion) ? '' : $partion['partion']; self::$errCode = 200; self::$errMsg = $shipOrderId . '打印面单:' . $partion; $res = str_replace("'", '"', $res); if ($shipOrderInfo[0]['orderStatus'] == PKS_PRINT_SHIPPING_INVOICE && !$is_preview) { $status = in_array($shipOrderInfo[0]['transportId'], $arr_transportId) ? PKS_WAITING_SHIPPING_CHECKING : PKS_WAITING_LOADING; $info = WhShippingOrderModel::update(array('orderStatus' => $status), $shipOrderId); if (!$info) { self::$errCode = 204; self::$errMsg = '更新发货单状态失败!'; $res = $info; } $status = in_array($shipOrderInfo[0]['transportId'], $arr_transportId) ? 'PKS_WAITING_SHIPPING_CHECKING' : 'PKS_WAITING_LOADING'; WhPushModel::pushOrderStatus($shipOrderId, $status, $_SESSION['userId'], time()); //状态推送,需要改为发货组复核(订单系统提供状态常量) } } else { return $res; } return $res; }
public function view_skupick() { $waveId = $_POST['waveId'] ? $_POST['waveId'] : $_GET['waveId']; $waveId = WhWaveInfoModel::number_decode($waveId); $sku = get_goodsSn($_POST['sku'] ? $_POST['sku'] : $_GET['sku']); if ($waveId) { $wave = WhWaveInfoModel::find($waveId); } if (!$waveId || !$wave) { $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '波次配货单不存在,参数错误'); echo json_encode($msg); exit; } $recordlist = array(); $recordlist = WhWaveScanRecordModel::getRecordInfoBySku($sku, $waveId); if (!$recordlist) { $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '料号对应的发货单不存在,请确认料号输入正确'); echo json_encode($msg); exit; } $record = array(); $firstRecord = array(); foreach ($recordlist as $val) { if (!$firstRecord) { $firstRecord = $val; } if (!$val['pickStatus']) { $record = $val; break; } } if ($record['pickLight']) { if ($record && !$record['record_id']) { //料号无分拣,插入新记录 $new_record = array('waveId' => $record['waveId'], 'shipOrderId' => $record['shipOrderId'], 'sku' => $record['sku'], 'skuAmount' => $record['skuAmount'], 'amount' => '1', 'pickStatus' => $record['skuAmount'] == 1 ? 1 : 0, 'pickUserId' => intval($_SESSION['userId']), 'pickTime' => time(), 'deleteUserId' => '0', 'deleteTime' => '0', 'is_delete' => '0'); $record_id = WhWavePickRecordModel::insert($new_record); } else { if ($record) { $data = array(); $data['amount'] = $record['pickcount'] + 1; if ($data['amount'] >= $record['skuAmount']) { $data['pickStatus'] = 1; } if (!$record['pickUserId']) { $data['pickUserId'] = intval($_SESSION['userId']); $data['pickTime'] = time(); } WhWavePickRecordModel::update($data, $record['record_id']); } } $msg = array('status' => 'A' . ($record['pickLight'] >= 10 ? $record['pickLight'] : '0' . $record['pickLight']), 'pickLight' => $record['pickLight'] . '号桶', 'shipOrderId' => $record['shipOrderId'], 'waveStatus' => 'A00', 'msg' => ''); //检查当前发货单是否已完结分拣 $pickrecord = WhWavePickRecordModel::find("shipOrderId='" . $record['shipOrderId'] . "' AND pickStatus=0 AND is_delete=0"); if (!$pickrecord) { //快递小包通用待复核 $data = array('orderStatus' => PKS_WIQC); WhShippingOrderModel::update($data, "id='" . $record['shipOrderId'] . "'"); WhPushModel::pushOrderStatus($record['shipOrderId'], 'PKS_WIQC', $_SESSION['userId'], time()); } } else { if ($firstRecord) { $msg = array('status' => 'A00', 'pickLight' => $firstRecord['pickLight'] . '号桶', 'shipOrderId' => $firstRecord['shipOrderId'], 'waveStatus' => 'A00', 'msg' => '料号[' . $sku . ']已完成分拣'); } else { $msg = array('status' => 'A00', 'waveStatus' => 'A00', 'msg' => '料号[' . $sku . ']未找到对应发货单和筒号'); } } //检查当前波次是否已分拣完结 $pickstatus = WhWavePickRecordModel::checkPickStatus($waveId); if ($pickstatus === true) { /*$data = array( 'waveStatus' => 5 ); WhWaveInfoModel::update($data, $waveId);*/ //返回波次完结信息 $msg['waveStatus'] = 'A99'; $msg['msg'] = '波次配货单已分拣完结'; } echo json_encode($msg); }
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; }
public function act_recheckInfoSubmit() { $orderid = isset($_POST['orderid']) ? intval($_POST['orderid']) : 0; if (empty($orderid)) { self::$errCode = 0; self::$errMsg = '请输入发货单信息!'; return; } $sku = isset($_POST['sku']) ? trim($_POST['sku']) : 0; $sku = get_goodsSn($sku); if (empty($sku)) { self::$errCode = 0; self::$errMsg = '请输入sku'; return; } $num = isset($_POST['num']) ? intval($_POST['num']) : 0; if ($num < 1) { self::$errCode = 0; self::$errMsg = '请输入正确的数量'; return; } $po_obj = new PackingOrderModel(); $orderinfo = $po_obj->getOrderInfoById($orderid); if (empty($orderinfo)) { self::$errCode = 0; self::$errMsg = '订单不存在!'; return; } if ($orderinfo['orderStatus'] != PKS_WIQC) { //该订单不在待复核状态 self::$errCode = 0; self::$errMsg = '该发货单不在待复核组!'; return; } $sod_obj = new ShipingOrderDetailModel(); $skulist = $sod_obj->getSkuListByOrderId($orderid); if (count($skulist) == 0) { //没有料号 self::$errCode = 0; self::$errMsg = '该订单下没有料号信息,请及时反馈!'; return; } $rr_obj = new ReviewRecordsModel(); $scan_rocords = $rr_obj->getRiewRecordsByOrderid($orderid); $scanskus = array(); foreach ($scan_rocords as $sval) { if (array_key_exists($sval['shipOrderdetailId'], $skulist)) { $scanskus[] = $sval['sku']; unset($skulist[$sval['shipOrderdetailId']]); } } if (in_array($sku, $scanskus)) { self::$errCode = 0; self::$errMsg = $sku . '已复核过了'; return; } $isfound = FALSE; $numcorrect = true; foreach ($skulist as $skuval) { if ($skuval['sku'] == $sku) { $isfound = $skuval; if ($skuval['amount'] != $num) { $numcorrect = false; } break; } } if ($isfound === FALSE) { //没找到对应的料号信息 self::$errCode = 0; self::$errMsg = '料号[' . $sku . ']不存在'; return; } if ($numcorrect == false) { self::$errCode = 0; self::$errMsg = '复核数量与分拣数不符'; return; } $data = array(); $data['orderid'] = $orderid; //单号 $data['detailid'] = $isfound['id']; //detailid号 $data['sku'] = $sku; //sku $data['amount'] = $num; //复核数量 $data['totalNums'] = $isfound['amount']; //料号原始总数 $data['userid'] = $_SESSION['userId']; //复核扫描用户id $data['storeId'] = 1; //仓库id $islast = 0; if (count($skulist) == 1) { //当前为最后一个复核sku $data['islast'] = TRUE; $islast = 1; } else { $data['islast'] = FALSE; } $result = $rr_obj->recordReviewInfo($data); if ($result == FALSE) { self::$errCode = 0; self::$errMsg = '复核失败,复核记录插入失败'; return; } else { self::$errMsg = '成功!'; if ($islast) { //最后一个复核 WhPushModel::pushOrderStatus($orderid, 'PKS_WWEIGHING', $_SESSION['userId'], time()); //状态推送 //更新状态为待包装称重 $data = array('orderStatus' => PKS_WWEIGHING); WhShippingOrderModel::update($data, "id='" . $orderinfo['shipOrderId'] . "'"); self::$errCode = 2; return; } else { self::$errCode = 1; unset($skulist[$isfound['id']]); return $skulist; } } }
public function act_packingTracknumber() { $orderid = isset($_POST['orderid']) ? $_POST['orderid'] : ""; $tracknumber = isset($_POST['tracknumber']) ? $_POST['tracknumber'] : ""; $userId = $_SESSION['userId']; //先核对订单 //兼容 EUB或者 包裹 扫描的是 trackno 而非ebayid $p_real_ebayid = '#^\\d+$#'; $p_trackno_eub = '#^(LK|RA|RB|RC|RR|RF|LN)\\d+(CN|HK|DE200)$#'; $is_eub_package_type = false; if (preg_match($p_real_ebayid, $orderid)) { } else { if (preg_match($p_trackno_eub, $orderid)) { $is_eub_package_type = true; } else { self::$errCode = "001"; self::$errMsg = "订单号[" . $orderid . "]格式有误"; return false; } } if ($is_eub_package_type === true) { $record = ShippingOrderModel::getShippingOrderInfo("b.*", "where a.tracknumber='{$orderid}' and a.is_delete=0"); } else { $record = ShippingOrderModel::getShippingOrder("*", "where id='{$orderid}'"); } //验证发货单号 以及所属状态 if (!$record) { self::$errCode = 404; self::$errMsg = "发货单号不存在!"; return false; } if ($record[0]['orderStatus'] != 404) { self::$errCode = 405; self::$errMsg = "此发货单不在待包装!"; if ($record[0]['orderStatus'] == 900) { self::$errMsg = "此发货单已废弃!"; } return false; } //挂号的单需要再输入挂号条码 $carrier = CommonModel::getShipingNameById($record[0]['transportId']); $partion = CommonModel::getChannelNameByIds($record[0]['transportId'], $record[0]['countryName']); $total_num = 0; $skuinfos = get_realskunum($record[0]['id']); foreach ($skuinfos as $or_sku => $or_nums) { $total_num += $or_nums; } if (carrier == '中国邮政挂号' && !preg_match("/^(RA|RB|RC|RR)\\d+(CN)\$/", $tracknumber)) { self::$errCode = 111; self::$errMsg = "录入失败,中国邮政挂号跟踪码不符合规范"; return false; } if ($carrier == '香港小包挂号' && !preg_match("/^(RA|RB|RC|RR)\\d+(HK)\$/", $tracknumber)) { self::$errCode = 111; self::$errMsg = "录入失败,香港小包挂号跟踪码不符合规范"; return false; } $p_str = "挂号条码:" . "<font color='#FF0000'>" . $tracknumber . "</font> <br>"; TransactionBaseModel::begin(); //更新订单状态 $msg = OmAvailableModel::updateTNameRow("wh_shipping_order", "set orderStatus=405", "where id={$record[0]['id']}"); if (!$msg) { self::$errCode = 409; self::$errMsg = "更新发货单状态记录失败!"; $arr['partion'] = $partion; $arr['carrier'] = $carrier; TransactionBaseModel::rollback(); return json_encode($arr); exit; } //更新操作记录 $msg = packingScanOrderModel::updateOrderRecord($record[0]['id'], $userId); if (!$msg) { self::$errCode = 406; self::$errMsg = "更新发货单操作记录失败!"; TransactionBaseModel::rollback(); return false; } //插入包装记录 $msg = packingScanOrderModel::insertPackingRecord($record[0]['id'], $userId); if (!$msg) { self::$errCode = 407; self::$errMsg = "插入包装记录失败!"; TransactionBaseModel::rollback(); return false; } $msg = packingScanOrderModel::deleteTrackRecord($record[0]['id']); if (!$msg) { self::$errCode = 409; self::$errMsg = "删除跟踪记录失败!"; TransactionBaseModel::rollback(); return false; } //录入挂号条码 $msg = packingScanOrderModel::insertTrackRecord($tracknumber, $record[0]['id']); if (!$msg) { self::$errCode = 408; self::$errMsg = "插入包装记录失败!"; TransactionBaseModel::rollback(); return false; } WhPushModel::pushOrderStatus($record[0]['id'], 'STATESHIPPED_BEWEIGHED', $userId, time(), '', $tracknumber); //状态推送 $arr['partion'] = "<font color='#FF0000'>该订单属于" . $partion . ";含SKU总数:" . $total_num . "个</font><br>"; $arr['carrier'] = $carrier; $arr['res'] = $arr['partion'] . "包装人员:" . "<font color='green'>" . $_SESSION['userCnName'] . "</font><br>" . "运输方式:" . "<font color='#FF0000'>" . $carrier . "</font> <br>" . $p_str . "扫描结果:<font color='#33CC33'>包装扫描成功!</font>"; TransactionBaseModel::commit(); return $arr; }
private function updataExpressId($expressid, $orderid, $storid) { $time = time(); if (is_array($expressid)) { //多跟踪号的情况 $temp_ar = array(); foreach ($expressid as $eval) { $temp_ar[] = "('{$eval}', {$orderid}, {$time}, {$storid}, 0)"; } $str = implode(",", $temp_ar); $sql = 'insert into wh_order_tracknumber values ' . $str; } else { $sql = "insert into wh_order_tracknumber values ('{$expressid}', {$orderid}, {$time}, {$storid}, 0)"; } $upstatus_sql = 'update wh_shipping_order set orderStatus=' . PKS_DONE . ' where id=' . $orderid; $this->dbconn->begin(); $query_insert = $this->dbconn->query($sql); if (empty($query_insert)) { //失败 回滚 $this->dbconn->rollback(); $this->dbconn->query('SET AUTOCOMMIT=1'); return FALSE; } $result_update = $this->dbconn->query($upstatus_sql); if (empty($result_update)) { $this->dbconn->rollback(); $this->dbconn->query('SET AUTOCOMMIT=1'); return FALSE; } WhPushModel::pushOrderStatus($orderid, 'STATEHASSHIPPED', $_SESSION['userId'], time()); //状态推送 $this->dbconn->commit(); return TRUE; }