public InspectMaster TransferReceipt2Inspect(ReceiptMaster receiptMaster) { List<ReceiptLocationDetail> inspectReceiptLocationDetailList = new List<ReceiptLocationDetail>(); IList<Region> createInspectRegonList = this.genericMgr.FindAll<Region>("from Region r where r.IsCreateInspect=?",true); if (createInspectRegonList != null && createInspectRegonList.Count > 0) { foreach (ReceiptDetail receiptDetail in receiptMaster.ReceiptDetails) { int count = (from r in createInspectRegonList where r.Code == receiptDetail.CurrentPartyTo select r).Count(); if (receiptDetail.IsInspect && count > 0) { inspectReceiptLocationDetailList.AddRange(receiptDetail.ReceiptLocationDetails); } } //1月1日上线除冲焊和涂装外,其他区域收货全都不需要报验 //foreach (ReceiptDetail receiptDetail in receiptMaster.ReceiptDetails) //{ // string[] regionArray = new string[] { "CB1", "CP1", "HB1", "HP1", "TB1", "TP1", "TB2", "TP2" }; // int count = (from r in regionArray // where r.ToUpper() == receiptDetail.CurrentPartyTo.ToUpper() // select r).Count(); // if (receiptDetail.IsInspect && count > 0) // { // inspectReceiptLocationDetailList.AddRange(receiptDetail.ReceiptLocationDetails); // } //} //根据region表中的IsCreateInspect来确定是否创建报验单 if (inspectReceiptLocationDetailList != null && inspectReceiptLocationDetailList.Count > 0) { #region 报验单头 InspectMaster inspectMaster = new InspectMaster(); inspectMaster.IpNo = receiptMaster.IpNo; inspectMaster.ReceiptNo = receiptMaster.ReceiptNo; inspectMaster.Region = receiptMaster.PartyTo; inspectMaster.Status = com.Sconit.CodeMaster.InspectStatus.Submit; //inspectMaster.Type = receiptMaster.CreateHuOption == CodeMaster.CreateHuOption.Receive || receiptMaster.IsReceiveScanHu ? com.Sconit.CodeMaster.InspectType.Barcode : com.Sconit.CodeMaster.InspectType.Quantity; inspectMaster.Type = inspectReceiptLocationDetailList.Where(locDet => !string.IsNullOrWhiteSpace(locDet.HuId)).Count() > 0 ? com.Sconit.CodeMaster.InspectType.Barcode : com.Sconit.CodeMaster.InspectType.Quantity; inspectMaster.IsATP = true; inspectMaster.WMSNo = receiptMaster.WMSNo; #endregion #region 根据收货明细+条码+WMS行号汇总 var groupedInspectReceiptLocationDetailList = from locDet in inspectReceiptLocationDetailList group locDet by new { ReceiptDetailId = locDet.ReceiptDetailId, HuId = locDet.HuId, LotNo = locDet.LotNo, WMSSeq = locDet.WMSSeq, IsConsignment = locDet.IsConsignment, PlanBill = locDet.PlanBill, } into gj select new { ReceiptDetailId = gj.Key.ReceiptDetailId, HuId = gj.Key.HuId, LotNo = gj.Key.LotNo, WMSSeq = gj.Key.WMSSeq, IsConsignment = gj.Key.IsConsignment, PlanBill = gj.Key.PlanBill, ReceiveQty = gj.Sum(locDet => locDet.Qty), //基本单位 }; #endregion #region 报验单明细 foreach (var groupedInspectReceiptLocationDetail in groupedInspectReceiptLocationDetailList) { ReceiptDetail receiptDetail = receiptMaster.ReceiptDetails.Where(det => det.Id == groupedInspectReceiptLocationDetail.ReceiptDetailId).Single(); InspectDetail inspectDetail = new InspectDetail(); inspectDetail.Item = receiptDetail.Item; inspectDetail.ItemDescription = receiptDetail.ItemDescription; inspectDetail.ReferenceItemCode = receiptDetail.ReferenceItemCode; inspectDetail.BaseUom = receiptDetail.BaseUom; inspectDetail.HuId = groupedInspectReceiptLocationDetail.HuId; inspectDetail.LotNo = groupedInspectReceiptLocationDetail.LotNo; inspectDetail.Uom = receiptDetail.Uom; inspectDetail.UnitCount = receiptDetail.UnitCount; inspectDetail.UnitQty = receiptDetail.UnitQty; inspectDetail.LocationFrom = receiptDetail.LocationTo; inspectDetail.CurrentLocation = receiptDetail.LocationTo; inspectDetail.InspectQty = groupedInspectReceiptLocationDetail.ReceiveQty / inspectDetail.UnitQty; inspectDetail.IsJudge = false; inspectDetail.IpDetailSequence = receiptDetail.IpDetailSequence; inspectDetail.ReceiptDetailSequence = receiptDetail.Sequence; inspectDetail.WMSSeq = groupedInspectReceiptLocationDetail.WMSSeq; inspectDetail.IsConsignment = groupedInspectReceiptLocationDetail.IsConsignment; inspectDetail.PlanBill = groupedInspectReceiptLocationDetail.PlanBill; inspectMaster.AddInspectDetail(inspectDetail); } #endregion return inspectMaster; } else { return null; } } else { return null; } }
public InspectMaster TransferReceipt2Inspect(ReceiptMaster receiptMaster) { List<ReceiptLocationDetail> inspectReceiptLocationDetailList = new List<ReceiptLocationDetail>(); foreach (ReceiptDetail receiptDetail in receiptMaster.ReceiptDetails) { if (receiptDetail.IsInspect) { inspectReceiptLocationDetailList.AddRange(receiptDetail.ReceiptLocationDetails); } } if (inspectReceiptLocationDetailList != null && inspectReceiptLocationDetailList.Count > 0) { #region 报验单头 InspectMaster inspectMaster = new InspectMaster(); inspectMaster.IpNo = receiptMaster.IpNo; inspectMaster.ReceiptNo = receiptMaster.ReceiptNo; inspectMaster.Region = receiptMaster.PartyTo; inspectMaster.Status = com.Sconit.CodeMaster.InspectStatus.Submit; //inspectMaster.Type = receiptMaster.CreateHuOption == CodeMaster.CreateHuOption.Receive || receiptMaster.IsReceiveScanHu ? com.Sconit.CodeMaster.InspectType.Barcode : com.Sconit.CodeMaster.InspectType.Quantity; inspectMaster.Type = inspectReceiptLocationDetailList.Where(locDet => !string.IsNullOrWhiteSpace(locDet.HuId)).Count() > 0 ? com.Sconit.CodeMaster.InspectType.Barcode : com.Sconit.CodeMaster.InspectType.Quantity; inspectMaster.IsATP = true; inspectMaster.WMSNo = receiptMaster.WMSNo; inspectMaster.PartyFrom = receiptMaster.PartyFrom; inspectMaster.PartyFromName = receiptMaster.PartyFromName; #endregion #region 根据收货明细+条码+WMS行号汇总 var groupedInspectReceiptLocationDetailList = from locDet in inspectReceiptLocationDetailList group locDet by new { ReceiptDetailId = locDet.ReceiptDetailId, HuId = locDet.HuId, LotNo = locDet.LotNo, WMSSeq = locDet.WMSSeq, IsConsignment = locDet.IsConsignment, PlanBill = locDet.PlanBill, } into gj select new { ReceiptDetailId = gj.Key.ReceiptDetailId, HuId = gj.Key.HuId, LotNo = gj.Key.LotNo, WMSSeq = gj.Key.WMSSeq, IsConsignment = gj.Key.IsConsignment, PlanBill = gj.Key.PlanBill, ReceiveQty = gj.Sum(locDet => locDet.Qty), //基本单位 }; #endregion #region 报验单明细 foreach (var groupedInspectReceiptLocationDetail in groupedInspectReceiptLocationDetailList) { ReceiptDetail receiptDetail = receiptMaster.ReceiptDetails.Where(det => det.Id == groupedInspectReceiptLocationDetail.ReceiptDetailId).Single(); InspectDetail inspectDetail = new InspectDetail(); inspectDetail.Item = receiptDetail.Item; inspectDetail.ItemDescription = receiptDetail.ItemDescription; inspectDetail.ReferenceItemCode = receiptDetail.ReferenceItemCode; inspectDetail.BaseUom = receiptDetail.BaseUom; inspectDetail.HuId = groupedInspectReceiptLocationDetail.HuId; inspectDetail.LotNo = groupedInspectReceiptLocationDetail.LotNo; inspectDetail.Uom = receiptDetail.Uom; inspectDetail.UnitCount = receiptDetail.UnitCount; inspectDetail.UnitQty = receiptDetail.UnitQty; inspectDetail.LocationFrom = receiptDetail.LocationTo; inspectDetail.CurrentLocation = receiptDetail.LocationTo; inspectDetail.InspectQty = groupedInspectReceiptLocationDetail.ReceiveQty / inspectDetail.UnitQty; inspectDetail.IsJudge = false; inspectDetail.IpDetailSequence = receiptDetail.IpDetailSequence; inspectDetail.ReceiptDetailSequence = receiptDetail.Sequence; inspectDetail.WMSSeq = groupedInspectReceiptLocationDetail.WMSSeq; inspectDetail.IsConsignment = groupedInspectReceiptLocationDetail.IsConsignment; inspectDetail.PlanBill = groupedInspectReceiptLocationDetail.PlanBill; inspectMaster.AddInspectDetail(inspectDetail); } #endregion return inspectMaster; } else { return null; } }