public void AddMiscOrderLocationDetail(MiscOrderLocationDetail miscOrderLocationDetail) { if (this.MiscOrderLocationDetails == null) { this.MiscOrderLocationDetails = new List<MiscOrderLocationDetail>(); } this.MiscOrderLocationDetails.Add(miscOrderLocationDetail); }
public void CloseMiscOrder(MiscOrderMaster miscOrderMaster, DateTime effectiveDate) { #region 检查 BusinessException businessException = new BusinessException(); if (miscOrderMaster.Status != CodeMaster.MiscOrderStatus.Create) { if (miscOrderMaster.Type == CodeMaster.MiscOrderType.GI) { businessException.AddMessage("计划外出库单{0}的状态为{1}不能确认。", miscOrderMaster.MiscOrderNo, systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.MiscOrderStatus, ((int)miscOrderMaster.Status).ToString())); } else { businessException.AddMessage("计划外入库单{0}的状态为{1}不能确认。", miscOrderMaster.MiscOrderNo, systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.MiscOrderStatus, ((int)miscOrderMaster.Status).ToString())); } } IList<MiscOrderDetail> miscOrderDetailList = TryLoadMiscOrderDetails(miscOrderMaster); if (miscOrderDetailList == null || miscOrderDetailList.Count() == 0) { if (miscOrderMaster.Type == CodeMaster.MiscOrderType.GI) { businessException.AddMessage("计划外出库单{0}明细为空。", miscOrderMaster.MiscOrderNo); } else { businessException.AddMessage("计划外入库单{0}明细为空。", miscOrderMaster.MiscOrderNo); } } else { foreach (MiscOrderDetail miscOrderDetail in miscOrderDetailList) { if (miscOrderDetail.Qty <= 0) { businessException.AddMessage("计划外入库单{0}明细行{1}的数量不能小于0。", miscOrderMaster.MiscOrderNo, miscOrderDetail.Sequence.ToString()); } } } if (businessException.HasMessage) { throw businessException; } #endregion User user = SecurityContextHolder.Get(); miscOrderMaster.CloseDate = DateTime.Now; miscOrderMaster.CloseUserId = user.Id; miscOrderMaster.CloseUserName = user.FullName; miscOrderMaster.Status = com.Sconit.CodeMaster.MiscOrderStatus.Close; this.genericMgr.Update(miscOrderMaster); //后加工废品报工不影响库存 if (miscOrderMaster.SubType == CodeMaster.MiscOrderSubType.MES27) { return; } // IList<MiscOrderLocationDetail> miscOrderLocationDetailList = TryLoadMiscOrderLocationDetails(miscOrderMaster); foreach (MiscOrderDetail miscOrderDetail in miscOrderDetailList.OrderByDescending(det => det.ManufactureParty)) { miscOrderDetail.ManufactureParty = miscOrderMaster.IsCs ? miscOrderDetail.ManufactureParty : null; IList<InventoryTransaction> inventoryTransactionList = this.locationDetailMgr.InventoryOtherInOut(miscOrderMaster, miscOrderDetail, effectiveDate); #region 新增、更新订单库存明细 foreach (InventoryTransaction inventoryTransaction in inventoryTransactionList) { if (miscOrderMaster.IsScanHu) { #region 条码 MiscOrderLocationDetail miscOrderLocationDetail = miscOrderLocationDetailList.Where(m => m.HuId == inventoryTransaction.HuId).Single(); if (inventoryTransaction.ActingBill.HasValue) { miscOrderLocationDetail.IsConsignment = false; miscOrderLocationDetail.PlanBill = null; miscOrderLocationDetail.ActingBill = inventoryTransaction.ActingBill; } this.genericMgr.Update(miscOrderLocationDetail); #endregion } else { #region 数量 MiscOrderLocationDetail miscOrderLocationDetail = new MiscOrderLocationDetail(); miscOrderLocationDetail.MiscOrderNo = miscOrderMaster.MiscOrderNo; miscOrderLocationDetail.MiscOrderDetailId = miscOrderDetail.Id; miscOrderLocationDetail.MiscOrderDetailSequence = miscOrderDetail.Sequence; miscOrderLocationDetail.Item = inventoryTransaction.Item; miscOrderLocationDetail.Uom = miscOrderDetail.Uom; //miscOrderLocationDetail.HuId = locationLotDetail.HuId; //miscOrderLocationDetail.LotNo = locationLotDetail.LotNo; miscOrderLocationDetail.IsCreatePlanBill = inventoryTransaction.IsCreatePlanBill; miscOrderLocationDetail.IsConsignment = inventoryTransaction.IsConsignment; miscOrderLocationDetail.PlanBill = inventoryTransaction.PlanBill; #region 查找寄售供应商 if (inventoryTransaction.IsConsignment && inventoryTransaction.PlanBill.HasValue) { miscOrderLocationDetail.ConsignmentSupplier = this.genericMgr.FindAll<string>("select Party from PlanBill where Id = ?", inventoryTransaction.PlanBill.Value).Single(); } #endregion miscOrderLocationDetail.ActingBill = null; miscOrderLocationDetail.QualityType = inventoryTransaction.QualityType; miscOrderLocationDetail.IsFreeze = inventoryTransaction.IsFreeze; miscOrderLocationDetail.IsATP = inventoryTransaction.IsATP; miscOrderLocationDetail.OccupyType = inventoryTransaction.OccupyType; miscOrderLocationDetail.OccupyReferenceNo = inventoryTransaction.OccupyReferenceNo; miscOrderLocationDetail.Qty = inventoryTransaction.Qty; this.genericMgr.Create(miscOrderLocationDetail); #endregion } } #endregion } }
public void BatchUpdateMiscOrderDetails(MiscOrderMaster miscOrderMaster, IList<string> addHuIdList, IList<string> deleteHuIdList) { if (miscOrderMaster.Status != CodeMaster.MiscOrderStatus.Create) { if (miscOrderMaster.Type == CodeMaster.MiscOrderType.GI) { throw new BusinessException("计划外出库单{0}的状态为{1}不能修改明细。", miscOrderMaster.MiscOrderNo, systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.MiscOrderStatus, ((int)miscOrderMaster.Status).ToString())); } else { throw new BusinessException("计划外入库单{0}的状态为{1}不能修改明细。", miscOrderMaster.MiscOrderNo, systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.MiscOrderStatus, ((int)miscOrderMaster.Status).ToString())); } } TryLoadMiscOrderDetails(miscOrderMaster); IList<MiscOrderLocationDetail> miscOrderLocationDetailList = TryLoadMiscOrderLocationDetails(miscOrderMaster); #region 新增计划外出入库明细 if (addHuIdList != null && addHuIdList.Count > 0) { #region 获取最大订单明细序号 string hql = "select max(Sequence) as seq from MiscOrderDetail where MiscOrderNo = ?"; IList maxSeqList = genericMgr.FindAll(hql, miscOrderMaster.MiscOrderNo); int maxSeq = maxSeqList != null && maxSeqList.Count > 0 && maxSeqList[0] != null ? (int)maxSeqList[0] : 0; #endregion #region 条码处理 #region 明细重复输入校验 #region 合并新增的HuId和原有的HuId IList<string> huIdList = new List<string>(); ((List<string>)huIdList).AddRange(addHuIdList); if (miscOrderLocationDetailList != null && miscOrderLocationDetailList.Count > 0) { ((List<string>)huIdList).AddRange(miscOrderLocationDetailList.Select(det => det.HuId).ToList()); } #endregion #region 检查是否重复 BusinessException businessException = new BusinessException(); var groupedHuIds = from huId in huIdList group huId by huId into result select new { HuId = result.Key, Count = result.Count() }; foreach (var groupedHuId in groupedHuIds.Where(g => g.Count > 1)) { businessException = new BusinessException(string.Format("重复扫描条码{0}。", groupedHuId.HuId)); } if (businessException.HasMessage) { throw businessException; } #endregion #endregion if (miscOrderMaster.Type == CodeMaster.MiscOrderType.GI) { #region 计划外出库 #region 库存占用 IList<InventoryOccupy> inventoryOccupyList = (from huId in addHuIdList select new InventoryOccupy { HuId = huId, //Location = miscOrderMaster.Location, 不指定库位 QualityType = miscOrderMaster.QualityType, OccupyType = CodeMaster.OccupyType.MiscOrder, OccupyReferenceNo = miscOrderMaster.MiscOrderNo }).ToList(); IList<LocationLotDetail> locationLotDetailList = this.locationDetailMgr.InventoryOccupy(inventoryOccupyList); #endregion #region 新增明细 foreach (LocationLotDetail locationLotDetail in locationLotDetailList) { MiscOrderDetail matchedMiscOrderDetail = null; #region 明细处理 if (miscOrderMaster.MiscOrderDetails != null && miscOrderMaster.MiscOrderDetails.Count > 0) { //查找匹配的明细行 matchedMiscOrderDetail = miscOrderMaster.MiscOrderDetails.Where(det => det.Item == locationLotDetail.Item && det.Uom == locationLotDetail.HuUom && det.UnitCount == locationLotDetail.UnitCount && det.Location == locationLotDetail.Location).SingleOrDefault(); } if (matchedMiscOrderDetail == null) { //没有找到明细行,新增明细 Item item = this.genericMgr.FindById<Item>(locationLotDetail.Item); //没有找到匹配的明细行,新增一行 matchedMiscOrderDetail = new MiscOrderDetail(); matchedMiscOrderDetail.MiscOrderNo = miscOrderMaster.MiscOrderNo; matchedMiscOrderDetail.Sequence = ++maxSeq; matchedMiscOrderDetail.Item = locationLotDetail.Item; matchedMiscOrderDetail.ItemDescription = item.Description; matchedMiscOrderDetail.ReferenceItemCode = item.ReferenceCode; matchedMiscOrderDetail.Uom = locationLotDetail.HuUom; matchedMiscOrderDetail.BaseUom = locationLotDetail.BaseUom; matchedMiscOrderDetail.UnitCount = locationLotDetail.UnitCount; matchedMiscOrderDetail.UnitQty = locationLotDetail.UnitQty; matchedMiscOrderDetail.Location = locationLotDetail.Location; //matchedMiscOrderDetail.ReserveNo = addMiscOrderDetail.ReserveNo; //matchedMiscOrderDetail.ReserveLine = addMiscOrderDetail.ReserveLine; matchedMiscOrderDetail.Qty = locationLotDetail.Qty; this.genericMgr.Create(matchedMiscOrderDetail); miscOrderMaster.MiscOrderDetails.Add(matchedMiscOrderDetail); } else { //找到明细行,更新数量 matchedMiscOrderDetail.Qty += locationLotDetail.Qty; this.genericMgr.Update(matchedMiscOrderDetail); } #endregion #region 库存明细新增 MiscOrderLocationDetail miscOrderLocationDetail = new MiscOrderLocationDetail(); miscOrderLocationDetail.MiscOrderNo = miscOrderMaster.MiscOrderNo; miscOrderLocationDetail.MiscOrderDetailId = matchedMiscOrderDetail.Id; miscOrderLocationDetail.MiscOrderDetailSequence = matchedMiscOrderDetail.Sequence; miscOrderLocationDetail.Item = locationLotDetail.Item; miscOrderLocationDetail.Uom = locationLotDetail.HuUom; miscOrderLocationDetail.HuId = locationLotDetail.HuId; miscOrderLocationDetail.LotNo = locationLotDetail.LotNo; miscOrderLocationDetail.IsCreatePlanBill = false; miscOrderLocationDetail.IsConsignment = locationLotDetail.IsConsignment; miscOrderLocationDetail.PlanBill = locationLotDetail.PlanBill; #region 查找寄售供应商 if (locationLotDetail.IsConsignment && locationLotDetail.PlanBill.HasValue) { miscOrderLocationDetail.ConsignmentSupplier = this.genericMgr.FindAll<string>("select Party from PlanBill where Id = ?", locationLotDetail.PlanBill.Value)[0]; } #endregion miscOrderLocationDetail.ActingBill = null; miscOrderLocationDetail.QualityType = locationLotDetail.QualityType; miscOrderLocationDetail.IsFreeze = locationLotDetail.IsFreeze; miscOrderLocationDetail.IsATP = locationLotDetail.IsATP; miscOrderLocationDetail.OccupyType = locationLotDetail.OccupyType; miscOrderLocationDetail.OccupyReferenceNo = locationLotDetail.OccupyReferenceNo; miscOrderLocationDetail.Qty = locationLotDetail.Qty; if (addHuIdList.Contains(miscOrderLocationDetail.HuId)) { this.genericMgr.Create(miscOrderLocationDetail); } #endregion } #endregion #endregion } else { #region 计划外入库 #region 检查条码状态 IList<HuStatus> huStatusList = this.huMgr.GetHuStatus(addHuIdList); foreach (string huId in addHuIdList) { HuStatus huStatus = huStatusList.Where(h => h.HuId == huId).SingleOrDefault(); if (huStatus == null) { businessException = new BusinessException(string.Format("条码{0}不存在。", huId)); } else if (huStatus.Status == CodeMaster.HuStatus.Location) { businessException = new BusinessException(string.Format("条码{0}在库位{1}中,不能计划外入库。", huStatus.HuId, huStatus.Location)); } else if (huStatus.Status == CodeMaster.HuStatus.Ip) { businessException = new BusinessException(string.Format("条码{0}为库位{1}至库位{2}的在途库存,不能计划外入库。", huStatus.HuId, huStatus.LocationFrom, huStatus.LocationTo)); } } if (businessException.HasMessage) { throw businessException; } #endregion #region 新增明细 foreach (HuStatus huStatus in huStatusList) { MiscOrderDetail matchedMiscOrderDetail = null; #region 明细处理 if (miscOrderMaster.MiscOrderDetails != null && miscOrderMaster.MiscOrderDetails.Count > 0) { //查找匹配的明细行 matchedMiscOrderDetail = miscOrderMaster.MiscOrderDetails .Where(det => det.Item == huStatus.Item && det.Uom == huStatus.Uom && det.UnitCount == huStatus.UnitCount) .SingleOrDefault(); } if (matchedMiscOrderDetail == null) { //没有找到明细行,新增明细//没有找到匹配的明细行,新增一行 Item item = this.genericMgr.FindById<Item>(huStatus.Item); matchedMiscOrderDetail = new MiscOrderDetail(); matchedMiscOrderDetail.MiscOrderNo = miscOrderMaster.MiscOrderNo; matchedMiscOrderDetail.Sequence = ++maxSeq; matchedMiscOrderDetail.Item = huStatus.Item; matchedMiscOrderDetail.ItemDescription = item.Description; matchedMiscOrderDetail.ReferenceItemCode = item.ReferenceCode; matchedMiscOrderDetail.Uom = huStatus.Uom; matchedMiscOrderDetail.BaseUom = huStatus.BaseUom; matchedMiscOrderDetail.UnitCount = huStatus.UnitCount; matchedMiscOrderDetail.UnitQty = huStatus.UnitQty; matchedMiscOrderDetail.ManufactureParty = huStatus.ManufactureParty; //matchedMiscOrderDetail.Location = //matchedMiscOrderDetail.ReserveNo = addMiscOrderDetail.ReserveNo; //matchedMiscOrderDetail.ReserveLine = addMiscOrderDetail.ReserveLine; matchedMiscOrderDetail.Qty = huStatus.Qty; this.genericMgr.Create(matchedMiscOrderDetail); miscOrderMaster.MiscOrderDetails.Add(matchedMiscOrderDetail); } else { //找到明细行,更新数量 matchedMiscOrderDetail.Qty += huStatus.Qty; this.genericMgr.Update(matchedMiscOrderDetail); } #endregion #region 库存明细新增 MiscOrderLocationDetail miscOrderLocationDetail = new MiscOrderLocationDetail(); miscOrderLocationDetail.MiscOrderNo = miscOrderMaster.MiscOrderNo; miscOrderLocationDetail.MiscOrderDetailId = matchedMiscOrderDetail.Id; miscOrderLocationDetail.MiscOrderDetailSequence = matchedMiscOrderDetail.Sequence; miscOrderLocationDetail.Item = huStatus.Item; miscOrderLocationDetail.Uom = huStatus.Uom; miscOrderLocationDetail.HuId = huStatus.HuId; miscOrderLocationDetail.LotNo = huStatus.LotNo; miscOrderLocationDetail.IsCreatePlanBill = false; miscOrderLocationDetail.IsConsignment = false; miscOrderLocationDetail.PlanBill = null; miscOrderLocationDetail.ConsignmentSupplier = null; miscOrderLocationDetail.ActingBill = null; miscOrderLocationDetail.QualityType = huStatus.QualityType; miscOrderLocationDetail.IsFreeze = false; miscOrderLocationDetail.IsATP = true; miscOrderLocationDetail.OccupyType = CodeMaster.OccupyType.None; miscOrderLocationDetail.OccupyReferenceNo = null; miscOrderLocationDetail.Qty = huStatus.Qty * huStatus.UnitQty; this.genericMgr.Create(miscOrderLocationDetail); #endregion } #endregion #endregion } #endregion } #endregion #region 删除计划外出入库明细 if (deleteHuIdList != null && deleteHuIdList.Count > 0) { #region 条码处理 #region 条码是否在计划外出入库单中存在检查 BusinessException businessException = new BusinessException(); foreach (string huId in deleteHuIdList) { if (miscOrderLocationDetailList == null || miscOrderLocationDetailList.Where(m => m.HuId == huId).Count() == 0) { if (miscOrderMaster.Type == CodeMaster.MiscOrderType.GI) { businessException.AddMessage("条码{0}在计划外出库单{1}中不存在。", huId, miscOrderMaster.MiscOrderNo); } else { businessException.AddMessage("条码{0}在计划外入库单{1}中不存在。", huId, miscOrderMaster.MiscOrderNo); } } } if (businessException.HasMessage) { throw businessException; } #endregion #region 循环删除 #region 取消占用 if (miscOrderMaster.Type == CodeMaster.MiscOrderType.GI) { this.locationDetailMgr.CancelInventoryOccupy(CodeMaster.OccupyType.MiscOrder, miscOrderMaster.MiscOrderNo, deleteHuIdList); } #endregion foreach (string huId in deleteHuIdList) { #region 扣减明细数量,删除库存明细 MiscOrderLocationDetail miscOrderLocationDetail = miscOrderLocationDetailList.Where(det => det.HuId == huId).Single(); MiscOrderDetail miscOrderDetail = miscOrderMaster.MiscOrderDetails.Where(det => det.Id == miscOrderLocationDetail.MiscOrderDetailId).Single(); miscOrderDetail.Qty -= miscOrderLocationDetail.Qty / miscOrderDetail.UnitQty; this.genericMgr.Update(miscOrderDetail); this.genericMgr.Delete(miscOrderLocationDetail); #endregion } #endregion #endregion } #endregion }
public PlanBill CreatePlanBill(MiscOrderMaster miscOrderMaster, MiscOrderDetail miscOrderDetail, MiscOrderLocationDetail miscOrderLocationDetail, DateTime effectiveDate) { PlanBill planBill = new PlanBill(); planBill.OrderNo = miscOrderMaster.MiscOrderNo; planBill.ReceiptNo = miscOrderMaster.MiscOrderNo; planBill.ExternalReceiptNo = miscOrderMaster.ReferenceNo; planBill.Type = com.Sconit.CodeMaster.BillType.Procurement; planBill.Party = miscOrderDetail.ManufactureParty; planBill.Item = miscOrderDetail.Item; planBill.ItemDescription = miscOrderDetail.ItemDescription; planBill.Uom = miscOrderDetail.Uom; planBill.UnitCount = miscOrderDetail.UnitCount; planBill.BillTerm = CodeMaster.OrderBillTerm.OnlineBilling; PartyAddress partyAddress = this.genericMgr.FindAll<PartyAddress>( "from PartyAddress as pa where pa.Party = ? and pa.Type = ? order by IsPrimary desc,Sequence asc ", new object[] { planBill.Party, CodeMaster.AddressType.BillAddress }, 0, 1).FirstOrDefault(); if (partyAddress == null) { throw new BusinessException(Resources.EXT.ServiceLan.TheBillAddressNotSpecialSupplier, planBill.Party); } planBill.BillAddress = partyAddress.Address.Code; planBill.PlanAmount = 0; int refId = 0; if (miscOrderMaster.IsScanHu) { planBill.PlanQty = miscOrderLocationDetail.Qty; planBill.UnitQty = miscOrderDetail.UnitQty; planBill.HuId = miscOrderLocationDetail.HuId; refId = miscOrderLocationDetail.Id; } else { planBill.PlanQty = miscOrderDetail.Qty; planBill.UnitQty = miscOrderDetail.UnitQty; refId = miscOrderDetail.Id; } planBill.LocationFrom = string.IsNullOrWhiteSpace(miscOrderDetail.Location) ? miscOrderMaster.Location : miscOrderDetail.Location; planBill.EffectiveDate = effectiveDate; this.genericMgr.Create(planBill); this.RecordPlanBillTransaction(planBill, effectiveDate, refId, false); return planBill; }
public void CloseMiscOrder(MiscOrderMaster miscOrderMaster, DateTime effectiveDate) { #region 检查 BusinessException businessException = new BusinessException(); if (miscOrderMaster.Status != CodeMaster.MiscOrderStatus.Create) { if (miscOrderMaster.Type == CodeMaster.MiscOrderType.GI) { businessException.AddMessage("计划外出库单{0}的状态为{1}不能确认。", miscOrderMaster.MiscOrderNo, systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.MiscOrderStatus, ((int)miscOrderMaster.Status).ToString())); } else { businessException.AddMessage("计划外入库单{0}的状态为{1}不能确认。", miscOrderMaster.MiscOrderNo, systemMgr.GetCodeDetailDescription(com.Sconit.CodeMaster.CodeMaster.MiscOrderStatus, ((int)miscOrderMaster.Status).ToString())); } } IList<MiscOrderDetail> miscOrderDetailList = TryLoadMiscOrderDetails(miscOrderMaster); if (miscOrderDetailList == null || miscOrderDetailList.Count() == 0) { if (miscOrderMaster.Type == CodeMaster.MiscOrderType.GI) { businessException.AddMessage("计划外出库单{0}明细为空。", miscOrderMaster.MiscOrderNo); } else { businessException.AddMessage("计划外入库单{0}明细为空。", miscOrderMaster.MiscOrderNo); } } else { foreach (MiscOrderDetail miscOrderDetail in miscOrderDetailList) { if (miscOrderDetail.Qty <= 0) { businessException.AddMessage("计划外入库单{0}明细行{1}的数量不能小于0。", miscOrderMaster.MiscOrderNo, miscOrderDetail.Sequence.ToString()); } } } if (businessException.HasMessage) { throw businessException; } businessException = CheckInventory(miscOrderDetailList, miscOrderMaster); if (businessException.HasMessage) { throw businessException; } #endregion User user = SecurityContextHolder.Get(); miscOrderMaster.CloseDate = DateTime.Now; miscOrderMaster.CloseUserId = user.Id; miscOrderMaster.CloseUserName = user.FullName; miscOrderMaster.Status = com.Sconit.CodeMaster.MiscOrderStatus.Close; this.genericMgr.Update(miscOrderMaster); //如果是退货的 直接转为出库 miscOrderMaster.Type = miscOrderMaster.Type == com.Sconit.CodeMaster.MiscOrderType.Return ? com.Sconit.CodeMaster.MiscOrderType.GI : miscOrderMaster.Type; IList<MiscOrderLocationDetail> miscOrderLocationDetailList = TryLoadMiscOrderLocationDetails(miscOrderMaster); foreach (MiscOrderDetail miscOrderDetail in miscOrderDetailList.OrderByDescending(det => det.ManufactureParty)) { IList<InventoryTransaction> inventoryTransactionList = this.locationDetailMgr.InventoryOtherInOut(miscOrderMaster, miscOrderDetail, effectiveDate); #region 新增、更新订单库存明细 var groupInventoryTransactionList = from trans in inventoryTransactionList group trans by new { Item = trans.Item, HuId = trans.HuId, IsCreatePlanBill = trans.IsCreatePlanBill, IsConsignment = trans.IsConsignment, PlanBill = trans.PlanBill, ActingBill = trans.ActingBill, QualityType = trans.QualityType, IsFreeze = trans.IsFreeze, IsATP = trans.IsATP, OccupyType = trans.OccupyType, OccupyReferenceNo = trans.OccupyReferenceNo, } into result select new { Item = result.Key.Item, HuId = result.Key.HuId, IsCreatePlanBill = result.Key.IsCreatePlanBill, IsConsignment = result.Key.IsConsignment, PlanBill = result.Key.PlanBill, ActingBill = result.Key.ActingBill, QualityType = result.Key.QualityType, IsFreeze = result.Key.IsFreeze, IsATP = result.Key.IsATP, OccupyType = result.Key.OccupyType, OccupyReferenceNo = result.Key.OccupyReferenceNo, Qty = result.Sum(trans => trans.Qty) }; foreach (var groupInventoryTransaction in groupInventoryTransactionList) { if (miscOrderMaster.IsScanHu) { #region 条码 MiscOrderLocationDetail miscOrderLocationDetail = miscOrderLocationDetailList.Where(m => m.HuId == groupInventoryTransaction.HuId).Single(); if (groupInventoryTransaction.ActingBill.HasValue) { miscOrderLocationDetail.IsConsignment = false; miscOrderLocationDetail.PlanBill = null; miscOrderLocationDetail.ActingBill = groupInventoryTransaction.ActingBill; } this.genericMgr.Update(miscOrderLocationDetail); #endregion } else { #region 数量 MiscOrderLocationDetail miscOrderLocationDetail = new MiscOrderLocationDetail(); miscOrderLocationDetail.MiscOrderNo = miscOrderMaster.MiscOrderNo; miscOrderLocationDetail.MiscOrderDetailId = miscOrderDetail.Id; miscOrderLocationDetail.MiscOrderDetailSequence = miscOrderDetail.Sequence; miscOrderLocationDetail.Item = groupInventoryTransaction.Item; miscOrderLocationDetail.Uom = miscOrderDetail.Uom; //miscOrderLocationDetail.HuId = locationLotDetail.HuId; //miscOrderLocationDetail.LotNo = locationLotDetail.LotNo; miscOrderLocationDetail.IsCreatePlanBill = groupInventoryTransaction.IsCreatePlanBill; miscOrderLocationDetail.IsConsignment = groupInventoryTransaction.IsConsignment; miscOrderLocationDetail.PlanBill = groupInventoryTransaction.PlanBill; //#region 查找寄售供应商 //if (inventoryTransaction.IsConsignment && inventoryTransaction.PlanBill.HasValue) //{ //miscOrderLocationDetail.ConsignmentSupplier = this.genericMgr.FindAll<string>("select Party from PlanBill where Id = ?", inventoryTransaction.PlanBill.Value).Single(); //} //#endregion miscOrderLocationDetail.ActingBill = groupInventoryTransaction.ActingBill; miscOrderLocationDetail.QualityType = groupInventoryTransaction.QualityType; miscOrderLocationDetail.IsFreeze = groupInventoryTransaction.IsFreeze; miscOrderLocationDetail.IsATP = groupInventoryTransaction.IsATP; miscOrderLocationDetail.OccupyType = groupInventoryTransaction.OccupyType; miscOrderLocationDetail.OccupyReferenceNo = groupInventoryTransaction.OccupyReferenceNo; miscOrderLocationDetail.Qty = groupInventoryTransaction.Qty; this.genericMgr.Create(miscOrderLocationDetail); #endregion } } #endregion } }