Example #1
0
        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;
            }
        }