function act_checkSkuNum() { $bool = false; //标志是否有摒弃订单 $shipOrderGroup = $_POST['order_group']; $sku = trim($_POST['sku']); //$sku = getGoodsSn2($sku); $sku_num = $_POST['sku_num']; $group_id = $_POST['now_group_id']; $now_pname = $_POST['now_pname']; $sku_info = GroupDistributionModel::getGroupDistList("*", "where shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and pName='{$now_pname}' and status=0"); $sku_onhand = GroupDistributionModel::getSkuPositionStock("and c.sku='{$sku}' and b.pName='{$now_pname}' and a.storeId=1"); $order_sku_info = $this->get_valid_order($sku_info[0]['shipOrderGroup'], $sku_info[0]['sku'], $sku_info[0]['pName']); if (!is_numeric($sku_num) || $sku_num == 0) { self::$errCode = "003"; self::$errMsg = "出库数量必须为正整数,请确认!"; return false; } if ($sku_num > $sku_onhand[0]['nums']) { self::$errCode = "003"; self::$errMsg = "出库数量不能大于系统库存,请确认!"; return false; } if ($sku_num > $order_sku_info['sku_amount']) { self::$errCode = "003"; self::$errMsg = "出库数量不能大于料号数量,请确认!"; return false; } //订单摒弃 if ($sku_num < $order_sku_info['sku_amount']) { $rem_order = array(); $rem_order_car = array(); $rem_order_num = array(); $now_num = 0; $tmp_num = 0; $orders = ''; //$differ_num = $order_sku_info['sku_amount']-$sku_num; foreach ($sku_info as $info) { $orders .= $info['shipOrderId'] . ","; } $orders = "(" . trim($orders, ",") . ")"; $abandon_orders = GroupDistributionModel::getShipOrderPay("a.createdTime,b.shipOrderId,b.skuAmount,b.carNumber", "where a.id in {$orders} and a.orderStatus=402 and b.pName='{$now_pname}' order by a.createdTime asc"); foreach ($abandon_orders as $order) { $tmp_num = $now_num + $order['skuAmount']; if ($tmp_num <= $sku_num) { $rem_order[] = $order['shipOrderId']; $rem_order_car[] = $order['carNumber']; $rem_order_num[] = $order['skuAmount']; $now_num = $tmp_num; } } $bool = true; } $car_info = array(); if ($bool) { foreach ($rem_order_car as $key => $r_order_car) { $car_info[] = array('car' => $r_order_car, 'num' => $rem_order_num[$key]); } $submit_orders = implode(',', $rem_order); $submit_nums = implode(',', $rem_order_num); } else { foreach ($order_sku_info['car_number'] as $key => $r_order_car) { $car_info[] = array('car' => $r_order_car, 'num' => $order_sku_info['sku_number'][$key]); } $submit_orders = implode(',', $order_sku_info['orders']); $submit_nums = implode(',', $order_sku_info['sku_number']); } $res = array(); $res['res_car_info'] = $car_info; $res['submit_orders'] = $submit_orders; $res['submit_nums'] = $submit_nums; return $res; }
function act_checkSkuNum() { $orderId = intval(trim($_POST['orderId'])); $sku = trim($_POST['sku']); $sku = get_goodsSn($sku); $sku_num = intval(trim($_POST['sku_num'])); $log_file = 'pda_orderOutB/' . date('Y-m-d') . '.txt'; $date = date('Y-m-d-H'); if (!$orderId) { self::$errCode = "001"; self::$errMsg = "请扫描订单id!"; return FALSE; } if (!$sku) { self::$errCode = "002"; self::$errMsg = "请扫描料号!"; return FALSE; } if (!$sku_num) { self::$errCode = "003"; self::$errMsg = "请输入料号配货数!"; return FALSE; } $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'"); //获取sku信息 $where = array('orderId' => $orderId, 'sku' => $sku); $sku_info = Pda_orderOutBModel::selectOrderRecord($where); //获取订单下该料号的信息 if (empty($sku_info)) { self::$errCode = "004"; self::$errMsg = "该订单没有此料号!"; return FALSE; } $sku_info = $sku_info[0]; $sku_onhand = GroupDistributionModel::getSkuPositionStock("and c.sku='{$sku}' and a.storeId = 2"); //查看该料号的B仓库存 $now_num = $sku_num + $sku_info['scanNum']; //已配货数加上本次配货数 if (!is_numeric($sku_num) || $now_num <= 0) { self::$errCode = "005"; self::$errMsg = "配货数量必须大于0,请确认!"; return FALSE; } if ($sku_info['amount'] < $now_num) { self::$errCode = "006"; self::$errMsg = "配货数量不能大于订单数!"; return false; } if ($sku_num > $sku_onhand[0]['nums']) { self::$errCode = "007"; self::$errMsg = "配货数不能大于系统库存,请确认!"; return false; } $uid = $_SESSION['userId']; $scanTime = time(); $where = array('orderId' => $orderId, 'sku' => $sku); //拼接where条件 $update = array('scanUser' => $uid, 'scanTime' => $scanTime, 'scanNum' => $now_num); //拼接更新字段 TransactionBaseModel::begin(); $info = Pda_orderOutBModel::updateOrderRecord($where, $update); if ($info) { $where = array('sku' => $sku, 'storeId' => 2); $update = array('actualStock' => "actualStock - {$sku_num}"); $info = WhGoodsAssignModel::updateSkuLocation($where, $update); //更新wh_sku_location的调拨库存和总库存 if (!$info) { TransactionBaseModel::rollback(); self::$errCode = "010"; self::$errMsg = "更新总库存失败!"; return false; } $positionInfo = whShelfModel::selectPositionInfo('id', array('pName' => $sku_info['pName'])); //仓位信息 $where = array('pId' => $skuinfo['id'], 'positionId' => $positionInfo['id'], 'storeId' => 2); $update = array('nums' => "nums - {$sku_num}"); $info = WhGoodsAssignModel::updateProdcutPosition($where, $update); //更新wh_product_position_relation的仓位库存 if (!$info) { TransactionBaseModel::rollback(); self::$errCode = "011"; self::$errMsg = "更新仓位库存失败!"; return false; } /**** 插入出库记录 *****/ $paraArr = array('sku' => $sku, 'amount' => $sku_num, 'positionId' => $positionInfo['id'], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 6, 'userId' => $_SESSION['userId'], 'reason' => 'B仓订单配货出库', 'ordersn' => $orderId); $record = CommonModel::addIoRecores($paraArr); //出库记录 /** 同步老ERP订单配货记录**/ $is_scan = $sku_info['amount'] == $now_num ? 1 : 0; $info = CommonModel::updateOrderScanRecord($orderId, $sku, $sku_num, $sku_info['amount'], $is_scan, $_SESSION['userCnName']); if ($info['errCode'] != 200) { TransactionBaseModel::rollback(); self::$errCode = "012"; self::$errMsg = "更新ERP配货记录失败!"; $log_info = sprintf("订单号:%s, 时间:%s, 提示信息:%s, 信息记录: %s \r\n", $orderId, $date, self::$errMsg, is_array($info) ? json_encode($info) : $info); write_log($log_file, $log_info); return false; } TransactionBaseModel::commit(); $where = array('orderId' => $orderId, 'scanUser' => 0); $info = Pda_orderOutBModel::selectOrderRecord($where); //查看该订单下是否还有未配货料号 if (empty($info)) { self::$errCode = "200"; self::$errMsg = "该订单已配货完成, 请扫描下一订单号!"; return TRUE; } else { self::$errCode = "0"; self::$errMsg = "配货成功,请扫描下一个料号!"; $arr['sku'] = $sku; $arr['num'] = $sku_info['amount']; $arr['assignNum'] = $now_num; return $arr; } } else { self::$errCode = "013"; self::$errMsg = "更新料号状态失败!"; return false; } }