コード例 #1
0
 public function act_postsku()
 {
     $sku = isset($_POST['sku']) ? trim($_POST['sku']) : "";
     $sku = get_goodsSn($sku);
     $position = isset($_POST['position']) ? trim($_POST['position']) : "";
     $num = isset($_POST['num']) ? trim($_POST['num']) : "";
     $num = intval($num);
     if (empty($position)) {
         self::$errCode = 502;
         self::$errMsg = "仓位不能为空";
         return false;
     }
     if ($num < 1) {
         self::$errCode = 502;
         self::$errMsg = "{$sku}出库数量{$num}有误!";
         return false;
     }
     $checkonhandle = wrapperSkuOutModel::selectstock($sku);
     if (empty($checkonhandle)) {
         self::$errCode = 502;
         self::$errMsg = "{$sku}材料未导入库存信息表!";
         return false;
     }
     $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'");
     if (empty($skuinfo)) {
         self::$errCode = 502;
         self::$errMsg = "{$sku}材料没信息!";
         return false;
     } else {
         $skuId = $skuinfo['id'];
         $purchaseId = $skuinfo['purchaseId'];
     }
     $positon_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$position}' and storeId in(1,2)");
     if (empty($positon_info)) {
         self::$errCode = 502;
         self::$errMsg = "无仓位号信息";
         return false;
     } else {
         $positionId = $positon_info[0]['id'];
     }
     $relation_info = OmAvailableModel::getTNameList("wh_product_position_relation", "id", "where pId='{$skuId}' and positionId='{$positionId}' and storeId in(1,2)");
     if (empty($relation_info)) {
         self::$errCode = 502;
         self::$errMsg = "包材和仓位不对应";
         return false;
     }
     $paraArr = array('ordersn' => date('YmdHis', time()), 'sku' => $sku, 'amount' => $num, 'purchaseId' => $purchaseId, 'ioType' => 1, 'ioTypeId' => 26, 'userId' => $_SESSION['userId'], 'reason' => '包材出库', 'positionId' => $positionId);
     $WhIoRecordsAct = new WhIoRecordsAct();
     $tt = $WhIoRecordsAct->act_addIoRecoresForWh($paraArr);
     //出库记录
     self::$errCode = 200;
     self::$errMsg = "{$sku}出库{$num}个成功!";
     return true;
 }
コード例 #2
0
 /**
  * Pda_makeAssignListAct::act_checkNum()
  * 检测输入的料号数量并提交
  * @return void
  */
 public function act_checkSkuNum()
 {
     $sku = trim($_POST['sku']);
     $sku = get_goodsSn($sku);
     $sku_num = intval(trim($_POST['sku_num']));
     if (!$sku_num || !$sku) {
         self::$errCode = '001';
         self::$errMsg = '信息不完整!';
         return FALSE;
     }
     if ($sku_num < 0) {
         self::$errCode = '002';
         self::$errMsg = '调拨数量不能小于0!';
         return FALSE;
     }
     $actualStock = whShelfModel::selectSkuNums($sku, 1);
     //获取A仓库的总库存
     if ($actualStock < $sku_num) {
         self::$errCode = '003';
         self::$errMsg = '调拨数量不能该料号的实际库存!';
         return FALSE;
     }
     $location = WhGoodsAssignModel::getSkuLocation($sku, 1, $sku_num);
     if (!$location) {
         self::$errCode = '004';
         self::$errMsg = '没有满足调拨数量的仓位!';
         return FALSE;
     }
     $res = WhGoodsAssignModel::getDetail('0', " and a.sku ='{$sku}'");
     //检测是否有未生成调拨单的该料号信息
     if (empty($res)) {
         $info = WhGoodsAssignModel::insertAssignDetail(0, $sku, $sku_num, $location);
         //插入调拨详情表
     } else {
         $nums = $res['num'] + $sku_num;
         //调拨数量总和
         $info = WhGoodsAssignModel::updateAssignDetail(array('id' => $res['id']), array('num' => $nums));
     }
     if ($info) {
         self::$errCode = '200';
         self::$errMsg = '请输入下一料号!';
         return TRUE;
     } else {
         self::$errCode = '005';
         self::$errMsg = '插入料号失败!';
         return FALSE;
     }
 }
コード例 #3
0
 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;
     }
 }
コード例 #4
0
 //print_r($positioninfo);exit;
 OmAvailableModel::begin();
 /**** 更新仓位库存 ****/
 $update_position = whShelfModel::updateProductPositionRelation($nums, "where pId={$skuinfo['id']} and positionId != 8290 and is_delete = 0");
 if (!$update_position) {
     $errCode = 410;
     $errMsg = "更新仓位库存失败!";
     $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s \r\n", $sku, $date, $errMsg, $update_position, $nums);
     write_log($log_file, $log_info);
     OmAvailableModel::rollback();
     continue;
 }
 write_log($log_file, date('Y-m-d H:i:s') . '更新仓位库存成功!' . "{$sku}\r\n");
 /**** 更新总库存 *****/
 $where = "where sku='{$sku}'";
 $info = whShelfModel::updateStoreNum($nums, $where);
 if (!$info) {
     $errCode = 412;
     $errMsg = "更新总库存失败!";
     $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, $errMsg, $info, $nums, $where);
     write_log($log_file, $log_info);
     OmAvailableModel::rollback();
     continue;
 }
 write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n");
 $user_id = $msg_array['userId'];
 /**** 插入出入库记录 *****/
 $msg_array['positionId'] = $positioninfo[0]['positionId'];
 $userId = preg_match("/^\\d+\$/", $user_id) ? $user_id : getUserIdByName($msg_array['userId']);
 $msg_array['userId'] = $userId ? $userId : 0;
 $msg_array['purchaseId'] = $skuinfo['purchaseId'];
コード例 #5
0
ファイル: whShelf.model.php プロジェクト: ohjack/newErp
 public static function insertNoOrder($sku, $nums, $totalNums, $purchaseId, $userId, $note)
 {
     self::initDB();
     $sql = "INSERT INTO wh_abnormal_purchase_orders(sku,nums,totalNums,purchaseId,creatorId,createdTime,note) VALUES ('{$sku}',{$nums},{$totalNums},{$purchaseId},{$userId}," . time() . ",'{$note}')";
     //echo $sql;
     $query = self::$dbConn->query($sql);
     if ($query) {
         return true;
     } else {
         self::$errCode = 335;
         self::$errMsg = "插入未订单记录失败!";
         return false;
     }
 }
コード例 #6
0
 public function act_whShelf()
 {
     //print_r($_POST);
     $log_file = 'whselfB_log/' . date('Ymd') . '.txt';
     //日志文件路径
     $date = date('Y-m-d H:i:s');
     $userCnName = $_SESSION['userCnName'];
     $sku = trim($_POST['sku']);
     $sku = get_goodsSn($sku);
     $nums = $_POST['nums'];
     $now_position_id = intval(trim($_POST['now_position_id']));
     //现在存放该料号的仓位id
     $goodsAssignId = intval(trim($_POST['now_group_id']));
     $positionId = intval(trim($_POST['position_id']));
     //分配的仓位id
     $assignList = WhGoodsAssignModel::getAssignList("and a.id = {$goodsAssignId}", '', '', '');
     if ($assignList[0]['status'] != 106) {
         self::$errCode = 400;
         self::$errMsg = "该调拨单不在等待上架状态!";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
         write_log($log_file, $log_info);
         return false;
     }
     if (empty($sku)) {
         self::$errCode = 401;
         self::$errMsg = "sku不能为空";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
         write_log($log_file, $log_info);
         return false;
     }
     if (empty($now_position_id) && !$positionId) {
         self::$errCode = 401;
         self::$errMsg = "上架仓位不能为空";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
         write_log($log_file, $log_info);
         return false;
     }
     if ($nums < 1) {
         self::$errCode = 403;
         self::$errMsg = "上架数量不能小于1";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
         write_log($log_file, $log_info);
         return false;
     }
     $sku_info = WhGoodsAssignModel::getDetail($goodsAssignId, " and a.sku='{$sku}' and a.inCheckNum != 0");
     if (empty($sku_info)) {
         self::$errCode = "404";
         self::$errMsg = "该调拨单无此料号!";
         return FALSE;
     }
     $whselfNums = $nums + $sku_info['whselfNum'];
     if ($whselfNums > $sku_info['assignNum']) {
         self::$errCode = "405";
         self::$errMsg = "总上架数不能大于配货数!";
         return FALSE;
     }
     $where = " where sku = '{$sku}'";
     $skuinfo = whShelfModel::selectSku($where);
     if (empty($skuinfo)) {
         self::$errCode = 404;
         self::$errMsg = "无该料号信息";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
         write_log($log_file, $log_info);
         return false;
     } else {
         $skuId = $skuinfo['id'];
         $purchaseId = $skuinfo['purchaseId'];
     }
     $ioTypeId = 35;
     //35 调拨入库上架 出入库类型表id
     $return_num = $nums;
     $in_positionId = 0;
     $userId = $_SESSION['userId'];
     //$where           =  "where pId ={$skuId} and positionId = {$now_position_id} and is_delete=0 and storeId = 2";
     TransactionBaseModel::begin();
     if ($now_position_id) {
         //存在料号仓位关系
         $positioninfo = whShelfModel::selectRelationShip('', '', 2, $now_position_id);
         //检测该料号是否有对应仓位关系
         /***无料号对应仓位的关系时更新关系表***/
         $relationId = $positioninfo[0]['id'];
         $positionId = $positioninfo[0]['positionId'];
         //仓位id
         $update_position = whShelfModel::updateProductPositionRelation($nums, "where id='{$relationId}'");
         if (!$update_position) {
             self::$errCode = 410;
             self::$errMsg = "更新仓位库存失败!";
             $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $update_position, $num, $select_now_store);
             write_log($log_file, $log_info);
             TransactionBaseModel::rollback();
             return false;
         }
         write_log($log_file, date('Y-m-d H:i:s') . '更新仓位库存成功!' . "{$sku}\r\n");
     } else {
         if ($positionId) {
             //没有料号仓位关系则插入一条数据
             $relationId = whShelfModel::insertRelation($skuinfo['id'], $positionId, $nums, 2);
             //插入关系表
             //$update_position = whShelfModel::updateProductPositionRelation($nums,"where id='$relationId'");
             if (!$relationId) {
                 self::$errCode = 410;
                 self::$errMsg = "插入仓位关系失败!";
                 $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $update_position, $num, $select_now_store);
                 write_log($log_file, $log_info);
                 TransactionBaseModel::rollback();
                 return false;
             }
             write_log($log_file, date('Y-m-d H:i:s') . '插入仓位关系成功!' . "{$sku}\r\n");
         }
     }
     /**** 更新总库存 *****/
     $actualStock = whShelfModel::selectSkuNums($sku, 2);
     if (!empty($actualStock)) {
         $where = "where sku='{$sku}' and storeId=2";
         $info = whShelfModel::updateStoreNum($nums, $where);
         if (!$info) {
             self::$errCode = 412;
             self::$errMsg = "更新总库存失败!";
             $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $info, $nums, $where);
             write_log($log_file, $log_info);
             TransactionBaseModel::rollback();
             return false;
         }
         write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n");
     } else {
         $info = whShelfModel::insertStore($sku, $nums, 2);
         if (!$info) {
             self::$errCode = 413;
             self::$errMsg = "更新总库存失败!";
             $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $info, $sku, $nums);
             write_log($log_file, $log_info);
             TransactionBaseModel::rollback();
             return false;
         }
         write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n");
     }
     /**** 插入出入库记录 *****/
     $paraArr = array('sku' => $sku, 'amount' => $nums, 'positionId' => $positionId, 'purchaseId' => $purchaseId, 'ioType' => 2, 'ioTypeId' => $ioTypeId, 'userId' => $userId, 'reason' => '调拨入库上架');
     $record = CommonModel::addIoRecores($paraArr);
     //出库记录
     if (!$record) {
         self::$errCode = 414;
         self::$errMsg = "插入出入库记录失败!";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s \r\n", $sku, $date, self::$errMsg, $record, json_encode($paraArr));
         write_log($log_file, $log_info);
         TransactionBaseModel::rollback();
         return false;
     }
     write_log($log_file, date('Y-m-d H:i:s') . '插入入库记录成功!' . "{$sku}\r\n");
     //更新调拨单料号上架数量
     $where = array('goodsassignId' => $goodsAssignId, 'sku' => $sku);
     $update = array('whselfNum' => $whselfNums);
     $info = WhGoodsAssignModel::updateAssignDetail($where, $update);
     if ($info === FALSE) {
         self::$errCode = 415;
         self::$errMsg = "更新上架数量失败";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s ,参数:s%\r\n", $sku, $date, self::$errMsg, $nums);
         write_log($log_file, $log_info);
         TransactionBaseModel::rollback();
         return false;
     }
     //更新料号调拨库存
     $where = array('sku' => $sku, 'storeId' => $assignList[0]['outStoreId']);
     $update = array('assignStock' => "assignStock - {$nums}");
     $info = WhGoodsAssignModel::updateSkuLocation($where, $update);
     if ($info == FALSE) {
         self::$errCode = 416;
         self::$errMsg = "更新调拨库存失败";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s ,参数:s%\r\n", $sku, $date, self::$errMsg, $nums);
         write_log($log_file, $log_info);
         TransactionBaseModel::rollback();
         return false;
     }
     /** 同步老ERP库存**/
     $pName = whShelfModel::selectPositionInfo('pName', array('id' => $positionId));
     //获取仓位名称
     $pName = $pName['pName'];
     $info = CommonModel::updateIoRecord($sku, $nums, 1, '仓库调拨入库上架', $_SESSION['userCnName'], $pName);
     //var_dump($info);exit;
     if ($info['errCode'] != 200) {
         TransactionBaseModel::rollback();
         self::$errCode = "004";
         self::$errMsg = "同步旧ERP库存失败!";
         $log_info = sprintf("料号:%s, 时间:%s,信息:%s ,参数:%s\r\n", $sku, $date, self::$errMsg, is_array($info) ? json_encode($info) : $info);
         write_log($log_file, $log_info);
         return false;
     }
     TransactionBaseModel::commit();
     self::$errMsg = "料号[{$sku}]上架成功!";
     return true;
 }
コード例 #7
0
ファイル: packageCheck.model.php プロジェクト: ohjack/newErp
 public static function updateShelvesNums($num, $sku, $id)
 {
     self::initDB();
     $adjnum = abs($num);
     $sql = "update wh_tallying_list set shelvesNums=shelvesNums+{$num} where id={$id}";
     $query = self::$dbConn->query($sql);
     if ($query) {
         $location_sql = "update wh_sku_location set actualStock=actualStock+{$num} where sku='{$sku}' and storeId=1";
         $location_query = self::$dbConn->query($location_sql);
         if ($location_query) {
             $sku_info = "select id from pc_goods where sku='{$sku}'";
             $sku_info = self::$dbConn->query($sku_info);
             $sku_info = self::$dbConn->fetch_array_all($sku_info);
             $select_position = "select id,positionId from wh_product_position_relation where pId={$sku_info[0]['id']} and nums>{$adjnum}";
             $select_position = self::$dbConn->query($select_position);
             $select_position = self::$dbConn->fetch_array_all($select_position);
             $update_position = "update wh_product_position_relation set nums=nums+{$num} where id='{$select_position[0]['id']}'";
             $update_position = self::$dbConn->query($update_position);
             if ($update_position) {
                 $where = " where sku = '{$sku}'";
                 $skuinfo = whShelfModel::selectSku($where);
                 /**** 插入出入库记录 *****/
                 $paraArr = array('sku' => $sku, 'amount' => $adjnum, 'positionId' => $select_position[0]['positionId'], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 31, 'userId' => $_SESSION['userId'], 'reason' => '点货调整出库');
                 $record = CommonModel::addIoRecores($paraArr);
                 //出库记录
                 if ($record) {
                     return true;
                 } else {
                     return false;
                 }
             }
         }
     } else {
         return false;
     }
 }
コード例 #8
0
ファイル: whShelf.action.php プロジェクト: ohjack/newErp
 /**
  * whShelfAct::act_whPackageShelf()
  * 包材入库
  * @return void
  */
 public function act_whPackageShelf()
 {
     $userCnName = $_SESSION['userCnName'];
     $sku = trim($_POST['sku']) ? trim($_POST['sku']) : '';
     $nums = intval(trim($_POST['nums']));
     $log_file = 'packageWheself/' . date('Y-m-d') . '.txt';
     $date = date('Y-m-d H:i:s');
     if (!$sku) {
         self::$errCode = 01;
         self::$errMsg = "sku不能为空";
         return false;
     }
     if (!preg_match("/^MT\\d+\$/", $sku)) {
         self::$errCode = 02;
         self::$errMsg = "该模块只能入库包材!";
         return false;
     }
     if (!$nums) {
         self::$errCode = 03;
         self::$errMsg = "数量不能为空";
         return false;
     }
     $where = "where sku='{$sku}' and tallyStatus=0 and entryStatus = 0 and is_delete = 0";
     $tallying_list = packageCheckModel::selectList($where);
     if (empty($tallying_list)) {
         self::$errCode = 04;
         self::$errMsg = "无该料号点货信息";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
         write_log($log_file, $log_info);
         return false;
     } else {
         $tallying_num = 0;
         foreach ($tallying_list as $tallying) {
             $tallying_num += $tallying['ichibanNums'] - $tallying['shelvesNums'];
         }
         if ($nums > $tallying_num) {
             self::$errCode = 05;
             self::$errMsg = "上架数不能大于点货良品数[{$tallying_num}]";
             $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
             write_log($log_file, $log_info);
             return false;
         }
     }
     if ($nums < 1) {
         self::$errCode = 06;
         self::$errMsg = "上架数量不能小于1";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
         write_log($log_file, $log_info);
         return false;
     }
     $where = " where sku = '{$sku}'";
     $skuinfo = whShelfModel::selectSku($where);
     if (empty($skuinfo)) {
         self::$errCode = 07;
         self::$errMsg = "无该料号信息";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s \r\n", $sku, $date, self::$errMsg);
         write_log($log_file, $log_info);
         return false;
     } else {
         $skuId = $skuinfo['id'];
         $purchaseId = $skuinfo['purchaseId'];
     }
     $return_num = $nums;
     $in_positionId = 0;
     $userId = $_SESSION['userId'];
     TransactionBaseModel::begin();
     /**** 更新总库存 *****/
     $actualStock = whShelfModel::selectSkuNums($sku);
     if (!empty($actualStock)) {
         $where = "where sku='{$sku}' and storeId=1";
         $info = whShelfModel::updateStoreNum($nums, $where);
         if (!$info) {
             self::$errCode = 00;
             self::$errMsg = "更新总库存失败!";
             $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $info, $nums, $where);
             write_log($log_file, $log_info);
             TransactionBaseModel::rollback();
             return false;
         }
         write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n");
     } else {
         $info = whShelfModel::insertStore($sku, $nums, 1);
         if (!$info) {
             self::$errCode = 00;
             self::$errMsg = "更新总库存失败!";
             $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $info, $sku, $nums);
             write_log($log_file, $log_info);
             TransactionBaseModel::rollback();
             return false;
         }
         write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n");
     }
     /**** 插入出入库记录 *****/
     $paraArr = array('sku' => $sku, 'amount' => $nums, 'positionId' => $in_positionId, 'purchaseId' => $purchaseId, 'ioType' => 2, 'ioTypeId' => 13, 'userId' => $userId, 'reason' => '上架入库');
     $record = CommonModel::addIoRecores($paraArr);
     //出库记录
     if (!$record) {
         self::$errCode = 010;
         self::$errMsg = "插入出入库记录失败!";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s \r\n", $sku, $date, self::$errMsg, $record, json_encode($paraArr));
         write_log($log_file, $log_info);
         TransactionBaseModel::rollback();
         return false;
     }
     write_log($log_file, date('Y-m-d H:i:s') . '插入入库记录成功!' . "{$sku}\r\n");
     //更新点货记录状态
     $where = "where sku='{$sku}' and tallyStatus=0 and ichibanNums>0 and is_delete=0";
     $list = packageCheckModel::selectList($where);
     $i = 0;
     while ($list[$i] && $nums) {
         $need_nums = $list[$i]['ichibanNums'] - $list[$i]['shelvesNums'];
         if ($nums >= $need_nums) {
             //更改状态
             $msg = whShelfModel::updateTallyStatus($list[$i]['id'], $need_nums);
             if (!$msg) {
                 self::$errCode = 011;
                 self::$errMsg = "更新点货记录状态失败!";
                 $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $msg, $list[$i]['id'], $need_nums);
                 write_log($log_file, $log_info);
                 TransactionBaseModel::rollback();
                 return false;
             }
             write_log($log_file, date('Y-m-d H:i:s') . '更新点货记录状态成功!' . "{$sku}\r\n");
             $nums = $nums - $need_nums;
         } else {
             $msg = whShelfModel::updateShelfNum($list[$i]['id'], $nums);
             if (!$msg) {
                 self::$errCode = 012;
                 self::$errMsg = "更新点货记录已上架数量失败!";
                 $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg, $msg, $list[$i]['id'], $nums);
                 write_log($log_file, $log_info);
                 TransactionBaseModel::rollback();
                 return false;
             }
             write_log($log_file, date('Y-m-d H:i:s') . '更新点货记录已上架数量成功!' . "{$sku}\r\n");
             $nums = 0;
         }
         $i++;
     }
     $time = time();
     //添加时间戳
     /*$purInfo = CommonModel::endPurchaseOrder($sku,$return_num, $time);             //api获取采购订单处理情况
     		if( !isset($purInfo['errorCode']) || $purInfo['errorCode'] != 0){
     			self::$errCode = 405;
     			self::$errMsg  = "完结采购订单出错,上架失败";
                 $log_info      = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, self::$errMsg,
                                                 json_encode($purInfo), $sku, $return_num);
                 write_log($log_file, $log_info);
     			TransactionBaseModel :: rollback();
     			return false;
     		}
             write_log($log_file, date('Y-m-d H:i:s').'完结采购订单成功'."{$sku}\r\n");*/
     //更新旧erp库存
     $update_onhand = CommonModel::updateOnhand($sku, $return_num, $userCnName, 0, '', $time);
     if ($update_onhand['errCode'] != 200) {
         self::$errCode = 415;
         self::$errMsg = "更新旧erp库存失败";
         $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s, %s \r\n", $sku, $date, self::$errMsg, is_array($update_onhand) ? json_encode($update_onhand) : $update_onhand, $sku, $return_num, $userCnName);
         write_log($log_file, $log_info);
         TransactionBaseModel::rollback();
         return false;
     }
     write_log($log_file, date('Y-m-d H:i:s') . '更新旧erp库存成功' . "{$sku}\r\n");
     TransactionBaseModel::commit();
     self::$errMsg = "料号[{$sku}]上架成功!";
     return true;
 }
コード例 #9
0
ファイル: whOpenApi.action.php プロジェクト: ohjack/newErp
 function act_updateTallying()
 {
     $batchNum = isset($_GET['batchNum']) ? trim($_GET['batchNum']) : '';
     $sku = isset($_GET['sku']) ? trim($_GET['sku']) : '';
     $ichibanNums = isset($_GET['ichibanNums']) ? intval(trim($_GET['ichibanNums'])) : '';
     /** 添加接收日志**/
     $log_file = 'QCReturnLog/' . date('Y-m-d') . '.txt';
     $date = date('Y-m-d H:i:s');
     $log_info = sprintf("料号:%s, 时间:%s, 批次号:%s, 良品数:%s \r\n", $sku, $date, $batchNum, $ichibanNums);
     write_log($log_file, $log_info);
     /** end**/
     if (empty($batchNum) || empty($sku)) {
         //参数不完整
         self::$errCode = 101;
         self::$errMsg = '参数信息不完整';
         return false;
     }
     /** 添加检测是否存在数据判断**/
     $tallying_info = whShelfModel::selectTallyingList('id', array('batchNum' => $batchNum, 'sku' => $sku));
     if (empty($tallying_info)) {
         //不存在对应的点货记录
         self::$errCode = 104;
         self::$errMsg = '不存在该条点货信息';
         return FALSE;
     }
     $update_info = OmAvailableModel::updateTallying($batchNum, $sku, $ichibanNums, time());
     if ($update_info) {
         return true;
     } else {
         self::$errCode = 102;
         self::$errMsg = '插入良品数量失败';
         return false;
     }
 }
コード例 #10
0
ファイル: shiftLibrary.action.php プロジェクト: ohjack/newErp
 function act_searchSku()
 {
     $sku = trim($_POST['sku']);
     $sku = get_goodsSn($sku);
     $eosr_arr = whShelfModel::selectSkuNums($sku);
     if (empty($eosr_arr)) {
         self::$errCode = "401";
         self::$errMsg = "找不到该料号的库存信息!";
         return false;
     } else {
         $info = GroupRouteModel::getSkuPosition("where a.sku='{$sku}' and b.is_delete=0");
         self::$errCode = "400";
         self::$errMsg = '成功搜索该料号信息!' . $sku;
         return $info;
     }
 }
コード例 #11
0
ファイル: whIoRecords.action.php プロジェクト: ohjack/newErp
 public function act_export()
 {
     $ioType = intval($_GET['ioType']);
     $id = isset($_GET['id']) ? post_check($_GET['id']) : '';
     $ordersn = isset($_GET['ordersn']) ? post_check($_GET['ordersn']) : '';
     $ioTypeId = isset($_GET['ioTypeId']) ? post_check($_GET['ioTypeId']) : '';
     $sku = isset($_GET['sku']) ? post_check($_GET['sku']) : '';
     $purchaseId = isset($_GET['purchaseId']) ? post_check($_GET['purchaseId']) : '';
     $userId = isset($_GET['userId']) ? post_check($_GET['userId']) : '';
     $cStartTime = isset($_GET['cStartTime']) ? post_check($_GET['cStartTime']) : '';
     $cEndTime = isset($_GET['cEndTime']) ? post_check($_GET['cEndTime']) : '';
     if (empty($id) && empty($ordersn) && empty($ioTypeId) && empty($sku) && empty($purchaseId) && empty($userId) && empty($cStartTime) && empty($cEndTime)) {
         echo "请选择导出条件";
         exit;
     }
     $where = "WHERE ioType='{$ioType}' ";
     if (!empty($id)) {
         $where .= "AND id='{$id}' ";
     }
     if (!empty($ordersn)) {
         $where .= "AND ordersn='{$ordersn}' ";
     }
     if (!empty($ioTypeId)) {
         $where .= "AND ioTypeId='{$ioTypeId}' ";
     }
     if (!empty($sku)) {
         $where .= "AND sku='{$sku}' ";
     }
     if (!empty($purchaseId)) {
         $purchaseId = getUserIdByName($purchaseId);
         $where .= "AND purchaseId='{$purchaseId}' ";
     }
     if (!empty($userId)) {
         $userId = getUserIdByName($userId);
         $where .= "AND userId='{$userId}' ";
     }
     if (!empty($cStartTime)) {
         $startTime = strtotime($cStartTime . '00:00:00');
         $where .= "AND createdTime >='{$startTime}' ";
     }
     if (!empty($cEndTime)) {
         $endTime = strtotime($cEndTime . '23:59:59');
         $where .= "AND createdTime <='{$endTime}' ";
     }
     $lists = WhIoRecordsModel::getTNameList('wh_iorecords', '*', $where);
     if ($ioType == 1) {
         $excel = new ExportDataExcel('browser', "out_warehouse." . date('Y-m-d') . ".xls");
     } else {
         $excel = new ExportDataExcel('browser', "in_warehouse." . date('Y-m-d') . ".xls");
     }
     $excel->initialize();
     $tharr = array("日期", "料号", "仓位", "数量", "类型", "申请人", "订单号", "备注");
     $excel->addRow($tharr);
     foreach ($lists as $list) {
         $time = date('Y/m/d', $list['createdTime']);
         $sku = $list['sku'];
         $position_info = whShelfModel::selectPosition("where id={$list['positionId']}");
         $pName = $position_info[0]['pName'];
         $num = $list['amount'];
         $ioTypeName = WhIoStoreModel::getIoTypeNameById($list['ioTypeId']);
         $user = getUserNameById($list['userId']);
         $ordersn = $list['ordersn'];
         $reason = $list['reason'];
         $tdarr = array($time, $sku, $pName, $num, $ioTypeName, $user, $ordersn, $reason);
         $excel->addRow($tdarr);
     }
     $excel->finalize();
     exit;
 }
コード例 #12
0
 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;
 }
コード例 #13
0
 function act_checkSkuNum()
 {
     $userId = $_SESSION['userId'];
     $show_mes = array();
     $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 = GroupDistributionBModel::getGroupDistListB("*", "where shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and pName='{$now_pname}' and status=0");
     $sku_onhand = GroupDistributionBModel::getSkuPositionStock("and c.sku='{$sku}' and b.pName='{$now_pname}' and a.storeId=2");
     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 > $sku_info[0]['skuAmount']) {
         self::$errCode = "003";
         self::$errMsg = "出库数量不能大于料号数量,请确认!";
         return false;
     }
     $i_data = array('status' => 1, 'amount' => $sku_num);
     $inser_info = GroupDistributionBModel::update($i_data, "and shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and pName='{$now_pname}'");
     if ($inser_info) {
         $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'");
         $position_info = OmAvailableModel::getTNameList("wh_position_distribution", "id", "where pName='{$now_pname}' and storeId=2");
         $positionId = $position_info[0]['id'];
         $paraArr = array('ordersn' => $shipOrderGroup, 'sku' => $sku, 'amount' => $sku_num, 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 2, 'userId' => $userId, 'reason' => '提货单配货出库', 'positionId' => $positionId, 'storeId' => 2);
         $WhIoRecordsAct = new WhIoRecordsAct();
         $tt = $WhIoRecordsAct->act_addIoRecoresForWh($paraArr);
         //出库记录
         $now_shipOrderId_info = GroupDistributionBModel::getGroupDistListB("shipOrderId", "where shipOrderGroup='{$shipOrderGroup}' and sku='{$sku}' and pName='{$now_pname}' and status=1");
         $shipOrderId_arr = array();
         $shipOrderId_arr = explode(',', $now_shipOrderId_info[0]['shipOrderId']);
         foreach ($shipOrderId_arr as $info) {
             $complete_sql = GroupDistributionBModel::getGroupDistListB("*", "where shipOrderGroup='{$shipOrderGroup}' and FIND_IN_SET({$info},shipOrderId) and status=0");
             if (empty($complete_sql)) {
                 //更新订单到待配货状态
                 GroupDistributionBModel::updateShipOrder(array('orderStatus' => 402), "and id='{$info}' and orderStatus=407");
                 //WhPushModel::pushOrderStatus($info,'STATESHIPPED_BEPICKING',$_SESSION['userId'],time());        //状态推送
             }
         }
     }
     $status_sql = GroupDistributionBModel::getGroupDistListB("*", "where shipOrderGroup='{$shipOrderGroup}' and status=0");
     if (empty($status_sql)) {
         self::$errCode = 1;
         self::$errMsg = "提货单出库完成,请扫描下一提货单1!";
         return true;
     } else {
         $show_info = array();
         $show_sql = GroupDistributionBModel::getGroupSkuInfoB("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)) {
             $order_sku_info = $this->get_valid_order($show_sql[0]['shipOrderGroup'], $show_sql[0]['sku'], $show_sql[0]['pName']);
             if ($order_sku_info) {
                 $show_info['group_id'] = $show_sql[0]['groupId'];
                 $show_info['sku'] = $show_sql[0]['sku'];
                 $show_info['sku_amount'] = $show_sql[0]['skuAmount'];
                 $show_info['goods_location'] = $show_sql[0]['pName'];
             }
         }
         if (empty($show_info)) {
             $show_info2 = array();
             $show_sql = GroupDistributionBModel::getGroupSkuInfoB("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)) {
                 $order_sku_info = $this->get_valid_order($show_sql[0]['shipOrderGroup'], $show_sql[0]['sku'], $show_sql[0]['pName']);
                 if ($order_sku_info) {
                     $show_info2['group_id'] = $show_sql[0]['groupId'];
                     $show_info2['sku'] = $show_sql[0]['sku'];
                     $show_info2['sku_amount'] = $show_sql[0]['skuAmount'];
                     $show_info2['goods_location'] = $show_sql[0]['pName'];
                 }
             } 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;
     }
 }
コード例 #14
0
 /**
  * WhGoodsAssignAct::process_sku()
  * 处理停售料号
  * @return
  */
 function process_sku($skus)
 {
     $log_file = 'clearSkuLocation/' . date('Y-m-d') . '.txt';
     $skus = array_filter($skus);
     //处理料号数组
     if (empty($skus)) {
         return FALSE;
     }
     $num_arr = array();
     //库存不为空料号
     $is_sale = array();
     //非停售料号
     $sucess = array();
     //清空成功料号
     $fail = array();
     //清空失败料号
     //print_r($skus);exit;
     foreach ($skus as $sku) {
         $goods_count = CommonModel::getGoodsCount($sku);
         //获取旧ERP库存
         if ($goods_count !== FALSE && $goods_count != 0) {
             //库存非零情况
             $num_arr[$sku] = $goods_count;
             continue;
         }
         $sku_info = packageCheckModel::selectSku($sku);
         //获取料号信息
         if (!in_array($sku_info[0]['goodsStatus'], array(2, 3))) {
             $is_sale[] = $sku;
             continue;
         }
         TransactionBaseModel::begin();
         //清空料号仓位
         $info = whShelfModel::clearSkuLocation($sku_info[0]['id']);
         $date = date('Y-m-d H:i:s');
         if ($info == TRUE) {
             $log_info = sprintf("料号:%s, 时间:%s, 信息:%s \r\n", $sku, $date, '新系统仓位清空成功');
             write_log($log_file, $log_info);
         } else {
             $log_info = sprintf("料号:%s, 时间:%s, 信息:%s \r\n", $sku, $date, '新系统仓位清空失败');
             write_log($log_file, $log_info);
             $fail[] = $sku;
             continue;
         }
         //同步清除老ERP仓位
         $info = CommonModel::clearSkuLocation($sku);
         //接口
         if ($info['errCode'] == 200) {
             $log_info = sprintf("料号:%s, 时间:%s, 信息:%s,返回值:%s \r\n", $sku, $date, '老ERP仓位清空成功', is_array($info) ? json_encode($info) : $info);
             write_log($log_file, $log_info);
             $sucess[] = $sku;
         } else {
             $log_info = sprintf("料号:%s, 时间:%s, 信息:%s,返回值:%s \r\n", $sku, $date, '老ERP仓位清空失败', is_array($info) ? json_encode($info) : $info);
             write_log($log_file, $log_info);
             $fail[] = $sku;
             TransactionBaseModel::rollback();
             continue;
         }
         TransactionBaseModel::commit();
     }
     return array('num_arr' => $num_arr, 'is_sale' => $is_sale, 'sucess' => $sucess, 'fail' => $fail);
 }
コード例 #15
0
 function act_checkSkuNum()
 {
     $assignNUmber = $_POST['order_group'];
     $sku = trim($_POST['sku']);
     $sku = get_goodsSn($sku);
     $sku_num = intval($_POST['sku_num']);
     if (!is_numeric($sku_num)) {
         self::$errCode = '001';
         self::$errMsg = '请输入正确数量!';
         return false;
     }
     $goodsAssignId = intval($_POST['now_group_id']);
     $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'");
     //获取sku信息
     $sku_info = WhGoodsAssignModel::getDetail($goodsAssignId, " and a.sku='{$sku}'");
     //调拨单明细中的sku信息
     if ($sku_info['inCheckNum'] >= $sku_info['assignNum']) {
         self::$errCode = '002';
         self::$errMsg = '该料号已接收复核完毕!';
         return false;
     }
     $inCheckNum = $sku_info['inCheckNum'] + $sku_num;
     if ($inCheckNum > $sku_info['assignNum']) {
         self::$errCode = '003';
         self::$errMsg = '接收数不能大于配货数!';
         return false;
     }
     $where = array('goodsAssignId' => $goodsAssignId, 'sku' => $sku);
     //生成where条件
     $update = array('inCheckNum' => $inCheckNum);
     //if($inCheckNum == $sku_info['assignNum']){
     $update['inCheckTime'] = time();
     $update['inCheckUid'] = $_SESSION['userId'];
     $checkAssignList = true;
     //}
     $arr = array('sku' => $sku, 'sku_amount' => $sku_info['assignNum'], 'check_num' => $inCheckNum);
     $info = WhGoodsAssignModel::updateAssignDetail($where, $update);
     if (!$info) {
         self::$errCode = "004";
         self::$errMsg = "更新接收明细失败!";
         return false;
     }
     self::$errCode = "200";
     self::$errMsg = isset($checkAssignList) ? '该料号接收复核完毕' : '该料号已复核,请录入下一料号!';
     return $arr;
 }
コード例 #16
0
ファイル: pda_WhSkuOut.action.php プロジェクト: ohjack/newErp
 function act_checkSkuNum()
 {
     $bool = false;
     //标志是否有摒弃订单
     $assignNUmber = $_POST['order_group'];
     $sku = trim($_POST['sku']);
     $sku = get_goodsSn($sku);
     $skuinfo = whShelfModel::selectSku(" where sku = '{$sku}'");
     //获取sku信息
     //print_r($skuinfo);exit;
     //var_dump($skuinfo);exit;
     //$sku         = getGoodsSn2($sku);
     $sku_num = $_POST['sku_num'];
     $assignId = $_POST['now_group_id'];
     $now_pname = $_POST['now_pname'];
     $sku_info = WhGoodsAssignModel::getDetail($assignId, " and a.sku='{$sku}' and a.checkUid=0");
     //调拨单明细中的sku信息
     //$sku_onhand 	= GroupDistributionModel::getSkuPositionStock("and c.sku='$sku' and b.pName='$now_pname'");
     //$order_sku_info = $this->get_valid_order($sku_info[0]['shipOrderGroup'],$sku_info[0]['sku'],$sku_info[0]['pName']);
     $now_num = $sku_num + $sku_info['assignNum'];
     //已配货数加上本次配货数
     if (!is_numeric($sku_num) || $now_num < 0) {
         self::$errCode = "007";
         self::$errMsg = "出库数量必须为正整数,请确认!";
         return false;
     }
     if ($sku_info['num'] < $now_num) {
         self::$errCode = "008";
         self::$errMsg = "配货数量不能大于原始需求数量!";
         return false;
     }
     //print_r($sku_info);exit;
     $erp_onhand = CommonModel::getErpSkuInfo($sku);
     //获取老ERP料号库存信息
     if ($erp_onhand['errocode'] != 200) {
         self::$errCode = "014";
         self::$errMsg = "拉取老ERP库存信息失败,请稍后再试!";
         return false;
     }
     //根据转出仓库获取库存
     $goods_count = $sku_info['storeId'] == 1 ? $erp_onhand['data']['goods_count'] : $erp_onhand['data']['second_count'];
     if ($sku_num > $goods_count) {
         self::$errCode = "009";
         self::$errMsg = "配货数量不能大于旧ERP系统库存[{$goods_count}],请确认!";
         return false;
     }
     $uid = $_SESSION['userId'];
     $scanTime = time();
     $where = array('goodsAssignId' => $assignId, 'sku' => $sku);
     //拼接where条件
     $update = array('scanUid' => $uid, 'scanTime' => $scanTime, 'assignNum' => "assignNum+{$sku_num}");
     //拼接更新字段
     TransactionBaseModel::begin();
     $info = WhGoodsAssignModel::updateAssignDetail($where, $update);
     if ($info) {
         $where = array('sku' => $sku, 'storeId' => $sku_info['storeId']);
         $update = array('actualStock' => "actualStock - {$sku_num}", 'assignStock' => "assignStock + {$sku_num}");
         $info = WhGoodsAssignModel::updateSkuLocation($where, $update);
         //更新wh_sku_location的调拨库存和总库存
         if (!$info) {
             TransactionBaseModel::rollback();
             self::$errCode = "010";
             self::$errMsg = "更新总库存失败!";
             return false;
         }
         $where = array('pId' => $skuinfo['id'], 'positionId' => $sku_info['positionId']);
         $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' => $sku_info['positionId'], 'purchaseId' => $skuinfo['purchaseId'], 'ioType' => 1, 'ioTypeId' => 34, 'userId' => $_SESSION['userId'], 'reason' => '调拨出库');
         $record = CommonModel::addIoRecores($paraArr);
         //出库记录
         /** 暂时取消同步老ERP库存**/
         $info = CommonModel::updateIoRecord($sku, $sku_num, 2, '仓库调拨', $_SESSION['userCnName'], $sku_info['pName']);
         //var_dump($info);exit;
         if ($info['errCode'] != 200) {
             TransactionBaseModel::rollback();
             self::$errCode = "012";
             self::$errMsg = "同步旧ERP库存失败!";
             return false;
         }
         TransactionBaseModel::commit();
         self::$errCode = "0";
         self::$errMsg = "配货成功,请扫描下一个料号!";
         $arr['sku'] = $sku;
         $arr['num'] = $sku_info['num'];
         $arr['assignNum'] = $sku_info['assignNum'] + $sku_num;
         return $arr;
     } else {
         self::$errCode = "013";
         self::$errMsg = "更新料号状态失败!";
         return false;
     }
 }
コード例 #17
0
ファイル: updateSkuStock.php プロジェクト: ohjack/newErp
    if (!empty($actualStock)) {
        $where = "where sku='{$sku}' and storeId = 2";
        $sql = "update wh_sku_location set actualStock={$second_count}, storeId=2 " . $where;
        //echo $sql;exit;
        $info = $dbConn->query($sql);
        if (!$info) {
            $errCode = 412;
            $errMsg = "更新B仓总库存失败!";
            $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, $errMsg, $sql, $second_count, $where);
            write_log($log_file, $log_info);
            TransactionBaseModel::rollback();
            continue;
        }
        write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n");
    } else {
        $info = whShelfModel::insertStore($sku, $second_count, 2);
        if (!$info) {
            $errCode = 412;
            $errMsg = "插入B仓总库存失败!";
            $log_info = sprintf("料号:%s, 时间:%s,错误信息:%s,返回值:%s, 参数:%s, %s \r\n", $sku, $date, $errMsg, $info, $sku, $second_count);
            write_log($log_file, $log_info);
            TransactionBaseModel::rollback();
            continue;
        }
        write_log($log_file, date('Y-m-d H:i:s') . '更新总库存成功!' . "{$sku}\r\n");
    }
    //}
    TransactionBaseModel::commit();
}
function updateNewPostion($sku, $location)
{
コード例 #18
0
 function act_updateEntryStatus2()
 {
     $batchNum = isset($_GET['batchNum']) ? $_GET['batchNum'] : '';
     //传过来的base64编码的json字符串
     if (empty($batchNum)) {
         self::$errCode = 101;
         self::$errMsg = '批次号为空';
         return false;
     }
     $affectRows = whShelfModel::updateEntryStatus($batchNum, 0);
     if ($affectRows !== FALSE) {
         self::$errCode = '200';
         self::$errMsg = '成功';
         return $affectRows;
     } else {
         self::$errCode = '404';
         self::$errMsg = '数据库操作错误';
         return false;
     }
 }
コード例 #19
0
ファイル: whIoRecords.view.php プロジェクト: ohjack/newErp
 public function view_getWhIoRecordsList()
 {
     $type = isset($_GET['type']) ? $_GET['type'] : '';
     $status = isset($_GET['status']) ? $_GET['status'] : '';
     $ioType = isset($_GET['ioType']) ? $_GET['ioType'] : '';
     if (intval($ioType) != 1 && intval($ioType) != 2) {
         //1为出库,2为入库
         $this->smarty->assign('$toptitle', '出入库记录列表');
         $this->smarty->assign('status', '参数错误');
         $this->smarty->assign('whIoRecordsList', null);
         //循环列表
         $this->smarty->display("whIoRecords.htm");
     } else {
         $ioType = intval($ioType);
         $whIoRecordsAct = new WhIoRecordsAct();
         $where = "WHERE ioType='{$ioType}' ";
         if ($type == 'search') {
             $id = isset($_GET['id']) ? post_check($_GET['id']) : '';
             $ordersn = isset($_GET['ordersn']) ? post_check($_GET['ordersn']) : '';
             $ioTypeId = isset($_GET['ioTypeId']) ? post_check($_GET['ioTypeId']) : '';
             $sku = isset($_GET['sku']) ? post_check($_GET['sku']) : '';
             $purchaseId = isset($_GET['purchaseId']) ? post_check($_GET['purchaseId']) : '';
             $userId = isset($_GET['userId']) ? post_check($_GET['userId']) : '';
             $positionId = isset($_GET['position']) ? post_check($_GET['position']) : '';
             $cStartTime = isset($_GET['cStartTime']) ? post_check($_GET['cStartTime']) : '';
             $cEndTime = isset($_GET['cEndTime']) ? post_check($_GET['cEndTime']) : '';
             if (!empty($id)) {
                 $where .= "AND id='{$id}' ";
             }
             if (!empty($ordersn)) {
                 $where .= "AND ordersn='{$ordersn}' ";
             }
             if (!empty($ioTypeId)) {
                 $where .= "AND ioTypeId='{$ioTypeId}' ";
             }
             if (!empty($sku)) {
                 $where .= "AND sku='{$sku}' ";
             }
             if (!empty($purchaseId)) {
                 $purchaseId = getUserIdByName($purchaseId);
                 $where .= "AND purchaseId='{$purchaseId}' ";
             }
             if (!empty($userId)) {
                 $userId = getUserIdByName($userId);
                 $where .= "AND userId='{$userId}' ";
             }
             if ($positionId) {
                 $positionId = WhPositionDistributionModel::get_position_info('id', '', $positionId);
                 $positionId = empty($positionId) ? '-1' : $positionId[0]['id'];
                 $where .= "AND positionId = '{$positionId}' ";
             }
             if (!empty($cStartTime)) {
                 $startTime = strtotime($cStartTime . '00:00:00');
                 $where .= "AND createdTime >='{$startTime}' ";
             }
             if (!empty($cEndTime)) {
                 $endTime = strtotime($cEndTime . '23:59:59');
                 $where .= "AND createdTime <='{$endTime}' ";
             }
         }
         $total = $whIoRecordsAct->act_getTNameCount('wh_iorecords', $where);
         $num = 100;
         //每页显示的个数
         $page = new Page($total, $num, '', 'CN');
         $where .= "ORDER BY createdTime DESC " . $page->limit;
         $whIoRecordsList = $whIoRecordsAct->act_getTNameList('wh_iorecords', '*', $where);
         if (!empty($_GET['page'])) {
             if (intval($_GET['page']) <= 1 || intval($_GET['page']) > ceil($total / $num)) {
                 $n = 1;
             } else {
                 $n = (intval($_GET['page']) - 1) * $num + 1;
             }
         } else {
             $n = 1;
         }
         if ($total > $num) {
             //输出分页显示
             $show_page = $page->fpage(array(0, 2, 3, 4, 5, 6, 7, 8, 9));
         } else {
             $show_page = $page->fpage(array(0, 2, 3));
         }
         $toptitle = '出库记录列表';
         $ioSearchName = '出库类型';
         $navlist = array(array('url' => 'index.php?mod=skuStock&act=getSkuStockList', 'title' => '库存信息'), array('url' => '', 'title' => '出库记录列表'));
         $this->smarty->assign('toplevel', 0);
         $this->smarty->assign('secondlevel', '34');
         $ioTypeList = WhIoStoreModel::getIoTypeListByioType(0);
         if ($ioType == 2) {
             $toptitle = '入库记录列表';
             $ioSearchName = '入库类型';
             $this->smarty->assign('secondlevel', 35);
             $navlist = array(array('url' => 'index.php?mod=skuStock&act=getSkuStockList', 'title' => '库存信息'), array('url' => '', 'title' => '入库记录列表'));
             $ioTypeList = WhIoStoreModel::getIoTypeListByioType(1);
         }
         $this->smarty->assign('toptitle', $toptitle);
         $this->smarty->assign('ioSearchName', $ioSearchName);
         $this->smarty->assign('ioTypeList', $ioTypeList);
         $this->smarty->assign('navlist', $navlist);
         $this->smarty->assign('show_page', $show_page);
         $this->smarty->assign('status', $status);
         $usermodel = UserModel::getInstance();
         foreach ($whIoRecordsList as $key => $val) {
             $whIoRecordsList[$key]['ioTypeName'] = WhIoStoreModel::getIoTypeNameById($val['ioTypeId']);
             $whIoRecordsList[$key]['whName'] = WhIoStoreModel::getWhNameById($val['storeId']);
             $purchase_user_info = $usermodel->getGlobalUserLists('global_user_name', "where a.global_user_id='{$val['purchaseId']}'", '', 'limit 1');
             $whIoRecordsList[$key]['purchaseName'] = $purchase_user_info[0]['global_user_name'];
             //$user_info 		   					   = $usermodel->getGlobalUserLists('global_user_name',"where a.global_user_id='{$val['userId']}'",'','limit 1');
             //$whIoRecordsList[$key]['userName']	   = $user_info[0]['global_user_name'];
             $whIoRecordsList[$key]['userName'] = getUserNameById($val['userId']);
             $position_info = whShelfModel::selectPosition("where id={$val['positionId']}");
             $whIoRecordsList[$key]['pName'] = $position_info[0]['pName'];
         }
         $this->smarty->assign('whIoRecordsList', $whIoRecordsList ? $whIoRecordsList : null);
         //循环列表
         $this->smarty->display("whIoRecords.htm");
     }
 }
コード例 #20
0
ファイル: whShelfB.action.php プロジェクト: ohjack/newErp
 public function act_whShelf()
 {
     //print_r($_POST);
     $userCnName = $_SESSION['userCnName'];
     $sku = trim($_POST['sku']);
     $sku = get_goodsSn($sku);
     $nums = $_POST['nums'];
     $select_now_position = $_POST['select_now_position'];
     $select_now_store = $_POST['select_now_store'];
     $select_hope_position = $_POST['select_hope_position'];
     $select_hope_store = $_POST['select_hope_store'];
     if (empty($sku)) {
         self::$errCode = 401;
         self::$errMsg = "sku不能为空";
         return false;
     }
     if (empty($select_now_position) && empty($select_now_store) && empty($select_hope_position) && empty($select_hope_store)) {
         self::$errCode = 401;
         self::$errMsg = "上架位置不能为空";
         return false;
     }
     /*
     $where = "where sku='{$sku}' and tallyStatus=0";
     $tallying_list  = packageCheckModel::selectList($where);
     if(empty($tallying_list)){
     	self::$errCode = 402;
     	self::$errMsg  = "无该料号点货信息";
     	return false;
     }else{
     	$tallying_num = 0;
     	foreach($tallying_list as $tallying){
     		$tallying_num += $tallying['ichibanNums']-$tallying['shelvesNums'];
     	}
     	if($nums>$tallying_num){
     		self::$errCode = 402;
     		self::$errMsg  = "上架数不能大于点货良品数[{$tallying_num}]";
     		return false;
     	}
     }
     */
     if ($nums < 1) {
         self::$errCode = 403;
         self::$errMsg = "上架数量不能小于1";
         return false;
     }
     $where = " where sku = '{$sku}'";
     $skuinfo = whShelfModel::selectSku($where);
     if (empty($skuinfo)) {
         self::$errCode = 404;
         self::$errMsg = "无该料号信息";
         return false;
     } else {
         $skuId = $skuinfo['id'];
         $purchaseId = $skuinfo['purchaseId'];
     }
     /*
     		$purInfo = CommonModel::endPurchaseOrder($sku,$nums);             //api获取采购订单处理情况
     		if($purInfo!=0){
     			self::$errCode = 405;
     			self::$errMsg  = "完结采购订单出错,上架失败";
     			return false;
     		}
     		
     		//更新旧erp库存
     		$update_onhand = CommonModel::updateOnhand($sku,$nums);
     		if($update_onhand==0){
     			self::$errCode = 415;
     			self::$errMsg = "更新erp库存失败";
     			return false;
     		}*/
     $return_num = $nums;
     $in_positionId = 0;
     $userId = $_SESSION['userId'];
     TransactionBaseModel::begin();
     /****插入采购未订单记录****/
     /*
     if($return_num>0){
     	$where = " where sku = '{$sku}' and tallyStatus=0";
     	$list  = whShelfModel::selectList($where);
     	$purchaseId = $list[0]['purchaseId'];
     	$totalNums = 0;
     	foreach($list as $key=>$value){
     		$totalNums += $value['num'];
     	}
     	if ($return_num==$nums){
     		$reach_note = "sku[{$sku}]到货{$nums}个,未找到该料号的订单,请物料点货确认和采购补单!";
     	}else{
     		$reach_note = "sku[{$sku}]到货{$nums}个,入库完毕后还多余{$return_num}个,请物料点货确认和采购补单!";
     	}
     	$msg = whShelfModel::insertNoOrder($sku,$return_num,$totalNums,$purchaseId,$userId,$reach_note);
     	if(!$msg){
     		self::$errCode = whShelfModel::$errCode;
     		self::$errMsg  = whShelfModel::$errMsg;
     		return false;
     	}
     }
     */
     /***无料号对应仓位的关系时更新关系表***/
     if ($select_hope_store != 0 || $select_hope_position != 0) {
         $type = 1;
         $positionId = $select_hope_position;
         if ($select_hope_store != 0) {
             $type = 2;
             $positionId = $select_hope_store;
         }
         $in_positionId = $positionId;
         $tname = "wh_product_position_relation";
         $set = "set pId='{$skuId}',positionId='{$positionId}',nums='{$nums}',type='{$type}',storeId=2";
         $insert_relation = OmAvailableModel::insertRow($tname, $set);
         if (!$insert_relation) {
             self::$errCode = 408;
             self::$errMsg = "插入关系表失败!";
             TransactionBaseModel::rollback();
             return false;
         }
         //更新仓位使用状态
         $update_position = OmAvailableModel::updateTNameRow("wh_position_distribution", "set is_enable=1", "where id={$positionId}");
         if ($update_position === false) {
             self::$errCode = 409;
             self::$errMsg = "更新仓位使用状态失败!";
             TransactionBaseModel::rollback();
             return false;
         }
     }
     //更新指定仓位存货数量
     if ($select_now_store != 0) {
         $positioninfo = whShelfModel::selectRelation("where id={$select_now_store}");
         $in_positionId = $positioninfo[0]['positionId'];
         $update_position = whShelfModel::updateProductPositionRelation($nums, "where id='{$select_now_store}'");
         if (!$update_position) {
             self::$errCode = 410;
             self::$errMsg = "更新仓位库存失败!";
             TransactionBaseModel::rollback();
             return false;
         }
     }
     if ($select_now_store == 0 && $select_hope_position == 0 && $select_hope_store == 0) {
         $positioninfo = whShelfModel::selectRelation("where id={$select_now_position}");
         $in_positionId = $positioninfo[0]['positionId'];
         $update_position = whShelfModel::updateProductPositionRelation($nums, "where id='{$select_now_position}'");
         if (!$update_position) {
             self::$errCode = 411;
             self::$errMsg = "更新仓位库存失败!";
             TransactionBaseModel::rollback();
             return false;
         }
     }
     /**** 更新总库存 *****/
     $actualStock = whShelfModel::selectSkuNums($sku, 2);
     if (!empty($actualStock)) {
         $where = "where sku='{$sku}' and storeId=2";
         $info = whShelfModel::updateStoreNum($nums, $where);
         if (!$info) {
             self::$errCode = 412;
             self::$errMsg = "更新总库存失败!";
             TransactionBaseModel::rollback();
             return false;
         }
     } else {
         $info = packageCheckModel::insertStore($sku, $nums, 2);
         if (!$info) {
             self::$errCode = 412;
             self::$errMsg = "更新总库存失败!";
             TransactionBaseModel::rollback();
             return false;
         }
     }
     /**** 插入出入库记录 *****/
     $paraArr = array('sku' => $sku, 'amount' => $nums, 'positionId' => $in_positionId, 'purchaseId' => $purchaseId, 'ioType' => 2, 'ioTypeId' => 13, 'userId' => $userId, 'reason' => '上架入库', 'storeId' => 2);
     $record = CommonModel::addIoRecores($paraArr);
     //出库记录
     if (!$record) {
         self::$errCode = 413;
         self::$errMsg = "插入出入库记录失败!";
         TransactionBaseModel::rollback();
         return false;
     }
     /*
     //更新点货记录状态
     $where = "where sku='{$sku}' and tallyStatus=0 and ichibanNums>0";
         	$list  = packageCheckModel::selectList($where);
     $i = 0;
     while($list[$i]&&$nums){
     	$need_nums = $list[$i]['ichibanNums']-$list[$i]['shelvesNums'];
     	if($nums >= $need_nums){
     		//更改状态
     		$msg = whShelfModel::updateTallyStatus($list[$i]['id'],$need_nums);
     		if(!$msg){
     			self::$errCode = 413;
     			self::$errMsg  = "更新点货记录状态失败!";
     			TransactionBaseModel :: rollback();
     			return false;
     		}
     		$nums = $nums-$need_nums;
     	}else{
     		$msg = whShelfModel::updateShelfNum($list[$i]['id'],$nums);
     		if(!$msg){
     			self::$errCode = 414;
     			self::$errMsg  = "更新点货记录已上架数量失败!";
     			TransactionBaseModel :: rollback();
     			return false;
     		}
     		$nums = 0;
     	}
     	$i++;
     }
     */
     /*
     $purInfo = CommonModel::endPurchaseOrder($sku,$return_num);             //api获取采购订单处理情况
     if($purInfo!=0){
     	self::$errCode = 405;
     	self::$errMsg  = "完结采购订单出错,上架失败";
     	TransactionBaseModel :: rollback();
     	return false;
     }
     
     //更新旧erp库存
     $position_info = PositionModel::getPositionList("pName","where id={$in_positionId}");
     $update_onhand = CommonModel::updateOnhand($sku,$return_num,$userCnName,$position_info[0]['pName']);
     if($update_onhand==0){
     	self::$errCode = 415;
     	self::$errMsg = "更新旧erp库存失败";
     	TransactionBaseModel :: rollback();
     	return false;
     }
     */
     TransactionBaseModel::commit();
     self::$errMsg = "料号[{$sku}]上架成功!";
     return true;
 }
コード例 #21
0
ファイル: packageCheck.action.php プロジェクト: ohjack/newErp
 public function act_adjustPackageCheck()
 {
     $userCnName = $_SESSION['userCnName'];
     $userId = $_SESSION['userId'];
     $info = isset($_POST['info']) ? $_POST['info'] : "";
     $infoarr = explode("*", $info);
     $infoarr = array_filter($infoarr);
     $ids = array();
     /*
     foreach($infoarr as $value){
     	$value_arr   = explode("_",$value);
     	$id 		 = $value_arr[0];
     	$ids[]		 = $id;
     }
     
     $idstr       = implode(',',$ids);
     $where		 = "where id in($idstr) and shelvesNums!=0";
     $lists		 = packageCheckModel::selectList($where);
     
     if(!empty($lists)){
     	self::$errCode=401;
     	self::$errMsg = "调整录入有已上架,请用pda调整";
     	return false;
     }
     */
     OmAvailableModel::begin();
     foreach ($infoarr as $key => $value) {
         $entryStatus = 0;
         $value_arr = explode("_", $value);
         $id = $value_arr[0];
         $num = $value_arr[1];
         $where = "where id={$id}";
         $list = packageCheckModel::selectList($where);
         $beforeNum = $list[0]['num'];
         $sku = $list[0]['sku'];
         $ichibanNums = $list[0]['ichibanNums'];
         $shelvesNums = $list[0]['shelvesNums'];
         $now_num = $beforeNum + $num;
         /** 判断点货调整后数量是否为负数**/
         if ($now_num < 0) {
             self::$errCode = 203;
             self::$errMsg = "调整后数量必须大于等于0!";
             return FALSE;
         }
         /** 已打标但QC未返回良品不许修改**/
         if ($list[0]['printTime'] && !$list[0]['ichibanTime']) {
             self::$errCode = 204;
             self::$errMsg = "请等待QC返回良品后再进行点货调整!";
             return FALSE;
         }
         /** add by Gary(yym) 添加点货调整时QC是否已返回良品数判断**/
         if ($ichibanNums > 0 && $beforeNum < $now_num) {
             //QC已返回良品数
             self::$errCode = 205;
             self::$errMsg = "已有良品数且调整后点货数大于调整前点货数,不许调整!";
             return FALSE;
         }
         /** end**/
         /** 已有上架数则不允许修改(除了许振铠)**/
         if ($shelvesNums > 0) {
             //已有上架数
             if (in_array($_SESSION['userId'], array(318, 644))) {
                 if ($now_num < $shelvesNums) {
                     self::$errCode = 212;
                     self::$errMsg = "调整后的数量不能小于已上架数量!";
                     return FALSE;
                 }
                 $checkOnWaySku = 0;
                 //无需判断在途数量
             } else {
                 self::$errCode = 206;
                 self::$errMsg = "该料号已上架,不许调整!";
                 return FALSE;
             }
         }
         /** end**/
         /** 判断点货数量是否符合在途数量**/
         if (!isset($checkOnWaySku)) {
             //已上架点货调整则跳过在途检测
             $postNum = $list[0]['entryStatus'] != 0 ? $beforeNum : 0;
             //如果不是正常点货状态,则把点货数传递给判断函数
             $checkOnWaySku = checkSkuPackage($sku, $num, $postNum);
         }
         if ($checkOnWaySku == 0) {
             $u_num = $num;
         } else {
             $entryStatus = 1;
             $u_num = -$beforeNum;
         }
         $updateinfo = packageCheckModel::updateRecord($id, $num, $entryStatus);
         if (!$updateinfo) {
             self::$errCode = 207;
             self::$errMsg = "更新点货记录失败!";
             OmAvailableModel::rollback();
             return FALSE;
         }
         $insertinfo = packageCheckModel::insertAdjustRecord($id, $num, $beforeNum, $userId);
         if (!$insertinfo) {
             self::$errCode = 208;
             self::$errMsg = "插入调整记录失败!";
             OmAvailableModel::rollback();
             return FALSE;
         }
         $updatestore = packageCheckModel::updateStore($sku, $u_num);
         if (!updatestore) {
             self::$errCode = 209;
             self::$errMsg = "更新仓库到货库存失败!";
             OmAvailableModel::rollback();
             return FALSE;
         }
         if ($ichibanNums != 0 && $ichibanNums != NULL) {
             $updateIchibanNums = packageCheckModel::updateIchibanNums($num, $id);
             if ($shelvesNums != 0) {
                 //存在上架记录
                 if ($now_num == $shelvesNums) {
                     //更改后点货数如果等于上架数
                     $info = whShelfModel::updateTallyStatus($id, 0);
                     //完结点货记录
                     if (!$info) {
                         self::$errCode = 210;
                         self::$errMsg = "完结点货记录失败!";
                         OmAvailableModel::rollback();
                         return FALSE;
                     }
                 }
             }
             /** 暂时取消点货调整同步老ERP库存**/
             /*if($shelvesNums!=0){
             			$updateshelvesNums = packageCheckModel::updateShelvesNums($num,$sku,$id);
             			if(!$updateshelvesNums){
             				self::$errCode= 210;
             				self::$errMsg = "更新点货记录失败!";
             				OmAvailableModel::rollback();
             				return FALSE;
             			}
             			$update_onhand = CommonModel::adjustOut($sku,$num,$userCnName);
             			if($update_onhand==0){
             				self::$errCode = 211;
             				self::$errMsg  = "更新旧erp库存失败";
             				OmAvailableModel :: rollback();
             				return FALSE;
             			}
             		}*/
         }
     }
     OmAvailableModel::commit();
     return TRUE;
 }
コード例 #22
0
 /**
  * WhGoodsAssignAct::act_checkSkuNum()
  * 检测sku数量是否在库存之内
  * @return void
  */
 public function act_checkSkuNum()
 {
     $sku = trim($_POST['sku']) ? trim($_POST['sku']) : '';
     $outStoreId = intval(trim($_POST['outStoreId'])) ? intval(trim($_POST['outStoreId'])) : '';
     $num = intval(trim($_POST['num'])) ? intval(trim($_POST['num'])) : '';
     if (!$sku || !$outStoreId || !$num) {
         self::$errCode = '001';
         self::$errMsg = '参数不完整';
         return FALSE;
     }
     $actualStock = whShelfModel::selectSkuNums($sku, $outStoreId);
     //获取对应仓库的总库存
     //var_dump($actualStock);exit;
     if (!empty($actualStock)) {
         if ($actualStock['actualStock'] >= $num) {
             self::$errCode = '200';
             return TRUE;
         } else {
             self::$errCode = '002';
             self::$errMsg = '该仓库料号库存不足!';
             return FALSE;
         }
     } else {
         self::$errCode = '003';
         self::$errMsg = '转出仓库不存在该料号!';
         return FALSE;
     }
 }
コード例 #23
0
ファイル: inventory.action.php プロジェクト: ohjack/newErp
 function act_checkSkuPositon()
 {
     $sku = post_check(trim($_POST['sku']));
     $sku = get_goodsSn($sku);
     $location = post_check(trim($_POST['location']));
     $where = " where sku = '{$sku}'";
     $skuinfo = whShelfModel::selectSku($where);
     if (empty($skuinfo)) {
         self::$errCode = 401;
         self::$errMsg = "无该料号信息";
         return false;
     } else {
         $skuId = $skuinfo['id'];
     }
     $sku_positon_list = InvRecordModel::getSkuPosition($skuId, $location);
     if (empty($sku_positon_list)) {
         self::$errCode = 402;
         self::$errMsg = "料号和仓位信息有误";
         return false;
     } else {
         $sku_num = CommonModel::getGoodsCount($sku);
         self::$errMsg = "请输入盘点数量,选择盘点原因";
         return $sku_num;
     }
 }
コード例 #24
0
 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;
     }
 }