//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); } } }
//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); }
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); }
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); }
//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); }