public function view_rollBackStock() { $orderid = isset($_GET['orderid']) ? intval($_GET['orderid']) : 0; if ($orderid < 1) { //传参不合法 $data = array('data' => array('参数不合法!'), 'link' => 'index.php?mod=unusualOrder&act=unusualOrderList'); goErrMsgPage($data); exit; } $po_obj = new PackingOrderModel(); $orderinfo = $po_obj->getOrderInfoById($orderid); if (empty($orderinfo)) { $data = array('data' => array('指定发货单不存在!'), 'link' => 'index.php?mod=unusualOrder&act=unusualOrderList'); goErrMsgPage($data); exit; } if ($orderinfo['orderStatus'] != PKS_UNUSUAL) { //该订单不在待复核状态 $data = array('data' => array('该订单不是异常订单!'), 'link' => 'index.php?mod=unusualOrder&act=unusualOrderList'); goErrMsgPage($data); exit; } $sod_obj = new ShipingOrderDetailModel(); $sku_havegot = $sod_obj->getSkuHavedone($orderid); //获得已经配货的sku列表 $rollbackresult = $sod_obj->rollBackStock($sku_havegot); if ($rollbackresult) { $data = array('data' => array('回滚成功!'), 'link' => 'index.php?mod=unusualOrder&act=unusualOrderList'); goOkMsgPage($data); exit; } else { $data = array('data' => array('该订单不是异常订单!'), 'link' => 'index.php?mod=dispatchBillQuery&act=showForm'); goErrMsgPage($data); exit; } }
private function handelScanSubmit($ordertype) { $sku = isset($_POST['sku']) ? trim($_POST['sku']) : 0; //sku $sku = get_goodsSn($sku); if (empty($sku)) { self::$errCode = 0; self::$errMsg = '请输入sku'; return FALSE; } $orderid = isset($_POST['orderid']) ? abs(intval($_POST['orderid'])) : 0; //单号 if (empty($orderid)) { self::$errCode = 0; self::$errMsg = '请输入单号!'; return FALSE; } $num = isset($_POST['num']) ? intval($_POST['num']) : 0; //数量 if (!(is_int($num) && $num > 0)) { self::$errCode = 0; self::$errMsg = '请输入正确的数量!'; return FALSE; } $pName = isset($_POST['pname']) ? trim($_POST['pname']) : ''; //仓位 if (empty($pName)) { self::$errCode = 0; self::$errMsg = '仓位有误,请联系it'; return FALSE; } $pcko_obj = new PackingOrderModel(); $orderinfo = $pcko_obj->getOrderInfoById($orderid, ' and orderStatus=' . PKS_WGETGOODS); //发货单完整信息 if (empty($orderinfo)) { //订单号不存在 self::$errCode = 0; self::$errMsg = '订单号不存在!'; return FALSE; } /* 验证该订单的类型是否符合要求 */ if ($ordertype == 1) { //为快递单 if (!ShipingTypeModel::isExpressShiping($orderinfo['transportId'])) { self::$errCode = 0; self::$errMsg = '该订单为非快递单!'; return FALSE; } } elseif ($ordertype == 2) { //为非快递单 if (!ShipingTypeModel::isSmallpressShiping($orderinfo['transportId'])) { self::$errCode = 0; self::$errMsg = '该订单非小包订单!'; return FALSE; } } elseif ($ordertype == 3) { if (!ShipingTypeModel::isInlandShiping($orderinfo['transportId'])) { self::$errCode = 0; self::$errMsg = '该订单非国内快递订单!'; return FALSE; } } /***添加料号、配货数量验证 start ***/ if ($ordertype == 1) { $sod_obj = new ShipingOrderDetailModel(); $rtnNum = $sod_obj->checkOrderSku($orderid, $sku); if ($rtnNum == 0) { self::$errCode = 20; self::$errMsg = '发货单号不存在料号[' . $sku . ']'; return false; } else { $rtnNum = $sod_obj->checkSkuPickRecord($orderid, $sku, $pName); if ($rtnNum != 0) { self::$errCode = 20; self::$errMsg = '料号[' . $sku . ']已配货'; return false; } else { $actualNum = $sod_obj->checkSkuQty($orderid, $sku); $diffNum = $num - $actualNum; if ($diffNum > 0) { self::$errCode = 20; self::$errMsg = '料号[' . $sku . ']需配货' . $actualNum . '件现配' . $num . '件多配' . $diffNum . '件'; return false; } else { if ($diffNum < 0) { self::$errCode = 20; self::$errMsg = '料号[' . $sku . ']需配货' . $actualNum . '件现配' . $num . '件少配-' . $diffNum . '件'; return false; } else { } } } } } /***添加料号、配货数量验证 end ***/ $sod_obj = new ShipingOrderDetailModel(); $skulist = $sod_obj->getSkuListByOrderId($orderid); //该发货单下的全部sku列表 $sku_scaned = $sod_obj->getSkuHavedone($orderid); //该订单下的已配货的sku列表 foreach ($sku_scaned as $skval) { //去掉已配货的 if (array_key_exists($skval['shipOrderdetailId'], $skulist)) { unset($skulist[$skval['shipOrderdetailId']]); } } $matched = null; foreach ($skulist as $val) { if ($val['amount'] == $num && $val['sku'] == $sku) { //找到匹配的 $matched = $val; break; } } $islast = FALSE; if (count($skulist) == 1) { //为最后一个配货料号 $islast = TRUE; } if (empty($matched)) { //没找到数量匹配的 self::$errCode = 0; self::$errMsg = 'sku数量不对!'; return FALSE; } //删除库存 插入配货记录 $data = array('num' => $num, 'sku' => $sku, 'pName' => $pName, 'orderid' => $orderid, 'detailid' => $matched['id'], 'amount' => $num, 'totalnum' => $matched['amount'], 'userid' => $_SESSION['userId'], 'islast' => $islast, 'orderTypeId' => $orderinfo['orderTypeId'], 'shiptype' => $ordertype); $dbresult = $sod_obj->recordDataToSystem($data); if (!$dbresult) { //插入数据失败 self::$errCode = 0; self::$errMsg = '配货失败,请重试!'; return FALSE; } if ($islast) { //最后一个配货完成 // WhPushModel::pushOrderStatus($orderid,'STATESHIPPED_PENDREVIEW',$_SESSION['userId'],time()); //状态推送 self::$errCode = 2; self::$errMsg = '配货成功!'; return TRUE; } else { $skulist = $sod_obj->getSkuListInOneOrder($orderid); $sign = 0; $skulists = array(); foreach ($skulist as $k => $v) { $sku = $v['sku']; $amount = $v['amount']; //配货数量 $posId = $v['positionId']; //仓位ID $pName = $v['pName']; //仓位名称 $storeId = $v['storeId']; //仓库ID,默认1:深圳赛维 $skuInfo = getSkuInfoBySku($sku); //获取料号信息 $skuId = $skuInfo['id']; //料号ID $stockQty = get_SkuStockQty($skuId, $posId, $storeId); //库存数量 $skulists[$sign]['sku'] = $sku; $skulists[$sign]['amount'] = $amount; $skulists[$sign]['pName'] = $pName; $skulists[$sign]['positionId'] = $posId; $skulists[$sign]['stockqty'] = $stockQty; $sign++; } $skulist = $skulists; self::$errCode = 1; self::$errMsg = '配货成功!'; self::$data = $skulist; return TRUE; } }