//Boleta Operações "Liberado" e que tenham caixa no caso de aplicação VIA TED
        private void BoletaOperacoes(string Usuario, string Senha)
        {
            //Dicionario de Cotistas Auxiliar
            Dictionary <long, long> INVCODCPF = new BL_Cotista().DadosCompleto().ToDictionary(Key => Key.CODCOT, Value => Value.CPFCNPJ);

            //Boleta operações com status Liberado
            //Valida Caixa no caso de Aplicações via ted
            List <BL_Boleta>         Boletas         = ObjBoleta.DadosDia(DateTime.Today).Where(x => x.STATUS == "Liberado" /*|| x.STATUS == "Cadastro Pendente"*/).ToList();
            List <BL_RegistroAplica> RegistrosAplica = ObjRegAp.Dados();

            //Boleta operações que não são aplicação VIA TED
            foreach (BL_Boleta B in Boletas.Where(x => !(x.OPERACAO == "AP" && x.CONTA == "VIA TED")))
            {
                ObjBoleta.Boletar(B, Usuario, Senha);
            }

            //Aplica Boletas de aplicação via TED
            foreach (BL_Boleta B in Boletas.Where(x => x.OPERACAO == "AP" && x.CONTA == "VIA TED"))
            {
                BL_RegistroAplica RegistroCaixa = RegistrosAplica.FirstOrDefault(x => x.CPFCNPJ == INVCODCPF[B.CODCOT] && x.CODFUND == B.CODFUND && x.VALOR == B.VALOR);

                if (RegistroCaixa == null)
                {
                    continue;
                }

                //Registro encontrado, Caso seja efetivamente Boletado, Remove Saldo do Caixa.
                if (ObjBoleta.Boletar(B, Usuario, Senha) == "Validando")
                {
                    RegistrosAplica.Remove(RegistroCaixa);
                }
            }
        }
Esempio n. 2
0
        //public void ValidarCotistasWebScraping(string Usuario, string Senha)
        //{
        //    List<long> CotistasAux = new BL_Cotista().DadosCompleto().Select(x => x.CODCOT).ToList();
        //    List<BL_Distribuidor> Distribuidores = new BL_Distribuidor().Dados().Where(x => x.POSSUICEO == "Sim").ToList();

        //    WebBrowser WebCaixa = new WebBrowser();
        //    WebCaixa.Navigate("https://www.itaucustodia.com.br/Passivo/");
        //    WebCaixa.ScriptErrorsSuppressed = true;

        //    while (WebCaixa.ReadyState.ToString() != "Complete") { Application.DoEvents(); }//Aguarda a pagina carregar

        //    var inputElements = WebCaixa.Document.GetElementsByTagName("input");
        //    var aElements = WebCaixa.Document.GetElementsByTagName("a");

        //    //Insere Login e Senha
        //    foreach (HtmlElement i in inputElements)
        //    {
        //        if (i.GetAttribute("name").Equals("ebusiness")) { i.InnerText = Usuario; }
        //        if (i.GetAttribute("name").Equals("senha")) { i.InnerText = Senha; }
        //    }

        //    //Clica no Login
        //    foreach (HtmlElement a in aElements) { if (a.GetAttribute("href").Equals("javascript:fn_login();")) { a.InvokeMember("click"); } }

        //    //Aguarda Pagina Carregar
        //    while (WebCaixa.ReadyState != WebBrowserReadyState.Interactive) { Application.DoEvents(); }

        //    //Navega até pagina do Check Upload
        //    WebCaixa.Navigate("https://www.itaucustodia.com.br/Passivo/abreFiltroConsultaUploadCheck.do?pageExecutionId=7376071690435952");

        //    //Aguarda Pagina Carregar
        //    while (WebCaixa.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }

        //    //Seleciona Gestor na lista
        //    var ElementosSelect = WebCaixa.Document.GetElementsByTagName("select");
        //    foreach (HtmlElement a3 in ElementosSelect)
        //    {
        //        if (a3.GetAttribute("Name").Equals("codigoGestor")) { a3.SetAttribute("Value", "991259"); }
        //        if (a3.GetAttribute("Name").Equals("tipo")) { a3.SetAttribute("Value", "1"); }
        //    }

        //    //Clica em Continuar
        //    var aElements2 = WebCaixa.Document.GetElementsByTagName("a");
        //    foreach (HtmlElement a2 in aElements2) { if (a2.GetAttribute("href").Equals("javascript:enviar();")) { a2.InvokeMember("click"); } }

        //    //Aguarda Pagina Carregar
        //    while (WebCaixa.ReadyState != WebBrowserReadyState.Interactive) { Application.DoEvents(); }

        //    var E = WebCaixa.Document.GetElementsByTagName("td");

        //    //Cadastrar Cotistas não cadastrados na Base
        //    for (int i = 0; i < E.Count; i++)
        //    {
        //        if (E[i].InnerText == "Cotista:")
        //        {
        //            long Codcot = Convert.ToInt64(E[i + 1].InnerText.Split('-')[0].Trim());
        //            string Nome = E[i + 1].InnerText.Split('-')[1].Trim().ToString();
        //            long Cpfcnpj = Convert.ToInt64(E[i + 3].InnerText.Trim());

        //            if (!CotistasAux.Contains(Codcot) && Distribuidores.Where(x => x.CNPJ == Cpfcnpj).Count() > 0)
        //            {
        //                long CODDIST = Distribuidores.FirstOrDefault(x => x.CNPJ == Cpfcnpj).CODIGO;

        //                new BL_Cotista().Inserir(Codcot, Nome, Cpfcnpj, CODDIST, 0, DateTime.Today);
        //                CotistasAux.Add(Codcot);
        //            }
        //        }
        //    }
        //}

        public BL_Cotista ConsultarCotista(string Usuario, string Senha, string CODCOT)
        {
            //trocar para consulta via web service
            string[] Consulta = new string[0];
            try
            {
                Consulta = new PosicaoGerencialServiceService().consultarCotistaXML(Usuario, Senha, "991259", CODCOT).Split(Convert.ToChar("\n"));
            }
            catch (Exception e) { new BL_LogOperacional().Inserir("BL_Cotista - AtualizarCotista", "Erro: " + e.Message); return(null); }

            BL_Cotista Cotista = new BL_Cotista();

            foreach (string line in Consulta)
            {
                if (line.Contains("<idClienteReceita>"))
                {
                    Cotista.CPFCNPJ = Convert.ToInt64(Extract(line, "idClienteReceita"));
                }
                if (line.Contains("<nomeCliente>"))
                {
                    Cotista.NOME = Extract(line, "nomeCliente");
                }
            }

            return(Cotista);
        }
Esempio n. 3
0
        public BL_Boleta GeraBoleta(BL_Cotista Cotista, BL_FIQ Fundo, decimal VALOR, DateTime DataSol, string OP, string CONTA, long CAUTELA = 0)
        {
            DateTime Solicitacao = DataSol;

            if (CAUTELA != 0 && Fundo.LOCKUP != 0)
            {
                BL_Saldo Cautela = new BL_Saldo().CautelasPorCODCOTeCODFUND(Cotista.CODCOT, Fundo.CODFUND).FirstOrDefault(x => x.CAUTELA == CAUTELA);
                Solicitacao = Solicitacao > Cautela.DTLANCT.AddDays(Fundo.LOCKUP) ? Solicitacao : Cautela.DTLANCT.AddDays(Fundo.LOCKUP);
            }
            DateTime Cotizacao = new BL_Boleta().CalculaCotizacao(Solicitacao, OP, Fundo.CODFUND);
            DateTime Impacto   = OP == "AP" ? DataSol : new BL_Boleta().CalculaLiquidacao(Cotizacao, OP, Fundo.CODFUND);

            BL_Boleta Boleta = new BL_Boleta
            {
                CODCOT    = Cotista.CODCOT,
                CODFUND   = Fundo.CODFUND,
                CPFCNPJ   = Cotista.CPFCNPJ,
                NOME      = Cotista.NOME,
                FUNDO     = Fundo.NOME,
                OPERACAO  = OP,
                STATUS    = "Pendente",
                VALOR     = VALOR,
                CONTA     = CONTA,
                COTIZACAO = Cotizacao,
                IMPACTO   = Impacto,
                CAUTELA   = CAUTELA
            };

            return(Boleta);
        }
Esempio n. 4
0
        public List <BL_Boleta> BoletaPorCautela(BL_Cotista Cotista, BL_FIQ Fundo, decimal VALOR, DateTime DataSol, string OP, string CONTA)
        {
            List <BL_Boleta> Ans      = new List <BL_Boleta>();
            List <BL_Saldo>  Cautelas = new BL_Saldo().CautelasPorCODCOTeCODFUND(Cotista.CODCOT, Fundo.CODFUND);

            DateTime        MaisRecente       = Cautelas.Select(x => x.DTLANCT).Max();
            DateTime        Cotizacao         = CalculaCotizacao(DataSol, OP, Fundo.CODFUND);
            List <BL_Saldo> CautelasLiberadas = Cautelas.Where(x => Cotizacao.Subtract(x.DTLANCT).Days >= 630 + 90).ToList();

            CautelasLiberadas = CautelasLiberadas.OrderByDescending(x => x.VLCOTAP).ToList();
            while (VALOR != 0 && CautelasLiberadas.Count > 0) //resgata das cautelas liberadas em ordem de menor rentabilidade
            {
                BL_Saldo  Cautela = CautelasLiberadas[0];
                BL_Boleta Boleta;
                decimal   Valor; string Operacao;
                if (VALOR >= Cautela.QNTCOTAS)
                {
                    Valor = Cautela.QNTCOTAS; Operacao = "RT";
                }
                else
                {
                    Valor = VALOR; Operacao = "RC";
                }
                Boleta = GeraBoleta(Cotista, Fundo, Valor, DataSol, Operacao, CONTA, Cautela.CAUTELA);
                Ans.Add(Boleta);
                VALOR -= Valor;
                CautelasLiberadas.Remove(Cautela);
            }
            if (VALOR > 0) //resgata das cautelas travadas em ordem de data de aplicação
            {
                List <BL_Saldo> CautelasTravadas = Cautelas.Where(x => Cotizacao.Subtract(x.DTLANCT).Days < Fundo.LOCKUP + Fundo.CONVRESG).ToList();
                CautelasTravadas = CautelasTravadas.OrderBy(x => x.DTLANCT).ToList();
                while (VALOR != 0 && CautelasTravadas.Count > 0)
                {
                    BL_Saldo  Cautela = CautelasTravadas[0];
                    BL_Boleta Boleta;
                    decimal   Valor; string Operacao;
                    if (VALOR >= Cautela.QNTCOTAS)
                    {
                        Valor = Cautela.QNTCOTAS; Operacao = "RT";
                    }
                    else
                    {
                        Valor = VALOR; Operacao = "RC";
                    }
                    Boleta = GeraBoleta(Cotista, Fundo, Valor, Cautela.DTLANCT.AddDays(Fundo.LOCKUP), Operacao, CONTA, Cautela.CAUTELA);
                    Ans.Add(Boleta);
                    VALOR -= Valor;
                    CautelasTravadas.Remove(Cautela);
                }
            }

            return(Ans);
        }
Esempio n. 5
0
        //Métodos da Classe
        #region
        public bool ValidaBoleta(BL_Cotista Cotista, BL_FIQ Fundo, string OPERACAO, decimal VALOR, DateTime SOLICITACAO, long CAUTELA, ref string Status)
        {
            Status = "Liberado";
            BL_Saldo Saldo = new BL_Saldo().DadosPorCODCOTeCODFUND(Cotista.CODCOT, Fundo.CODFUND);

            if (OPERACAO == "AP") //Aplicação
            {                     //Aplicação inicial mínima
                if (Saldo.QNTCOTAS == 0 && VALOR < Fundo.VALORAPLAMIN)
                {
                    Status = $"O valor solicitado é inferior à aplicação inicial mínima permitida de {Fundo.VALORAPLAMIN}!";
                } //Aplicação adicional mínima
                else if (VALOR < Fundo.VALORAPLMINADI)
                {
                    Status = $"O valor solicitado é inferior à aplicação adicional mínima permitida de {Fundo.VALORAPLMINADI}!";
                } //Janela do Raptor
                DateTime Cotizacao    = CalculaCotizacao(SOLICITACAO, OPERACAO, Fundo.CODFUND);
                DateTime JanelaRaptor = new BL_Feriados().AddWorkDays(Cotizacao, -1);
                if (SOLICITACAO != JanelaRaptor)
                {
                    Status = $"Operação não permitida hoje! A próxima janela de aplicação do Raptor será dia {JanelaRaptor}.";
                }
            }
            else //Resgates
            {
                BL_Cota UltimaCota = new BL_Cota().UltimaCota(Fundo.CODFUND);
                if (OPERACAO == "R")
                {
                    if (Fundo.LOCKUP != 0)
                    {
                        Status = "Não é possível resgatar por financeiro em fundos com lockup!";
                    }
                    else if (VALOR < Fundo.VALORMINRES)
                    {
                        Status = $"O valor solicitado é inferior ao resgate mínimo permitido de {Fundo.VALORMINRES}!";
                    }
                    else if (Saldo.QNTCOTAS * UltimaCota.COTA - VALOR < Fundo.Valorsaldominimo)
                    {
                        Status = $"O saldo restante será inferior ao mínimo permitido de {Fundo.Valorsaldominimo}!";
                    }
                }
                else
                {
                    if (VALOR * UltimaCota.COTA < Fundo.VALORMINRES)
                    {
                        Status = $"O valor solicitado é inferior ao resgate mínimo permitido de {Fundo.VALORMINRES}!";
                    }
                    else if (OPERACAO == "RC" && (Saldo.QNTCOTAS - VALOR) * UltimaCota.COTA < Fundo.Valorsaldominimo)
                    {
                        Status = $"O saldo restante será inferior ao mínimo permitido de {Fundo.Valorsaldominimo}!";
                    }
                }
                if (CAUTELA != 0) //Resgate por cautela
                {
                    if (OPERACAO == "R")
                    {
                        Status = "Não é possível realizar resgates financeiros por cautela!";
                    }
                    else if (VALOR > Saldo.QNTCOTAS)
                    {
                        Status = "O valor solicitado é maior que a quantidade de cotas disponível na cautela!";
                    }
                }
            }

            if (Status == "Liberado")
            {
                return(true);
            }
            return(false);
        }