README.markdown in boleto_bancario-0.0.1.beta vs README.markdown in boleto_bancario-0.0.2

- old
+ new

@@ -1,6 +1,6 @@ -# BoletoBancario +# Boleto Bancario Emissão de Boletos Bancários em Ruby. Foi colocado um esforço enorme para tornar a gem **simples e principalmente, flexível**. @@ -23,18 +23,24 @@ gem install boleto_bancario ## Documentação -Seguimos todas as documentações que estão dentro do repositório: +Seguimos todas as documentações descritas abaixo: -* [Bradesco](https://github.com/tomas-stefano/boleto_bancario/tree/master/documentacoes_dos_boletos/bradesco) -* [Banco do Brasil](https://github.com/tomas-stefano/boleto_bancario/tree/master/documentacoes_dos_boletos/banco_brasil) -* [Itaú](https://github.com/tomas-stefano/boleto_bancario/tree/master/documentacoes_dos_boletos/itau) -* [Santander](https://github.com/tomas-stefano/boleto_bancario/tree/master/documentacoes_dos_boletos/santander) +* [Banco do Brasil](documentacoes_dos_boletos/banco_brasil) +* [Banrisul](documentacoes_dos_boletos/banrisul) +* [Bradesco](documentacoes_dos_boletos/Bradesco) +* [Caixa](documentacoes_dos_boletos/Caixa) +* [HSBC](documentacoes_dos_boletos/HASBC) +* [Itaú](documentacoes_dos_boletos/Itau) +* [Real](documentacoes_dos_boletos/Real) +* [Santander](documentacoes_dos_boletos/santander) +* [Sicoob](documentacoes_dos_boletos/Sicoob) +* [Sicredi](documentacoes_dos_boletos/Sicredi) -Se você tiver uma documentação do boleto, **mais atualizada**, venha contribuir para a gem. :) +Se você tiver uma documentação do boleto, **mais atualizada**, gostaria de pedir que você me enviasse. :) ## Bancos Suportados Para todos os bancos e carteiras implementadas, **seguimos as documentações** que estão dentro do repositório: @@ -54,24 +60,54 @@ 16, 17 e 18 código do cedente de 7 e 8 dígitos. </td> <td>Esperando Contribuição</td> </tr> <tr> - <td>Itaú</td> - <td>107, 109, 122, 142, 143, 126, 174, 175, 196, 198, 131, 146, 150, 168.</td> + <td>Banrisul</td> + <td>00, 08.</td> <td>Esperando Contribuição</td> </tr> <tr> <td>Bradesco</td> <td>03, 06, 09, 19, 21, 22.</td> <td>Esperando Contribuição</td> </tr> <tr> + <td>Caixa</td> + <td>14, 24.</td> + <td>Esperando Contribuição</td> + </tr> + <tr> + <td>HSBC</td> + <td>CNR.</td> + <td>Esperando Contribuição</td> + </tr> + <tr> + <td>Itaú</td> + <td>107, 109, 122, 142, 143, 126, 174, 175, 196, 198, 131, 146, 150, 168.</td> + <td>Esperando Contribuição</td> + </tr> + <tr> + <td>Real</td> + <td>00, 20, 31, 42, 47, 85.</td> + <td>Esperando Contribuição</td> + </tr> + <tr> <td>Santander</td> <td>101, 102, 121.</td> <td>Esperando Contribuição</td> </tr> + <tr> + <td>Sicoob</td> + <td>1, 9.</td> + <td>Esperando Contribuição</td> + </tr> + <tr> + <td>Sicredi</td> + <td>03, C.</td> + <td>Esperando Contribuição</td> + </tr> </table> **OBS.: Caso a homologação seja aceita junto ao banco, contribua e mude a seção acima. Caso recuse alguma carteira acima, por favor me avise, para tirar dessa lista.** ## Homologação no Banco @@ -83,21 +119,21 @@ Você pode usar as próprias classes da gem, porém, **recomendo criar uma subclasse** para os bancos que você gostaria de desenvolver. ### Exemplo ```ruby - class BoletoItau < BoletoBancario::Itau - end +class BoletoItau < BoletoBancario::Itau +end - class BoletoSantander < BoletoBancario::Santander - end +class BoletoSantander < BoletoBancario::Santander +end - class BoletoBradesco < BoletoBancario::Bradesco - end +class BoletoBradesco < BoletoBancario::Bradesco +end - class BoletoBancoBrasil < BoletoBancario::BancoBrasil - end +class BoletoBancoBrasil < BoletoBancario::BancoBrasil +end ``` Segue os attributos dos boletos: * Agência @@ -121,88 +157,104 @@ ### Criando os boletos / Validações Agora você pode emitir um boleto, **usando a classe criada no exemplo acima**: - BoletoItau.new(conta_corrente: '89755', agencia: '0097', :carteira => '195') +```ruby +BoletoItau.new(conta_corrente: '89755', agencia: '0097', :carteira => '195') +``` Você pode usar blocos se quiser: - BoletoItau.new do |boleto| - boleto_itau.conta_corrente = '89755' - boleto_itau.digito_conta_corrente = '1' - boleto_itau.agencia = '0097' - boleto_itau.carteira = '198' - boleto_itau.cedente = 'Razao Social da Empresa' - boleto_itau.codigo_cedente = '90901' - boleto_itau.endereco_cedente = 'Rua nome da rua, 9999' - boleto_itau.numero_documento = '12345678' - boleto_itau.sacado = 'Nome do Sacado' - boleto_itau.documento_sacado = '35433793990' - boleto_itau.data_vencimento = Date.tomorrow - boleto_itau.valor_documento = 31678.99 - boleto_itau.seu_numero = 1234 - end +```ruby +boleto_itau = BoletoItau.new do |boleto| + boleto.conta_corrente = '89755' + boleto.agencia = '0097' + boleto.carteira = '198' + boleto.cedente = 'Razao Social da Empresa' + boleto.codigo_cedente = '90901' + boleto.endereco_cedente = 'Rua nome da rua, 9999' + boleto.numero_documento = '12345678' + boleto.sacado = 'Nome do Sacado' + boleto.documento_sacado = '35433793990' + boleto.data_vencimento = Date.tomorrow + boleto.valor_documento = 31678.99 + boleto.seu_numero = 1234 +end +``` **Cada banco possui suas próprias validações de campo e de tamanho**. Primeiramente, **antes de renderizar qualquer boleto você precisar verificar se esse o boleto é válido**. - if boleto_itau.valid? - # Renderiza o boleto itau - else - # Trata os erros - end +```ruby +if boleto_itau.valid? + # Renderiza o boleto itau +else + # Trata os erros +end +``` ### Campos do Boleto Segue abaixo os métodos para serem chamados, no momento de renderizar os boletos. Os campos são de mesmo nome: - boleto_itau.codigo_banco_formatado # Retorna o código do banco, junto com seu dígito +```ruby +boleto_itau.codigo_banco_formatado # Retorna o código do banco, junto com seu dígito - boleto_itau.codigo_de_barras +boleto_itau.codigo_de_barras - boleto_itau.linha_digitavel +boleto_itau.linha_digitavel - boleto_itau.nosso_numero +boleto_itau.nosso_numero - boleto_itau.agencia_codigo_cedente +boleto_itau.agencia_codigo_cedente - boleto_itau.carteira_formatada # Formata a carteira, para mostrar no boleto. +boleto_itau.carteira_formatada # Formata a carteira, para mostrar no boleto. - boleto_itau.numero_documento +boleto_itau.numero_documento - boleto_itau.valor_documento +boleto_itau.valor_documento - boleto_itau.especie +boleto_itau.especie - boleto_itau.especie_documento +boleto_itau.especie_documento +``` ## Sobrescrevendo comportamentos Você pode sobrescrever os comportamentos na subclasse. Por exemplo, imagine que você quer sobrescrever a forma como é tratada a segunda parte do código de barras. **Seguindo a interface da classe BoletoBancario::Boleto** fica bem simples: - class BoletoItau < BoletoBancario::Itau - def codigo_de_barras_do_banco - # Sua implementação ... - end - end +```ruby +class BoletoItau < BoletoBancario::Itau + def codigo_de_barras_do_banco + # Sua implementação ... + end +end +``` +## Formatos (HTML, PDF e PNG) + +### Objetivos para as próximas versões: criar os formatos dos boletos de: + +* HTML +* PDF +* PNG + ## O que a gem não faz A gem não trata os arquivos de remessa e os arquivos de retorno do banco. Na minha opinião não deveria ser responsabilidade dessa gem. -Essa gem **apenas emite o boleto**, com todas as informações necessárias para o pagamento. +Essa gem **apenas emite o boleto**, com todas as informações necessárias do boleto. ## Contribuições Seja um contribuidor. Você pode contribuir de N formas. Seguem elas: * Homologando boletos junto ao banco. * Fornecendo documentações mais atualizadas dos Bancos. * Escrevendo novos formatos (PDF, PNG), e me avisando para divulgar no Readme. * Refatorando código!! * Fornecendo Feedback construtivo! (Sempre bem vindo!) -