| | |
| | | using Model.InterFaceModel; |
| | | using Model.ModelDto; |
| | | using Model.ModelDto.BllAsnDto; |
| | | using Model.ModelDto.SysDto; |
| | | using Model.ModelVm; |
| | | using Model.ModelVm.SysVm; |
| | |
| | | } |
| | | |
| | | //获取入库单明细剩余打印数量 |
| | | public string GetAsnDetailQtyList(int id) |
| | | public LabelPrintInfoDto GetAsnDetailQtyList(int id) |
| | | { |
| | | try |
| | | { |
| | |
| | | { |
| | | throw new Exception("未查询到入库单明细"); |
| | | } |
| | | var data = new LabelPrintInfoDto(); |
| | | |
| | | data.ProductionTime = string.IsNullOrEmpty(detail.Lot1) ? "" : Convert.ToDateTime(detail.Lot1).ToString("yyyy-MM-dd"); |
| | | data.ExpirationTime = string.IsNullOrEmpty(detail.Lot2) ? "" : Convert.ToDateTime(detail.Lot2).ToString("yyyy-MM-dd"); |
| | | data.SupplierLot = detail.SupplierLot; |
| | | var labelQty = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == id).Sum(m => m.Qty + (m.SamplingQty == null? 0: m.SamplingQty)); |
| | | if (labelQty == null) |
| | | { |
| | |
| | | { |
| | | qty = 0; |
| | | } |
| | | return qty.ToString(); |
| | | data.Qty = qty.ToString(); |
| | | return data; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | }; |
| | | |
| | | 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)) |
| | |
| | | strMessage = "-1:数量必须大于0;"; |
| | | continue; |
| | | } |
| | | |
| | | |
| | | if ( model.Type == "5" || model.Type == "6" || model.Type == "7") |
| | | { |
| | | if (!string.IsNullOrWhiteSpace(detailModel.LotNo)) |
| | |
| | | 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("yyyyMM") == DateTime.Now.ToString("yyyyMM")).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; |
| | | } |
| | | |
| | | // 判断是否已存在当前明细 |
| | |
| | | { |
| | | 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.IsInspect == "0")//是否免检,0:否 1:是 |
| | | { |
| | | //不免检物料 生产日期、有效期不能为空 |
| | | 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() |
| | |
| | | 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, |
| | |
| | | Status = "0", |
| | | IsSampling = "0", |
| | | InspectStatus = "0", |
| | | Lot1 = lot1, //生产日期 |
| | | Lot2 = lot2, // 过期日期 |
| | | BoxCodeStr = detailModel.BoxCodeStr, |
| | | UDF1 = detailModel.UDF1, |
| | | UDF2 = detailModel.UDF2, |
| | | UDF3 = detailModel.UDF3, |
| | |
| | | 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)) |
| | | { |
| | |
| | | //生成自有批次 |
| | | 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("yyyyMM") == DateTime.Now.ToString("yyyyMM")).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) |
| | |
| | | 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, |
| | |
| | | InspectStatus = "0", |
| | | Lot1 = detailModel.Lot1, |
| | | Lot2 = detailModel.Lot2, |
| | | BoxCodeStr = detailModel.BoxCodeStr, |
| | | UDF1 = detailModel.UDF1, |
| | | UDF2 = detailModel.UDF2, |
| | | UDF3 = detailModel.UDF3, |
| | |
| | | && it.IsBelt == detailModel.IsBelt |
| | | && it.Lot1 == detailModel.Lot1 // 生产日期 |
| | | && it.Lot2 == detailModel.Lot2 // 过期日期 |
| | | && it.BoxCodeStr == detailModel.BoxCodeStr |
| | | && it.UDF1 == detailModel.UDF1 |
| | | && it.UDF2 == detailModel.UDF2 |
| | | && it.UDF3 == detailModel.UDF3 |
| | |
| | | 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; |
| | | dbDetail.IsBale = detailModel.IsBale; |
| | | dbDetail.Lot1 = detailModel.Lot1; |
| | | dbDetail.Lot2 = detailModel.Lot2; |
| | | dbDetail.BoxCodeStr = detailModel.BoxCodeStr; |
| | | dbDetail.UDF1 = detailModel.UDF1; |
| | | dbDetail.UDF2 = detailModel.UDF2; |
| | | dbDetail.UDF3 = detailModel.UDF3; |
| | |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | public ErpModel CreateAsn(AsnInfo model) |
| | | public ErpModel CreateAsn(SendAsnVm model,string userName) |
| | | { |
| | | try |
| | | { |
| | | var resultModel = new ErpModel() { Success = -1, Message = "" }; |
| | | if (string.IsNullOrEmpty(model.AsnType)) |
| | | if (string.IsNullOrEmpty(model.billType.ToString())) |
| | | { |
| | | resultModel.Message = "单据类型不可为空!"; |
| | | return resultModel; |
| | | } |
| | | if (string.IsNullOrEmpty(model.Customer)) |
| | | { |
| | | resultModel.Message = "客户不可为空!"; |
| | | return resultModel; |
| | | } |
| | | if (string.IsNullOrEmpty(model.OrderCode)) |
| | | |
| | | if (string.IsNullOrEmpty(model.orderNo.ToString())) |
| | | { |
| | | resultModel.Message = "上游系统单号不可为空!"; |
| | | return resultModel; |
| | | } |
| | | if (model.AsnDetails.Count <= 0) |
| | | if (model.orderDCmdList.Count <= 0) |
| | | { |
| | | resultModel.Message = "入库单明细不可为空!"; |
| | | return resultModel; |
| | | } |
| | | |
| | | // 根据客户编号获取客户名称 |
| | | var CustomerModel = Db.Queryable<SysCustomer>().First(it => it.CustomerNo == model.Customer && it.IsDel == "0"); |
| | | if (CustomerModel == null) |
| | | { |
| | | resultModel.Message = "客户编号不存在!"; |
| | | return resultModel; |
| | | } |
| | | |
| | | // 入库总表信息 |
| | | string asnNo = new Common().GetMaxNo("ASN"); |
| | | var asnModel = new BllArrivalNotice() |
| | | { |
| | | ASNNo = asnNo, |
| | | Status = "0",//等待执行 |
| | | Type = model.AsnType, |
| | | Origin = string.IsNullOrEmpty(model.Origin) ? "ERP" : model.Origin, |
| | | CustomerNo = model.Customer, |
| | | CustomerName = CustomerModel.CustomerName, |
| | | OrderCode = model.OrderCode, |
| | | UserName = model.Username |
| | | Type = model.billType.ToString(), |
| | | Origin = "SAP", |
| | | CustomerNo = model.vendorNo, |
| | | CustomerName = model.vendorName, |
| | | OrderCode = model.orderNo.ToString(), |
| | | UserName = userName |
| | | }; |
| | | |
| | | // 入库明细表信息 |
| | | List<BllArrivalNoticeDetail> detailModels = new List<BllArrivalNoticeDetail>(); |
| | | foreach (AsnDetail asnDetailModel in model.AsnDetails) |
| | | foreach (var asnDetailModel in model.orderDCmdList) |
| | | { |
| | | if (string.IsNullOrEmpty(asnDetailModel.SkuNo)) |
| | | if (string.IsNullOrEmpty(asnDetailModel.skuNo.ToString())) |
| | | { |
| | | resultModel.Message = "物料编码不可为空!"; |
| | | return resultModel; |
| | | } |
| | | |
| | | if (asnDetailModel.Qty <= 0) |
| | | if (Convert.ToDecimal(asnDetailModel.expectedQty) <= 0) |
| | | { |
| | | resultModel.Message = "数量应为正整数!"; |
| | | resultModel.Message = "应收物料数量应大于0!"; |
| | | return resultModel; |
| | | } |
| | | if (string.IsNullOrEmpty(asnDetailModel.LotNo)) |
| | | if (string.IsNullOrEmpty(asnDetailModel.lotNo.ToString())) |
| | | { |
| | | resultModel.Message = "批次号不可为空!"; |
| | | return resultModel; |
| | | } |
| | | |
| | | // 获取物料详细信息 |
| | | var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == asnDetailModel.SkuNo && it.IsDel == "0"); |
| | | var skuModel = Db.Queryable<SysMaterials>().First(it => it.SkuNo == asnDetailModel.skuNo.ToString() && it.IsDel == "0"); |
| | | if (skuModel == null) |
| | | { |
| | | resultModel.Message = "不存在当前物料信息!"; |
| | |
| | | var detailModel = new BllArrivalNoticeDetail() |
| | | { |
| | | ASNNo = asnNo, |
| | | SkuNo = asnDetailModel.SkuNo, |
| | | SkuNo = asnDetailModel.skuNo.ToString(), |
| | | SkuName = skuModel.SkuName, |
| | | Standard = skuModel.Standard, |
| | | LotNo = asnDetailModel.LotNo, |
| | | LotNo = asnDetailModel.lotNo.ToString(), |
| | | LotText = "", |
| | | Qty = (decimal)asnDetailModel.Qty, |
| | | FactQty=0, |
| | | CompleteQty=0, |
| | | Qty = Convert.ToDecimal(asnDetailModel.expectedQty), |
| | | FactQty = 0, |
| | | CompleteQty = 0, |
| | | PackagNo = skuModel.PackagNo, |
| | | SupplierLot = asnDetailModel.SupplierLot, |
| | | SupplierLot = asnDetailModel.supplyBatch,//生产日期 |
| | | Lot1 = asnDetailModel.productionDate,//过期日期 |
| | | Lot2 = asnDetailModel.expireDate, |
| | | Status = "0", |
| | | IsSampling = "0", |
| | | InspectStatus = "0", |