yuyou_x
2024-03-16 ecb386a4201213c6635f28f9e9e02e3faf217b51
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -141,6 +141,7 @@
                            SupplierLot = stocks.First().SupplierLot,
                            IsWave = "0",
                            WaveNo = "",
                            IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo)? "0":"1",
                            CreateUser = 0,
                        };
@@ -330,42 +331,60 @@
            }
        }
        public List<ExStockInfoDto> GetStockGroupList(string type, string msg)
        public List<ExStockInfoDto> GetStockGroupList(string type, string ownerNo, string msg)
        {
            try
            {
                if (string.IsNullOrEmpty(type))
                {
                    throw new Exception("请选择出库单类型");
                }
                if (type == "6" && string.IsNullOrEmpty(ownerNo))
                {
                    throw new Exception("代储单据请选择货主");
                }
                var plnList = new List<string>() { "100099" };
                var skuList = new List<string>();
                var sku = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && !plnList.Contains(m.SkuNo)); //排除空托盘的物料集合
                string skuType = string.Empty;
                string inspectStatus = string.Empty;
                switch (type)//0:原料 1:包材 2:成品 3:耗材 4:半成品
                {
                    case "0"://成品入库
                    case "0"://成品出库
                        skuType = "(2)";
                        inspectStatus = "1";
                        break;
                    case "1"://领料出库
                        skuType = "(0,1,3)";
                        inspectStatus = "1";
                        break;
                    case "2"://抽检出库
                        skuType = "(2)";
                        skuType = "(0,1,2,3)";
                        inspectStatus = "0,1,2";
                        break;
                    case "3"://物料取样出库
                        skuType = "(0)";
                        skuType = "(0,1,2,3)";
                        inspectStatus = "0";
                        break;
                    case "4"://不合格品出库
                        skuType = "(2)";
                        skuType = "(0,1,2,3)";
                        inspectStatus = "2";
                        break;
                    case "5"://中间品出库
                        skuType = "(4)";
                        inspectStatus = "0,1";
                        break;
                    case "6"://代储出库
                        skuType = "(2)";
                        skuType = "(0,1,2,3)";
                        inspectStatus = "0,1";
                        break;
                    case "8"://寄存出库
                        skuType = "(3)";
                        skuType = "(0,1,2,3)";
                        inspectStatus = "0,1";
                        break;
                    default: //其它出库
                        skuType = "(0,1,2,3,4)";
                        inspectStatus = "0,1";
                        break;
                }
                skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList();
@@ -378,8 +397,9 @@
                var stockDetailRst = new StockDetailServer();
                Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
                    //.And(it => it.WareHouseNo == wareHouseNo)
                    .And(it => it.InspectStatus == "1")
                    .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus))
                    .And(m => skuList.Contains(m.SkuNo))
                    .AndIF(type == "6", m => m.OwnerNo == ownerNo)//代储出库需要关联货主
                    .AndIF(!string.IsNullOrWhiteSpace(msg), it => (it.SkuNo.Contains(msg) || it.SkuName.Contains(msg) || it.LotNo.Contains(msg)))
                    .And(it => (it.Qty - it.LockQty - it.FrozenQty) > 0)
                    .And(it => (it.Status == "0" || it.Status == "1"))
@@ -2560,18 +2580,22 @@
                            throw new Exception("库存不足,无可出库库存");
                        }
                        //0:成品出库、1:领料出库、2:抽检出库、3:物料取样出库、4:不合格品出库、5:中间品出库、6:代储出库、7:其他出库、8:寄存出库
                        if (notice.Type == "0" || notice.Type == "1" || notice.Type == "2" || notice.Type == "5")//成品、原辅料出库
                        if (notice.Type == "0" || notice.Type == "1" )//成品、原辅料出库
                        {
                            stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
                        }
                        else if (notice.Type == "3" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//取样出库
                        else if (notice.Type == "3" )//取样出库
                        {
                            stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
                        }
                        else if (notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")
                        {
                            stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1").ToList();
                        }
                        else if (notice.Type == "4")//不合格出库
                        {
                            stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
                        }
                        }
                        #region 包装信息
@@ -2821,7 +2845,11 @@
                        if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1:领料出库、
                        {
                            d.LotNo = "";
                            if (d.IsIssueLotNo != "1")
                            {
                                d.LotNo = "";
                            }
                        }
                    }
                    notice.Status = "0";
@@ -2998,7 +3026,7 @@
                    {
                        throw new Exception("操作失败,部分储位库存异常!");
                    }
                    if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty - stock.InspectQty))
                    if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty))     // 输入的数量 -  托盘上可用的数量(托盘上数量-锁定的数量-冻结的数量)
                    {
                        throw new Exception("操作失败,出库数量超出库存数量!");
                    }