コード例 #1
0
        /// <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);
        }
コード例 #2
0
 /// <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;//确认状态
             }
         }
     }
 }
コード例 #3
0
 /// <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("清除失败!");
     //}
 }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
 /// <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();
     }
 }
コード例 #6
0
        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);
        }
コード例 #7
0
        /// <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("已经存在供应计划!");
                    }
                }
            }
        }