/// <summary> /// 根据销售订单ID,获取销售订单随单BOM表 /// </summary> /// <param name="SoLineKey">销售订单行ID</param> /// /// <param name="ItemKey">ID</param> /// <returns>销售订单随单BOM</returns> public List <GetBomDTO> GetBOM(GetOrderBom bpObj) { List <GetBomDTO> ListDTO = new List <GetBomDTO>(); OrderBomHead.EntityList BomList = OrderBomHead.Finder.FindAll("OrderLine=@OrderLine and SubKey=@SubKey", new OqlParam(bpObj.SoLineID.ID), new OqlParam(bpObj.SubKeyID.ID)); if (BomList != null && BomList.Count > 0) { for (int i = 0; i < BomList.Count; i++) { GetBomDTO dto = new GetBomDTO(); if (BomList[i].ParentPart != null) { dto.ParentPart = BomList[i].ParentPartKey; //母项 dto.ParentPart_Code = BomList[i].ParentPart.Code; dto.ParentPart_Name = BomList[i].ParentPart.Name; } if (BomList[i].SubKey != null) { dto.SubKey = BomList[i].SubKeyKey;//子项 dto.SubKey_Code = BomList[i].SubKey.Code; dto.SubKey_Name = BomList[i].SubKey.Name; } dto.SellNumber = BomList[i].SellNumber; //销售数量 dto.NeedNumber = BomList[i].NeedNumber; //需求数量 dto.OrderLineRow = BomList[i].OrderLineRow; //销售订单行行号 if (BomList[i].OrderLine != null) { dto.OrderLine = BomList[i].OrderLine.Key.ID; //销售订单行ID } dto.Loss = BomList[i].Loss; //损耗率 if (BomList[i].SubkeyType != null) { // dto.SubkeyType.ID = BomList[i].SubkeyTypeKey.ID;//子项分类 dto.SubkeyType_Code = BomList[i].SubkeyType.Code; dto.SubkeyType_Name = BomList[i].SubkeyType.Name; } //if (BomList[i].OrderBomLine != null && BomList[i].OrderBomLine.Count > 0) //{ // for (int j = 0; j < BomList[i].OrderBomLine.Count; j++)//随单BOM行 // { // OrderBomBE.OrderBomLine line = new OrderBomLine(); // line.Key = BomList[i].OrderBomLine[j].Key; // BomList[i].OrderBomLine = // dto.OrderBomLine[i].a.Add(BomList[i].OrderBomLine[j].Key); // } //} ListDTO.Add(dto); } } return(ListDTO); }
/// <summary> /// 确认包材 /// </summary> /// <param name="SolineKey"></param> public void ModifyBomSateIsTrue(List <SOLine.EntityKey> SolineKey) { for (int i = 0; i < SolineKey.Count; i++) { OrderBomHead.EntityList BomHeadList = OrderBomHead.Finder.FindAll("OrderLine=@id and SubkeyType.code='001'", new OqlParam[] { new OqlParam(SolineKey[i].ID) });//根据销售订单行ID,查询包材类的随单BOM if (BomHeadList.Count > 0) { foreach (OrderBomHead item in BomHeadList) { item.ArrirmState = true;//确认状态 } } } }
/// <summary> /// 清除 销售单某一行的随单BOM /// </summary> /// <param name="SoLineKey"></param> public void DeleteBom(long SoLineKey) { OrderBomHead.EntityList OrderBomList = OrderBomHead.Finder.FindAll("OrderLine.ID=@id", new OqlParam(SoLineKey)); if (OrderBomList.Count > 0) { using (ISession session = Session.Open()) { foreach (OrderBomHead item in OrderBomList) { item.Remove(); } session.Commit(); } } //else //{ // throw new Exception("清除失败!"); //} }
/// <summary> /// /// </summary> /// <param name="bpObj"></param> /// <returns></returns> public string SupplierMode(GetSupplierMode bpObj) { string ErrStr = string.Empty; int Number = 0; List <SupplierModeDTO> DTOList = bpObj.SupplierModeDTO; if (DTOList != null && DTOList.Count > 0) { for (int i = 0; i < DTOList.Count; i++) { OrderBomHead.EntityList EntityList = OrderBomHead.Finder.FindAll("OrderLine=@OrderLine", new OqlParam(DTOList[i].SoLineListID.ID)); if (EntityList != null && EntityList.Count > 0) { for (int j = 0; j < EntityList.Count; j++) { //if (DTOList[i].PackMode == UFIDA.U9.Cust.GS.FT.AllEnumBE.PackTypeEnum.InPacking)//内厂包装方式 //{ // if (EntityList[i].SupplierMode != UFIDA.U9.Cust.GS.FT.AllEnumBE.SupplierModeEnum.GreatStar) // { // ErrStr += "包装工厂为内厂包装时,随单BOM供应方式必须为巨星备料"; // } //} //if (DTOList[i].PackMode == UFIDA.U9.Cust.GS.FT.AllEnumBE.PackTypeEnum.OutPacking)//外厂包装方式 //{ if (EntityList[j].IsEntrustedProcessing) { Number++; } // } } } } } if (Number != 1) { ErrStr += "包装工厂为外厂包装时,随单BOM供应方式中必须有且只有一个子件是提供受托加工!"; } return(ErrStr); }
/// <summary> /// 联动删除 BOM 佣金 费用 /// </summary> /// <param name="bpObj"></param> public void Delete(DeleteSo bpObj) { using (ISession session = Session.Open()) { //随单Bom OrderBomHead.EntityList BomList = OrderBomHead.Finder.FindAll("OrderHead=@OrderHead", new OqlParam(bpObj.SoID)); if (BomList != null && BomList.Count > 0) { foreach (OrderBomHead item in BomList) { item.Remove(); } } //订单行佣金 SOLine.EntityList LineList = bpObj.SoID.GetEntity().SOLines; if (LineList != null && LineList.Count > 0) { foreach (SOLine item in LineList) { OrderLineBrokerage.EntityList Brokerage = OrderLineBrokerage.Finder.FindAll("OrderLineID=@OrderLineID", new OqlParam(item.ID)); if (Brokerage != null && Brokerage.Count > 0) { foreach (OrderLineBrokerage items in Brokerage) { items.Remove(); } } } } //订单费用 SellOrderID OrderCost.EntityList CostList = OrderCost.Finder.FindAll("SellOrderID=@SellOrderID", new OqlParam(bpObj.SoID)); if (CostList != null && CostList.Count > 0) { foreach (OrderCost item in CostList) { item.Remove(); } } session.Commit(); } }
public override object Do(object obj) { DeleteSoLineBom bpObj = (DeleteSoLineBom)obj; if (bpObj == null) { return(false); } using (ISession session = Session.Open()) { foreach (UFIDA.U9.SM.SO.SOLine.EntityKey solineKey in bpObj.SoLineListKey) { OrderBomHead.EntityList OrderBomList = OrderBomHead.Finder.FindAll("OrderLine=@SOLine", new OqlParam("SOLine", solineKey.ID)); foreach (OrderBomHead head in OrderBomList) { if (head.SubkeyType == null) { throw new Exception("子件【" + head.SubKey.Code + "】未维护料品库存分类,系统无法获取数据进行判断分析!"); } if (head.IsSupplyPlan) { throw new Exception("子件【" + head.SubKey.Code + "】已下达供应计划,不允许删除!"); } if (head.ArrirmState == true && head.SubkeyType.Code == "03") { throw new Exception("子件【" + head.SubKey.Code + "】为包材类子件并且已确定,不允许删除!"); } foreach (OrderBomLine line in head.OrderBomLine) { line.Remove(); } head.Remove(); } } session.Commit(); } return(true); }
/// <summary> /// 取消确认包材 /// </summary> /// <param name="SolineKey"></param> public void ModifyBomSateIsFalse(List <SOLine.EntityKey> SolineKey) { //检查包材类的子件是否有供应计划,如果没有存在供应计划,则自动将确认状态赋值为False,如果有,则走随单BOM变更单; for (int i = 0; i < SolineKey.Count; i++) { OrderBomHead.EntityList BomHeadList = OrderBomHead.Finder.FindAll("OrderLine.ID=@id and SubkeyType.code='001'", new OqlParam[] { new OqlParam(SolineKey[i].ID) });//根据销售订单行ID,查询包材类的随单BOM foreach (OrderBomHead item in BomHeadList) { //判断是否有供应计划 if (!item.IsSupplyPlan) //没有 { item.ArrirmState = false; //取消确认状态 } else { //随单BOM变更单 throw new Exception("已经存在供应计划!"); } } } }