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 <MetadaUnidadeporProduto> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidade.Trimestres trimestre) { var lista = new List <MetadaUnidadeporProduto>(); string fetch = @"<fetch aggregate='true' no-lock='true' > <entity name='itbc_potencialdosupervisorporproduto' > <attribute name='itbc_potencialplanejado' alias='valor_planejado' aggregate='sum' /> <attribute name='itbc_potencialrealizado' alias='valor_realizado' aggregate='sum' /> <attribute name='itbc_produtoid' alias='produto' groupby='true' /> <attribute name='itbc_qtdeplanejada' alias='quantidade_planejada' aggregate='sum' /> <attribute name='itbc_qtderealizada' alias='quantidade_realizada' aggregate='sum' /> <filter type='and' > <condition attribute='itbc_ano' operator='eq' value='{0}' /> <condition attribute='itbc_unidade_negociosid' operator='eq' value='{1}' /> <condition attribute='itbc_trimestre' operator='eq' value='{2}' /> </filter> <link-entity name='itbc_potencial_supervisor_subfamilia' from='itbc_potencial_supervisor_subfamiliaid' to='itbc_potencialsupervisorporprodutoid' > <attribute name='itbc_subfamliadeprodutoid' alias='subfamilia' groupby='true' /> </link-entity> </entity> </fetch>"; fetch = string.Format(fetch, ano, unidadeNegocioId, (int)trimestre); var retrieveMultiple = new RetrieveMultipleRequest() { Query = new FetchExpression(fetch) }; EntityCollection collection = ((RetrieveMultipleResponse)this.Execute(retrieveMultiple)).EntityCollection; foreach (var item in collection.Entities) { var produto = ((EntityReference)((AliasedValue)item.Attributes["produto"]).Value); var subfamilia = ((EntityReference)((AliasedValue)item.Attributes["subfamilia"]).Value); var potencial = new MetadaUnidadeporProduto(OrganizationName, IsOffline, Provider) { MetaPlanejada = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value, MetaRealizada = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value, QtdePlanejada = (decimal)((AliasedValue)item.Attributes["quantidade_planejada"]).Value, QtdeRealizada = (decimal)((AliasedValue)item.Attributes["quantidade_realizada"]).Value, Trimestre = (int)trimestre, Ano = ano, Produto = new SDKore.DomainModel.Lookup(produto.Id, produto.Name, produto.LogicalName), Subfamilia = new SDKore.DomainModel.Lookup(subfamilia.Id, subfamilia.Name, subfamilia.LogicalName) }; lista.Add(potencial); } return(lista); }
public void Calcular(MetadaUnidadeporProduto mMetadaUnidadeporProduto, Trimestre trimestre, ref decimal valor, ref int quantidade) { decimal vlr = 0; int qtde = 0; List <MetaDetalhadadaUnidadeporProduto> lstMetaDetalhadaProdutos = RepositoryService.MetadaUnidadeDetalhadaProduto.Obterpor(mMetadaUnidadeporProduto.ID.Value, trimestre.trimestre.Value); foreach (MetaDetalhadadaUnidadeporProduto prod in lstMetaDetalhadaProdutos) { #region if (prod.Mes == trimestre.Mes1) { prod.MetaPlanejada = trimestre.Mes1Vlr.HasValue ? trimestre.Mes1Vlr.Value : 0; prod.QtdePlanejada = trimestre.Mes1Qtde.HasValue ? trimestre.Mes1Qtde.Value : 0; } else if (prod.Mes == trimestre.Mes2) { prod.MetaPlanejada = trimestre.Mes2Vlr.HasValue ? trimestre.Mes2Vlr.Value : 0; prod.QtdePlanejada = trimestre.Mes2Qtde.HasValue ? trimestre.Mes2Qtde.Value : 0; } else if (prod.Mes == trimestre.Mes3) { prod.MetaPlanejada = trimestre.Mes3Vlr.HasValue ? trimestre.Mes3Vlr.Value : 0; prod.QtdePlanejada = trimestre.Mes3Qtde.HasValue ? trimestre.Mes3Qtde.Value : 0; } RepositoryService.MetadaUnidadeDetalhadaProduto.Update(prod); vlr += prod.MetaPlanejada.Value; qtde += (int)prod.QtdePlanejada; #endregion } valor = vlr; quantidade = qtde; }
public void Calcular(MetadaUnidadeporProduto mMetadaUnidadeporProduto, object itens) { Type myType = itens.GetType(); IList <PropertyInfo> props = new List <PropertyInfo>(myType.GetProperties()); List <MetaDetalhadadaUnidadeporProduto> lstMetaDetalhadaProdutos = RepositoryService.MetadaUnidadeDetalhadaProduto.Listar(mMetadaUnidadeporProduto.ID.Value); foreach (MetaDetalhadadaUnidadeporProduto prod in lstMetaDetalhadaProdutos) { #region if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Janeiro) { prod.MetaPlanejada = decimal.Parse(props[10].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[11].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Fevereiro) { prod.MetaPlanejada = decimal.Parse(props[12].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[13].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Marco) { prod.MetaPlanejada = decimal.Parse(props[14].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[15].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Abril) { prod.MetaPlanejada = decimal.Parse(props[16].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[17].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Maio) { prod.MetaPlanejada = decimal.Parse(props[18].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[19].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Junho) { prod.MetaPlanejada = decimal.Parse(props[20].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[21].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Julho) { prod.MetaPlanejada = decimal.Parse(props[22].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[23].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Agosto) { prod.MetaPlanejada = decimal.Parse(props[24].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[25].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Setembro) { prod.MetaPlanejada = decimal.Parse(props[26].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[27].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Outubro) { prod.MetaPlanejada = decimal.Parse(props[28].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[29].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Novembro) { prod.MetaPlanejada = decimal.Parse(props[30].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[31].GetValue(itens, null).ToString()); } else if (prod.Mes == (int)Enum.OrcamentodaUnidadeDetalhadoporProduto.Mes.Dezembro) { prod.MetaPlanejada = decimal.Parse(props[32].GetValue(itens, null).ToString()); prod.QtdePlanejada = decimal.Parse(props[33].GetValue(itens, null).ToString()); } RepositoryService.MetadaUnidadeDetalhadaProduto.Update(prod); #endregion } }