0
Friends, I’m trying to generate boleto with the Boletonetcore
I’m trying to run the test Bancoitaucarteira109tests.cs. I created a project, inserted the files, but I’m not sure how to run it. I created an MVC structure, inserted the Bancoitaucarteira109tests.Cs in the Controller and renamed it Payment.cs. In the model I entered the contents of Utils.cs. My idea was to create a button and call the method to display the boleto. I appreciate if someone can help me!
Payment.Cs
using System;
using Microsoft.AspNetCore.Mvc;
using NUnit.Framework;
namespace BoletoNetCore.Testes
{
[TestFixture]
[Category("Itau Carteira 109")]
public class Pagamento : Controller
{
readonly IBanco _banco;
public Pagamento()
{
var contaBancaria = new ContaBancaria
{
Agencia = "1234",
DigitoAgencia = "",
Conta = "56789",
DigitoConta = "0",
CarteiraPadrao = "109",
TipoCarteiraPadrao = TipoCarteira.CarteiraCobrancaSimples,
TipoFormaCadastramento = TipoFormaCadastramento.ComRegistro,
TipoImpressaoBoleto = TipoImpressaoBoleto.Empresa
};
_banco = Banco.Instancia(Bancos.Itau);
_banco.Beneficiario = Utils.GerarBeneficiario("", "", "", contaBancaria);
_banco.FormataBeneficiario();
}
[Test]
public void Itau_109_REM400()
{
Utils.TestarHomologacao(_banco, TipoArquivo.CNAB400, nameof(Pagamento), 5, true, "N", 223344);
}
[TestCase(600.00, "223350", "BB000001F", "1", "109/00223350-2", "34191719500000600001090022335021234567890000", "34191.09008 22335.021238 45678.900007 1 71950000060000", 2017, 06, 19)]
[TestCase(800.08, "223352", "BB000001H", "2", "109/00223352-8", "34192719500000800081090022335281234567890000", "34191.09008 22335.281238 45678.900007 2 71950000080008", 2017, 06, 19)]
[TestCase(100.00, "223345", "BB000001A", "3", "109/00223345-2", "34193719500000100001090022334521234567890000", "34191.09008 22334.521238 45678.900007 3 71950000010000", 2017, 06, 19)]
[TestCase(200.00, "223346", "BB000002B", "4", "109/00223346-0", "34194722500000200001090022334601234567890000", "34191.09008 22334.601238 45678.900007 4 72250000020000", 2017, 07, 19)]
[TestCase(900.03, "223353", "BB000001I", "5", "109/00223353-6", "34195719500000900031090022335361234567890000", "34191.09008 22335.361238 45678.900007 5 71950000090003", 2017, 06, 19)]
[TestCase(700.01, "223351", "BB000001G", "6", "109/00223351-0", "34196719500000700011090022335101234567890000", "34191.09008 22335.101238 45678.900007 6 71950000070001", 2017, 06, 19)]
[TestCase(400.00, "223348", "BB000004D", "7", "109/00223348-6", "34197728700000400001090022334861234567890000", "34191.09008 22334.861238 45678.900007 7 72870000040000", 2017, 09, 19)]
[TestCase(500.00, "223349", "BB000005E", "8", "109/00223349-4", "34198731700000500001090022334941234567890000", "34191.09008 22334.941238 45678.900007 8 73170000050000", 2017, 10, 19)]
[TestCase(300.00, "223347", "BB000003C", "9", "109/00223347-8", "34199725600000300001090022334781234567890000", "34191.09008 22334.781238 45678.900007 9 72560000030000", 2017, 08, 19)]
public void Itau_109_BoletoOK(decimal valorTitulo, string nossoNumero, string numeroDocumento, string digitoVerificador, string nossoNumeroFormatado, string codigoDeBarras, string linhaDigitavel, params int[] anoMesDia)
{
//Ambiente
var boleto = new Boleto(_banco)
{
DataVencimento = new DateTime(anoMesDia[0], anoMesDia[1], anoMesDia[2]),
ValorTitulo = valorTitulo,
NossoNumero = nossoNumero,
NumeroDocumento = numeroDocumento,
EspecieDocumento = TipoEspecieDocumento.DM,
Pagador = Utils.GerarPagador()
};
//Ação
boleto.ValidarDados();
//Assertivas
Assert.That(boleto.CodigoBarra.DigitoVerificador, Is.EqualTo(digitoVerificador), $"Dígito Verificador diferente de {digitoVerificador}");
Assert.That(boleto.NossoNumeroFormatado, Is.EqualTo(nossoNumeroFormatado), "Nosso número inválido");
Assert.That(boleto.CodigoBarra.CodigoDeBarras, Is.EqualTo(codigoDeBarras), "Código de Barra inválido");
Assert.That(boleto.CodigoBarra.LinhaDigitavel, Is.EqualTo(linhaDigitavel), "Linha digitável inválida");
}
}
}
Utils.Cs
using System;
using System.IO;
using System.Text;
using NReco.PdfGenerator;
using NUnit.Framework;
namespace BoletoNetCore.Testes
{
internal sealed class Utils
{
private static int _contador = 1;
private static int _proximoNossoNumero = 1;
internal static Beneficiario GerarBeneficiario(string codigoBeneficiario, string digitoCodigoBeneficiario, string codigoTransmissao, ContaBancaria contaBancaria)
{
return new Beneficiario
{
CPFCNPJ = "86.875.666/0001-09",
Nome = "Beneficiario Teste",
Codigo = codigoBeneficiario,
CodigoDV = digitoCodigoBeneficiario,
Endereco = new Endereco
{
LogradouroEndereco = "Rua Teste do Beneficiário",
LogradouroNumero = "789",
LogradouroComplemento = "Cj 333",
Bairro = "Bairro",
Cidade = "Cidade",
UF = "SP",
CEP = "65432987"
},
ContaBancaria = contaBancaria
};
}
internal static Pagador GerarPagador()
{
if (_contador % 2 == 0)
return new Pagador
{
CPFCNPJ = "443.316.101-28",
Nome = "Pagador Teste PF",
Observacoes = "Matricula 678/9",
Endereco = new Endereco
{
LogradouroEndereco = "Rua Testando",
LogradouroNumero = "456",
Bairro = "Bairro",
Cidade = "Cidade",
UF = "SP",
CEP = "56789012"
}
};
return new Pagador
{
CPFCNPJ = "71.738.978/0001-01",
Nome = "Pagador Teste PJ",
Observacoes = "Matricula 123/4",
Endereco = new Endereco
{
LogradouroEndereco = "Avenida Testando",
LogradouroNumero = "123",
Bairro = "Bairro",
Cidade = "Cidade",
UF = "SP",
CEP = "12345678"
}
};
}
internal static Boletos GerarBoletos(IBanco banco, int quantidadeBoletos, string aceite, int NossoNumeroInicial)
{
var boletos = new Boletos
{
Banco = banco
};
for (var i = 1; i <= quantidadeBoletos; i++)
boletos.Add(GerarBoleto(banco, i, aceite, NossoNumeroInicial));
return boletos;
}
internal static Boleto GerarBoleto(IBanco banco, int i, string aceite, int NossoNumeroInicial)
{
if (aceite == "?")
aceite = _contador % 2 == 0 ? "N" : "A";
var boleto = new Boleto(banco)
{
Pagador = GerarPagador(),
DataEmissao = DateTime.Now.AddDays(-3),
DataProcessamento = DateTime.Now,
DataVencimento = DateTime.Now.AddMonths(i),
ValorTitulo = (decimal)100 * i,
NossoNumero = NossoNumeroInicial == 0 ? "" : (NossoNumeroInicial + _proximoNossoNumero).ToString(),
NumeroDocumento = "BB" + _proximoNossoNumero.ToString("D6") + (char)(64 + i),
EspecieDocumento = TipoEspecieDocumento.DM,
Aceite = aceite,
CodigoInstrucao1 = "11",
CodigoInstrucao2 = "22",
DataDesconto = DateTime.Now.AddMonths(i),
ValorDesconto = (decimal)(100 * i * 0.10),
DataMulta = DateTime.Now.AddMonths(i),
PercentualMulta = (decimal)2.00,
ValorMulta = (decimal)(100 * i * (2.00 / 100)),
DataJuros = DateTime.Now.AddMonths(i),
PercentualJurosDia = (decimal)0.2,
ValorJurosDia = (decimal)(100 * i * (0.2 / 100)),
AvisoDebitoAutomaticoContaCorrente = "2",
MensagemArquivoRemessa = "Mensagem para o arquivo remessa",
NumeroControleParticipante = "CHAVEPRIMARIA=" + _proximoNossoNumero
};
// Mensagem - Instruções do Caixa
StringBuilder msgCaixa = new StringBuilder();
if (boleto.ValorDesconto > 0)
msgCaixa.AppendLine($"Conceder desconto de {boleto.ValorDesconto.ToString("R$ ##,##0.00")} até {boleto.DataDesconto.ToString("dd/MM/yyyy")}. ");
if (boleto.ValorMulta > 0)
msgCaixa.AppendLine($"Cobrar multa de {boleto.ValorMulta.ToString("R$ ##,##0.00")} após o vencimento. ");
if (boleto.ValorJurosDia > 0)
msgCaixa.AppendLine($"Cobrar juros de {boleto.ValorJurosDia.ToString("R$ ##,##0.00")} por dia de atraso. ");
boleto.MensagemInstrucoesCaixa = msgCaixa.ToString();
// Avalista
if (_contador % 3 == 0)
{
boleto.Avalista = GerarPagador();
boleto.Avalista.Nome = boleto.Avalista.Nome.Replace("Pagador", "Avalista");
}
// Grupo Demonstrativo do Boleto
var grupoDemonstrativo = new GrupoDemonstrativo { Descricao = "GRUPO 1" };
grupoDemonstrativo.Itens.Add(new ItemDemonstrativo { Descricao = "Grupo 1, Item 1", Referencia = boleto.DataEmissao.AddMonths(-1).Month + "/" + boleto.DataEmissao.AddMonths(-1).Year, Valor = boleto.ValorTitulo * (decimal)0.15 });
grupoDemonstrativo.Itens.Add(new ItemDemonstrativo { Descricao = "Grupo 1, Item 2", Referencia = boleto.DataEmissao.AddMonths(-1).Month + "/" + boleto.DataEmissao.AddMonths(-1).Year, Valor = boleto.ValorTitulo * (decimal)0.05 });
boleto.Demonstrativos.Add(grupoDemonstrativo);
grupoDemonstrativo = new GrupoDemonstrativo { Descricao = "GRUPO 2" };
grupoDemonstrativo.Itens.Add(new ItemDemonstrativo { Descricao = "Grupo 2, Item 1", Referencia = boleto.DataEmissao.Month + "/" + boleto.DataEmissao.Year, Valor = boleto.ValorTitulo * (decimal)0.20 });
boleto.Demonstrativos.Add(grupoDemonstrativo);
grupoDemonstrativo = new GrupoDemonstrativo { Descricao = "GRUPO 3" };
grupoDemonstrativo.Itens.Add(new ItemDemonstrativo { Descricao = "Grupo 3, Item 1", Referencia = boleto.DataEmissao.AddMonths(-1).Month + "/" + boleto.DataEmissao.AddMonths(-1).Year, Valor = boleto.ValorTitulo * (decimal)0.37 });
grupoDemonstrativo.Itens.Add(new ItemDemonstrativo { Descricao = "Grupo 3, Item 2", Referencia = boleto.DataEmissao.Month + "/" + boleto.DataEmissao.Year, Valor = boleto.ValorTitulo * (decimal)0.03 });
grupoDemonstrativo.Itens.Add(new ItemDemonstrativo { Descricao = "Grupo 3, Item 3", Referencia = boleto.DataEmissao.Month + "/" + boleto.DataEmissao.Year, Valor = boleto.ValorTitulo * (decimal)0.12 });
grupoDemonstrativo.Itens.Add(new ItemDemonstrativo { Descricao = "Grupo 3, Item 4", Referencia = boleto.DataEmissao.AddMonths(+1).Month + "/" + boleto.DataEmissao.AddMonths(+1).Year, Valor = boleto.ValorTitulo * (decimal)0.08 });
boleto.Demonstrativos.Add(grupoDemonstrativo);
boleto.ValidarDados();
_contador++;
_proximoNossoNumero++;
return boleto;
}
internal static void TestarHomologacao(IBanco banco, TipoArquivo tipoArquivo, string nomeCarteira, int quantidadeBoletos, bool gerarBoletoPdfHtml, string aceite, int NossoNumeroInicial)
{
var boletos = GerarBoletos(banco, quantidadeBoletos, aceite, NossoNumeroInicial);
Assert.AreEqual(quantidadeBoletos, boletos.Count, "Quantidade de boletos diferente de " + quantidadeBoletos);
// Define os nomes dos arquivos, cria pasta e apaga arquivos anteriores
var nomeArquivoREM = Path.Combine(Path.GetTempPath(), "BoletoNetCore", $"{nomeCarteira}_{tipoArquivo}.REM");
var nomeArquivoPDF = Path.Combine(Path.GetTempPath(), "BoletoNetCore", $"{nomeCarteira}_{tipoArquivo}.PDF");
var nomeArquivoHTML = Path.Combine(Path.GetTempPath(), "BoletoNetCore", $"{nomeCarteira}_{tipoArquivo}.html");
if (!Directory.Exists(Path.GetDirectoryName(nomeArquivoREM)))
Directory.CreateDirectory(Path.GetDirectoryName(nomeArquivoREM));
if (File.Exists(nomeArquivoREM))
{
File.Delete(nomeArquivoREM);
if (File.Exists(nomeArquivoREM))
Assert.Fail("Arquivo Remessa não foi excluído: " + nomeArquivoREM);
}
if (File.Exists(nomeArquivoPDF))
{
File.Delete(nomeArquivoPDF);
if (File.Exists(nomeArquivoPDF))
Assert.Fail("Arquivo Boletos (PDF) não foi excluído: " + nomeArquivoPDF);
}
if (File.Exists(nomeArquivoHTML))
{
File.Delete(nomeArquivoHTML);
if (File.Exists(nomeArquivoHTML))
Assert.Fail("Arquivo Boletos (HTML) não foi excluído: " + nomeArquivoHTML);
}
// Arquivo Remessa.
try
{
var arquivoRemessa = new ArquivoRemessa(boletos.Banco, tipoArquivo, 1);
using (var fileStream = new FileStream(nomeArquivoREM, FileMode.Create))
arquivoRemessa.GerarArquivoRemessa(boletos, fileStream);
if (!File.Exists(nomeArquivoREM))
Assert.Fail("Arquivo Remessa não encontrado: " + nomeArquivoREM);
}
catch (Exception e)
{
if (File.Exists(nomeArquivoREM))
File.Delete(nomeArquivoREM);
Assert.Fail(e.InnerException.ToString());
}
if (gerarBoletoPdfHtml)
{
// Gera arquivo PDF
try
{
var html = new StringBuilder();
foreach (var boletoTmp in boletos)
{
var boletoParaImpressao = new BoletoBancario
{
Boleto = boletoTmp,
OcultarInstrucoes = false,
MostrarComprovanteEntrega = false,
MostrarEnderecoBeneficiario = true,
ExibirDemonstrativo = true
};
html.Append("<div style=\"page-break-after: always;\">");
html.Append(boletoParaImpressao.MontaHtmlEmbedded());
html.Append("</div>");
var boletoHtml = html.ToString();
File.WriteAllText(nomeArquivoHTML, boletoHtml);
var pdf = new HtmlToPdfConverter().GeneratePdf(boletoHtml);
using (var fs = new FileStream(nomeArquivoPDF, FileMode.Create))
fs.Write(pdf, 0, pdf.Length);
if (!File.Exists(nomeArquivoPDF))
Assert.Fail("Arquivo Boletos (PDF) não encontrado: " + nomeArquivoPDF);
}
}
catch (Exception e)
{
if (File.Exists(nomeArquivoPDF))
File.Delete(nomeArquivoPDF);
Assert.Fail(e.InnerException.ToString());
}
}
}
}
}
I appreciate any comment. No error is displayed. When running the browser is opened, but I have difficulties to proceed.
What mistake is happening?
– Harry