예제 #1
0
        /// <summary>
        /// Insere históico que um boleto foi enviado.
        /// </summary>
        /// <param name="idBoleto"></param>
        /// <param name="dadosBoleto"></param>
        public void InsereHistorico(int idBoleto, DadosBoleto dadosBoleto)
        {
            const string Sql = @"
                        INSERT INTO historicoboleto (
                            Id_Boleto,
                            CodigoBoleto,
                            DtHrEnvio,
                            Url,
                            Pago
                        ) VALUES (
                            @IdBoleto,
                            @CodigoBoleto,
                            @DtHrEnvio,
                            @Url,
                            0
                        )";

            using (var connection = this.GetConnection())
            {
                connection.Open();

                using (MySqlCommand command = new MySqlCommand(Sql))
                {
                    command.Connection = connection;
                    command.Parameters.Add("IdBoleto", MySqlDbType.Int32).Value     = idBoleto;
                    command.Parameters.Add("CodigoBoleto", MySqlDbType.Int32).Value = dadosBoleto.Numero;
                    command.Parameters.Add("DtHrEnvio", MySqlDbType.DateTime).Value = DateTime.Now;
                    command.Parameters.Add("Url", MySqlDbType.String).Value         = dadosBoleto.Url;
                    command.ExecuteNonQuery();
                }
            }
        }
        /// <summary>
        /// Retorna o status do boleto, se já foi pago ou se ainda está em aberto.
        /// </summary>
        /// <param name="cliente"></param>
        /// <param name="boleto"></param>
        /// <returns></returns>
        public async Task <bool> CheckBoletoPago(DadosCliente cliente, DadosBoleto boleto)
        {
            if (cliente == null)
            {
                throw new ArgumentNullException("cliente");
            }

            if (boleto == null)
            {
                throw new ArgumentNullException("boleto");
            }

            string url = string.Format("https://api.kinghost.net/boleto/{0}/aberto", cliente.IdCliente);

            HttpResponseMessage response = await this.HttpClient.GetAsync(url);

            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                var boletos = new JavaScriptSerializer().Deserialize <JsonResultArrayBoleto>(content.ToString());

                // Verifica se dentre os boletos retornados, existe o boleto
                // informado. Caso exista, é porque o boleto ainda não pago.
                return(!boletos.Body.Any(x => x.Numero.Equals(boleto.Numero)));
            }

            return(false);
        }
예제 #3
0
        public string GerarBoleto()
        {
            //Dados do Cedente
            Boletos boletos = null;

            boletos = new Boletos();

            Conta conta = new Conta();

            conta.BancoNumero       = "237";
            conta.Titular           = "FULANO DE TAL DA SILVA";
            conta.Agencia           = "1234";
            conta.AgenciaDigito     = "X";
            conta.Numero            = "123456";
            conta.NumeroDigito      = "X";
            conta.CarteiraBoleto    = "09";
            conta.VariacaoCarteira  = "666";  //M
            conta.Emissor           = "666";  //M
            conta.CedenteNumero     = "6666"; //M
            conta.CedenteDigito     = "6";    //M
            conta.PercentualMulta   = 1;
            conta.PercentualMora    = 2;
            conta.DiasProtesto      = 5;
            conta.LayoutRemessa     = 0;
            conta.SequencialRemessa = 1000;

            EmissaoBoleto emissaoBoleto = new EmissaoBoleto();

            emissaoBoleto.Banco = "Banco Bradesco S.A."; //M

            GlobalsDadosEmpresa globalsDadosEmpresa = new GlobalsDadosEmpresa();

            globalsDadosEmpresa.Cnpj        = "97969747000194";
            globalsDadosEmpresa.Logradouro  = "RUA DAS ESTRELAS";
            globalsDadosEmpresa.Numero      = "666";
            globalsDadosEmpresa.Complemento = "SL 13";
            globalsDadosEmpresa.Bairro      = "CAMANDORA";
            globalsDadosEmpresa.CidadeNome  = "CAMPINAS";
            globalsDadosEmpresa.CidadeUf    = "SP";
            globalsDadosEmpresa.Cep         = "34188130";

            //Dados do Cliente
            Cliente cliente = new Cliente();

            cliente.Cnpj        = "10048848000144";
            cliente.Razao       = "ADAPTUP TI";
            cliente.Logradouro  = "RUA DOS PLANETAS";
            cliente.Numero      = "8541";
            cliente.Complemento = "4 AND";
            cliente.Bairro      = "SERRA";
            cliente.CidadeNome  = "VITÓRIA";
            cliente.Uf          = "ES";
            cliente.Cep         = "23596478";

            //Dados do Boleto
            DadosBoleto dadosBoleto = new DadosBoleto();

            dadosBoleto.CodigoOcorrencia    = "01"; //Registrar remessa
            dadosBoleto.DescricaoOcorrencia = "Remessa Registrar";
            dadosBoleto.Codigo      = "99999";
            dadosBoleto.Lancamento  = DateTime.Today;
            dadosBoleto.Vencimento  = new DateTime(2019, 1, 23);
            dadosBoleto.ValorAberto = 4600.00M;
            dadosBoleto.Aceite      = "N";

            //Cabeçalho
            boletos.Banco         = Banco.Instancia(Int32.Parse(conta.BancoNumero));
            boletos.Banco.Cedente = new Cedente
            {
                CPFCNPJ       = globalsDadosEmpresa.Cnpj,
                Nome          = conta.Titular,
                Observacoes   = string.Empty,
                ContaBancaria = new ContaBancaria
                {
                    Agencia        = conta.Agencia,
                    DigitoAgencia  = conta.AgenciaDigito,
                    OperacaoConta  = string.Empty,
                    Conta          = conta.Numero,
                    DigitoConta    = conta.NumeroDigito,
                    CarteiraPadrao = conta.CarteiraBoleto,
                    //VariacaoCarteiraPadrao = conta.VariacaoCarteira,
                    TipoCarteiraPadrao     = TipoCarteira.CarteiraCobrancaSimples,
                    TipoFormaCadastramento = TipoFormaCadastramento.ComRegistro,
                    TipoImpressaoBoleto    = conta.Emissor == emissaoBoleto.Banco ? TipoImpressaoBoleto.Banco : TipoImpressaoBoleto.Empresa,
                    TipoDocumento          = TipoDocumento.Tradicional
                },
                Codigo            = conta.CedenteNumero,
                CodigoDV          = conta.CedenteDigito.ToString(),
                CodigoTransmissao = string.Empty,
                //Endereco = new Boleto2Net.Endereco
                Endereco = new Endereco
                {
                    LogradouroEndereco    = globalsDadosEmpresa.Logradouro,
                    LogradouroNumero      = globalsDadosEmpresa.Numero,
                    LogradouroComplemento = globalsDadosEmpresa.Complemento,
                    Bairro = globalsDadosEmpresa.Bairro,
                    Cidade = globalsDadosEmpresa.CidadeNome,
                    UF     = globalsDadosEmpresa.CidadeUf,
                    CEP    = globalsDadosEmpresa.Cep
                }
            };
            boletos.Banco.FormataCedente();

            //Título (FOREACH INIT)
            var boleto = new Boleto(boletos.Banco);

            boleto.Sacado = new Sacado
            {
                CPFCNPJ     = cliente.Cnpj,
                Nome        = cliente.Razao,
                Observacoes = string.Empty,
                Endereco    = new Endereco
                {
                    LogradouroEndereco    = cliente.Logradouro,
                    LogradouroNumero      = cliente.Numero,
                    LogradouroComplemento = cliente.Complemento,
                    Bairro = cliente.Bairro,
                    Cidade = cliente.CidadeNome,
                    UF     = cliente.Uf.ToString(),
                    CEP    = cliente.Cep
                }
            };

            boleto.CodigoOcorrencia           = dadosBoleto.CodigoOcorrencia; //Registrar remessa
            boleto.DescricaoOcorrencia        = dadosBoleto.DescricaoOcorrencia;
            boleto.NumeroDocumento            = dadosBoleto.Codigo.ToString();
            boleto.NumeroControleParticipante = dadosBoleto.Codigo.ToString();
            boleto.NossoNumero      = dadosBoleto.Codigo.ToString();
            boleto.DataEmissao      = dadosBoleto.Lancamento;
            boleto.DataVencimento   = dadosBoleto.Vencimento;
            boleto.ValorTitulo      = dadosBoleto.ValorAberto;
            boleto.Aceite           = dadosBoleto.Aceite;
            boleto.EspecieDocumento = TipoEspecieDocumento.DM;

            //boleto.DataDesconto = DateTime.Today;
            //boleto.ValorDesconto = 0;
            if (conta.PercentualMulta > 0)
            {
                boleto.DataMulta       = dadosBoleto.Vencimento.AddDays(1);
                boleto.PercentualMulta = conta.PercentualMulta;
                boleto.ValorMulta      = boleto.ValorTitulo * boleto.PercentualMulta / 100;

                //boleto.MensagemInstrucoesCaixa = $"Cobrar Multa de {boleto.ValorMulta.FormatoMoeda()} após o vencimento.";
                boleto.MensagemInstrucoesCaixa = $"Cobrar Multa de {boleto.ValorMulta} .FormatoMoeda() após o vencimento.";
            }

            if (conta.PercentualMora > 0)
            {
                boleto.DataJuros          = dadosBoleto.Vencimento.AddDays(1);
                boleto.PercentualJurosDia = (conta.PercentualMora / 30);
                boleto.ValorJurosDia      = boleto.ValorTitulo * boleto.PercentualJurosDia / 100;

                //string instrucao = $"Cobrar juros de {boleto.PercentualJurosDia.FormatoPorcentagem()} por dia de atraso";
                string instrucao = $"Cobrar juros de {boleto.PercentualJurosDia} .FormatoPorcentagem() por dia de atraso";
                if (string.IsNullOrEmpty(boleto.MensagemInstrucoesCaixa))
                {
                    boleto.MensagemInstrucoesCaixa = instrucao;
                }
                else
                {
                    boleto.MensagemInstrucoesCaixa += Environment.NewLine + instrucao;
                }
            }

            boleto.CodigoInstrucao1      = string.Empty;
            boleto.ComplementoInstrucao1 = string.Empty;

            boleto.CodigoInstrucao2      = string.Empty;
            boleto.ComplementoInstrucao2 = string.Empty;

            boleto.CodigoInstrucao3      = string.Empty;
            boleto.ComplementoInstrucao3 = string.Empty;

            boleto.CodigoProtesto = conta.DiasProtesto == 0 ? TipoCodigoProtesto.NaoProtestar : TipoCodigoProtesto.ProtestarDiasUteis;
            boleto.DiasProtesto   = conta.DiasProtesto;

            boleto.CodigoBaixaDevolucao = TipoCodigoBaixaDevolucao.NaoBaixarNaoDevolver;
            boleto.DiasBaixaDevolucao   = 0;

            boleto.ValidarDados();
            boletos.Add(boleto);

            //(FOREACH END)

            //Gerar Remessa
            var stream  = new MemoryStream();
            var remessa = new ArquivoRemessa(boletos.Banco, conta.LayoutRemessa == LayoutRemessa.Cnab240
                ? TipoArquivo.CNAB240 : TipoArquivo.CNAB400, conta.SequencialRemessa);

            remessa.GerarArquivoRemessa(boletos, stream);

            var boletoBancario = new BoletoBancario()
            {
                Boleto = boletos[0]
            };
            var html = boletoBancario.MontaHtml();

            return(html);

            //var pdf = boletoBancario.MontaBytesPDF(false);
            //var pathPDF = GArquivos.CombinarDiretorio(PathRemessa, $"{boleto.NumeroControleParticipante}.pdf");
            //var pathPDF = @"C:\boletos\" + $"{boleto.NumeroControleParticipante}.pdf";
            //File.WriteAllBytes(pathPDF, pdf);
        }