ASP.NET - Gerando boletos bancários II


Neste artigo eu vou mostrar como você pode gerar boletos bancários usando o framework desenvolvimento pelo grupo Net.Raptors. O link para download do framework é :  http://www.dotnetraptors.com.br/start na seção Downloads.

Na verdade você não precisa usar todo o framework para gerar os seus boletos bancários basta usar a classe Boleto.cs. A classe esta na linguagem C# e eu vou usá-la neste formato.

Neste artigo eu vou aproveitar e mostrar dois recursos legais que você pode usar nas suas aplicações ASP.NET:

  1. A utilização de controles de usuários , Web User Controls , que são controles que podem ser criados como se fossem paginas asp.net e reutilizadas em seus projetos;

  2. A utilização de Profiles para persistir valores entre requisições;

Nota: Para saber mais sobre Web User Controls e Profiles acompanhe os artigos:

Abra o Visual Web Developer Express Edition e crie um novo web site através da opção File->New web site do menu com o nome boletoBancario.

A página Default.aspx do site deverá apresentar um formulário para preenchimento dos dados necessários a geração do boleto. Geralmente em uma aplicação este formulário não existe , as informações são coletadas de diversas fontes e aglutinadas no momento da geração do boleto. Como eu estou demonstrando como você deve usar a classe para gerar boletos eu criei este formulário para tornar mais didática a apresentação.

O formulário na página Default.aspx poderia ser construído diretamente na página usando tabelas ou outro recurso como CSS, mas eu vou usar um web user control para mostrar como você pode criar controles e reutilizá-los em suas páginas asp.net.

Vamos começar criando o controle chamado dadosboleto.ascx , repare que a extensão do arquivo indica que este é um Web user control. No menu WebSite selecione a opção Add New Item e na janela templates escolha a opção  Web User Control indicando o nome dadosBoleto.ascx  

Estando no arquivo dadosBoleto.ascx no modo Design podemos criar o formulário web para entrada de dados para geração dos boletos. Os Boletos geralmente usam informações do próprio Documento , do Sacado e do Cedente, desta forma iremos criar um formulário com 3 secções e usar as informações que a classe Boleto.cs nos disponibiliza para geração dos boletos.

A partir do menu Layout selecione Insert Table e defina 25 linhas  e duas colunas para a tabela a ser criada. A seguir inclua controles TextBox a partir da Toolbox de forma a obter o seguinte leiaute do formulário: (Eu já atribui valores a propriedade Text dos controles)

Ao terminar salve o arquivo que estará pronto para ser usado na página Default.aspx só faltando um pequeno detalhe que iremos implementar a seguir.

No evento Click do botão - Salvar Dados e Gerar Boleto - iremos usar o recurso de Profile. Antes de podermos usar o recurso devemos habilitar o seu uso efetuando a sua definição no arquivo de configuração Web.config.

Abra então o arquivo Web.Config e defina abaixo da tag <system.web> o código que defina as propriedades do Profile que iremos usar na aplicação:

...

<system.web>

<anonymousIdentification enabled="true"/>

<profile>

<properties>

<group name="DadosDocumento">

<add name="Sequencial" allowAnonymous="true" type="string"/>

<add name="DataEmissao" allowAnonymous="true" type="string"/>

<add name="DataVencimento" allowAnonymous="true" type="string"/>

<add name="DataDocumento" allowAnonymous="true" type="string"/>

<add name="DataProcessamento" allowAnonymous="true" type="string"/>

<add name="NumeroDocumento" allowAnonymous="true" type="string"/>

<add name="Valor" allowAnonymous="true" type="string"/>

</group>

<group name="DadosCedente">

<add name="Aceite" allowAnonymous="true" type="boolean" defaultValue="true"/>

<add name="Carteira" allowAnonymous="true" type="string"/>

<add name="Contrato" allowAnonymous="true" type="string"/>

<add name="NomeCedente" allowAnonymous="true" type="string"/>

<add name="AgenciaCedente" allowAnonymous="true" type="string"/>

<add name="ContaCedente" allowAnonymous="true" type="string"/>

<add name="DVContaCedente" allowAnonymous="true" type="string"/>

<add name="instrucao" allowAnonymous="true" type="string" defaultValue="NÆo receber ap¢s o vencimento"/>

</group>

<group name="DadosCliente">

<add name="NomeSacado" allowAnonymous="true" type="string"/>

<add name="CPF_CNPJSacado" allowAnonymous="true" type="string"/>

<add name="EnderecoSacado" allowAnonymous="true" type="string"/>

<add name="Bairro" allowAnonymous="true" type="string"/>

<add name="Cidade" allowAnonymous="true" type="string"/>

<add name="Estado" allowAnonymous="true" type="string"/>

<add name="Cep" allowAnonymous="true" type="string"/>

</group>

</properties>

</profile>
....
...

Explicando:

Agora podemos acessar o Profile definido e salvar os dados que forem informados no do controle de usuário dadosBoleto.ascx usando o seguinte código:

Protected Sub btnSalvarDados_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSalvarDados.Click

'salvar dados do Boleto no profile

'dados do Documento

With Profile.DadosDocumento

   .DataDocumento = txtDataDocumento.Text

   .DataEmissao = txtDataEmissao.Text

   .DataProcessamento = txtDataProcessamento.Text

   .DataVencimento = txtDataVencimento.Text

   .NumeroDocumento = txtNumeroDocumento.Text

   .Sequencial = txtSequencial.Text

   .Valor = txtValor.Text

End With


'dados do Cedente

With Profile.DadosCedente

   .Aceite = True

   .Carteira = txtCarteira.Text

   .Contrato = txtNumeroContrato.Text

   .NomeCedente = txtNomeCedente.Text

   .AgenciaCedente = txtAgenciaCedente.Text

   .ContaCedente = txtContaCedente.Text

   .DVContaCedente = txtDVContaCedente.Text

   .instrucao = txtInstrucoes.Text

End With
 

'dados do Sacado

With Profile.DadosCliente

   .NomeSacado = txtNomeSacado.Text

   .CPF_CNPJSacado = txtCPF_CNPJSacado.Text

   .EnderecoSacado = txtEnderecoSacado.Text

   .Cidade = txtCidade.Text

   .Estado = txtEstado.Text

   .Bairro = txtBairro.Text

   .Cep = txtCep.Text

End With

Response.Redirect("boletosBancoBrasil.aspx")

End Sub

Note que após salvar os dados estamos redirecionando para a página boletosBancoBrasil.aspx para que os boletos sejam gerados.

Voltando a página Default.aspx vamos incluir um logotipo qualquer na página, eu inserir o logotipo Macoratti.net, e em seguida vamos arrastar o controle dadosBoleto.ascx criado acima para a página Default.aspx de forma termos o seguinte resultado:

 Agora só falta criamos a página boletosBancoBrasil.aspx e obter as informações salvas no Profile para gerar o boleto. Neste momento vou falar um pouco da classe Boleto.cs.

Para poder usar a classe e gerar os boletos você deve tomar as seguintes providências:

Se olharmos a janela Solution Explorer do nosso projeto iremos ver o seguinte os seguintes arquivos:

O código que devemos incluir no formulário boletosBancoBrasil.aspx é o seguinte:

Imports dotnetraptors.Brazil.Boleto


Partial
Class boletosBancoBrasil

       Inherits System.Web.UI.Page
 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

     gerarBoletoBB()

End Sub
 

Private Sub gerarBoletoBB()


Dim
bolBB As Boleto = New
BoletoBrasil


bolBB.Aceite = Profile.DadosCedente(
"Aceite")

bolBB.CedenteAgencia = Profile.DadosCedente("AgenciaCedente")

bolBB.CedenteConta = Profile.DadosCedente("ContaCedente")

bolBB.CedenteContaDV = Profile.DadosCedente("DVContaCedente")

bolBB.CedenteNome = Profile.DadosCedente("NomeCedente")

bolBB.Carteira = Int32.Parse(Profile.DadosCedente("Carteira"))

bolBB.Instrucao1 = Profile.DadosCedente("instrucao")

'

bolBB.Sequencial = Convert.ToInt32(Profile.DadosDocumento("Sequencial"))

bolBB.Documento = Profile.DadosDocumento("NumeroDocumento")

bolBB.DtDocumento = Convert.ToDateTime(Profile.DadosDocumento("DataDocumento"))

bolBB.DtEmissao = Convert.ToDateTime(Profile.DadosDocumento("DataEmissao"))

bolBB.DtProcessamento = Convert.ToDateTime(Profile.DadosDocumento("DataProcessamento"))

bolBB.DtVencimento = Convert.ToDateTime(Profile.DadosDocumento("DataVencimento"))

bolBB.Valor = CSng(Convert.ToDouble(Profile.DadosDocumento("Valor")))

'

bolBB.SacadoNome = Profile.DadosCliente("NomeSacado")

bolBB.SacadoEndereco = Profile.DadosCliente("EnderecoSacado")

bolBB.SacadoCPF_CNPJ = Profile.DadosCliente("CPF_CNPJSacado")

bolBB.SacadoCidade = Profile.DadosCliente("Cidade")

bolBB.SacadoUF = Profile.DadosCliente("Estado")

bolBB.SacadoBairro = Profile.DadosCliente("Bairro")

bolBB.SacadoCEP = Profile.DadosCliente("Cep")


Dim
geraBoleto As New
HTMLBoleto()

geraBoleto.ImagesFolder = "imagesBoleto"

geraBoleto.AddBoleto(bolBB)

geraBoleto.SaveToFile("boletoBB")

Response.Write(geraBoleto.ToString())

End Sub


End
Class

Note que eu estou instanciando a classe BoletoBrasil e atribuindo os valores persistidos via Profile às propriedades definidas na classe para geração do boleto; além disso você deve definir o local das imagens para gerar os boletos usando a propriedade geraBoleto.ImagesFolder.

Nota: Você pode gerar boletos para os seguintes bancos: CEF , Bradesco, Itaú, HSBC e Banco do Brasil.

Executando o projeto e clicando no botão para gerar o boleto iremos obter:

Percebeu que eu estou usando a linguagem VB.NET e a classe esta na linguagem C# e não tivemos problema algum ?

Bem, você poderá efetuar mais testes e eu sugiro que você imprima um boleto e tente efetuar o pagamento antes de por o boleto em produção.

Pegue o projeto completo aqui : boletoBancario.zip (sem a base de dados)

Eu sei é apenas ASP.NET mas eu gosto...

referências:


José Carlos Macoratti