예제 #1
0
        private void EfetuaCalculoTR(ChurningIntradayInfo pRequest, ref ChurningIntradayInfo lRetorno)
        {
            TimeSpan lSpan = pRequest.DataAte - pRequest.DataDe;

            decimal lTotalMeses = Decimal.Parse((lSpan.TotalDays / 30).ToString());

            foreach (ChurningIntradayInfo info in lRetorno.Resultado)
            {
                /*
                 * decimal lTotalComprasMes = info.ValorCompras * 12M;
                 * decimal lTotalComprasDia = info.ValorComprasDia *0.03334M;
                 * decimal lCarteira = info.ValorCarteiraMedia * (lTotalMeses < 1 ? 1 : lTotalMeses);
                 */

                decimal lTotalPeriodo = (((info.ValorCompras == 0 ? 0.000001M : info.ValorCompras) * 12) / ((info.ValorCarteiraMedia != 0 ? info.ValorCarteiraMedia : 1) * lTotalMeses));

                decimal lTotalDia = (info.ValorComprasDia == 0 ? 0.000001M : info.ValorComprasDia) / (info.ValorCompras != 0  ? info.ValorCompras : 1);

                info.PercentualTRnoPeriodo = lTotalPeriodo;

                info.PercentualTRnoDia = lTotalDia;


                //info.PercentualTRnoPeriodo = (lTotalComprasMes / lCarteira );
                //info.PercentualTRnoDia     = (lTotalComprasDia / (info.ValorCarteiraDia == 0 ? 1 : (info.ValorCarteiraDia)));

                //info.PercentualTRnoPeriodo = (info.ValorCompras / lCarteira);
                //info.PercentualTRnoDia = (info.ValorComprasDia / (info.ValorCarteiraDia == 0 ? 100 : (info.ValorCarteiraDia * 100)));
            }
        }
예제 #2
0
        private void EfetuaFiltroChurningIntradayPorta(ChurningIntradayInfo pRequest, ref ChurningIntradayInfo lRetorno)
        {
            IEnumerable <ChurningIntradayInfo> lRetornoValor = from a in lRetorno.Resultado select a;

            if (!string.IsNullOrWhiteSpace(pRequest.Porta))
            {
                lRetornoValor = from a in lRetorno.Resultado where a.Porta != null && a.Porta.Contains(pRequest.Porta) select a;
            }

            lRetorno.Resultado = lRetornoValor.ToList();
        }
예제 #3
0
        private void ObterCorretagemPeriodo(ChurningIntradayInfo pRequest, ref ChurningIntradayInfo pRetorno)
        {
            var lListaCorreta = new List <CorretagemChurning>();

            var lAcessaDados = new AcessaDados();

            CorretagemChurning lChurning;

            lAcessaDados.ConnectionStringName = "SinacorExportacao";

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_TURNOVER_CORRETA_PER_SEL"))
            {
                var lDataInicial = this.GetDateBrockage(pRequest.DataDe, pRequest.ListaFeriados);

                var lDataFinal = this.GetDateBrockage(pRequest.DataAte, pRequest.ListaFeriados);

                lAcessaDados.AddInParameter(lDbCommand, "pDataInicial", DbType.DateTime, lDataInicial);

                lAcessaDados.AddInParameter(lDbCommand, "pDataFinal", DbType.DateTime, lDataFinal);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (lDataTable != null && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        DataRow lRow = lDataTable.Rows[i];
                        lChurning = new CorretagemChurning();

                        lChurning.CodigoCliente = lRow["cd_cliente"].DBToInt32();

                        lChurning.DataPosicao = lRow["dt_datmov"].DBToDateTime();

                        lChurning.ValorCorretagem = lRow["VL_VALCOR"].DBToDecimal();

                        lListaCorreta.Add(lChurning);
                    }
                }
            }

            foreach (CorretagemChurning info in lListaCorreta)
            {
                var lChurnFounded = pRetorno.Resultado.Find(churn => { return(churn.CodigoCliente == info.CodigoCliente); });

                if (lChurnFounded != null)
                {
                    lChurnFounded.ValorCorretagem += info.ValorCorretagem;
                }
            }
        }
예제 #4
0
        private List <ChannelClienteLista> ListarClientesPortas(ChurningIntradayInfo pRequest)
        {
            var lRetorno     = new List <ChannelClienteLista>();
            var lAcessaDados = new AcessaDados();

            lAcessaDados.ConnectionStringName = "SINACOR";

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_CHANNELID_CLIENTE_DT_LST"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "DtDe", DbType.DateTime, pRequest.DataDe);
                lAcessaDados.AddInParameter(lDbCommand, "DtAte", DbType.DateTime, pRequest.DataAte);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (lDataTable != null && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        DataRow lRow = lDataTable.Rows[i];

                        string lCodigoCliente = lRow["CodigoCliente"].DBToString().Substring(0, lRow["CodigoCliente"].DBToString().Length - 2);

                        int CodigoCliente = lCodigoCliente.DBToInt32();
                        int lChannelID    = lRow["ChannelID"].DBToInt32();

                        ChannelClienteLista lEncontrado = lRetorno.Find(channel => { return(channel.CodigoCliente == CodigoCliente); });

                        if (lEncontrado.CodigoCliente != 0)
                        {
                            lEncontrado.ListaPortas.Add(lChannelID);
                        }
                        else
                        {
                            var lChannelCliente = new ChannelClienteLista();

                            lChannelCliente.CodigoCliente = CodigoCliente;
                            lChannelCliente.ListaPortas   = new List <int>();
                            lChannelCliente.ListaPortas.Add(lChannelID);

                            lRetorno.Add(lChannelCliente);
                        }
                    }
                }
            }

            return(lRetorno);
        }
예제 #5
0
        private void ObterCorretagemDia(ChurningIntradayInfo pRequest, ref ChurningIntradayInfo pRetorno)
        {
            var lListaCorreta = new List <CorretagemChurning>();

            var lAcessaDados = new AcessaDados();

            CorretagemChurning lChurning;

            lAcessaDados.ConnectionStringName = "SINACOR";

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_CORRETA_ULT_DIA_SEL"))
            {
                var lDataAtual = this.GetDateBrockage(DateTime.Now.AddDays(-1).Date, pRequest.ListaFeriados);

                lAcessaDados.AddInParameter(lDbCommand, "pDataAtual", DbType.DateTime, lDataAtual);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (lDataTable != null && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        DataRow lRow = lDataTable.Rows[i];

                        lChurning = new CorretagemChurning();

                        lChurning.CodigoCliente      = lRow["cd_cliente"].DBToInt32();
                        lChurning.ValorCorretagemDia = lRow["VL_VALCOR"].DBToDecimal();

                        lListaCorreta.Add(lChurning);
                    }
                }
            }

            foreach (CorretagemChurning info in lListaCorreta)
            {
                var lChurnFounded = pRetorno.Resultado.Find(churn => { return(churn.CodigoCliente == info.CodigoCliente); });

                if (lChurnFounded != null)
                {
                    lChurnFounded.ValorCorretagemDia = info.ValorCorretagemDia;
                }
            }
        }
예제 #6
0
        /// <summary>
        /// Método que busca no sinacor(Corrwin) informações de churning avulso
        /// Procedure: PRC_TURNOVER_SEL - Sinacor (Corrwin)
        /// Procedure: prc_churning_intraday_ins - SQl
        /// </summary>
        /// <param name="pDataPosicao">Dara de posição para consulta</param>
        /// <returns>Retorna a listagem de objetos do tipo churninhIntradayInfo preenchidos</returns>
        public List <ChurningIntradayInfo> ImportarChurningIntraday()
        {
            var lAcessaDados = new AcessaDados();
            var lRetorno     = new List <ChurningIntradayInfo>();
            var lChurning    = new ChurningIntradayInfo();

            try
            {
                lAcessaDados.ConnectionStringName = gNomeConexaoCorrwin;

                using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_TURNOVER_SEL"))
                {
                    DataTable lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                    if (null != lDataTable && lDataTable.Rows.Count > 0)
                    {
                        for (int i = 0; i <= lDataTable.Rows.Count - 1; i++)
                        {
                            lChurning = new ChurningIntradayInfo();

                            lChurning.Data           = (lDataTable.Rows[i]["DATA_POSI"]).DBToDateTime();
                            lChurning.CodigoCliente  = (lDataTable.Rows[i]["CD_CLIENTE"]).DBToInt32();
                            lChurning.CodigoAssessor = (lDataTable.Rows[i]["CD_ASSESSOR"]).DBToInt32();
                            lChurning.NomeCliente    = (lDataTable.Rows[i]["NM_CLIENTE"]).DBToString();
                            lChurning.NomeAssessor   = (lDataTable.Rows[i]["NM_ASSESSOR"]).DBToString();
                            lChurning.VlCarteira     = (lDataTable.Rows[i]["CARTEIRA"]).DBToDecimal();
                            lChurning.VlCompra       = (lDataTable.Rows[i]["VL_COMPRAS"]).DBToDecimal();
                            lChurning.VlVendas       = (lDataTable.Rows[i]["VL_VENDAS"]).DBToDecimal();

                            lRetorno.Add(lChurning);
                        }
                    }
                }

                lAcessaDados.ConnectionStringName = gNomeConexaoGradualOMS;

                if (lRetorno.Count > 0)
                {
                    foreach (ChurningIntradayInfo info in lRetorno)
                    {
                        //decimal TR =

                        using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "prc_churning_intraday_ins"))
                        {
                            lAcessaDados.AddInParameter(lDbCommand, "@Data", DbType.DateTime, info.Data);
                            lAcessaDados.AddInParameter(lDbCommand, "@CodigoCliente", DbType.Int32, info.CodigoCliente);
                            lAcessaDados.AddInParameter(lDbCommand, "@CodigoAssessor", DbType.Int32, info.CodigoAssessor);
                            lAcessaDados.AddInParameter(lDbCommand, "@NomeCliente", DbType.String, info.NomeCliente);
                            lAcessaDados.AddInParameter(lDbCommand, "@NomeAssessor", DbType.String, info.NomeAssessor);
                            lAcessaDados.AddInParameter(lDbCommand, "@VlCompras", DbType.Decimal, info.VlCompra);
                            lAcessaDados.AddInParameter(lDbCommand, "@VlVendas", DbType.Decimal, info.VlVendas);
                            lAcessaDados.AddInParameter(lDbCommand, "@VlCarteira", DbType.Decimal, info.VlCarteira);
                            //lAcessaDados.AddInParameter(lDbCommand, "@VlCarteiraMedia",       DbType.Decimal,  info.VlCarteiraMedia);
                            //lAcessaDados.AddInParameter(lDbCommand, "@PercentualTRnoDia",     DbType.Decimal,  info.PercentualTRnoDia);
                            //lAcessaDados.AddInParameter(lDbCommand, "@PercentualTRnoPeriodo", DbType.Decimal,  info.PercentualTRnoPeriodo);
                            //lAcessaDados.AddInParameter(lDbCommand, "@PercentualCEnoDia",     DbType.Decimal,  info.PercentualCEnoDia);
                            //lAcessaDados.AddInParameter(lDbCommand, "@PercentualCEnoPeriodo", DbType.Decimal,  info.PercentualCEnoPeriodo);

                            lAcessaDados.ExecuteNonQuery(lDbCommand);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return(lRetorno);
        }
예제 #7
0
        private string ResponderBuscarItensParaListagemSimples()
        {
            ChurningIntradayDbLib lServico = new ChurningIntradayDbLib();

            string lRetorno = string.Empty;

            string lColunas = string.Empty;

            ChurningIntradayInfo lRequest = new ChurningIntradayInfo();

            TransporteDeListaPaginada lRetornoLista = null;

            if (Session["Usuario"] == null)
            {
                return(string.Empty);
            }

            if (null != this.GetCdCliente)
            {
                lRequest.CodigoCliente = this.GetCdCliente.Value;
            }

            if (null != this.GetCdAssessor)
            {
                lRequest.CodigoAssessor = this.GetCdAssessor.Value;
            }

            if (base.CodigoAssessor != null)
            {
                lRequest.CodigoAssessor = base.CodigoAssessor.Value;
                lRequest.CodigoLogin    = this.UsuarioLogado.Id;
            }

            if (this.GetPorta != null)
            {
                lRequest.Porta = this.GetPorta.Value.ToString();
            }

            lRequest.enumPercentualCE = this.GetPercentualCE;

            lRequest.enumPercentualTR = this.GetPercentualTR;

            lRequest.enumTotalCompras = this.GetTotalCompras;

            lRequest.enumTotalVendas = this.GetTotalVendas;

            lRequest.enumCarteiraMedia = this.GetCarteiraMedia;

            lRequest.ListaFeriados = base.ListaFeriados;

            var lFeriados = base.ListaFeriados;

            var lDataInicial = this.GetDataDe;

            var lDataFinal = this.GetDataAte;

            bool lEFeriado = lFeriados.Contains(lDataInicial);

            bool lEhDiaUtilIntervaloValido = false;

            int lDiasUteis = 0;

            if (ValidaDataDiaUtil(lDataInicial))
            {
                lRetorno = base.RetornarErroAjax("A data inicial deve ser um dia útil");

                return(lRetorno);
            }

            if (ValidaDataDiaUtil(lDataFinal))
            {
                lRetorno = base.RetornarErroAjax("A data final deve ser um dia útil");

                return(lRetorno);
            }

            //Primeiro elimina sabados domigos e feriados do intervalo
            while (lDiasUteis < 1)
            {
                lDataInicial = lDataInicial.AddDays(1);

                lEhDiaUtilIntervaloValido = lDataInicial.DayOfWeek == DayOfWeek.Saturday ||
                                            lDataInicial.DayOfWeek == DayOfWeek.Sunday || lFeriados.Contains(lDataInicial);

                if (!lEhDiaUtilIntervaloValido)
                {
                    lDiasUteis++;
                }
            }

            lDiasUteis = 0;

            lEhDiaUtilIntervaloValido = false;

            //Primeiro elimina sabados domigos e feriados do intervalo
            while (lDiasUteis < 1)
            {
                lDataFinal = lDataFinal.AddDays(1);

                lEhDiaUtilIntervaloValido = lDataFinal.DayOfWeek == DayOfWeek.Saturday ||
                                            lDataFinal.DayOfWeek == DayOfWeek.Sunday || lFeriados.Contains(lDataFinal);

                if (!lEhDiaUtilIntervaloValido)
                {
                    lDiasUteis++;
                }
            }

            lRequest.DataDe = lDataInicial;

            lRequest.DataAte = lDataFinal;

            this.PeriodoFiltro = "De : " + lRequest.DataDe + " Até : " + lRequest.DataAte;

            ChurningIntradayInfo lRetornoConsulta = new ChurningIntradayInfo();

            Session["Sessao_Filtro"] = lRequest;

            lRetornoConsulta = lServico.ObterMonitoramentoIntradiario(lRequest);

            if (lRetornoConsulta != null && lRetornoConsulta.Resultado != null)
            {
                List <TransporteChurningIntraday> lListaTransporte = new TransporteChurningIntraday().TraduzirLista(lRetornoConsulta.Resultado);

                this.SessaoUltimaConsulta = lListaTransporte;

                lRetornoLista = new TransporteDeListaPaginada(lListaTransporte);

                this.ResponderFiltrarPorColuna();

                lRetorno = JsonConvert.SerializeObject(lRetornoLista);

                lRetornoLista.TotalDeItens = lRetornoConsulta.Resultado.Count;

                lRetornoLista.PaginaAtual = 1;

                lRetornoLista.TotalDePaginas = 0;

                return(lRetorno);
            }
            else
            {
                lRetorno = base.RetornarErroAjax("Ocorreu um erro ao processar a requisição");
            }

            return(lRetorno);
        }
예제 #8
0
        private string ResponderExportarExcell()
        {
            ChurningIntradayInfo lRequest = Session["Sessao_Filtro"] as ChurningIntradayInfo;

            ChurningIntradayDbLib lServico = new ChurningIntradayDbLib();

            TransporteDeListaPaginada lRetornoLista = null;

            var lListaTransporte = new List <TransporteChurningIntraday>();

            var lRetornoConsulta = lServico.ObterMonitoramentoIntradiario(lRequest);

            if (lRetornoConsulta != null && lRetornoConsulta.Resultado != null)
            {
                lListaTransporte = new TransporteChurningIntraday().TraduzirLista(lRetornoConsulta.Resultado);

                lRetornoLista = new TransporteDeListaPaginada(lListaTransporte);
            }

            StringBuilder lContent = new StringBuilder();

            lContent.AppendFormat("Data de consulta: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + "\t \t \t \t \t \t \t \t \t \t Período De: {0} até: {1} \t\r", this.GetDataDe, this.GetDataAte);

            lContent.Append("Cliente" + "\t");
            lContent.Append("Nome Cliente" + "\t");
            lContent.Append("Assessor" + "\t");
            lContent.Append("Nome Assessor" + "\t");

            lContent.Append("% TR do dia" + "\t");
            lContent.Append("% TR no Período" + "\t");
            lContent.Append("Total de Compras" + "\t");

            lContent.Append("Corretagem" + "\t");

            lContent.Append("% CE no dia" + "\t");
            lContent.Append("% CE no Período" + "\t");
            lContent.Append("Total de Vendas" + "\t");

            lContent.Append("Carteira Média" + "\t");
            lContent.Append("Carteira Dia" + "\t");
            lContent.Append("L1" + "\t");
            lContent.Append("Data" + "\t");
            lContent.Append("Portas" + "\t");
            lContent.Append("Tipo Pessoa\r");

            lListaTransporte.ForEach(chu =>
            {
                lContent.AppendFormat("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}\t{10}\t{11}\t{12}\t{13}\t{14}\t{15}\t{16}\r",
                                      chu.CodigoCliente,
                                      chu.NomeCliente,
                                      chu.CodigoAssessor,
                                      chu.NomeAssessor,
                                      chu.PercentualTRnoDia,
                                      chu.PercentualTRnoPeriodo,
                                      chu.ValorCompras,
                                      chu.Corretagem,
                                      chu.PercentualCEnoDia,
                                      chu.PercentualCEnoPeriodo,
                                      chu.ValorVendas,
                                      chu.CarteiraMedia,
                                      chu.ValorCarteiraDia,
                                      chu.ValorL1,
                                      chu.Data,
                                      chu.Portas,
                                      chu.TipoPessoa
                                      );
            });

            this.Response.Clear();

            this.Response.ContentType = "text/xls";

            this.Response.ContentEncoding = Encoding.GetEncoding("iso-8859-1");

            this.Response.Charset = "iso-8859-1";

            this.Response.AddHeader("content-disposition", "attachment;filename=Churning.xls");

            this.Response.Write(lContent.ToString());

            this.Response.End();

            return(string.Empty);
        }
예제 #9
0
        private void EfetuaFiltroChurningIntraday(ChurningIntradayInfo pRequest, ref ChurningIntradayInfo lRetorno)
        {
            IEnumerable <ChurningIntradayInfo> lRetornoValor;

            switch (pRequest.enumPercentualCE)
            {
            case enumPercentualCE.ABAIXO_10:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualCEnoPeriodo <= 10 select a;
                break;

            case enumPercentualCE.ENTRE_10_E_15:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualCEnoPeriodo > 10 && a.PercentualCEnoPeriodo < 15 select a;
                break;

            case enumPercentualCE.ENTRE_15_E_20:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualCEnoPeriodo > 15 && a.PercentualCEnoPeriodo < 20 select a;
                break;

            case enumPercentualCE.ACIMA_20:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualCEnoPeriodo > 20 select a;
                break;

            default:
                lRetornoValor = from a in lRetorno.Resultado select a;
                break;
            }

            lRetorno.Resultado = lRetornoValor.ToList();

            switch (pRequest.enumPercentualTR)
            {
            case enumPercentualTR.ABAIXO_2:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualTRnoPeriodo <= 2 select a;
                break;

            case enumPercentualTR.ENTRE_2_E_8:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualTRnoPeriodo > 2 && a.PercentualTRnoPeriodo < 8 select a;
                break;

            case enumPercentualTR.ACIMA_8:
                lRetornoValor = from a in lRetorno.Resultado where a.PercentualTRnoPeriodo > 8 select a;
                break;

            default:
                lRetornoValor = from a in lRetorno.Resultado select a;
                break;
            }

            lRetorno.Resultado = lRetornoValor.ToList();

            //switch(pRequest.enumTotalCompras)
            //{
            //    case enumTotalCompras.ABAIXO_500M:
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorCompras <= 500000  select a;
            //        break;
            //    case enumTotalCompras.ENTRE_500M_E_1000M:
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorCompras > 500000 && a.ValorCompras < 1000000 select a;
            //        break;
            //    case enumTotalCompras.ACIMA_1000M :
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorCompras > 1000000 select a;
            //        break;
            //    default:
            //        lRetornoValor = from a in lRetorno.Resultado select a;
            //        break;
            //}

            //lRetorno.Resultado = lRetornoValor.ToList();

            //switch (pRequest.enumTotalVendas)
            //{
            //    case enumTotalVendas.ABAIXO_500M:
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorVendas <= 500000 select a;
            //        break;
            //    case enumTotalVendas.ENTRE_500M_E_1000M:
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorVendas > 500000 && a.ValorVendas < 1000000 select a;
            //        break;
            //    case enumTotalVendas.ACIMA_1000M:
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorVendas > 1000000 select a;
            //        break;
            //    default:
            //        lRetornoValor = from a in lRetorno.Resultado select a;
            //        break;
            //}

            //lRetorno.Resultado = lRetornoValor.ToList();

            //switch (pRequest.enumCarteiraMedia)
            //{
            //    case enumCarteiraMedia.ABAIXO_500M:
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorCarteiraMedia <= 500000 select a;
            //        break;
            //    case enumCarteiraMedia.ENTRE_500M_E_1000M:
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorCarteiraMedia > 500000 && a.ValorCarteiraMedia < 1000000 select a;
            //        break;
            //    case enumCarteiraMedia.ACIMA_1000M:
            //        lRetornoValor = from a in lRetorno.Resultado where a.ValorCarteiraMedia > 1000000 select a;
            //        break;
            //    default:
            //        lRetornoValor = from a in lRetorno.Resultado select a;
            //        break;
            //}

            //lRetorno.Resultado = lRetornoValor.ToList();

            if (pRequest.CodigoAssessor.HasValue)
            {
                List <int> lClientes = ClienteDbLib.ReceberListaClientesAssessoresVinculados(pRequest.CodigoAssessor.Value);

                lRetornoValor = from a in lRetornoValor where lClientes.Contains(a.CodigoCliente.Value) select a;

                lRetorno.Resultado = lRetornoValor.ToList();
            }
        }
예제 #10
0
        public ChurningIntradayInfo ObterMonitoramentoIntradiario(ChurningIntradayInfo pRequest)
        {
            var lRetorno     = new ChurningIntradayInfo();
            var lAcessaDados = new AcessaDados();

            lAcessaDados.ConnectionStringName = "SinacorExportacao";

            lRetorno.Resultado = new List <ChurningIntradayInfo>();

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_TURNOVER_PERIODO_SEL"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "pCodigoCliente", DbType.Int32, pRequest.CodigoCliente);
                lAcessaDados.AddInParameter(lDbCommand, "pDataDe", DbType.DateTime, pRequest.DataDe);
                lAcessaDados.AddInParameter(lDbCommand, "pDataAte", DbType.DateTime, pRequest.DataAte);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (lDataTable != null && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        DataRow lRow = lDataTable.Rows[i];

                        var lChurning = new ChurningIntradayInfo();

                        int lCodigoCliente = int.Parse(lRow["CodigoCliente"].ToString());

                        lChurning = lRetorno.Resultado.Find(churning => { return(churning.CodigoCliente == lCodigoCliente); });

                        if (lRetorno.Resultado.Count == 0 || lChurning == null)
                        {
                            lChurning = new ChurningIntradayInfo();

                            lChurning.NomeAssessor       = lRow["NomeAssessor"].ToString();
                            lChurning.CodigoAssessor     = int.Parse(lRow["CodigoAssessor"].ToString());
                            lChurning.NomeCliente        = lRow["NomeCliente"].ToString();
                            lChurning.CodigoCliente      = int.Parse(lRow["CodigoCliente"].ToString());
                            lChurning.Data               = lRow["DATA_POSI"].DBToDateTime();
                            lChurning.ValorVendas        = lRow["VlVendas"].DBToDecimal();
                            lChurning.ValorCompras       = lRow["VlCompras"].DBToDecimal();
                            lChurning.ValorCarteira      = lRow["VlCarteira"].DBToDecimal();
                            lChurning.ValorCarteiraMedia = lRow["vlCarteiramedia"].DBToDecimal();

                            DateTime lData = this.GetDateBrockage(lRow["DATA_POSI"].DBToDateTime(), pRequest.ListaFeriados);

                            lChurning.ValorL1 = SelecionarValorL1(lChurning.CodigoCliente.Value, lData);
                            //lChurning.ValorCorretagem       = SelecionaValorCorretagem(lChurning.CodigoCliente.Value, lData);

                            lRetorno.Resultado.Add(lChurning);
                        }
                        else
                        {
                            lRetorno.Resultado.Remove(lChurning);

                            lChurning.ValorVendas       += lRow["VlVendas"].DBToDecimal();
                            lChurning.ValorCompras      += lRow["VlCompras"].DBToDecimal();
                            lChurning.ValorCarteira     += lRow["VlCarteira"].DBToDecimal();
                            lChurning.ValorCarteiraMedia = lRow["vlCarteiramedia"].DBToDecimal();

                            //DateTime lData = this.GetDateBrockage(lRow["DATA_POSI"].DBToDateTime(), pRequest.ListaFeriados);

                            //lChurning.ValorCorretagem    += SelecionaValorCorretagem(lChurning.CodigoCliente.Value , lData);

                            lRetorno.Resultado.Add(lChurning);
                        }
                    }
                }
            }

            ObterCorretagemPeriodo(pRequest, ref lRetorno);

            ObterCorretagemDia(pRequest, ref lRetorno);

            ObterCarteiraDiaria(pRequest, ref lRetorno);

            EfetuaCalculoTR(pRequest, ref lRetorno);

            EfetuaCalculoCE(pRequest, ref lRetorno);

            EfetuaFiltroChurningIntraday(pRequest, ref lRetorno);

            EfetuaFiltroChurningIntradayPorta(pRequest, ref lRetorno);

            return(lRetorno);
        }
예제 #11
0
        private void ObterCarteiraDiaria(ChurningIntradayInfo pRequest, ref ChurningIntradayInfo pRetorno)
        {
            List <CarteiraChurningDia> lRetorno = new List <CarteiraChurningDia>();
            var lAcessaDados = new AcessaDados();

            CarteiraChurningDia lChurning = null;

            /*
             * lAcessaDados.ConnectionStringName = "RISCO_GRADUALOMS";
             *
             * using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "prc_churning_carteira_dia_sel"))
             * {
             *  lAcessaDados.AddInParameter(lDbCommand, "@CodigoCliente", DbType.Int32,    pRequest.CodigoCliente);
             *
             *  var lDataTable = lAcessaDados.ExecuteDbDataTable(lDbCommand);
             *
             *  if (lDataTable != null && lDataTable.Rows.Count > 0)
             *  {
             *      for (int i = 0; i < lDataTable.Rows.Count; i++)
             *      {
             *          DataRow lRow = lDataTable.Rows[i];
             *          lChurning = new CarteiraChurningDia();
             *
             *          lChurning.CodigoCliente    = lRow["CodigoCliente"].DBToInt32();
             *          lChurning.ValorCarteiraDia = lRow["VlCarteiraDia"].DBToDecimal();
             *          lChurning.Data             = lRow["Data"].DBToDateTime();
             *          lChurning.ValorComprasDia  = lRow["ValorCompras"].DBToDecimal();
             *          lChurning.ValorVendasDia   = lRow["ValorVendas"].DBToDecimal();
             *
             *
             *          lRetorno.Add(lChurning);
             *      }
             *  }
             * }
             */
            lAcessaDados.ConnectionStringName = "SinacorExportacao";

            using (DbCommand lDbCommand = lAcessaDados.CreateCommand(CommandType.StoredProcedure, "PRC_TURNOVER_CARTEIRA_DIA_SEL"))
            {
                lAcessaDados.AddInParameter(lDbCommand, "pCodigoCliente", DbType.Int32, pRequest.CodigoCliente);

                var lDataTable = lAcessaDados.ExecuteOracleDataTable(lDbCommand);

                if (lDataTable != null && lDataTable.Rows.Count > 0)
                {
                    for (int i = 0; i < lDataTable.Rows.Count; i++)
                    {
                        DataRow lRow = lDataTable.Rows[i];
                        lChurning = new CarteiraChurningDia();

                        lChurning.CodigoCliente    = lRow["CodigoCliente"].DBToInt32();
                        lChurning.ValorCarteiraDia = lRow["VlCarteiraDia"].DBToDecimal();
                        lChurning.Data             = lRow["Data"].DBToDateTime();
                        lChurning.ValorComprasDia  = lRow["ValorCompras"].DBToDecimal();
                        lChurning.ValorVendasDia   = lRow["ValorVendas"].DBToDecimal();
                        //lChurning.ValorCorretagemDia    = this.SelecionaValorCorretagem(lChurning.CodigoCliente, DateTime.Now);

                        lRetorno.Add(lChurning);
                    }
                }
            }

            var lListaChannel = ListarClientesPortas(pRequest);

            var lListaCliente = new List <int>();

            lRetorno.ForEach(cliente =>
            {
                lListaCliente.Add(cliente.CodigoCliente);
            });



            foreach (ChurningIntradayInfo info in pRetorno.Resultado)
            {
                var lLista = lRetorno.Find(churn => { return(churn.CodigoCliente == info.CodigoCliente); });

                if (lLista != null)
                {
                    info.ValorCarteiraDia = lLista.ValorCarteiraDia;
                    info.ValorComprasDia  = lLista.ValorComprasDia;
                    info.ValorVendasDia   = lLista.ValorVendasDia;
                }

                var lEncontradoChannel = lListaChannel.Find(channel => { return(channel.CodigoCliente == info.CodigoCliente); });

                if (lEncontradoChannel.CodigoCliente != 0)
                {
                    lEncontradoChannel.ListaPortas.ForEach(portas =>
                    {
                        if (info.Porta != null)
                        {
                            if (!info.Porta.Contains(portas.ToString()))
                            {
                                info.Porta += portas + ",";
                            }
                        }
                        else
                        {
                            info.Porta += portas + ",";
                        }
                    });
                }

                info.TipoPessoa = SelecionarClienteTipo(info.CodigoCliente.Value);
            }
        }