protected void Page_Load(object sender, EventArgs e) { CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "IMPACTRO TESTE"; Cedente.Banco = "422-7"; Cedente.Agencia = "12300"; Cedente.Conta = "4321-6"; Cedente.Carteira = "1"; BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "949275603"; Boleto.NumeroDocumento = "8400004006"; Boleto.ValorDocumento = 3482.43; Boleto.DataVencimento = new DateTime(2008, 8, 18); SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "FABIO FERREIRA"; Sacado.Documento = "123456789"; // Define as instruções para o atendente do caixa Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); bltPag.Boleto.CarteiraExibicao = "060"; // exibe o código fe barras de acrodo com a carteira if (Cedente.Carteira == "1" || Cedente.Carteira == "2") lblInfo.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 5, 9, 9, 1 }); else lblInfo.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 7, 16, 1 }); }
public void Boleto_Caixa() { // Exemplo 100% de acordo com a documentação usando os parametros mínimos // https://github.com/impactro/Boleto-ASP.NET/files/44866/ESPCODBARR_SICOB.pdf // Página 8, item 5.1.1 /* Dados usados para cálculo: * 104 Banco ...............................Posição: 01 - 03 * 9 Moeda ...............................Posição: 04 - 04 * 1099(10/10/2000) Fator de Vencimento .................Posição: 06 - 09 * 160,00 Valor ...............................Posição: 10 - 19 * 9001200200 Nosso Número (sem DV) ...............Posição: 20 - 29 * 001287000000012 Código do Cedente no SICOB(sem DV) ..Posição: 30 - 44 */ // Dados do Recebedor CedenteInfo c = new CedenteInfo() { Banco = "104-0", CodCedente = "001287000000012" }; // Dados do Pagador SacadoInfo s = new SacadoInfo(); // Informações do Boleto BoletoInfo b = new BoletoInfo() { DataVencimento = DateTime.Parse("10/10/2000"), ValorDocumento = 160, NossoNumero = "9001200200" // Exemplo do caso especial onde o Dv dá Zero (caso critico) }; // Cria uma instancia do objeto que calcula e monta um boleto Boleto bol = new Boleto(); // Seta as variáveis (parametros) com os dados do recebedor (c), pagador (s), e as informações do boleto (b) bol.MakeBoleto(c, s, b); // Calcula efetivamente o boleto bol.CalculaBoleto(); // Imprime a linha digitável no console e alguns outros dados para conferencia Console.WriteLine("Linha Digitável: " + bol.LinhaDigitavel); Console.WriteLine("Agência/Conta: " + bol.AgenciaConta); Console.WriteLine("Nosso Número: " + bol.NossoNumeroExibicao); Console.WriteLine("Fator Vencimento: " + CobUtil.CalcFatVenc(bol.DataVencimento)); // De acordo com a página 13 deve gerar exatamente a linha abaixo Assert.IsTrue(bol.LinhaDigitavel == "10499.00127 00200.001287 70000.000128 1 10990000016000"); // Outro exemplo qualquer: b.NossoNumero = "9000003225"; bol.MakeBoleto(c, s, b); // atualizo os dados (não é recomendado, mas para simplificar funciona) bol.CalculaBoleto(); // se não chamar esta rotina, virá comos resultados calculados anteriormente Console.WriteLine("Exemplo Livre: Nosso Número: " + bol.NossoNumeroExibicao); Assert.IsTrue(bol.NossoNumeroExibicao == "9000003225-0"); // no caso o sistema sempre preenche com os digitos zeros a esquerda // Salva a imagem do boleto para conferencia visual bol.Save("boleto.png"); }
protected void Page_Load(object sender, EventArgs e) { CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "TESTE"; Cedente.Banco = "091"; Cedente.Agencia = "123-4"; Cedente.Conta = "12345678-9"; BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "299621"; Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = 50.67; Boleto.DataVencimento = new DateTime(2017, 3, 5); SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fábio Teste"; // Define as instruções para o atendente do caixa Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); lblCodBarra.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 4, 10, 10, 1 }); }
/// <summary> /// Adiciona um boleto e seu respectivo sacado (será armazenado uma cópia (cole) destas instancias /// </summary> public void Add(BoletoInfo bol, SacadoInfo sac) { BoletoInfo boleto = bol.Clone(); // é feita uma cópia do boleto com os dados adicionais para não alterar o original boleto.SacadoInit((SacadoInfo)CobUtil.Clone(sac)); cnab.Boletos.Add(boleto); #if TEST_LOG cnab.Log += "\r\n +" + boleto.NossoNumero + " QTD: " + cnab.Boletos.Count + "\r\n"; BoletoInfo b; foreach (string n in Boletos.NossoNumeros) { b = Boletos[n]; cnab.Log += string.Format("'{0}' '{1}' / ", n, b.NossoNumero); } //cnab.Log += " - bi - "; //foreach (string n in bi.Keys) //{ // b = null; // if (bi.TryGetValue(n, out b)) // cnab.Log += string.Format("'{0}' '{1}' / ", n, b.NossoNumero); // else // cnab.Log += n + "! "; //} #endif }
protected void Page_Load(object sender, EventArgs e) { CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "TESTE PARA HOMOLOGAÇÃO"; Cedente.Banco = "047-7"; Cedente.Agencia = "059-3"; Cedente.Conta = "100046-0"; Cedente.CodCedente = "031000460"; Cedente.Carteira = "SR"; BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "1431"; Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = 50; Boleto.DataVencimento = new DateTime(2009, 3, 5); SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fábio Teste"; Sacado.Documento = "123.456.789-01"; // Define as instruções para o atendente do caixa Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); lblCodBarra.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 2, 9, 9, 3, 1, 1 }); }
/// <summary> /// Configura o boleto, passando os 3 objetos que contem os dados para a geração do boleto para variáveis internas, mas não calcula: veja: Calculaboleto() /// </summary> /// <param name="oCedente">Dados do Cedente</param> /// <param name="oSacado">Dados do Sacado</param> /// <param name="oBoleto">Dados do Boleto</param> public void MakeBoleto(CedenteInfo oCedente, SacadoInfo oSacado, BoletoInfo oBoleto) { if (Boleto == null) { return; } Boleto.MakeBoleto(oCedente, oSacado, oBoleto); Boleto.CalculaBoleto(); }
// ATENÇÃO: Este exemplo funciona apenas no .Net 3.0! // Por usar instaciamento direto no construtor e expressão lambida protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo() { Cedente = "Exemplo de empresa cedente", Banco = "070-1", Agencia = "058", Conta = "6002006", Carteira= "1" }; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo() { Sacado = "(Teste para homologação)", Documento = "123.456.789-99", Endereco = "Av. Paulista, 1234", Cidade = "São Paulo", Bairro = "Centro", Cep = "12345-123", UF = "SP" }; // Definição dos dados do boleto BoletoInfo Boleto = new BoletoInfo() { NossoNumero = "000001", NumeroDocumento = "1", ValorDocumento = 1, //DataDocumento = DateTime.Now, //DataVencimento = new DateTime(2008, 9, 8), }; // é possivel customizar a geração do campo livre // desta forma você poderá implementar outros bancos ou carteiras // (exemplo usando expressão lambida) /* bltPag.MontaCampoLivre += (Boleto blt) => { return new string('0', 25); // importante é sempre retornar 25 caracteres }; */ // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); // Exibe o codigo de barras devidamente formatado e separado lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado( new int[] { 3, 3, 7, 1, 6, 3, 1, 1 }); }
// ATENÇÃO: Este exemplo funciona apenas no .Net 3.0! // Por usar instaciamento direto no construtor e expressão lambida protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo() { Cedente = "Exemplo de empresa cedente", Banco = "070-1", Agencia = "058", Conta = "6002006", Carteira = "1" }; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo() { Sacado = "(Teste para homologação)", Documento = "123.456.789-99", Endereco = "Av. Paulista, 1234", Cidade = "São Paulo", Bairro = "Centro", Cep = "12345-123", UF = "SP" }; // Definição dos dados do boleto BoletoInfo Boleto = new BoletoInfo() { NossoNumero = "000001", NumeroDocumento = "1", ValorDocumento = 1, //DataDocumento = DateTime.Now, //DataVencimento = new DateTime(2008, 9, 8), }; // é possivel customizar a geração do campo livre // desta forma você poderá implementar outros bancos ou carteiras // (exemplo usando expressão lambida) /* * bltPag.MontaCampoLivre += (Boleto blt) => * { * return new string('0', 25); // importante é sempre retornar 25 caracteres * }; */ // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); // Exibe o codigo de barras devidamente formatado e separado lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado( new int[] { 3, 3, 7, 1, 6, 3, 1, 1 }); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente - QUEM RECEBE / EMITE CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = "237-"; Cedente.Agencia = "1234"; // use somente "-" para separa o código da agencia e digito Cedente.Conta = "56789-1"; // use somente "-" para separa o código da conta e digito Cedente.Carteira = "6"; Cedente.CNPJ = "12.345.678/0001-12"; Cedente.Endereco = "Rua Sei lá aonde, 123 - Centro, São Paulo/SP"; // Definição dos dados do sacado - QUEM PAGA SacadoInfo Sacado = new SacadoInfo(); Sacado.SacadoCodigo = "123"; // Código interno de controle Sacado.Sacado = "Fabio Ferreira (Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; // Definiçào dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "123400"; Boleto.NumeroDocumento = "123400"; Boleto.ValorDocumento = 423.45; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2006, 5, 31); Boleto.ParcelaNumero = 2; Boleto.ParcelaTotal = 10; Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // Monta as informações do boleto bltPag.ImageType = Impactro.WebControls.BoletoImageType.gif; // O Conversor padrão só lê imagens absolutas, então as imagens devem ser geradas co o nome do host // veja mais em: http://stackoverflow.com/questions/924996/itextsharp-htmlworker-img-not-found-404 bltPag.ImagePath = "http://" + Request.Url.Host + ":" + Request.Url.Port + "/BoletoNet/imagens/"; bltPag.MakeBoleto(Cedente, Sacado, Boleto); // O Calculo acontece no RENDER, que neste caso é chamado internamente ao converter para PDF // Comente/descomente a linha abaixo para ver em HTML ou em PDF! ConverteAspx2Pdf(); // O problema desta solução é que o boleto sai muito grande, na página toda, ou seja fora da escala padrão // Mas tudo é valido, inclusive o código de barras, só não serve para homologação // O problema desta solução é que ela não é otimizada, e apenas uma conversão de HTML/CSS para um PDF dentro das possibilidades do proprio componente 'HTMLWorker' que já é obsoleto! }
public IActionResult Boleto() { // Definição dos dados do cedente var Cedente = new CedenteInfo() { Cedente = "Teste de Cedente", CNPJ = "12.345.678/0000-12", Endereco = "endereço do recebedor", Banco = "237", Agencia = "0646", Conta = "9105-8", Carteira = "6" }; // Definição dos dados do sacado var Sacado = new SacadoInfo() { Sacado = "Fabio Ferreira (Teste)", Documento = "123.456.789-99", Endereco = "Av. Paulista, 1234", Cidade = "São Paulo", Bairro = "Centro", Cep = "12345-123", UF = "SP" }; // Definição das Variáveis do boleto var Boleto = new BoletoInfo() { NumeroDocumento = "00046356", NossoNumero = "00046356", ParcelaNumero = 1, ParcelaTotal = 3, Quantidade = 4, ValorUnitario = 34.55, ValorDocumento = 3070.14, DataDocumento = DateTime.Now, DataVencimento = DateTime.Parse("30/07/2017"), Demonstrativo = "Demostrativo para o cliente", Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente" }; // monta o boleto com os dados específicos nas classes var blt = new Boleto(); blt.MakeBoleto(Cedente, Sacado, Boleto); // Armazena e inicializa variáveis internas blt.CalculaBoleto(); // Calcula a linha digitável e código de barras ViewBag.Boleto = blt; // Coloca na viewBag a instancia do boleto calculado para ser meschado no HTML return(View()); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Impactro Informática (teste)"; Cedente.Banco = "001-9"; Cedente.Agencia = "294-1"; Cedente.Conta = "004570-6"; // ATENÇÃO: Geralmente o banco informa a Carteira da seguinte forma: 16/019 // Para o gerador isso significa sempre CARTEIRA/MODALIDADE, e ambas com apenas 2 dígitos // E estes devem ser configurados separadamente como indicado abaixo neste exemplo Cedente.Carteira = "18"; Cedente.Modalidade = "21"; Cedente.Convenio = "859120"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Banco / Empresa - CNPJ: 123.456.789/00001-23"; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "131872"; Boleto.NumeroDocumento = "131872"; Boleto.ValorDocumento = 0; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse("10/03/2014"); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // Desabilita a parte superior do boleto (Recibo do Sacado) que pode ter um layout livre // bltPag.ExibirReciboSacado = false; // Configura as imagens bltPag.ImagePath = "imagens/"; bltPag.ImageType = Impactro.WebControls.BoletoImageType.gif; bltPag.ImageLogo = "Impactro-Logo.gif"; //Define a imagem do logotipo da sua empresa bltPag.ExibeEnderecoReciboSacado = true; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); }
/// <summary> /// Configura o boleto e calcula o código de barras e linha digitavel com base nas informações passadas /// </summary> /// <param name="Cedente">São as dados de que Emite o Boleto (Quem irá receber)</param> /// <param name="Sacado">São os dados do pagador do Boleto (Quem irá pagar)</param> /// <param name="Boleto">São os dados da caobrança em si: Valores, Datas, Descrições e Informações</param> public void MakeBoleto(CedenteInfo Cedente, SacadoInfo Sacado, BoletoInfo Boleto) { if (MontaCampoLivre != null) { blt.onMontaCampoLivre += MontaCampoLivre; } if (blt != null) { blt.MakeBoleto(Cedente, Sacado, Boleto); } blt.CalculaBoleto(); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Teste de Cedente"; Cedente.Banco = "341"; Cedente.Agencia = "0646"; Cedente.Conta = "9105-8"; Cedente.Carteira = "167"; Cedente.Endereco = "endereço do recebedor"; Cedente.CNPJ = "12.345.678/0000-12"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = Boleto.NumeroDocumento = "00046356"; Boleto.ValorDocumento = 3070.14; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse("10/07/2008"); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); String cDados = bltPag.Boleto.CodigoBarras; // Exibe o campo livre decodificado lblCodBar.Text = cDados + "<br/>" + cDados.Substring(0, 19) + "-" + cDados.Substring(19, 3) + "." + cDados.Substring(22, 8) + "." + cDados.Substring(30, 1) + "." + cDados.Substring(31, 4) + "." + cDados.Substring(35, 5) + "." + cDados.Substring(40); }
public SacadoInfo RetornaSacado(Cliente _cliente, Contrato Contrato) { SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = _cliente.RazaoSocial; Sacado.Documento = _cliente.CpfCnpj; Sacado.Endereco = _cliente._ClienteEndereco.First(x => x.TipoLogradouroId == 1).Logradouro; Sacado.Cidade = _cliente._ClienteEndereco.First(x => x.TipoLogradouroId == 1)._Bairro._Cidade.Nome; Sacado.Bairro = _cliente._ClienteEndereco.First(x => x.TipoLogradouroId == 1)._Bairro.Nome; Sacado.Cep = _cliente._ClienteEndereco.First(x => x.TipoLogradouroId == 1).Cep; Sacado.UF = _cliente._ClienteEndereco.First(x => x.TipoLogradouroId == 1)._Bairro._Cidade._Estado.Estadosigla; Sacado.Email = _cliente.Email; //Sacado.Avalista = "Avalista"; return(Sacado); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente =new CedenteInfo(); Cedente.Cedente = "Impactro Informática (teste)"; Cedente.Banco = "001-9"; Cedente.Agencia = "294-1"; Cedente.Conta = "004570-6"; // ATENÇÃO: Geralmente o banco informa a Carteira da seguinte forma: 16/019 // Para o gerador isso significa sempre CARTEIRA/MODALIDADE, e ambas com apenas 2 dígitos // E estes devem ser configurados separadamente como indicado abaixo neste exemplo Cedente.Carteira = "18"; Cedente.Modalidade = "21"; Cedente.Convenio = "859120"; // Definição dos dados do sacado SacadoInfo Sacado =new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Banco / Empresa - CNPJ: 123.456.789/00001-23"; // Definição das Variáveis do boleto BoletoInfo Boleto=new BoletoInfo (); Boleto.NossoNumero = "131872"; Boleto.NumeroDocumento = "131872"; Boleto.ValorDocumento = 0; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse("10/03/2014"); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // Desabilita a parte superior do boleto (Recibo do Sacado) que pode ter um layout livre // bltPag.ExibirReciboSacado = false; // Configura as imagens bltPag.ImagePath = "imagens/"; bltPag.ImageType = Impactro.WebControls.BoletoImageType.gif; bltPag.ImageLogo = "Impactro-Logo.gif"; //Define a imagem do logotipo da sua empresa bltPag.ExibeEnderecoReciboSacado = true; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Impactro Informática (teste)"; Cedente.Banco = "756-0"; // A "agência" e "conta" não são usado para nada no boleto, o que vale é o "Convenio", "Modalidade", e "Carteira" // Cedente.Agencia = "1234"; // Cedente.Conta = "56789"; // ATENÇÃO: Geralmebte o banco informa a Carteira da segunte forma: 16/019 // Para o gerador isso significa sempre CARTEIRA/MODALIDADE, e ambas com apenas 2 digitos // E estes devem ser configurados separadamente como indicado abaixo neste exemplo Cedente.Carteira = "1"; Cedente.Modalidade = "01"; // ATENÇÃO a especificação: Carteira/Modalidade: 1/01-Simples Com Registro Cedente.Convenio = "3010"; // Código da Cooperativa (será exibido como valor para a "agência") Cedente.CodCedente = "982296"; // Código do Cliente // Para saber quais são os campos fundamentais para a geração do boleto, // veja a assinatura da função estatica que calcula o campo livre do banco em questão // Neste caso: Banco_SICOOB.CampoLivre(...); // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "9367231"; Boleto.NumeroDocumento = "9367231"; Boleto.ParcelaNumero = 1; Boleto.ValorDocumento = 25; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse("10/06/2011"); // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Teste de Cedente"; Cedente.Banco = "341"; Cedente.Agencia = "0646"; Cedente.Conta = "9105-8"; Cedente.Carteira = "167"; Cedente.Endereco = "endereço do recebedor"; Cedente.CNPJ = "12.345.678/0000-12"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; // Definição das Variáveis do boleto BoletoInfo Boleto =new BoletoInfo(); Boleto.NossoNumero = Boleto.NumeroDocumento = "00046356"; Boleto.ValorDocumento = 3070.14; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse("10/07/2008"); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); String cDados = bltPag.Boleto.CodigoBarras; // Exibe o campo livre decodificado lblCodBar.Text = cDados + "<br/>" + cDados.Substring(0, 19) + "-" + cDados.Substring(19, 3) + "." + cDados.Substring(22, 8) + "." + cDados.Substring(30, 1) + "." + cDados.Substring(31, 4) + "." + cDados.Substring(35, 5) + "." + cDados.Substring(40); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente (do exemplo página 36 sem registro) // Linha digitável: 74891.11422 00001.039544 02000.921078 9 61870000010000 // Código de Barras: 748.9.9.6187.0000010000-1.1.142000010.3954.02.00092.1.0.7 CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "FRANCISCO ERDOS"; Cedente.CNPJ = "72.106.461/0001-54"; Cedente.Banco = "748-X"; Cedente.Agencia = "0723"; Cedente.Conta = Cedente.CodCedente = "89159-2"; Cedente.Modalidade = "23"; // UA/POSTO: Cedente.Carteira = "3"; // 1-Com Registro, 3-Sem registro // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "(Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; // Definição dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataDocumento = DateTime.Now; Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; Boleto.NossoNumero = Boleto.NumeroDocumento = "16204962"; Boleto.ValorDocumento = 46.85; Boleto.DataVencimento = new DateTime(2016, 6, 1); // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); // Exibe o codigo de barras devidamente formatado e separado lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 1, 9, 4, 2, 5, 1, 1, 1 }); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23"; // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Banco = "356"; Cedente.Agencia = "1234"; Cedente.Conta = "1234567-8"; // Definiçào dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "123400"; Boleto.NumeroDocumento = "123400"; Boleto.ValorDocumento = 423.45; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2006, 5, 31); // Obrigatório para o UNIBANCO Boleto.LocalPagamento = "Pagável em qualquer agência bancária"; Boleto.Especie = Especies.RC; Cedente.UsoBanco = "CVT 7744-5"; Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // veja o exemplo: BoletoCustomizado.aspx bltPag.MontaCampoLivre += new BoletoMontaCampoLivre(bltPag_MontaCampoLivre); // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23"; // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = "104"; Cedente.Agencia = "0183"; Cedente.Conta = "003.00000622-0"; Cedente.Carteira = "2"; // 1-Registrada ou 2-Sem registro Cedente.CodCedente = "035187000000055"; // Definição dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "8210000030"; Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = 18; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2015, 11, 30); // monta o boleto com os dados específicos nas classes bltPag.ExibeEnderecoReciboSacado = true; bltPag.MakeBoleto(Cedente, Sacado, Boleto); // Exibe o código de barras CodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 10, 4, 11 }); }
protected void Page_Load(object sender, EventArgs e) { // baseado no exemplo basico: BoletoCS // Definição dos dados do cedente - QUEM RECEBE / EMITE CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente<br/>Endereço yyy"; Cedente.Banco = "237"; Cedente.Agencia = "1234"; Cedente.Conta = "45678-9"; Cedente.Carteira = "6"; // Definição dos dados do sacado - QUEM PAGA SacadoInfo Sacado = new SacadoInfo(); //Sacado.SacadoCOD = "123"; // Código interno de controle Sacado.Sacado = "Fabio Ferreira (Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; // Definiçào dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "123400"; Boleto.NumeroDocumento = "123400"; Boleto.ValorDocumento = 423.45; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2006, 5, 31); // Obrigatório para o UNIBANCO Boleto.LocalPagamento = "Pagável em qualquer agência bancária"; Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; bltPag.MakeBoleto(Cedente, Sacado, Boleto); //bltPag.RenderImage = true; // isso está no aspx (html) }
// Para imprimir uma serie de boletos onde os dados estão vindo de um datatable void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e) { try { //Definição dos dados do sacado(nova isntancia SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"]; //Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)tbDados.Rows[nReg]["Vencimento"]; Boleto.ValorDocumento = (double)tbDados.Rows[nReg]["Valor"]; Boleto.NossoNumero = tbDados.Rows[nReg]["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; // Cria uma nova instancia totalmente idependente BoletoForm bol = new BoletoForm(); // monta o boleto com os dados específicos nas classes bol.MakeBoleto(objCedente, objSacado, objBoleto); bol.PrintType = PrintTypes.Documet; // A definição do tipo carne ou normal já define o RenderBoleto bol.Boleto.Carne = chkCarne.Checked; // bol.Boleto.RenderBoleto=new BoletoCarne(); // Na pratica definir como carne é a mesma coisa que instanciar a classe de carne no RenderBoleto PrintRecibo(bol); bol.Print(e.Graphics); nReg++; e.HasMorePages = nReg < tbDados.Rows.Count; if (!e.HasMorePages) { nReg = 0; } } catch (Exception ex) { MessageBox.Show(ex.Message + ex.StackTrace); } }
//// Para imprimir um unico boleto //void pDoc_PrintPageUnico(object sender, PrintPageEventArgs e) //{ // blt.PrintType = PrintTypes.Documet; // blt.Print(e.Graphics); //} // Para imprimir uma serie de boletos onde os dados estão vindo de um datatable void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e) { try { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "outro cedente!"; Cedente.Banco = "237"; Cedente.Agencia = "1234-5"; Cedente.Conta = "123456-7"; Cedente.Carteira = "06"; Cedente.Modalidade = "11"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"]; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)tbDados.Rows[nReg]["Vencimento"]; Boleto.ValorDocumento = (double)tbDados.Rows[nReg]["Valor"]; Boleto.NossoNumero = tbDados.Rows[nReg]["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; // Cria uma nova instancia totalmente idependente BoletoForm bol = new BoletoForm(); // monta o boleto com os dados específicos nas classes bol.MakeBoleto(Cedente, Sacado, Boleto); bol.PrintType = PrintTypes.Documet; bol.Print(e.Graphics); nReg++; e.HasMorePages = nReg < tbDados.Rows.Count; } catch (Exception) { } }
static internal void AddBoletos(LayoutBancos lb) { //Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fábio F S"; Sacado.Documento = "922.719.724-93"; Sacado.Endereco = "rua qualquer lugar, S/N"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "55555-333"; Sacado.UF = "SP"; Sacado.Email = "*****@*****.**"; Sacado.Avalista = "Avalista"; for (int n = 0; n < 10; n++) { //Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.BoletoID = n; Boleto.NossoNumero = (NossoNumeroInicial + n).ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = ValorInicial + n; Boleto.DataDocumento = DataTeste; Boleto.DataVencimento = VencimentoTeste.AddDays(n); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // outros campos opcionais Boleto.ValorMora = Boleto.ValorDocumento * 0.2 / 30; // Vale lembrar que o juros pode ser tão pequeno que as vezes pode sair como isento Boleto.PercentualMulta = 0.03; Boleto.ValorDesconto = n; Boleto.DataDesconto = DataTeste; Boleto.ValorOutras = -n; // abatimentos Boleto.ParcelaNumero = 1 + (n % 3); lb.Add(Boleto, Sacado); } }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do sacado SacadoInfo Sacado=new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23"; // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = "104"; Cedente.Agencia = "0183"; Cedente.Conta = "003.00000622-0"; Cedente.Carteira = "2"; // 1-Registrada ou 2-Sem registro Cedente.CodCedente = "035187000000055"; // Definição dos dados do boleto BoletoInfo Boleto=new BoletoInfo(); Boleto.NossoNumero = "8210000030"; Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = 18; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2015,11,30); // monta o boleto com os dados específicos nas classes bltPag.ExibeEnderecoReciboSacado = true; bltPag.MakeBoleto(Cedente, Sacado, Boleto); // Exibe o código de barras CodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 10, 4, 11 }); }
protected void Page_Load(object sender, EventArgs e) { CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "IMPACTRO TESTE"; Cedente.Banco = "422-7"; Cedente.Agencia = "12300"; Cedente.Conta = "4321-6"; Cedente.Carteira = "1"; BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "949275603"; Boleto.NumeroDocumento = "8400004006"; Boleto.ValorDocumento = 3482.43; Boleto.DataVencimento = new DateTime(2008, 8, 18); SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "FABIO FERREIRA"; Sacado.Documento = "123456789"; // Define as instruções para o atendente do caixa Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); bltPag.Boleto.CarteiraExibicao = "060"; // exibe o código fe barras de acrodo com a carteira if (Cedente.Carteira == "1" || Cedente.Carteira == "2") { lblInfo.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 5, 9, 9, 1 }); } else { lblInfo.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 7, 16, 1 }); } }
// Neste primeiro exemplo o boleto será inserido como imagem embutida no HTML em base64 protected void Page_Init(object sender, EventArgs e) { // Definição dos dados do cedente, que será comum para todos os boletos CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "outro cedente!"; Cedente.Banco = "237"; Cedente.Agencia = "1234-5"; Cedente.Conta = "123456-7"; Cedente.Carteira = "06"; Cedente.Modalidade = "11"; // Cria uma tabela em memoria DataTable tbDados = new DataTable(); // Estrutura da tabela tbDados.Columns.Add("Nome", typeof(string)); tbDados.Columns.Add("Vencimento", typeof(DateTime)); tbDados.Columns.Add("Valor", typeof(double)); tbDados.Columns.Add("NossoNumero", typeof(int)); // Insere os dados tbDados.Rows.Add("Fábio", new DateTime(2015, 12, 30), 123.45, 345678); tbDados.Rows.Add("Érika", new DateTime(2015, 7, 25), 60, 12332); tbDados.Rows.Add("Milena", new DateTime(2015, 10, 20), 10.30, 234); tbDados.Rows.Add("Cecília", new DateTime(2015, 3, 4), 20.53, 456445); tbDados.Rows.Add("Roberto", new DateTime(2015, 6, 5), 32.78, 47319); tbDados.Rows.Add("Marcelo", DateTime.MinValue, 20320.23, 18445); tbDados.Rows.Add("Ricardo", DateTime.MinValue, 97023.51, 2465445); tbDados.Rows.Add("Maria", new DateTime(2016, 9, 12), 7890.23, 61756); tbDados.Rows.Add("Samara", new DateTime(2015, 8, 12), 78.1, 656); tbDados.Rows.Add("Marcio", new DateTime(2015, 2, 10), 790.3, 5672); int nBoleto = 0; foreach (DataRow row in tbDados.Rows) { // Instancia do 'Boleto', não o 'BoletoWeb', pois a ideia é renderizar imagem // O BoletoWeb usa a classe 'Boleto' para fazer todos os calculos, e depois desenha em html o boleto Boleto blt = new Boleto(); blt.Carne = true; // Formato de Carne, neste exemplo será colocardo 3 boletos por página // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)row["Nome"]; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)row["Vencimento"]; Boleto.ValorDocumento = (double)row["Valor"]; Boleto.NossoNumero = row["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; // Calcula os dados do boleto blt.MakeBoleto(Cedente, Sacado, Boleto); // Obtem a imagem do boleto Bitmap img = blt.ImageBoleto(); // Adiciona a imagem do boleto em base64 no HTML form1.Controls.Add(new LiteralControl(CobUtil.ToBase64ImageTag(img, ImageFormat.Png))); // incrementa o contador de boletos nBoleto++; if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras // somente nos boletos pares a iniciar de 2 força uma quebra de linha form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>")); else // if (nBoleto<tbDados.Rows.Count) // caso não queira imprimir a ultima imagem de tesoura // nos boletos impares adiciona a imagem de recorte, ou um HR // form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif' style='margin: 5px 0 5px 0;'/>")); form1.Controls.Add(new LiteralControl("<hr size='1' style='color: gray; margin: 5px 0 5px 0;'/>")); } }
// Este exemplo foi baseado no exemplo: DirectPrint.aspx // Para criação de controles, os objetos devem ser incluidos sempre no Page_Init para não corromper a viewstate protected void Page_Init(object sender, EventArgs e) { DataTable tbDados; BoletoWeb blt; tbDados = new DataTable(); // Cria atabela em memoria // Cria as colunas nos respectivos tipos tbDados.Columns.Add("Nome", typeof(string)); tbDados.Columns.Add("Vencimento", typeof(DateTime)); tbDados.Columns.Add("Valor", typeof(double)); tbDados.Columns.Add("NossoNumero", typeof(int)); // insere os dados tbDados.Rows.Add("Fábio", new DateTime(2008, 12, 30), 123.45, 345678); tbDados.Rows.Add("Érika", new DateTime(2008, 7, 25), 60, 12332); tbDados.Rows.Add("Milena", new DateTime(2008, 10, 20), 10.30, 234); tbDados.Rows.Add("Cecília", DateTime.MinValue, 200.55, 456445); tbDados.Rows.Add("qualquer um", new DateTime(2008, 2, 12), 7890.5, 56756); int nBoleto = 0; foreach (DataRow row in tbDados.Rows) { // o principal é inserir o componente dinakicamente dentro de um container (controle que suporte outros controles, exemplo: Form, Panel) blt = new BoletoWeb(); // para caber 2 em uma página não será usado o recibo do sacado blt.ExibeReciboSacado = false; // configura as propriedades de estilo blt.CssCell = "BolCell"; blt.CssField = "BolField"; // Adiciona a instancia na tela form1.Controls.Add(blt); nBoleto++; // Mude o ZOOM do CSS BoletoWeb no arquivo .aspx para caber até 3 boletos, ai o módulo da divisão passa a ser 3 //if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras if (nBoleto % 2 == 0) { // somente nos boletos pares a iniciar de 2 força uma quebra de linha form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>")); } else { // nos boletos impares adiciona a imagem de recorte form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif'>")); } // Note que na página ASPX, existe uma referencia a classe "BoeltoWeb" // Nesta classe CSS é definido o espaçamento entra cada boleto e a quebra de página // Depois segue normalmente as definições estaticas ou vindas do banco de dados // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "outro cedente!"; Cedente.Banco = "237"; Cedente.Agencia = "1234-5"; Cedente.Conta = "123456-7"; Cedente.Carteira = "06"; Cedente.Modalidade = "11"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)row["Nome"]; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)row["Vencimento"]; Boleto.ValorDocumento = (double)row["Valor"]; Boleto.NossoNumero = row["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; blt.MakeBoleto(Cedente, Sacado, Boleto); } }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente - QUEM RECEBE / EMITE CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = "237-"; Cedente.Agencia = "1234"; // use somente "-" para separa o código da agencia e digito Cedente.Conta = "56789-1"; // use somente "-" para separa o código da conta e digito Cedente.Carteira = "6"; Cedente.Modalidade = ""; // Em geral faz parte do nosso numero Cedente.Convenio = "1878794"; // ATENÇÃO: Alguns Bancos usam um código de convenio para remapear a conta do clientes Cedente.CodCedente = "1878794"; // outros bancos chama isto de Codigo do Cedente ou Código do Cliente // Novas Exigencias da FREBABAN: Exibir endereço e CNPJ no campo de emitente! //Cedente.ExibirCedenteDocumento = true; // Não é mais necessário pois agora é obrigatório para homologar Cedente.CNPJ = "12.345.678/0001-12"; //Cedente.ExibirCedenteEndereco = true; // Não é mais necessário pois agora é obrigatório para homologar Cedente.Endereco = "Rua Sei lá aonde, 123 - Brás, São Paulo/SP"; // outros usam os 2 campos para controles distintos! // Veja com atenção qual é o seu caso e qual destas variáveis deve ser usadas! // Olhe sempre os exemplos em ASP.Net se tiver dúvidas, pois lá há um exemplo para cada banco // Para casos especiais Cedente.UsoBanco = "123"; Cedente.CIP = "456"; Cedente.UsoBanco = "CVT 7744-5"; // Definição dos dados do sacado - QUEM PAGA SacadoInfo Sacado = new SacadoInfo(); Sacado.SacadoCodigo = "123"; // Código interno de controle Sacado.Sacado = "Fabio Ferreira (Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23"; // Definiçào dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "123400"; Boleto.NumeroDocumento = "123400"; Boleto.ValorDocumento = 423.45; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2006, 5, 31); Boleto.ParcelaNumero = 2; Boleto.ParcelaTotal = 10; // Obrigatório para o UNIBANCO Boleto.LocalPagamento = "Pagável em qualquer agência bancária"; Boleto.Especie = Especies.RC; Boleto.DataDocumento = DateTime.Now.AddDays(-2); // Por padrão é a data atual, geralmente é a data em que foi feita a compra/pedido, antes de ser gerado o boleto para pagamento Boleto.DataProcessamento = DateTime.Now.AddDays(-1); // Por padrão é a data atual, pode ser usado como a data em que foi impresso o boleto Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // é possivel alterar alguns textos padrões conforme abaixo // conforme circulares BACEN 3.598 e 3.656 em vigor a partir de 28/06/2013 titulo fora mudados de cedente para beneficiário, e sacado para pagador // BoletoTextos.Cedente= "Cedente"; //BoletoTextos.Sacado = "Sacador"; // é possive exibir a linha digitável também no recibo do sacado //bltPag.ExibeReciboIPTE = true; // É possivel ocultar totalmente o recibo do sacado e customizar o layout deste //bltPag.ExibeReciboSacado = false; // personalize com o logo de sua empresa, e o caminho base das imagens bltPag.ImagePath = "imagens/"; bltPag.ImageLogo = "Impactro-Logo.gif"; bltPag.ImageType = BoletoImageType.gif; // Define que as imagens virão de arquivos esternos // // opções especiais: use com cuidado // bltPag.Boleto.Especie = "?USD?"; // é possivel fazer cobranças em outras moedas // bltPag.Boleto.Moeda = "3"; // mas deve ser analisado o código da moeda // bltPag.ImageType = BoletoImageType.gif; // você pode customizar as imagens dos bancos // bltPag.ImagePath = "imagens/"; // desde que informe um diretório onde as imagens estarão // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); }
protected void btnRemessa_Click(object sender, EventArgs e) { // (Não é o foco validar dados de entrada, e sim testar a geração de registro) //Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Pedro Alvarez Cabral"; Sacado.Documento = "123.123.134-12"; Sacado.Endereco = "Rua 21 de Abril"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Vera Cruz"; Sacado.Cep = "01500-000"; Sacado.UF = "SP"; Sacado.Email = "*****@*****.**"; // Usando a classe bradesco diretamente // CNAB400Bradesco r = new CNAB400Bradesco(); // r.Cedente = Cedente; // r.NumeroLote += 2000000; // inicia com 3 o numero do lote! (soma 20 anos) var r = new LayoutBancos(); r.Init(Cedente); r.Lote = 123456; // é o NumeroLote do CNAB: é preciso gerar uma sequencia armazenada em banco que não se repita // O lote padrão gera AADDDHH (Ano, Dia do ano, Hora) //r.ShowDumpReg = true; // customiza campos r.onRegBoleto = CustomRegBoleto; for (int n = 0; n < Int32.Parse(txtQTD.Text); n++) { //Definição das Variáveis do boleto var Boleto = new BoletoInfo(); Boleto.BoletoID = n; Boleto.NossoNumero = (Int32.Parse(txtNossoNumero.Text) + n).ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = double.Parse(txtValor.Text) + n; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse(txtVencimento.Text).AddDays(n); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // WebControl var blt = new BoletoWeb(); dvBoletos.Controls.Add(blt); blt.ImagePath = "../imagens/"; // Define o diretório de imagens blt.ExibeReciboSacado = false; // Apenas para exibir a parte que interessa do boleto blt.CssCell = "BolCell"; blt.CssField = "BolField"; // Gera um boleto blt.MakeBoleto(Cedente, Sacado, Boleto); // Gera um registro Boleto.SacadoInit(Sacado); // obrigatório para o registro r.Boletos.Add(Boleto, null); } // o numero de exemplo '123' é apenas um numero de teste // este numero é muito importante que seja gerado de forma exclusiva e sequencial txtRemessa.Text = r.Remessa(); //r.CNAB400(123); }
// Neste primeiro exemplo o boleto será inserido como imagem embutida no HTML em base64 protected void Page_Init(object sender, EventArgs e) { // Definição dos dados do cedente, que será comum para todos os boletos CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "outro cedente!"; Cedente.Banco = "237"; Cedente.Agencia = "1234-5"; Cedente.Conta = "123456-7"; Cedente.Carteira = "06"; Cedente.Modalidade = "11"; // Cria uma tabela em memoria DataTable tbDados = new DataTable(); // Estrutura da tabela tbDados.Columns.Add("Nome", typeof(string)); tbDados.Columns.Add("Vencimento", typeof(DateTime)); tbDados.Columns.Add("Valor", typeof(double)); tbDados.Columns.Add("NossoNumero", typeof(int)); // Insere os dados tbDados.Rows.Add("Fábio", new DateTime(2015, 12, 30), 123.45, 345678); tbDados.Rows.Add("Érika", new DateTime(2015, 7, 25), 60, 12332); tbDados.Rows.Add("Milena", new DateTime(2015, 10, 20), 10.30, 234); tbDados.Rows.Add("Cecília", new DateTime(2015, 3, 4), 20.53, 456445); tbDados.Rows.Add("Roberto", new DateTime(2015, 6, 5), 32.78, 47319); tbDados.Rows.Add("Marcelo", DateTime.MinValue, 20320.23, 18445); tbDados.Rows.Add("Ricardo", DateTime.MinValue, 97023.51, 2465445); tbDados.Rows.Add("Maria", new DateTime(2016, 9, 12), 7890.23, 61756); tbDados.Rows.Add("Samara", new DateTime(2015, 8, 12), 78.1, 656); tbDados.Rows.Add("Marcio", new DateTime(2015, 2, 10), 790.3, 5672); int nBoleto = 0; foreach (DataRow row in tbDados.Rows) { // Instancia do 'Boleto', não o 'BoletoWeb', pois a ideia é renderizar imagem // O BoletoWeb usa a classe 'Boleto' para fazer todos os calculos, e depois desenha em html o boleto Boleto blt = new Boleto(); blt.Carne = true; // Formato de Carne, neste exemplo será colocardo 3 boletos por página // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)row["Nome"]; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)row["Vencimento"]; Boleto.ValorDocumento = (double)row["Valor"]; Boleto.NossoNumero = row["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; // Calcula os dados do boleto blt.MakeBoleto(Cedente, Sacado, Boleto); // Obtem a imagem do boleto Bitmap img = blt.ImageBoleto(); // Adiciona a imagem do boleto em base64 no HTML form1.Controls.Add(new LiteralControl(CobUtil.ToBase64ImageTag(img, ImageFormat.Png))); // incrementa o contador de boletos nBoleto++; if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras // somente nos boletos pares a iniciar de 2 força uma quebra de linha { form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>")); } else // if (nBoleto<tbDados.Rows.Count) // caso não queira imprimir a ultima imagem de tesoura // nos boletos impares adiciona a imagem de recorte, ou um HR // form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif' style='margin: 5px 0 5px 0;'/>")); { form1.Controls.Add(new LiteralControl("<hr size='1' style='color: gray; margin: 5px 0 5px 0;'/>")); } } }
private void btnGerar_Click(object sender, EventArgs e) { // Definição dos dados do cedente - QUEM RECEBE / EMITE o boleto CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "TESTE QUALQUER LTDA"; Cedente.CNPJ = "12123123/0001-01"; Cedente.Layout = LayoutTipo.Auto; // ABAIXO DESCOMENTE o bloco de dados do banco que pretende usar // SANTANDER //Cedente.Banco = "033"; //Cedente.Agencia = "1234-1"; //Cedente.Conta = "001234567-8"; //Cedente.CodCedente = "1231230"; //Cedente.CarteiraTipo = "5"; //Cedente.Carteira = "101"; //Cedente.CedenteCOD = "33333334892001304444"; // 20 digitos (note que o final, é o numero da conta, sem os ultios 2 digitos) //Cedente.Convenio = "0000000000000000002222220"; // 25 digitos //Cedente.useSantander = true; //importante para gerar o código de barras correto (por questão de compatibilidade o padrão é false) // BRADESCO Cedente.Banco = "237-2"; Cedente.Agencia = "1510"; Cedente.Conta = "001466-4"; Cedente.Carteira = "09"; Cedente.CedenteCOD = "00000000000001111111"; // 20 digitos // ITAU //Cedente.CedenteCOD = "514432001"; //Cedente.Banco = "341-1"; //Cedente.Agencia = "6260"; //Cedente.Conta = "01607-3"; //Cedente.Carteira = "109"; // Banco do Brasil //Cedente.Banco = "001-9"; //Cedente.Agencia = "294-1"; //Cedente.Conta = "004570-6"; //Cedente.Carteira = "18"; //Cedente.Modalidade = "21"; //Cedente.Convenio = "859120"; // CAIXA //Cedente.Banco = "104"; //Cedente.Agencia = "123-4"; //Cedente.Conta = "5678-9"; //Cedente.Carteira = "2"; // Código da Carteira //Cedente.Convenio = "02"; // CNPJ do PV da conta do cliente //Cedente.CodCedente = "455932"; // Código do Cliente(cedente) //Cedente.Modalidade = "14"; // G069 - CC = 14 (título Registrado emissão Cedente) //Cedente.Endereco = "Rua Sei la aonde"; //Cedente.Informacoes = // "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)<br/>" + // "Para pessoas com deficiência auditiva ou de fala: 0800 726 2492<br/>" + // "Ouvidoria: 0800 725 7474 (reclamações não solucionadas e denúncias)<br/>" + // "<a href='http://caixa.gov.br' target='_blank'>caixa.gov.br</a>"; //BoletoTextos.LocalPagamento = "PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE"; // SICRED //Cedente.Banco = "748-2"; //Cedente.Agencia = "1234-5"; //Cedente.Conta = "98765-1"; //Cedente.CodCedente = "12345"; //Cedente.Modalidade = "04"; // UNICRED //Cedente.Banco = "091-4"; //Cedente.Agencia = "1234-5"; //Cedente.Conta = "98765-1"; //Cedente.CodCedente = "12345"; //Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fábio F S"; Sacado.Documento = "192.211.498-70"; Sacado.Endereco = "Rua 21 de Abril 1001 ap 21"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Brás"; Sacado.Cep = "03047-000"; Sacado.UF = "SP"; Sacado.Email = "*****@*****.**"; Sacado.Avalista = "Avalista"; LayoutBancos r = new LayoutBancos(); r.Init(Cedente); r.Lote = CobUtil.GetInt(txtLote.Text); r.ShowDumpLine = chkDump.Checked; //r.onRegBoleto = r_onRegBoleto; // Para personalizar as linhas com os campos adicionais for (int n = 0; n < Int32.Parse(txtQTD.Text); n++) { //Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.BoletoID = n; Boleto.NossoNumero = (Int32.Parse(txtNossoNumero.Text) + n).ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = double.Parse(txtValor.Text) + n; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse(txtVencimento.Text).AddDays(n); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // outros campos opcionais Boleto.ValorMora = Boleto.ValorDocumento * 0.2 / 30; // Vale lembrar que o juros pode ser tão pequeno que as vezes pode sair como isento Boleto.PercentualMulta = 0.03; Boleto.ValorDesconto = n; Boleto.DataDesconto = DateTime.Now; Boleto.ValorOutras = -n; // abatimentos /* Exemplo de uso valido apenas para o Bradesco (Página 21 do arquivo: layout_cobranca_port_BRADESCO.pdf) * Cada banco usa estes campos da forma que eles querem 157 a 160 - 1ª / 2ª Instrução Campo destinado para pré-determinar o protesto do Título ou a baixa por decurso de prazo, quando do registro. Não havendo interesse, preencher com Zeros. Porém, caso a Empresa deseje se utilizar da instrução automática de protesto ou da baixa por decurso de prazo, abaixo os procedimentos: Protesto: - posição 157 a 158 = Indicar o código “06” - (Protestar). - posição 159 a 160 = Indicar o número de dias a protestar (mínimo 5 dias). Protesto Falimentar: - posição 157 a 158 = Indicar o código “05” – (Protesto Falimentar) - posição 159 a 160 = Indicar o número de dias a protestar (mínimo 5 dias). Decurso de Prazo: - posição 157 a 158 = Indicar o código “18” – (Decurso de prazo). - posição 159 a 160 = Indicar o número de dias para baixa por decurso de prazo. Nota: A posição 157 a 158, também poderá ser utilizada para definir as seguintes mensagens, a serem impressas nos Boletos de cobrança, emitidas pelo Banco: 08 Não cobrar juros de mora 09 Não receber após o vencimento 10 Multa de 10% após o 4º dia do Vencimento. 11 Não receber após o 8º dia do vencimento. 12 Cobrar encargos após o 5º dia do vencimento. 13 Cobrar encargos após o 10º dia do vencimento. 14 Cobrar encargos após o 15º dia do vencimento 15 Conceder desconto mesmo se pago após o vencimento. Atenção: Essas instruções deverão ser enviadas no Arquivo-Remessa, quando da entrada, desde que o código de ocorrência na posição 109 a 110 do registro de transação, seja “01”, para as instruções de protesto, o CNPJ / CPF e o endereço do Sacado deverão ser informados corretamente. */ Boleto.Instrucao1 = 6; // Protestar Boleto.Instrucao2 = 7; // Depois de 7 dias do vencimento // No bRadesco não é usado o campo Comando, mas outros bancos podem usar // Boleto.Comando = 0; // As linhas a seguir customiza qualquer valor sem precisar usar o evento 'r.onRegBoleto' o que torna a implementação mais simples // A forma mais pratica e segura é sempre usar os enumeradores // Mas é possivel usar as duas opções como neste exemplo, mas os valores personalizados tem sempre prioridade pois são inserridos por ultimo apos todos calculos, e processamento de eventos, portanto use com cuidado! Boleto.SetRegEnumValue(CNAB400Remessa1Sicredi.TipoJuros, "B"); // (posição 19) // Apenas se atente para a diferença do nome para SetRegEnumValue() Boleto.SetRegKeyValue("CNAB400Remessa1Sicredi.Alteracao", "E"); // (posição 71) // É possivel adicionar o nome e valor do enumerador, isso é compativel com VB6 // Cuidado ao deixar algo explicito diretamente: // Boleto.SetRegKeyValue("Emissao", "B"); // posição 74 // ou simplesmente informar o nome do campo, mas cuidado pois há layouts que usam mais de um tipo de registro e as vezes tem nomes iguais mas as funções podem ser diferentes Boleto.SetRegEnumValue(CNAB400Remessa1Bradesco.Condicao, 1); // Apenas para Bradesco enviar o boleto para residencia // Gera um registro //Boleto.Sacado = Sacado; // obrigatório para o registro r.Add(Boleto, Sacado); } // o numero de exemplo '123' é apenas um numero de teste // este numero é muito importante que seja gerado de forma exclusiva e sequencial txtRemessa.Text = r.Remessa(); //r.CNAB400(123); }
// Este exemplo tem os mesmos parametros, mas a imagem é rederizada de forma externa // A instancia do boleto é serializada e fica na sessão ou cache, e é recuperada pelo gerador da imagem do boleto protected void Page_Init(object sender, EventArgs e) { // A Definição dos cedente fica dentro do gerador da imagem // Cria uma tabela em memoria DataTable tbDados = new DataTable(); // Estrutura da tabela tbDados.Columns.Add("Nome", typeof(string)); tbDados.Columns.Add("Vencimento", typeof(DateTime)); tbDados.Columns.Add("Valor", typeof(double)); tbDados.Columns.Add("NossoNumero", typeof(int)); // Insere os dados tbDados.Rows.Add("Fábio", new DateTime(2015, 12, 30), 123.45, 345678); tbDados.Rows.Add("Érika", new DateTime(2015, 7, 25), 60, 12332); tbDados.Rows.Add("Milena", new DateTime(2015, 10, 20), 10.30, 234); tbDados.Rows.Add("Cecília", new DateTime(2015, 3, 4), 20.53, 456445); tbDados.Rows.Add("Roberto", new DateTime(2015, 6, 5), 32.78, 47319); tbDados.Rows.Add("Marcelo", DateTime.MinValue, 20320.23, 18445); tbDados.Rows.Add("Ricardo", DateTime.MinValue, 97023.51, 2465445); tbDados.Rows.Add("Maria", new DateTime(2016, 9, 12), 7890.23, 61756); tbDados.Rows.Add("Samara", new DateTime(2015, 8, 12), 78.1, 656); tbDados.Rows.Add("Marcio", new DateTime(2015, 2, 10), 790.3, 5672); int nBoleto = 0; foreach (DataRow row in tbDados.Rows) { // O loop apenas gera os objetos que serão memorizados em sessão ou cache // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)row["Nome"]; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)row["Vencimento"]; Boleto.ValorDocumento = (double)row["Valor"]; Boleto.NossoNumero = row["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; // Vincula o Sacado ao boleto Boleto.SacadoInit(Sacado); // Crio um identificador unico para o boleto, poderia ser só um ID, ou mesmo o NossoNumero, mas depende dos critérios de segurança string cID = "boleto-" + Guid.NewGuid().ToString(); // Se não for StateServer, ou sessão em banco de dados é possivel usar Session[cID] = Boleto; // Funciona é mais simples, mas a memoria vai ficando com todos os boletos gerados até a sessão expirar // Uma forma melhor é colocar em cache, com tempo de expiração //Cache.Insert(cID, Boleto, null, DateTime.MaxValue, new TimeSpan(0, 5, 0)); // Adiciona a imagem do boleto em base64 no HTML // Para facilitar a depuração também adiciono um link para a propria imagem form1.Controls.Add(new LiteralControl("<a href='BoletoImagem2.ashx?id=" + cID + "' target='_blank'><img src='BoletoImagem2.ashx?id=" + cID + "' /></a>")); // form1.Controls.Add(new LiteralControl("<img src='BoletoImagem2.ashx?id=" + cID + "' />")); // incrementa o contador de boletos nBoleto++; if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras // somente nos boletos pares a iniciar de 2 força uma quebra de linha { form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>")); } else // if (nBoleto<tbDados.Rows.Count) // caso não queira imprimir a ultima imagem de tesoura // nos boletos impares adiciona a imagem de recorte, ou um HR // form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif' style='margin: 5px 0 5px 0;'/>")); { form1.Controls.Add(new LiteralControl("<hr size='1' style='color: gray; margin: 5px 0 5px 0;'/>")); } } }
private void frmBasico_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Impactro Informática (teste)"; Cedente.Endereco = "Endereço xxx"; Cedente.CNPJ = "05.343.346/0001-12"; Cedente.Banco = "001"; Cedente.Agencia = "999-7"; Cedente.Conta = "999999-7"; Cedente.Carteira = "18"; Cedente.Modalidade = "19"; Cedente.Convenio = "123456"; // ATENÇÃO: Alguns Bancos usam um código de convenio para remapear a conta do clientes Cedente.CodCedente = "123456"; // outros bancos chama isto de Codigo do Cedente ou Código do Cliente // outros usam os 2 campos para controles distintos! // Veja com atenção qual é o seu caso e qual destas variáveis deve ser usadas! // Olhe sempre os exemplos em ASP.Net se tiver dúvidas, pois lá há um exemplo para cada banco Cedente.UsoBanco = "123"; // Cedente.CIP = "456"; // se for informado esse campo o layout muda um pouco // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Banco XPTO - CNPJ: 123.456.789/00001-23"; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "12345"; Boleto.NumeroDocumento = "12345"; Boleto.ParcelaNumero = 2; Boleto.ParcelaTotal = 6; Boleto.Quantidade = 5; Boleto.ValorUnitario = 20; Boleto.ValorDocumento = Boleto.Quantidade * Boleto.ValorUnitario; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Now.AddDays(-30); Boleto.Especie = Especies.RC; Boleto.DataDocumento = DateTime.Now.AddDays(-2); // Por padrão é a data atual, geralmente é a data em que foi feita a compra/pedido, antes de ser gerado o boleto para pagamento Boleto.DataProcessamento = DateTime.Now.AddDays(-1); // Por padrão é a data atual, pode ser usado como a data em que foi impresso o boleto // http://calculoexato.com.br/parprima.aspx?codMenu=DividBoletoVencido // Se for especificado o valor da mora, este será usado da forma mais simples //Boleto.ValorMora = 0.03; Boleto.PercentualMulta = 0.02; // 2.0% no mês Boleto.PercentualMora = 0.001; // 0.1% valor percentual ao dia... // Valor original: R$100,00 // Valor da multa de 2%: R$2,00 // Valor com multa: R$102,00 // Valor da 0.1% ao dia por 60 dias (6,00%): R$6,12 // Valor com mora: R$108,12 // Valor a ser pago: R$108,12 // veja também a mesma conta em: http://exame.abril.com.br/seu-dinheiro/ferramentas/boleto-vencido.shtml // No valor do percentual Mora pode ser usado um valor mensal do tipo: // Boleto.PercentualMora = 0.03 / 30d; // 3% ao mês // Se for especificado a data de pagamento esta será usada como base para o calculo do numero de dias em que será pago Boleto.DataPagamento = Boleto.DataVencimento.AddDays(60); // Ativa o calculo de Juros+Mora Boleto.CalculaMultaMora = true; // Outros valores opcionais //Boleto.ValorDesconto = 10; //Boleto.DataDesconto = DateTime.Now.AddDays(-10); //Boleto.ValorAcrescimo = 3; //Boleto.ValorOutras = 12.34; Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; //BoletoInfo Boleto = new BoletoInfo(); // O tipo de documento pode ser selecionado para cada boleto, o padrão é DM Boleto.Especie = Especies.DS; // Personaliza o boleto com seu logo bltFrm.Boleto.CedenteLogo = BoletoForm2.Properties.Resources.SeuLogo; // monta o boleto com os dados específicos nas classes bltFrm.MakeBoleto(Cedente, Sacado, Boleto); // É possivel também customizar a linha referente o local de pagamento: bltFrm.Boleto.LocalPagamento = "Pague Preferencialmente no BANCO NOSSA CAIXA S.A. ou na rede bancária até o vencimento"; // Configura campos especiais extras no boleto PrintRecibo(bltFrm); }
protected void btnTest_Click(object sender, EventArgs e) { // Definição dos dados do cedente - QUEM RECEBE / EMITE o boleto CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "TESTE QUALQUER LTDA"; Cedente.CNPJ = "12123123/0001-01"; // ABAIXO DESCOMENTE o bloco de dados do banco que pretende usar // SANTANDER //Cedente.Banco = "033"; //Cedente.Agencia = "1234-1"; //Cedente.Conta = "001234567-8"; //Cedente.CodCedente = "1231230"; //Cedente.CarteiraTipo = "5"; //Cedente.Carteira = "101"; //Cedente.CedenteCOD = "33333334892001304444"; // 20 digitos (note que o final, é o numero da conta, sem os ultios 2 digitos) //Cedente.Convenio = "0000000000000000002222220"; // 25 digitos //Cedente.useSantander = true; //importante para gerar o código de barras correto (por questão de compatibilidade o padrão é false) // BRADESCO //Cedente.Banco = "237-2"; //Cedente.Agencia = "1510"; //Cedente.Conta = "001466-4"; //Cedente.Carteira = "09"; //Cedente.CedenteCOD = "00000000000001111111"; // 20 digitos // ITAU //Cedente.CedenteCOD = "514432001"; //Cedente.Banco = "341-1"; //Cedente.Agencia = "6260"; //Cedente.Conta = "01607-3"; //Cedente.Carteira = "109"; // Banco do Brasil //Cedente.Banco = "001-9"; //Cedente.Agencia = "294-1"; //Cedente.Conta = "004570-6"; //Cedente.Carteira = "18"; //Cedente.Modalidade = "21"; //Cedente.Convenio = "859120"; // CAIXA //Cedente.Banco = "104"; //Cedente.Agencia = "123-4"; //Cedente.Conta = "5678-9"; //Cedente.Carteira = "2"; // Código da Carteira //Cedente.Convenio = "02"; // CNPJ do PV da conta do cliente //Cedente.CodCedente = "455932"; // Código do Cliente(cedente) //Cedente.Modalidade = "14"; // G069 - CC = 14 (título Registrado emissão Cedente) //Cedente.Endereco = "Rua Sei la aonde"; //Cedente.Informacoes = // "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)<br/>" + // "Para pessoas com deficiência auditiva ou de fala: 0800 726 2492<br/>" + // "Ouvidoria: 0800 725 7474 (reclamações não solucionadas e denúncias)<br/>" + // "<a href='http://caixa.gov.br' target='_blank'>caixa.gov.br</a>"; //BoletoTextos.LocalPagamento = "PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE"; // SICRED Cedente.Banco = "748-2"; Cedente.Agencia = "1234-5"; Cedente.Conta = "98765-1"; Cedente.CodCedente = "12345"; Cedente.Modalidade = "04"; Cedente.Layout = LayoutTipo.Auto; // Cria uma instancia do gerador de arquivo que abstrai as classes individuais de geração LayoutBancos r = new LayoutBancos(); // classe genérica para qualquer banco, compatível até com ActiveX r.Init(Cedente); // define o cedente e o tipo de arquivo r.Lote = 1234; // Define o numero do lote! // É quase que obrigatporio para o sicredi r.onRegBoleto = r_onRegBoleto; // Para personalizar as linhas com os campos adicionais a todos registros // Mas há outra forma usando o 'SetRegKeyValue(key, valor);' em cada boleto info // É possível configurar o lote, por padrão é gerado AADDDHH (Ano, Dia do ano, Hora) obrigatório para bradesco // r.Lote += 2000000; // Ou é possivel usar a logica que quiser, por exemplo, inicia com 3 o numero do lote! (soma 20 anos) // Definição dos dados do sacado - QUEM PAGA SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "TESTE OK (Teste para homologação)"; Sacado.Documento = "12321321000112"; Sacado.Endereco = "RUA TESTE XXX"; Sacado.Cidade = "SÃO PAULO"; Sacado.Bairro = "JARDIM Y"; Sacado.Cep = "12345-678"; Sacado.UF = "SP"; // Abaixo serão criados 5 boleto distintos para o mesmo sacado criado acima // Definição dos dados do boleto1 BoletoInfo Boleto1 = new BoletoInfo(); Boleto1.NossoNumero = "2265"; Boleto1.BoletoID = 0000001; Boleto1.NumeroDocumento = Boleto1.NossoNumero; Boleto1.ValorDocumento = 12.34; Boleto1.DataDocumento = DateTime.Now; Boleto1.DataVencimento = DateTime.Now.AddDays(5); Boleto1.Ocorrencia = Ocorrencias.Remessa; // código 1 // As linhas a seguir customiza qualquer valor sem precisar usar o evento 'r.onRegBoleto' o que torna a implementação mais simples // A forma mais pratica e segura é sempre usar os enumeradores // Mas é possivel usar as duas opções como neste exemplo, mas os valores personalizados tem sempre prioridade pois são inserridos por ultimo apos todos calculos, e processamento de eventos, portanto use com cuidado! Boleto1.SetRegEnumValue(CNAB400Remessa1Sicredi.TipoJuros, "B"); // (posição 19) // Apenas se atente para a diferença do nome para SetRegEnumValue() Boleto1.SetRegKeyValue("CNAB400Remessa1Sicredi.Alteracao", "E"); // (posição 71) // É possivel adicionar o nome e valor do enumerador, isso é compativel com VB6 Boleto1.SetRegKeyValue("Emissao", "B"); // posição 74 // ou simplesmente informar o nome do campo, mas cuidado pois há layouts que usam mais de um tipo de registro e as vezes tem nomes iguais mas as funções podem ser diferentes // Definição dos dados do boleto2 BoletoInfo Boleto2 = new BoletoInfo(); Boleto2.NossoNumero = "2266"; Boleto2.BoletoID = 0000002; Boleto2.NumeroDocumento = Boleto2.NossoNumero; Boleto2.ValorDocumento = 123.45; Boleto2.DataDocumento = DateTime.Now; Boleto2.DataVencimento = DateTime.Now.AddDays(10); Boleto2.Ocorrencia = Ocorrencias.AlterarDados; // código 31 Boleto2.Ocorrencia = (Ocorrencias)31; // código 31 Boleto2.SetRegEnumValue(CNAB240SegmentoPCaixa.BaixaDevolucaoCodigo, 1); // apenas para caixa força o campo para 1 // Definição dos dados do boleto3 BoletoInfo Boleto3 = new BoletoInfo(); Boleto3.NossoNumero = "2267"; Boleto3.BoletoID = 0000003; Boleto3.NumeroDocumento = Boleto3.NossoNumero; Boleto3.ValorDocumento = 2345.67; Boleto3.DataDocumento = DateTime.Now; Boleto3.DataVencimento = DateTime.Now.AddDays(15); Boleto3.Ocorrencia = Ocorrencias.Cancelamento; // 35 Boleto3.PercentualMulta = 0.02; // Multa é quanto pagar a mais, apos o vencimento 2%) Boleto3.ValorMora = (0.01 / 30) * Boleto3.ValorDocumento; // Mora é um valor a ser acrescido por dia apos o vencimento baseado (juros mensal total por mês 1%) // Definição dos dados do boleto4 BoletoInfo Boleto4 = new BoletoInfo(); Boleto4.NossoNumero = "2268"; Boleto4.BoletoID = 0000004; Boleto4.NumeroDocumento = Boleto4.NossoNumero; Boleto4.ValorDocumento = 3456.78; Boleto4.DataDocumento = DateTime.Now; Boleto4.DataVencimento = DateTime.Now.AddDays(20); Boleto4.Ocorrencia = Ocorrencias.Remessa; Boleto4.PercentualMulta = 0.02; Boleto4.ValorMora = (0.01 / 30) * Boleto4.ValorDocumento; Boleto4.Instrucao2 = 6; // Potestar (dependendo do banco esse é o código de protesto: Caixa, BB, Santander) Boleto4.DiasProtesto = 15; // depois de 15 dias do vencimento // Definição dos dados do boleto5 BoletoInfo Boleto5 = new BoletoInfo(); Boleto5.NossoNumero = "2269"; Boleto5.BoletoID = 0000005; Boleto5.NumeroDocumento = Boleto5.NossoNumero; Boleto5.ValorDocumento = 42.54; Boleto5.DataDocumento = DateTime.Now; Boleto5.DataVencimento = DateTime.Now.AddDays(25); Boleto5.Ocorrencia = Ocorrencias.Remessa; Boleto5.Instrucao2 = 6; // Potestar (dependendo do banco esse é o código de protesto: Caixa, BB, Santander) Boleto5.DiasProtesto = 15; // depois de 15 dias do vencimento // Protesta e sem mora // Adiciona os boletos previamente definidos no layout de registro r.Add(Boleto1, Sacado); r.Add(Boleto2, Sacado); r.Add(Boleto3, Sacado); r.Add(Boleto4, Sacado); r.Add(Boleto5, Sacado); // Se quiser exibir o processamento dos campos detalhados (para ajudar a identificar os campos) descomente a linha abaixo // r.ShowDumpLine = false; // Gera o texto de registro (com as informações de dump habilitadas acima) txtOut.Text = r.Remessa(); // Grava um novo arquivo final no diretório atual (mas sem as informações de dump, caso tenha habilitado acima, desabilite aqui abaixo) // r.ShowDumpLine = false; r.RemessaTo(MapPath("remessa.txt")); // FIM DO PROGRAMA EXEMPLO // ======================= // As linhas abaixão são apenas um exemplo para ilustrar o funcionamento dos dados processados // Muito util para conferencia do que está sendo gerado no arquivo //gvHeader1.DataSource = r.Table(typeof(CNAB240HeaderArquivoCaixa)); //gvHeader2.DataSource = r.Table(typeof(CNAB240HeaderLoteCaixa)); //gvItens1.DataSource = r.Table(typeof(CNAB240SegmentoPCaixa)); //gvItens2.DataSource = r.Table(typeof(CNAB240SegmentoQCaixa)); //gvFooter1.DataSource = r.Table(typeof(CNAB240TrailerLoteCaixa)); //gvFooter2.DataSource = r.Table(typeof(CNAB240TrailerArquivoCaixa)); //gvHeader1.DataBind(); //gvHeader2.DataBind(); //gvItens1.DataBind(); //gvItens2.DataBind(); //gvFooter1.DataBind(); //gvFooter2.DataBind(); // Exibe os boletos em tela (mesma lógica do exemplo 'GeraVarios.aspx') foreach (string cNN in r.Boletos.NossoNumeros) { BoletoWeb blt = new BoletoWeb(); blt.CssCell = "BolCell"; blt.CssField = "BolField"; form1.Controls.Add(blt); r.Boletos[cNN].GeraInstrucoes(); blt.MakeBoleto(Cedente, r.Boletos[cNN].Sacado, r.Boletos[cNN]); } }
private void SetValores() { // Exemplo abaixo baseado no boleto customizado... // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Impactro Informática (teste)"; Cedente.Banco = "001"; Cedente.Agencia = "999-7"; Cedente.Conta = "999999-7"; Cedente.Carteira = "18"; Cedente.Modalidade = "19"; Cedente.Convenio = "123456"; // ATENÇÃO: Alguns Bancos usam um código de convenio para remapear a conta do clientes Cedente.CodCedente = "123456"; // outros bancos chama isto de Codigo do Cedente ou Código do Cliente // outros usam os 2 campos para controles distintos! // Veja com atenção qual é o seu caso e qual destas variáveis deve ser usadas! // Olhe sempre os exemplos em ASP.Net se tiver dúvidas, pois lá há um exemplo para cada banco // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Impactro Informática - CNPJ: 123.456.789/00001-23"; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = NossoNumero.ToString(); Boleto.NumeroDocumento = NossoNumero.ToString(); Boleto.ValorDocumento = 160.0; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Now; Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // incrementa o nosso numero para outro boleto NossoNumero++; // Cria um objeto que calcula as informações do boleto Boleto blt = new Boleto(); blt.MakeBoleto(Cedente, Sacado, Boleto); // antes de começar a pedir as informações para o objeto, // é nescessário pedir que sejam calculado os dados (como se fosse um DataBind) blt.CalculaBoleto(); Valores = new SortedList<ValoresCampos, strTextos>(); // parte 1,2,3 Valores.Add(ValoresCampos.ParcelaPlano, new strTextos(10, 15, 0, 0, 243, 15, " ", false, StringAlignment.Center)); Valores.Add(ValoresCampos.Vencimento, new strTextos(45, 15, 223, 15, 275, 15, string.Format("{0:dd/MM/yyyy}", blt.DataVencimento), true, StringAlignment.Far)); Valores.Add(ValoresCampos.AgenciaCedente, new strTextos(45, 21, 223, 21, 275, 21, blt.AgenciaConta, false, StringAlignment.Far)); Valores.Add(ValoresCampos.Especie, new strTextos(5, 28, 108, 34, 238, 28, "R$", false, StringAlignment.Center)); Valores.Add(ValoresCampos.Quantidade, new strTextos(45, 28, 138, 34, 275, 28, (blt.Quantidade == 0) ? "" : blt.Quantidade.ToString(), false, StringAlignment.Far)); Valores.Add(ValoresCampos.ValorDocumento, new strTextos(45, 34, 223, 34, 275, 34, string.Format("{0:#,###,##0.00}", blt.ValorDocumento), true, StringAlignment.Far)); Valores.Add(ValoresCampos.DescontoAbatimento, new strTextos(45, 41, 223, 41, 275, 41, " ", false, StringAlignment.Far)); Valores.Add(ValoresCampos.MoraMulta, new strTextos(45, 53, 223, 53, 275, 53, " ", false, StringAlignment.Far)); Valores.Add(ValoresCampos.ValorCobrado, new strTextos(45, 65, 223, 65, 275, 65, " ", false, StringAlignment.Far)); Valores.Add(ValoresCampos.NossoNumero, new strTextos(45, 71, 223, 28, 275, 71, blt.NossoNumeroExibicao, false, StringAlignment.Far)); Valores.Add(ValoresCampos.NumeroDocumento, new strTextos(20, 79, 100, 28, 255, 79, blt.NumeroDocumento, false, StringAlignment.Center)); Valores.Add(ValoresCampos.SacadoResumido, new strTextos(2, 85, 0, 0, 235, 85, blt.Sacado + "\n" + blt.SacadoDocumento, false, StringAlignment.Near)); Valores.Add(ValoresCampos.Sacado, new strTextos(0, 0, 70, 69, 0, 0, blt.Sacado + " - " + blt.SacadoDocumento + "\n" + blt.SacadoEndereco + "\n" + blt.Cidade + " - " + blt.Bairro + " " + blt.UF + " CEP: " + blt.Cep, false, StringAlignment.Near)); Valores.Add(ValoresCampos.Avalista, new strTextos(0, 0, 70, 79, 0, 0, blt.Avalista, false, StringAlignment.Near)); Valores.Add(ValoresCampos.LocalPagamento, new strTextos(0, 0, 59, 15, 0, 0, "ATÉ O VENCIMENTO PAGUAVEL EM QUALQUER BANCO", false, StringAlignment.Near)); Valores.Add(ValoresCampos.Cedente, new strTextos(0, 0, 59, 21, 0, 0, blt.Cedente, false, StringAlignment.Near)); Valores.Add(ValoresCampos.DataDocumento, new strTextos(0, 0, 72, 28, 0, 0, string.Format("{0:dd/MM/yyyy}", blt.DataDocumento), false, StringAlignment.Center)); Valores.Add(ValoresCampos.EspecieDoc, new strTextos(0, 0, 126, 28, 0, 0, "RC", false, StringAlignment.Center)); Valores.Add(ValoresCampos.Aceite, new strTextos(0, 0, 146, 28, 0, 0, "N", false, StringAlignment.Center)); Valores.Add(ValoresCampos.DataProcessamento, new strTextos(0, 0, 170, 28, 0, 0, string.Format("{0:dd/MM/yyyy}", blt.DataProcessamento), false, StringAlignment.Center)); Valores.Add(ValoresCampos.UsodoBanco, new strTextos(0, 0, 70, 34, 0, 0, " ", false, StringAlignment.Center)); Valores.Add(ValoresCampos.Carteira, new strTextos(0, 0, 94, 34, 0, 0, blt.Carteira, false, StringAlignment.Center)); Valores.Add(ValoresCampos.Valor, new strTextos(0, 0, 168, 34, 0, 0, (blt.ValorDocumento == 0) ? "" : string.Format("{0:0.00}", blt.ValorDocumento), false, StringAlignment.Center)); Valores.Add(ValoresCampos.Instrucoes, new strTextos(0, 0, 62, 45, 0, 0, blt.Instrucoes, false, StringAlignment.Near)); // Campos Especiais (Banco e IPTE) Valores.Add(ValoresCampos.Banco, new strTextos(0, 0, 98, 7, 0, 0, blt.BancoCodigo, true, StringAlignment.Center)); Valores.Add(ValoresCampos.IPTE, new strTextos(0, 0, 223, 6, 0, 0, blt.LinhaDigitavel, true, StringAlignment.Far)); imgBanco = (Image)CobUtil.ResLoadImage(String.Format("{0:000}.gif", blt.BancoNumero)); imgCodBar = CobUtil.BarCodeImage(blt.CodigoBarras); }
protected void btnRemessa_Click(object sender, EventArgs e) { // (Não é o foco validar dados de entrada, e sim testar a geração de registro) // Definição dos dados do cedente - QUEM RECEBE / EMITE CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = "237"; Cedente.Agencia = "1510"; Cedente.Conta = "001466-4"; Cedente.Carteira = "09"; Cedente.Modalidade = "05"; Cedente.CedenteCOD = "00000000000004047726"; // 20 digitos //Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Pedro Alvarez Cabral"; Sacado.Documento = "123.123.134-12"; Sacado.Endereco = "Rua 21 de Abril"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Vera Cruz"; Sacado.Cep = "98765-000"; Sacado.UF = "SP"; Sacado.Email = "*****@*****.**"; //Definição das Variáveis do boleto BoletoInfo Boleto; //WebControl BoletoWeb blt; // define o emissor da remessa // Remessa r = new Remessa(Cedente); CNAB400Bradesco r = new CNAB400Bradesco(); r.Cedente = Cedente; // O lote padrão gera AADDDHH (Ano, Dia do ano, Hora) r.NumeroLote += 2000000; // inicia com 3 o numero do lote! (soma 20 anos) //r.ShowDumpReg = true; // customiza campos para Bradesco // r.onRegItem += new RemessaReg(r_onRegItem); for (int n = 0; n < Int32.Parse(txtQTD.Text); n++) { Boleto = new BoletoInfo(); Boleto.BoletoID = n; Boleto.NossoNumero = (Int32.Parse(txtNossoNumero.Text) + n).ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = double.Parse(txtValor.Text) + n; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse(txtVencimento.Text).AddDays(n); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; blt = new BoletoWeb(); dvBoletos.Controls.Add(blt); blt.ImagePath = "../imagens/"; // Define o diretório de imagens blt.ExibeReciboSacado = false; // Apenas para exibir a parte que interessa do boleto blt.CssCell = "BolCell"; blt.CssField = "BolField"; // Gera um boleto blt.MakeBoleto(Cedente, Sacado, Boleto); // Gera um registro Boleto.SacadoInit(Sacado); // obrigatório para o registro r.Boletos.Add(Boleto, null); } // o numero de exemplo '123' é apenas um numero de teste // este numero é muito importante que seja gerado de forma exclusiva e sequencial txtRemessa.Text = r.Remessa(); //r.CNAB400(123); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "(Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; /* * * // Definição dos dados do cedente * // (de acordo com o exemplo fornecido na documentação) * CedenteInfo Cedente = new CedenteInfo(); * Cedente.Cedente = "Exemplo de empresa cedente"; * Cedente.Banco = "151-1"; * Cedente.Agencia = "0001-9"; * Cedente.Conta = "005432-4"; * Cedente.Carteira = "9"; * Cedente.Modalidade = "04"; * * // Definição dos dados do boleto * BoletoInfo Boleto = new BoletoInfo(); * Boleto.NossoNumero = "990000001"; * Boleto.NumeroDocumento = "1"; * Boleto.ValorDocumento = 350; * Boleto.DataDocumento = DateTime.Now; * Boleto.DataVencimento = new DateTime(2000, 7, 15); * */ // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = "151-1"; Cedente.Agencia = "123-4"; Cedente.Conta = "4455-1"; Cedente.CodCedente = "4"; Cedente.Carteira = "1"; Cedente.Modalidade = "04"; // Definição dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "990000003"; Boleto.NumeroDocumento = "3"; Boleto.ValorDocumento = 212.5; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2008, 9, 8); Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); // É possivel também customizar a linha referente o local de pagamento: bltPag.Boleto.LocalPagamento = "Pague Preferencialmente no BANCO NOSSA CAIXA S.A. ou na rede bancária até o vencimento"; // Exibe o codigo de barras devidamente formatado e separado lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 8, 4, 1, 6, 3, 1, 1 }); }
protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "(Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; /* // Definição dos dados do cedente // (de acordo com o exemplo fornecido na documentação) CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = "151-1"; Cedente.Agencia = "0001-9"; Cedente.Conta = "005432-4"; Cedente.Carteira = "9"; Cedente.Modalidade = "04"; // Definição dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "990000001"; Boleto.NumeroDocumento = "1"; Boleto.ValorDocumento = 350; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2000, 7, 15); */ // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = "151-1"; Cedente.Agencia = "123-4"; Cedente.Conta = "4455-1"; Cedente.CodCedente = "4"; Cedente.Carteira = "1"; Cedente.Modalidade = "04"; // Definição dos dados do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "990000003"; Boleto.NumeroDocumento = "3"; Boleto.ValorDocumento = 212.5; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = new DateTime(2008, 9, 8); Boleto.Instrucoes = "Todas as as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // monta o boleto com os dados específicos nas classes bltPag.MakeBoleto(Cedente, Sacado, Boleto); // É possivel também customizar a linha referente o local de pagamento: bltPag.Boleto.LocalPagamento = "Pague Preferencialmente no BANCO NOSSA CAIXA S.A. ou na rede bancária até o vencimento"; // Exibe o codigo de barras devidamente formatado e separado lblCodBar.Text = bltPag.Boleto.CodigoBarrasFormatado(new int[] { 1, 8, 4, 1, 6, 3, 1, 1 }); }
private void frmCustromizado_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Impactro Informática (teste)"; Cedente.Banco = "001"; Cedente.Agencia = "999-7"; Cedente.Conta = "999999-7"; Cedente.Carteira = "18"; Cedente.Modalidade = "19"; Cedente.Convenio = "123456"; // ATENÇÃO: Alguns Bancos usam um código de convenio para remapear a conta do clientes Cedente.CodCedente = "123456"; // outros bancos chama isto de Codigo do Cedente ou Código do Cliente // outros usam os 2 campos para controles distintos! // Veja com atenção qual é o seu caso e qual destas variáveis deve ser usadas! // Olhe sempre os exemplos em ASP.Net se tiver dúvidas, pois lá há um exemplo para cada banco // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "Nome Avalista / Documento"; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.NossoNumero = "12345"; Boleto.NumeroDocumento = "12345"; Boleto.ValorDocumento = 160.0; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Now; Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; // Cria um objeto que calcula as informações do boleto Boleto blt = new Boleto(); blt.MakeBoleto(Cedente, Sacado, Boleto); // antes de começar a pedir as informações para o objeto, // é nescessário pedir que sejam calculado os dados (como se fosse um DataBind) blt.CalculaBoleto(); // Coloca no TextBox o valor da linha digitável lblIPTE.Text = blt.LinhaDigitavel; // O nosso numero exibição é o numero EFETIVAMENTE que deve ser exibido // em vários casos os bancos exeigem formatação especial para a exibição // deste campo e também o calculo de digitos verificadores, assim nesta // variável já existe todas estas exigencias prontas lblNossoNumero.Text = blt.NossoNumeroExibicao; // Não é nescessário formatar com {0:C} pois a 'Especie' (moeda) geralmente // é indicada em um campo a parte lblValor.Text = string.Format("{0:#,###,##0.00}", blt.ValorDocumento); // Formata a data sempre exibindo 2 digitos para dia e mes, e 4 para ano lblVencimento.Text = string.Format("{0:dd/MM/yyyy}", blt.DataVencimento); // Obtem a imagem do código de barras picCodBaras.Image = CobUtil.BarCodeImage(blt.CodigoBarras); // A classe UTIL, contem as rotinas de geração de codigo de barras, // pois o codigo de barras, não é usado somente em boletos, mas em diversas aplicações // desta forma é possivel gerar etiquetas de produtos, identificações de usuário, etc... // apenas coloca o nome do avalista na tela - opcional lblAvalista.Text = "Avalista: " + Sacado.Avalista; }
// Mesma logica do exemplo 'geravarios' protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Endereco = "rua Qualquer no Bairro da Cidade"; Cedente.CNPJ = "12.345.678/00001-12"; Cedente.Banco = "104"; Cedente.Agencia = "4353"; Cedente.Conta = "00000939-9"; Cedente.Carteira = "2"; // 1-Registrada ou 2-Sem registro Cedente.CodCedente = "658857"; Cedente.Convenio = "1234"; // CNPJ do PV da conta do cliente = 00.360.305/4353-48 (usado em alguns casos) Cedente.Informacoes = "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)<br/>" + "Para pessoas com deficiência auditiva ou de fala: 0800 726 2492<br/>" + "Ouvidoria: 0800 725 7474 (reclamações não solucionadas e denúncias)<br/>" + "<a href='http://caixa.gov.br' target='_blank'>caixa.gov.br</a>"; BoletoTextos.LocalPagamento = "PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "CNPJ: 123.456.789/00001-23"; // Para aprovar a homologação junto a caixa é necessário apresentar 10 boletos com os 10 digitos de controle da linha digitável diferentes // E mais outros 10 com o digito de controle do código de barras // Assim a ideia é criar 2 listas para ir memorizando os boletos já validos e deixa-los entrar em tela List<int> DAC1 = new List<int>(); List<int> DAC2 = new List<int>(); for (int nBoleto = 1001; nBoleto < 1100; nBoleto++) { // Definição dos dados do boleto de forma sequencial BoletoInfo Boleto = new BoletoInfo() { NumeroDocumento = nBoleto.ToString(), NossoNumero = nBoleto.ToString(), ValorDocumento = 123.45, DataVencimento = DateTime.Now, DataDocumento = DateTime.Now, }; // Componente HTML do boleto que poderá ser ou não colocado em tela BoletoWeb blt = new BoletoWeb(); // Junta as informações para fazer o calculo blt.MakeBoleto(Cedente, Sacado, Boleto); // A instancia 'blt' é apenas un Webcontrol que renderiza o boleto HTML, tudo fica dentro da propriedade 'Boleto' blt.Boleto.CalculaBoleto(); // 10491.23456 60000.200042 00000.000844 4 67410000012345 // 012345678901234567890123456789012345678901234567890123 // 000000000111111111122222222223333333333444444444455555 int D1 = int.Parse(blt.Boleto.LinhaDigitavel.Substring(38, 1)); int D2 = int.Parse(blt.Boleto.LinhaDigitavel.Substring(35, 1)); // De acordo com o banco: // Todos os Dígitos Verificadores Geral do Código de Barras possíveis(de 1 a 9) ou seja, campo 4 da Representação Numérica // Todas os Dígitos Verificadores do Campo Livre possíveis(de 0 a 9), 10ª posição do campo 3 da Representação Numérica bool lUsar = false; if (!DAC1.Contains(D1)) { lUsar = true; DAC1.Add(D1); } if (!DAC2.Contains(D2)) { lUsar = true; DAC2.Add(D2); } if (lUsar) { // Apenas configura o As classe CSS de layout blt.CssCell = "BolCell"; blt.CssField = "BolField"; // Adiciona a instancia na tela do boleto valido para uso form1.Controls.Add(blt); } // Quando todas as possibilidades concluidas em até 100 boletos, já pode terminar... if (DAC1.Count == 9 && DAC2.Count == 10) break; // o Modulo 11 padrão não tem o digito Zero, mas o especial para calculo do nosso numero tem // Se o boleto foi usado e não acabou, então gera uma quebra de linha if (lUsar) form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>")); } // Em geral esse teste gera 11 ou mais boletos contemplando todos os casos // Salve como PDF e envie para homologação }
// Mesma logica do exemplo 'geravarios' protected void Page_Load(object sender, EventArgs e) { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Endereco = "rua Qualquer no Bairro da Cidade"; Cedente.CNPJ = "12.345.678/00001-12"; Cedente.Banco = "104"; Cedente.Agencia = "4353"; Cedente.Conta = "00000939-9"; Cedente.Carteira = "2"; // 1-Registrada ou 2-Sem registro Cedente.CodCedente = "658857"; Cedente.Convenio = "1234"; // CNPJ do PV da conta do cliente = 00.360.305/4353-48 (usado em alguns casos) Cedente.Informacoes = "SAC CAIXA: 0800 726 0101 (informações, reclamações, sugestões e elogios)<br/>" + "Para pessoas com deficiência auditiva ou de fala: 0800 726 2492<br/>" + "Ouvidoria: 0800 725 7474 (reclamações não solucionadas e denúncias)<br/>" + "<a href='http://caixa.gov.br' target='_blank'>caixa.gov.br</a>"; BoletoTextos.LocalPagamento = "PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Fabio Ferreira (Teste para homologação)"; Sacado.Documento = "123.456.789-99"; Sacado.Endereco = "Av. Paulista, 1234"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Centro"; Sacado.Cep = "12345-123"; Sacado.UF = "SP"; Sacado.Avalista = "CNPJ: 123.456.789/00001-23"; // Para aprovar a homologação junto a caixa é necessário apresentar 10 boletos com os 10 digitos de controle da linha digitável diferentes // E mais outros 10 com o digito de controle do código de barras // Assim a ideia é criar 2 listas para ir memorizando os boletos já validos e deixa-los entrar em tela List <int> DAC1 = new List <int>(); List <int> DAC2 = new List <int>(); for (int nBoleto = 1001; nBoleto < 1100; nBoleto++) { // Definição dos dados do boleto de forma sequencial BoletoInfo Boleto = new BoletoInfo() { NumeroDocumento = nBoleto.ToString(), NossoNumero = nBoleto.ToString(), ValorDocumento = 123.45, DataVencimento = DateTime.Now, DataDocumento = DateTime.Now, }; // Componente HTML do boleto que poderá ser ou não colocado em tela BoletoWeb blt = new BoletoWeb(); // Junta as informações para fazer o calculo blt.MakeBoleto(Cedente, Sacado, Boleto); // A instancia 'blt' é apenas un Webcontrol que renderiza o boleto HTML, tudo fica dentro da propriedade 'Boleto' blt.Boleto.CalculaBoleto(); // 10491.23456 60000.200042 00000.000844 4 67410000012345 // 012345678901234567890123456789012345678901234567890123 // 000000000111111111122222222223333333333444444444455555 int D1 = int.Parse(blt.Boleto.LinhaDigitavel.Substring(38, 1)); int D2 = int.Parse(blt.Boleto.LinhaDigitavel.Substring(35, 1)); // De acordo com o banco: // Todos os Dígitos Verificadores Geral do Código de Barras possíveis(de 1 a 9) ou seja, campo 4 da Representação Numérica // Todas os Dígitos Verificadores do Campo Livre possíveis(de 0 a 9), 10ª posição do campo 3 da Representação Numérica bool lUsar = false; if (!DAC1.Contains(D1)) { lUsar = true; DAC1.Add(D1); } if (!DAC2.Contains(D2)) { lUsar = true; DAC2.Add(D2); } if (lUsar) { // Apenas configura o As classe CSS de layout blt.CssCell = "BolCell"; blt.CssField = "BolField"; // Adiciona a instancia na tela do boleto valido para uso form1.Controls.Add(blt); } // Quando todas as possibilidades concluidas em até 100 boletos, já pode terminar... if (DAC1.Count == 9 && DAC2.Count == 10) { break; // o Modulo 11 padrão não tem o digito Zero, mas o especial para calculo do nosso numero tem } // Se o boleto foi usado e não acabou, então gera uma quebra de linha if (lUsar) { form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>")); } } // Em geral esse teste gera 11 ou mais boletos contemplando todos os casos // Salve como PDF e envie para homologação }
// Este exemplo foi baseado no exemplo: DirectPrint.aspx // Para criação de controles, os objetos devem ser incluidos sempre no Page_Init para não corromper a viewstate protected void Page_Init(object sender, EventArgs e) { DataTable tbDados; BoletoWeb blt; tbDados = new DataTable(); // Cria atabela em memoria // Cria as colunas nos respectivos tipos tbDados.Columns.Add("Nome", typeof(string)); tbDados.Columns.Add("Vencimento", typeof(DateTime)); tbDados.Columns.Add("Valor", typeof(double)); tbDados.Columns.Add("NossoNumero", typeof(int)); // insere os dados tbDados.Rows.Add("Fábio", new DateTime(2008, 12, 30), 123.45, 345678); tbDados.Rows.Add("Érika", new DateTime(2008, 7, 25), 60, 12332); tbDados.Rows.Add("Milena", new DateTime(2008, 10, 20), 10.30, 234); tbDados.Rows.Add("Cecília", DateTime.MinValue, 200.55, 456445); tbDados.Rows.Add("qualquer um", new DateTime(2008, 2, 12), 7890.5, 56756); int nBoleto = 0; foreach (DataRow row in tbDados.Rows) { // o principal é inserir o componente dinakicamente dentro de um container (controle que suporte outros controles, exemplo: Form, Panel) blt = new BoletoWeb(); // para caber 2 em uma página não será usado o recibo do sacado blt.ExibeReciboSacado = false; // configura as propriedades de estilo blt.CssCell = "BolCell"; blt.CssField = "BolField"; // Adiciona a instancia na tela form1.Controls.Add(blt); nBoleto++; // Mude o ZOOM do CSS BoletoWeb no arquivo .aspx para caber até 3 boletos, ai o módulo da divisão passa a ser 3 //if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras if (nBoleto % 2 == 0) // somente nos boletos pares a iniciar de 2 força uma quebra de linha form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>")); else // nos boletos impares adiciona a imagem de recorte form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif'>")); // Note que na página ASPX, existe uma referencia a classe "BoeltoWeb" // Nesta classe CSS é definido o espaçamento entra cada boleto e a quebra de página // Depois segue normalmente as definições estaticas ou vindas do banco de dados // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "outro cedente!"; Cedente.Banco = "237"; Cedente.Agencia = "1234-5"; Cedente.Conta = "123456-7"; Cedente.Carteira = "06"; Cedente.Modalidade = "11"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)row["Nome"]; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)row["Vencimento"]; Boleto.ValorDocumento = (double)row["Valor"]; Boleto.NossoNumero = row["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; blt.MakeBoleto(Cedente, Sacado, Boleto); } }
// Este exemplo tem os mesmos parametros, mas a imagem é rederizada de forma externa // A instancia do boleto é serializada e fica na sessão ou cache, e é recuperada pelo gerador da imagem do boleto protected void Page_Init(object sender, EventArgs e) { // A Definição dos cedente fica dentro do gerador da imagem // Cria uma tabela em memoria DataTable tbDados = new DataTable(); // Estrutura da tabela tbDados.Columns.Add("Nome", typeof(string)); tbDados.Columns.Add("Vencimento", typeof(DateTime)); tbDados.Columns.Add("Valor", typeof(double)); tbDados.Columns.Add("NossoNumero", typeof(int)); // Insere os dados tbDados.Rows.Add("Fábio", new DateTime(2015, 12, 30), 123.45, 345678); tbDados.Rows.Add("Érika", new DateTime(2015, 7, 25), 60, 12332); tbDados.Rows.Add("Milena", new DateTime(2015, 10, 20), 10.30, 234); tbDados.Rows.Add("Cecília", new DateTime(2015, 3, 4), 20.53, 456445); tbDados.Rows.Add("Roberto", new DateTime(2015, 6, 5), 32.78, 47319); tbDados.Rows.Add("Marcelo", DateTime.MinValue, 20320.23, 18445); tbDados.Rows.Add("Ricardo", DateTime.MinValue, 97023.51, 2465445); tbDados.Rows.Add("Maria", new DateTime(2016, 9, 12), 7890.23, 61756); tbDados.Rows.Add("Samara", new DateTime(2015, 8, 12), 78.1, 656); tbDados.Rows.Add("Marcio", new DateTime(2015, 2, 10), 790.3, 5672); int nBoleto = 0; foreach (DataRow row in tbDados.Rows) { // O loop apenas gera os objetos que serão memorizados em sessão ou cache // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)row["Nome"]; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)row["Vencimento"]; Boleto.ValorDocumento = (double)row["Valor"]; Boleto.NossoNumero = row["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; // Vincula o Sacado ao boleto Boleto.SacadoInit(Sacado); // Crio um identificador unico para o boleto, poderia ser só um ID, ou mesmo o NossoNumero, mas depende dos critérios de segurança string cID = "boleto-" + Guid.NewGuid().ToString(); // Se não for StateServer, ou sessão em banco de dados é possivel usar Session[cID] = Boleto; // Funciona é mais simples, mas a memoria vai ficando com todos os boletos gerados até a sessão expirar // Uma forma melhor é colocar em cache, com tempo de expiração //Cache.Insert(cID, Boleto, null, DateTime.MaxValue, new TimeSpan(0, 5, 0)); // Adiciona a imagem do boleto em base64 no HTML // Para facilitar a depuração também adiciono um link para a propria imagem form1.Controls.Add(new LiteralControl("<a href='BoletoImagem2.ashx?id=" + cID + "' target='_blank'><img src='BoletoImagem2.ashx?id=" + cID + "' /></a>")); // form1.Controls.Add(new LiteralControl("<img src='BoletoImagem2.ashx?id=" + cID + "' />")); // incrementa o contador de boletos nBoleto++; if (nBoleto % 3 == 0) // Mas aplicar muito zoom pode dar problema na leitura do código de barras // somente nos boletos pares a iniciar de 2 força uma quebra de linha form1.Controls.Add(new LiteralControl("<div style='page-break-after: always'><br/></div>")); else // if (nBoleto<tbDados.Rows.Count) // caso não queira imprimir a ultima imagem de tesoura // nos boletos impares adiciona a imagem de recorte, ou um HR // form1.Controls.Add(new LiteralControl("<img src='imagens/corte.gif' style='margin: 5px 0 5px 0;'/>")); form1.Controls.Add(new LiteralControl("<hr size='1' style='color: gray; margin: 5px 0 5px 0;'/>")); } }
public void Boleto_Banestes() { // Ainda de acordo com o exemplo em: https://github.com/impactro/Boleto-Test/wiki/Criando-Layouts/_edit // Dados do Pagador SacadoInfo s = new SacadoInfo() { Sacado = "Fabio Ferreira" }; // Informações do Boleto BoletoInfo b = new BoletoInfo() { DataVencimento = DateTime.Parse("30/07/2000"), ValorDocumento = 75, NossoNumero = "178" }; // Cria uma instancia do objeto que calcula e monta um boleto Boleto bol = new Boleto(); // Seta as variáveis (parametros) com os dados do recebedor (c), pagador (s), e as informações do boleto (b) bol.MakeBoleto(Cedente, s, b); // Calcula efetivamente o boleto bol.CalculaBoleto(); // Imprime a linha digitável no console e alguns outros dados para conferencia Console.WriteLine("Linha Digitável: " + bol.LinhaDigitavel); Console.WriteLine("Agência/Conta: " + bol.AgenciaConta); Console.WriteLine("Nosso Número: " + bol.NossoNumeroExibicao); Console.WriteLine("Fator Vencimento: " + CobUtil.CalcFatVenc(bol.DataVencimento)); // De acordo com a página 13 deve gerar exatamente a linha abaixo Assert.IsTrue(bol.LinhaDigitavel == "02190.00007 17800.006573 33154.021415 7 10270000007500"); // Página 38 da documentação // 02190.00007 17800.006573 33154.021415 3 10270000007500 // O exemplo está com o digito errado! // Salva a imagem do boleto para conferencia visual //bol.Save("boleto.png"); // Baseado no segundo exemplo da página 34 (só vou especificar o que é realmente necessário) Console.WriteLine(); bol = new Boleto(); // reseta tudo! CedenteInfo c = new CedenteInfo() { Banco = "021-3", CodCedente = "7730070", Modalidade = "4" }; // E reaproveiro a instancia (Alterando) b.DataVencimento = DateTime.Parse("09/12/2000"); b.ValorDocumento = 131.50; b.NossoNumero = "10297"; bol.MakeBoleto(c, s, b); // Calcula efetivamente o boleto bol.CalculaBoleto(); // Imprime a linha digitável no console e alguns outros dados para conferencia Console.WriteLine("Linha Digitável: " + bol.LinhaDigitavel); Console.WriteLine("Agência/Conta: " + bol.AgenciaConta); Console.WriteLine("Nosso Número: " + bol.NossoNumeroExibicao); Console.WriteLine("Fator Vencimento: " + CobUtil.CalcFatVenc(bol.DataVencimento)); // De acordo com a página 13 deve gerar exatamente a linha abaixo Assert.IsTrue(bol.LinhaDigitavel == "02190.00106 29700.007734 00704.021823 3 11590000013150"); // Note que o digito verificador é 3... acho que houve confusão na digitação da documentação // E este número retorna exatamente o informado na página 32: 021.9.3.1159.0000013150-0001029700007730070402182 }
// Para imprimir uma serie de boletos onde os dados estão vindo de um datatable void pDoc_PrintPageTabela(object sender, PrintPageEventArgs e) { try { // Definição dos dados do cedente CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "outro cedente de outro banco!"; Cedente.Banco = "237"; Cedente.Agencia = "1234-5"; Cedente.Conta = "123456-7"; Cedente.Carteira = "06"; Cedente.Modalidade = "11"; // Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = (string)tbDados.Rows[nReg]["Nome"]; // Definição das Variáveis do boleto BoletoInfo Boleto = new BoletoInfo(); Boleto.DataVencimento = (DateTime)tbDados.Rows[nReg]["Vencimento"]; Boleto.ValorDocumento = (double)tbDados.Rows[nReg]["Valor"]; Boleto.NossoNumero = tbDados.Rows[nReg]["NossoNumero"].ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; // Cria uma nova instancia totalmente idependente BoletoForm bol = new BoletoForm(); // monta o boleto com os dados específicos nas classes bol.MakeBoleto(Cedente, Sacado, Boleto); bol.PrintType = PrintTypes.Documet; // A definição do tipo carne ou normal já define o RenderBoleto bol.Boleto.Carne = chkCarne.Checked; // bol.Boleto.RenderBoleto=new BoletoCarne(); // Na pratica definir como carne é a mesma coisa que instanciar a classe de carne no RenderBoleto PrintRecibo(bol); bol.Print(e.Graphics); nReg++; e.HasMorePages = nReg < tbDados.Rows.Count; if (!e.HasMorePages) nReg = 0; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
protected void btnRemessa_Click(object sender, EventArgs e) { // (Não é o foco validar dados de entrada, e sim testar a geração de registro) // Definição dos dados do cedente - QUEM RECEBE / EMITE CedenteInfo Cedente = new CedenteInfo(); Cedente.Cedente = "Exemplo de empresa cedente"; Cedente.Banco = Request["banco"] ?? "341"; Cedente.Agencia = "1510"; Cedente.Conta = "001466-4"; Cedente.Carteira = "09"; Cedente.Modalidade = "05"; Cedente.CedenteCOD = "00000000000004047726"; // 20 digitos //Definição dos dados do sacado SacadoInfo Sacado = new SacadoInfo(); Sacado.Sacado = "Pedro Alvarez Cabral"; Sacado.Documento = "123.123.134-12"; Sacado.Endereco = "Rua 21 de Abril"; Sacado.Cidade = "São Paulo"; Sacado.Bairro = "Vera Cruz"; Sacado.Cep = "98765-000"; Sacado.UF = "SP"; Sacado.Email = "*****@*****.**"; //Definição das Variáveis do boleto BoletoInfo Boleto; //WebControl BoletoWeb blt; // define o emissor da remessa // Remessa r = new Remessa(Cedente); CNAB400Bradesco r = new CNAB400Bradesco(); r.Cedente = Cedente; // O lote padrão gera AADDDHH (Ano, Dia do ano, Hora) r.NumeroLote += 2000000; // inicia com 3 o numero do lote! (soma 20 anos) //r.ShowDumpReg = true; // customiza campos para Bradesco // r.onRegItem += new RemessaReg(r_onRegItem); for (int n = 0; n < Int32.Parse(txtQTD.Text); n++) { Boleto = new BoletoInfo(); Boleto.BoletoID = n; Boleto.NossoNumero = (Int32.Parse(txtNossoNumero.Text) + n).ToString(); Boleto.NumeroDocumento = Boleto.NossoNumero; Boleto.ValorDocumento = double.Parse(txtValor.Text) + n; Boleto.DataDocumento = DateTime.Now; Boleto.DataVencimento = DateTime.Parse(txtVencimento.Text).AddDays(n); Boleto.Instrucoes = "Todas as informações deste bloqueto são de exclusiva responsabilidade do cedente"; blt = new BoletoWeb(); dvBoletos.Controls.Add(blt); blt.ImagePath = "../imagens/"; // Define o diretório de imagens blt.ExibeReciboSacado = false; // Apenas para exibir a parte que interessa do boleto blt.CssCell = "BolCell"; blt.CssField = "BolField"; // Gera um boleto blt.MakeBoleto(Cedente, Sacado, Boleto); // Gera um registro Boleto.SacadoInit(Sacado); // obrigatório para o registro r.Boletos.Add(Boleto,null); } // o numero de exemplo '123' é apenas um numero de teste // este numero é muito importante que seja gerado de forma exclusiva e sequencial txtRemessa.Text = r.Remessa(); //r.CNAB400(123); }