Ejemplo n.º 1
0
        public List <MesBomDetail> GetBomDetailList(MesBom mesBom)
        {
            MesBom topBom = mesBomMgr.LoadBom(mesBom.Code, true);
            List <MesBomDetail> mesBomDetailList = new List <MesBomDetail>();

            if (topBom.BomDetails != null && topBom.BomDetails.Count > 0)
            {
                foreach (MesBomDetail mesBomDetail in topBom.BomDetails)
                {
                    if (mesBomDetail.StructureType == BusinessConstants.CODE_MASTER_BOM_DETAIL_TYPE_VALUE_N)
                    {
                        mesBomDetailList.Add(mesBomDetail);
                    }
                    else if (mesBomDetail.StructureType == BusinessConstants.CODE_MASTER_BOM_DETAIL_TYPE_VALUE_X)
                    {
                        List <MesBomDetail> xBomDetail = GetBomDetailList(mesBomDetail.Bom.Code, mesBomDetail.Item.Code);
                        mesBomDetailList.AddRange(xBomDetail);
                    }
                }
            }

            var query = mesBomDetailList.Select(l => new
            {
                Bom     = l.Bom,
                Item    = l.Item,
                RateQty = (from m in mesBomDetailList
                           where m.Bom.Code.Trim().ToUpper() == l.Bom.Code.Trim().ToUpper() &&
                           m.Item.Code.Trim().ToUpper() == l.Item.Code.Trim().ToUpper() &&
                           m.IsActive == l.IsActive
                           select m.RateQty).Sum(),
                IsActive = l.IsActive
            }).Distinct();

            List <MesBomDetail> list = new List <MesBomDetail>();

            foreach (var item in query)
            {
                MesBomDetail mesBomDetail = new MesBomDetail();
                mesBomDetail.Bom      = item.Bom;
                mesBomDetail.Item     = item.Item;
                mesBomDetail.RateQty  = item.RateQty;
                mesBomDetail.IsActive = item.IsActive;
                list.Add(mesBomDetail);
            }
            return(list);
        }