public void Criar(Guid metaunidadeId, MetadaUnidadeporFamilia mMetadaUnidadeporFamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado, Guid familiaId) { var lstOrcamentoporSegSubFamilia = (from x in lstOrcamentoDetalhado group x by string.Format("{0}/{1}/{2}", x.Segmento.Id, x.Familia.Id, x.SubFamilia.Id)); foreach (var OrcaSegSubFamilia in lstOrcamentoporSegSubFamilia) { MetadaUnidadeporSubfamilia mMetadaUnidadeporSubfamilia; mMetadaUnidadeporSubfamilia = RepositoryService.MetadaUnidadeporSubfamilia.Obter(OrcaSegSubFamilia.First().SubFamilia.Id, mMetadaUnidadeporFamilia.ID.Value); if (mMetadaUnidadeporSubfamilia == null) { mMetadaUnidadeporSubfamilia = new MetadaUnidadeporSubfamilia(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); mMetadaUnidadeporSubfamilia.ID = Guid.NewGuid(); mMetadaUnidadeporSubfamilia.UnidadedeNegocio = mMetadaUnidadeporFamilia.UnidadedeNegocio; mMetadaUnidadeporSubfamilia.Ano = mMetadaUnidadeporFamilia.Ano; mMetadaUnidadeporSubfamilia.Trimestre = mMetadaUnidadeporFamilia.Trimestre; mMetadaUnidadeporSubfamilia.Segmento = new Lookup(OrcaSegSubFamilia.First().Segmento.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Segmento>()); mMetadaUnidadeporSubfamilia.Familia = new Lookup(OrcaSegSubFamilia.First().Familia.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.FamiliaProduto>()); mMetadaUnidadeporSubfamilia.Subfamilia = new Lookup(OrcaSegSubFamilia.First().SubFamilia.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.SubfamiliaProduto>()); mMetadaUnidadeporSubfamilia.MetadaFamilia = new Lookup(mMetadaUnidadeporFamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.OrcamentodaUnidadeporFamilia>()); mMetadaUnidadeporSubfamilia.Nome = (mMetadaUnidadeporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name).Length > 99 ? (mMetadaUnidadeporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name).Substring(1, 99) : (mMetadaUnidadeporFamilia.Nome + " - " + OrcaSegSubFamilia.First().SubFamilia.Name); RepositoryService.MetadaUnidadeporSubfamilia.Create(mMetadaUnidadeporSubfamilia); } ServiceMetadaUnidadeporProduto.Criar(metaunidadeId, mMetadaUnidadeporSubfamilia, OrcaSegSubFamilia.ToList(), OrcaSegSubFamilia.First().SubFamilia.Id, mMetadaUnidadeporFamilia.MetadoSegmento.Id); } }
public List <MetadaUnidadeporFamilia> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidade.Trimestres?trimestre = null) { var lista = new List <MetadaUnidadeporFamilia>(); string fetch = @"<fetch aggregate='true' no-lock='true' > <entity name='itbc_potencialdosupervisorporfamilia' > <attribute name='itbc_familiadoprodutoid' alias='familia' groupby='true' /> <attribute name='itbc_potencialplanejado' alias='valor_planejado' aggregate='sum' /> <attribute name='itbc_potencialrealizado' alias='valor_realizado' aggregate='sum' /> <attribute name='itbc_segmentoid' alias='segmento' groupby='true' /> <attribute name='itbc_trimestre' alias='trimestre' groupby='true' /> <filter type='and' > <condition attribute='itbc_ano' operator='eq' value='{0}' /> <condition attribute='itbc_unidadedenegocioid' operator='eq' value='{1}' /> {2} </filter> </entity> </fetch>"; string filterTrimestre = string.Empty; if (trimestre.HasValue) { filterTrimestre = string.Format(@"<condition attribute='itbc_trimestre' operator='eq' value='{0}' />", (int)trimestre.Value); } fetch = string.Format(fetch, ano, unidadeNegocioId, filterTrimestre); var retrieveMultiple = new RetrieveMultipleRequest() { Query = new FetchExpression(fetch) }; EntityCollection collection = ((RetrieveMultipleResponse)this.Execute(retrieveMultiple)).EntityCollection; foreach (var item in collection.Entities) { var familia = ((EntityReference)((AliasedValue)item.Attributes["familia"]).Value); var segmento = ((EntityReference)((AliasedValue)item.Attributes["segmento"]).Value); var potencial = new MetadaUnidadeporFamilia(OrganizationName, IsOffline, Provider) { MetaPlanejada = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value, MetaRealizada = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value, Familia = new SDKore.DomainModel.Lookup(familia.Id, familia.Name, familia.LogicalName), Segmento = new SDKore.DomainModel.Lookup(segmento.Id, segmento.Name, segmento.LogicalName), Trimestre = ((OptionSetValue)((AliasedValue)item.Attributes["trimestre"]).Value).Value }; lista.Add(potencial); } return(lista); }