public void Criar(PotencialdoSupervisorporSubfamilia mPotencialdoSupervisorporSubfamilia, List <Model.OrcamentoDetalhado> lstOrcamentoDetalhado) { PotencialdoSupervisorporProduto mPotencialdoSupervisorporProduto; 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) { //mPotencialdoSupervisorporProduto = RepositoryService.PotencialdoSupervisorporProduto.Obter(OrcaProduto.First().Canal.Id, OrcaProduto.First().Produto.Id, OrcaProduto.First().SubFamilia.Id, mPotencialdoSupervisorporSubfamilia.ID.Value, (int)mPotencialdoSupervisorporSubfamilia.Trimestre); mPotencialdoSupervisorporProduto = RepositoryService.PotencialdoSupervisorporProduto.Obter(OrcaProduto.First().Canal.Id, OrcaProduto.First().Produto.Id, mPotencialdoSupervisorporSubfamilia.ID.Value, (int)mPotencialdoSupervisorporSubfamilia.Trimestre); if (mPotencialdoSupervisorporProduto == null) { mPotencialdoSupervisorporProduto = new PotencialdoSupervisorporProduto(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider); mPotencialdoSupervisorporProduto.ID = Guid.NewGuid(); mPotencialdoSupervisorporProduto.Ano = mPotencialdoSupervisorporSubfamilia.Ano; mPotencialdoSupervisorporProduto.Trimestre = mPotencialdoSupervisorporSubfamilia.Trimestre; mPotencialdoSupervisorporProduto.Produto = new Lookup(OrcaProduto.First().Produto.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Product>()); mPotencialdoSupervisorporProduto.PotencialdoSupervisorPorProduto = new Lookup(mPotencialdoSupervisorporSubfamilia.ID.Value, SDKore.Crm.Util.Utility.GetEntityName <Model.PotencialdoSupervisorporSubfamilia>()); mPotencialdoSupervisorporProduto.Nome = OrcaProduto.First().Produto.Name; mPotencialdoSupervisorporProduto.Supervisor = new Lookup(OrcaProduto.First().Canal.Id, SDKore.Crm.Util.Utility.GetEntityName <Model.Usuario>()); RepositoryService.PotencialdoSupervisorporProduto.Create(mPotencialdoSupervisorporProduto); ServicePotencialDetalhadodoSupervisorporProduto.Criar(mPotencialdoSupervisorporProduto); } } } }
public List <PotencialdoSupervisorporProduto> ListarValoresPorUnidadeNegocio(Guid unidadeNegocioId, int ano, Domain.Enum.OrcamentodaUnidade.Trimestres trimestre) { var lista = new List <PotencialdoSupervisorporProduto>(); string fetch = @" <fetch aggregate='true' no-lock='true'> <entity name='itbc_metadokaporsegmento'> <attribute name='itbc_metaplanejada' alias='valor_planejado' aggregate='sum' /> <attribute name='itbc_metarealizada' alias='valor_realizado' aggregate='sum' /> <attribute name='itbc_supervisorid' alias='supervisor' groupby='true' /> <filter type='and' > <condition attribute='itbc_ano' operator='eq' value='{0}' /> <condition attribute='itbc_unidadedenegocioid' operator='eq' value='{1}' /> <condition attribute='itbc_trimestre' operator='eq' value='{2}' /> </filter> <link-entity name='itbc_metadokaporfamilia' from='itbc_metadokaporsegmentoid' to='itbc_metadokaporsegmentoid' > <link-entity name='itbc_metadokaporsubfamilia' from='itbc_metadokaporfamiliaid' to='itbc_metadokaporfamiliaid' > <attribute name='itbc_subfamiliadeprodutoid' alias='subfamilia' groupby='true' /> <link-entity name='itbc_metadokaporproduto' from='itbc_metadokaporsubfamiliaid' to='itbc_metadokaporsubfamiliaid' > <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' /> </link-entity> </link-entity> </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 supervisor = ((EntityReference)((AliasedValue)item.Attributes["supervisor"]).Value); var subfamilia = ((EntityReference)((AliasedValue)item.Attributes["subfamilia"]).Value); var potencial = new PotencialdoSupervisorporProduto(OrganizationName, IsOffline, Provider) { PotencialPlanejado = ((Money)((AliasedValue)item.Attributes["valor_planejado"]).Value).Value, PotencialRealizado = ((Money)((AliasedValue)item.Attributes["valor_realizado"]).Value).Value, QtdePlanejada = (decimal)((AliasedValue)item.Attributes["quantidade_planejada"]).Value, QtdeRealizada = (decimal)((AliasedValue)item.Attributes["quantidade_realizada"]).Value, Supervisor = new SDKore.DomainModel.Lookup(supervisor.Id, supervisor.Name, supervisor.LogicalName), 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 RetornoDWProduto(int ano, int trimestre) { List <MetadaUnidade> lstMetadaUnidade = RepositoryService.MetadaUnidade.ListarMetas(ano); if (lstMetadaUnidade.Count == 0) { return; } DataTable dtMetaCanal = RepositoryService.PotencialdoSupervisorporProduto.ListarMetaTrimestreDW(ano, trimestre, lstMetadaUnidade); foreach (DataRow item in dtMetaCanal.Rows) { UnidadeNegocio mUnidadeNegocio = RepositoryService.UnidadeNegocio.ObterPorChaveIntegracao(item["CD_Unidade_Negocio"].ToString()); Usuario mUsuario = RepositoryService.Usuario.ObterPor(item["CD_representante"].ToString()); Segmento mSegmento = RepositoryService.Segmento.ObterPor(item["cd_segmento"].ToString()); FamiliaProduto mFamiliaProduto = RepositoryService.FamiliaProduto.ObterPor(item["CD_familia"].ToString()); SubfamiliaProduto mSubfamiliaProduto = RepositoryService.SubfamiliaProduto.ObterPor(item["CD_subfamilia"].ToString()); Product mProduto = RepositoryService.Produto.ObterPor(item["cd_item"].ToString()); if (mUnidadeNegocio != null && mUsuario != null && mSegmento != null && mFamiliaProduto != null && mSubfamiliaProduto != null && mProduto != null) { PotencialdoSupervisorporProduto mPotencialdoSupervisorporProduto = RepositoryService.PotencialdoSupervisorporProduto .Obter(mUnidadeNegocio.ID.Value, mUsuario.ID.Value, Convert.ToInt32(item["cd_ano"].ToString()), trimestre, mSegmento.ID.Value, mFamiliaProduto.ID.Value, mSubfamiliaProduto.ID.Value, mProduto.ID.Value); if (mPotencialdoSupervisorporProduto != null) { mPotencialdoSupervisorporProduto.PotencialRealizado = decimal.Parse(item["vlr"].ToString()); mPotencialdoSupervisorporProduto.QtdeRealizada = decimal.Parse(item["qtde"].ToString()); RepositoryService.PotencialdoSupervisorporProduto.Update(mPotencialdoSupervisorporProduto); } } } }
public void Calcular(PotencialdoSupervisorporProduto mPotencialdoSupervisorporProduto, Trimestre trimestre, ref decimal valor, ref int quantidade) { decimal vlr = 0; int qtde = 0; List <PotencialdoSupervisorporProdutoDetalhado> lstPotencialDetalhadodoSupervisorporProduto = RepositoryService.PotencialDetalhadodoSupervisorporProduto.Listar(mPotencialdoSupervisorporProduto.Supervisor.Id, mPotencialdoSupervisorporProduto.Produto.Id, trimestre.Id.Value); foreach (PotencialdoSupervisorporProdutoDetalhado item in lstPotencialDetalhadodoSupervisorporProduto) { #region if (item.Mes == trimestre.Mes1) { item.PotencialPlanejado = trimestre.Mes1Vlr.HasValue ? trimestre.Mes1Vlr.Value : 0; item.QtdePlanejada = trimestre.Mes1Qtde.HasValue ? trimestre.Mes1Qtde.Value : 0; } else if (item.Mes == trimestre.Mes2) { item.PotencialPlanejado = trimestre.Mes2Vlr.HasValue ? trimestre.Mes2Vlr.Value : 0; item.QtdePlanejada = trimestre.Mes2Qtde.HasValue ? trimestre.Mes2Qtde.Value : 0; } else if (item.Mes == trimestre.Mes3) { item.PotencialPlanejado = trimestre.Mes3Vlr.HasValue ? trimestre.Mes3Vlr.Value : 0; item.QtdePlanejada = trimestre.Mes3Qtde.HasValue ? trimestre.Mes3Qtde.Value : 0; } RepositoryService.PotencialDetalhadodoSupervisorporProduto.Update(item); vlr += item.PotencialPlanejado.Value; qtde += (int)item.QtdePlanejada; #endregion } valor = vlr; quantidade = qtde; }