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 void Criar(Guid orcamentounidadeId, MetadaUnidadeporSubfamilia mMetadaUnidadeporSubfamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado, Guid subfamiliaId, Guid metadosegmentoId) { MetadaUnidadeporProduto mMetadaUnidadeporProduto = null; MetadaUnidadeporProduto mMetaUnidadeProduto = null; var lstOrcamentoporSegSubFamilia = (from x in lstOrcamentoDetalhado group x by string.Format("{0}/{1}/{2}/{3}", x.Segmento.Id, x.Familia.Id, x.SubFamilia.Id, x.Produto.Id)); foreach (var OrcaProduto in lstOrcamentoporSegSubFamilia) { if (OrcaProduto.First().Produto.Id != Guid.Empty) { mMetaUnidadeProduto = RepositoryService.MetadaUnidadeporProduto.Obter(OrcaProduto.First().Produto.Id, mMetadaUnidadeporSubfamilia.ID.Value); if (mMetaUnidadeProduto == null) { #region mMetadaUnidadeporProduto = new MetadaUnidadeporProduto(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); mMetadaUnidadeporProduto.ID = Guid.NewGuid(); mMetadaUnidadeporProduto.Ano = mMetadaUnidadeporSubfamilia.Ano; mMetadaUnidadeporProduto.Trimestre = mMetadaUnidadeporSubfamilia.Trimestre; mMetadaUnidadeporProduto.Produto = new Lookup(OrcaProduto.First().Produto.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Product>()); mMetadaUnidadeporProduto.MetadaSubfamilia = new Lookup(mMetadaUnidadeporSubfamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.OrcamentodaUnidadeporSubFamilia>()); mMetadaUnidadeporProduto.Nome = OrcaProduto.First().Produto.Name; RepositoryService.MetadaUnidadeporProduto.Create(mMetadaUnidadeporProduto); ServiceMetaDetalhadadaUnidadeporProduto.Criar(mMetadaUnidadeporProduto); #endregion } } } }
public List <MetadaUnidadeporSubfamilia> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidade.Trimestres?trimestre = null) { var lista = new List <MetadaUnidadeporSubfamilia>(); string fetch = @" <fetch aggregate='true' no-lock='true' > <entity name='itbc_potencial_supervisor_subfamilia' > <attribute name='itbc_familiadeprodutoid' 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_subfamliadeprodutoid' alias='subfamilia' 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 subfamilia = ((EntityReference)((AliasedValue)item.Attributes["subfamilia"]).Value); var segmento = ((EntityReference)((AliasedValue)item.Attributes["segmento"]).Value); var potencial = new MetadaUnidadeporSubfamilia(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), Subfamilia = new SDKore.DomainModel.Lookup(subfamilia.Id, subfamilia.Name, subfamilia.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); }