wxw
1 天以前 145f894535e510213095184d408f1795759346bf
Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -301,6 +301,8 @@
                    };
                    List<BllArrivalNoticeDetail> details = new List<BllArrivalNoticeDetail>();
                    var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList();
                    foreach (ArrivalNoticeDetailVm detailModel in model.AsnDetail)
                    {
                        if (string.IsNullOrEmpty(detailModel.SkuNo))
@@ -318,7 +320,7 @@
                            strMessage = "-1:数量必须大于0;";
                            continue;
                        }
                        if ( model.Type == "5" || model.Type == "6" || model.Type == "7")
                        {
                            if (!string.IsNullOrWhiteSpace(detailModel.LotNo))
@@ -351,12 +353,27 @@
                                detailModel.LotNo = maxLotNo;
                            }
                        }
                        if (model.Type == "0" || model.Type == "1" || model.Type == "2" || model.Type == "3" || model.Type == "4" && model.Type == "8")
                        //if (model.Type == "0" || model.Type == "1" || model.Type == "2" || model.Type == "3" || model.Type == "4" && model.Type == "8")
                        //{
                        //    if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                        //    {
                        //        throw new Exception("当前单据类型批次不可为空!");
                        //    }
                        //}
                        detailModel.BoxCodeStr = detailModel.LotNo;
                        if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                        {
                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                            string toDayTime = DateTime.Now.ToString("yyyyMM");
                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") && m.CreateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd")).Max(m => m.BoxCodeStr);
                            if(string.IsNullOrWhiteSpace(maxBoxCodeStr))
                            {
                                throw new Exception("当前单据类型批次不可为空!");
                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
                            }
                            else
                            {
                                maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
                            }
                            detailModel.BoxCodeStr = maxBoxCodeStr;
                        }
                        // 判断是否已存在当前明细
@@ -375,6 +392,33 @@
                        {
                            detailModel.Price = 0;
                        }
                        var sku = skuList.FirstOrDefault(m => m.SkuNo == detailModel.SkuNo);
                        if (sku == null)
                        {
                            throw new Exception("未查询出物料信息!");
                        }
                        string lot1 = detailModel.Lot1;
                        string lot2 = detailModel.Lot2;
                        if (sku.IsPasteCode == "0")
                        {
                            //不贴标物料 生产日期、有效期不能为空
                            DateTime lot12;
                            DateTime lot22;
                            if (!DateTime.TryParse(detailModel.Lot1, out lot12))
                            {
                                throw new Exception("非贴标物料生产日期转换失败");
                            }
                            if (!DateTime.TryParse(detailModel.Lot2, out lot22))
                            {
                                throw new Exception("非贴标物料过期日期转换失败");
                            }
                            lot1 = lot12.ToString();
                            lot2 = lot22.ToString();
                        }
                        if (string.IsNullOrWhiteSpace(detailModel.PackagNo))
                        {
                            throw new Exception("包装不能为空");
                        }
                        // 计算出总金额
                        detailModel.Money = detailModel.Price * detailModel.Qty;
                        BllArrivalNoticeDetail detail = new BllArrivalNoticeDetail()
@@ -383,7 +427,7 @@
                            SkuNo = detailModel.SkuNo,
                            SkuName = detailModel.SkuName,
                            Standard = detailModel.Standard,
                            LotNo = detailModel.LotNo.Trim(),
                            LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
                            LotText = detailModel.LotText,
                            Qty = (decimal)detailModel.Qty,
                            PackagNo = detailModel.PackagNo,
@@ -397,6 +441,9 @@
                            Status = "0",
                            IsSampling = "0",
                            InspectStatus = "0",
                            Lot1 = lot1, //生产日期
                            Lot2 = lot2, // 过期日期
                            BoxCodeStr = detailModel.BoxCodeStr,
                            UDF1 = detailModel.UDF1,
                            UDF2 = detailModel.UDF2,
                            UDF3 = detailModel.UDF3,
@@ -522,13 +569,13 @@
                            return strMessage;
                        }
                    
                        if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
                        {
                            if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                            {
                                throw new Exception("当前单据类型批次不可为空!");
                            }
                        }
                        //if (model.Type == "0" || model.Type == "2" || model.Type == "3" || model.Type == "4")
                        //{
                        //    if (string.IsNullOrWhiteSpace(detailModel.LotNo))
                        //    {
                        //        throw new Exception("当前单据类型批次不可为空!");
                        //    }
                        //}
                        if (TypeLot.Contains(model.Type)) 
                        {
@@ -558,29 +605,39 @@
                        //生成自有批次
                        if (detailModel.Id == 0 || detailModel.Id == null || string.IsNullOrWhiteSpace(detailModel.LotNo))
                        {
                            var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
                            if (string.IsNullOrWhiteSpace(maxLotNo))
                            //var notice = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && TypeLot.Contains(m.Type)).Select(m => m.ASNNo).ToList();
                            //if (string.IsNullOrWhiteSpace(maxLotNo))
                            //{
                            //    maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
                            //}
                            //if (string.IsNullOrWhiteSpace(maxLotNo))
                            //{
                            //    maxLotNo = toDayTime.Substring(2, 6) + "0001";
                            //}
                            //else
                            //{
                            //    var lotStr = maxLotNo.Substring(0, 6);
                            //    var timeStr = toDayTime.Substring(2, 6);
                            //    if (lotStr == timeStr)
                            //    {
                            //        maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
                            //    }
                            //    else
                            //    {
                            //        maxLotNo = timeStr + "0001";
                            //    }
                            //}
                            //detailModel.LotNo = maxLotNo;
                            var maxBoxCodeStr = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.BoxCodeStr.Contains("BK") && m.CreateTime.ToString("yyyyMMdd") == DateTime.Now.ToString("yyyyMMdd")).Max(m => m.BoxCodeStr);
                            if (string.IsNullOrWhiteSpace(maxBoxCodeStr))
                            {
                                maxLotNo = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.LotNo) && notice.Contains(m.ASNNo)).Max(m => m.LotNo);
                            }
                            if (string.IsNullOrWhiteSpace(maxLotNo))
                            {
                                maxLotNo = toDayTime.Substring(2, 6) + "0001";
                                maxBoxCodeStr = "BK" + toDayTime.Substring(2, 4) + "0001";
                            }
                            else
                            {
                                var lotStr = maxLotNo.Substring(0, 6);
                                var timeStr = toDayTime.Substring(2, 6);
                                if (lotStr == timeStr)
                                {
                                    maxLotNo = toDayTime.Substring(2, 6) + (int.Parse(maxLotNo.Substring(6, 4)) + 1).ToString().PadLeft(4, '0');
                                }
                                else
                                {
                                    maxLotNo = timeStr + "0001";
                                }
                                maxBoxCodeStr = "BK" + (int.Parse(maxBoxCodeStr.Replace("BK", "")) + 1).ToString();
                            }
                            detailModel.LotNo = maxLotNo;
                            detailModel.BoxCodeStr = maxBoxCodeStr;
                        }
                        if (detailModel.Id == 0 || detailModel.Id == null)
@@ -599,7 +656,7 @@
                                SkuNo = detailModel.SkuNo,
                                SkuName = detailModel.SkuName,
                                Standard = detailModel.Standard,
                                LotNo = detailModel.LotNo.Trim(),
                                LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim(),
                                LotText = detailModel.LotText,
                                Qty = (decimal)detailModel.Qty,
                                PackagNo = detailModel.PackagNo,
@@ -615,6 +672,7 @@
                                InspectStatus = "0",
                                Lot1 = detailModel.Lot1,
                                Lot2 = detailModel.Lot2,
                                BoxCodeStr = detailModel.BoxCodeStr,
                                UDF1 = detailModel.UDF1,
                                UDF2 = detailModel.UDF2,
                                UDF3 = detailModel.UDF3,
@@ -664,7 +722,7 @@
                            detailModel.Money = detailModel.Price * detailModel.Qty;
                            dbDetail.Qty = (decimal)detailModel.Qty;
                            dbDetail.LotNo = detailModel.LotNo;
                            dbDetail.LotNo = detailModel.LotNo == null ? "" : detailModel.LotNo.Trim();
                            dbDetail.Money = detailModel.Money;
                            dbDetail.LotText = detailModel.LotText;
                            dbDetail.SupplierLot = detailModel.SupplierLot;