Blog do Kiva

As aventuras de um tal Kivanio na TI

BrCobranca 2.0.3 agora conta com boletos para Bradesco e Unibanco.

 

Não deixe novamente de ver os fontes: http://github.com/kivanio/brcobranca/tree/master

Nossa aplicação de exemplo: http://www.boletorails.com.br/ e seus fontes http://github.com/kivanio/brcobranca_exemplo/tree/master

Querendo mais Bancos? Ajude-nos! Saiba como neste post: Adicionando novos bancos ao BrCobranca.

Continuar lendo...
2 comentários. Comente este artigo.

Incluir novos bancos no BrCobranca é mais fácil do que você possa imaginar.

A estrutura criada permite que para a 90% dos bancos, você necessite apenas criar um arquivo, sobreescrever um método e alterar outro, este último, apenas para que o logotipo do banco fique disponível.

Não abordarei o uso do GIT, GITHUB ou qualquer outra ferramenta neste tutorial, materiais a respeito destes temas você encontra aos montes em uma rápida busca no google. Boas referências no post do Akita.

Irei assumir a partir de agora que você baixou os fontes do BrCobranca, independente se foi por GIT, se clonou o repositório no GITHUB ou fez download, o que nos interessa agora é que você tenha os fontes em algum lugar no seu computador e um editor preferido para brincar com os códigos.

Estamos querendo adicionar o banco Bradesco ao BrCobranca a partir de agora, OK?

Estrutura do BrCobranca:  

   

Disponibilizando a logo do Banco.  

Dentro da pasta "lib/brcobranca" encontraremos a pasta "arquivos", que é onde fica os arquivos de logotipos e templates.

Necessitaremos encontrar a logo do Brasdesco e colocá-la nesta pasta "logos" para podermos usar dentro do template.

Um bom local que sempre serve de referência para logotipos e documentações é o site http://phpboleto.com.br/ outro projeto bastante conhecido no mundo PHP, e no qual nos espelhamos no começo.  

Vejam na imagem que eu já havia copiado a logotipo para a pasta "logos".

Após isso, precisamos informar ao template que temos uma nova logo disponível, faremos isso alterando o método "monta_logo" dentro do arquivo "lib/brcobranca/boleto/template/util.rb", este arquivo contém métodos auxiliares do template, usados na montagem do boleto em tempo real.

 

def monta_logo
          case self.class.to_s
          when "BancoBrasil"
            imagem = 'bb.jpg'
          when "BancoItau"
            imagem = 'itau.jpg'
          when "BancoHsbc"
            imagem = 'hsbc.jpg'
          when "BancoReal"
            imagem = 'real.jpg'
          when "BancoBradesco"
            imagem = 'bradesco.jpg'
          else
            return false
          end
          File.join(File.dirname(__FILE__),'..','..','arquivos','logos',imagem)
end

 

Apenas adicionamos mais uma opção ao case, contendo:

 

          when "BancoBradesco" #Nome da classe do banco
            imagem = 'bradesco.jpg'  #Nome do arquivo da logo

 

O próximo passo será criar a classe do nosso novo banco.  

Criando a classe do Banco  

Criaremos essa classe dentro da pasta "/lib/brcobranca/boleto", mantenha o padrão de nomenclatura(banco_ + nome do banco) e adicione, ficando "banco_bradesco.rb".  

Dentro deste arquivo criaremos uma classe BancoBradesco(Este nome é o que vai lá no "monta_logo", lembra?) herdando da classe "Base" da nossa gem:

 

class BancoBradesco < Brcobranca::Boleto::Base
 
end

 

Um pouco de "sabedoria"


A classe "Base" contém todos os métodos especificados pelo BACEN, e portanto você não precisa alterá-los ou se preocupar com isso.

Todos os bancos devem e respeitam os padrões impostos pelo BACEN, com exceção de alguns poucos que inventam cálculos estranhos, você não terá muitos problemas.   O BACEN estipulou métodos padrões para cálculos de dígitos verificadores, o formato do código de barras, o formato da linha digitável e o formato do bloqueto impresso.  

Todos estes métodos você pode conferir no arquivo "/lib/brcobranca/core_ext.rb".  

Como já foi mencionado alguns bancos engraçadinhos, criam ou extendem alguns destes métodos para usarem em momentos específicos, mais precisamente na hora de mostrar as informações no bloqueto impresso, estas alterações, não podem e não devem fazer efeito nos padrões do BACEN, portanto, não se preocupe muito com isso,  a não ser que algum destes métodos seja usado na montagem do código de barras, na parte em que cada banco pode fazer o quer. Puts complicou?  

Vamos lá, o código de barra para cobrança contém 44 posições dispostas da seguinte forma segundo o BACEN:  

 

Todos os bancos devem usar este layout, isso porque esse layout é usado na montagem da linha digitável, que também é padrão para todos os bancos.  

As posições do campo livre(20 a 44) ficam a critério de cada banco arrecadador. Lembra ali em cima quando eu disse "na parte em que cada banco pode fazer o quer"? Era dessa parte que eu estava falando, é aqui onde a mágica acontece, e cada banco define como quer o que vai nestas posições, geralmente é aqui que o banco pôe seu portifólio de carteiras, agência e conta corrente, eles usam esse campo para identificar internamente no banco, que tipo de cobrança está sendo feito, e principalmente, de quem é o dinheiro.  

No caso do Bradesco, eles facilitaram muito para nós, e criaram um padrão também para este campo, veja:  

   

O que implica em dizer que a única coisa que mudará nessa parte é o tipo de cobrança a ser feito, ou seja, que carteira utilizar. Muito prático para todos.  

Você pode ...

Continuar lendo...
0 comentários. Comente este artigo.

 Aproveitei algumas poucas horas do feriadão para incluir boletos para o Banco Real.

Para quem estava me solicitando está ai.

Não deixe de atualizar a gem:

gem install brcobranca

ou

sudo gem install brcobanca

Não deixe de conferir o código fonte:  http://github.com/kivanio/brcobranca/tree/master

Nem deixe de testar esse novo boleto em http://www.boletorails.com.br/

Está sentindo falta de algum banco? solicite: http://github.com/kivanio/brcobranca/issues

 

Mias tarde mais novidades...

 

Continuar lendo...
0 comentários. Comente este artigo.

 Depois de quase 9 meses do seu lançamento, acts_as_payment torna-se gem e ganha nome brcobranca.

A primeira versão do plugin para boletos, veio por completa falta de outros plugins nesta área, o intuito era movimentar a galera para que conversas a respeito acontecessem. 

Vejo esta missão como completa, pois após este período, pessoas se interessaram, outros plugins surgiram(kill_bill), fazendo com que a discussão começa-se.

Hoje, quase 9 meses depois do seu lançamento e com sua missão cumprida, este plugin para o rails, torna-se obsoleto com a chegada de sua versão gem,

idependente de frameworks, podendo ser usado com qualquer coisa que fale Ruby.

O acts_as_payment vai ser descontinuado?

Provavelmente sim, pois só serão corrigidos possíveis bugs se alguém que estiver usando a versão antiga solicitar, mas recomendo que quem esteja usando, se atualize.

Por que a mudança do nome?

Simples, quando do lançamento, a idéia era que fosse usado em conjunto com o ActiveRecord do Rails, com alguns métodos para auxiliar a criação do boleto,

porém essa idéia se mostrou pequena perto das possibilidades e de solicitações de algumas pessoas; mesmo em suas versões posteriores o nome já não fazia mais sentido.

Quais as novidades?

A gem ficou independente de frameworks.

Não precisa rodar rake, copiar, imagem, nada, somente usar.

Foram adicionadas novas carteiras ao banco Itaú.

Foi adcionado boleto para o HSBC.

Novos outputs(PDF, JPG, PNG e TIF).

Se você precisar de processamento em lote ou usar RESTFUL, agora é possível.

Foi refatorado completamente.

E em breve mais novidades.

Posso ver sem instalar?

Claro, acesse a página de demonstração.

Legal, posso ver o código?

Certamente, o código da página de demonstração está aqui:  http://github.com/kivanio/brcobranca_exemplo/tree/master

Como posso ajudar?

Sempre estamos precisando de ajuda, novos boletos, layout do exemplo, documentação, testes.

Em breve estarei publicando um tutorial que já está pronto sobre como adicionar mais bancos.

Onde acho o codigo da gem?

Também está no github: http://github.com/kivanio/brcobranca/tree/master

Instalação? Documentação?

Aqui tem também: http://brcobranca.rubyforge.org/

Puts, achei um bug e agora?

Informe aqui: http://github.com/kivanio/brcobranca/issues

 

Obrigado às pessoas que contribuiram com a versão anterior, às que fomentaram as discussões e ao grande mestre Shairon Toledo pelo explêndido rghost e contribuições de código.

 

Por enquanto é isso, aguardem mais novidades brevemente...

 

 

Continuar lendo...
1 comentários. Comente este artigo.

Usar gem postgres no mac os intel Instale o postgresql via mac port edite o path em /etc/bashrc incluindo: PATH=${PATH}:/usr/local/mysql/bin:/opt/local/bin:/usr/local/bin:/usr/local/sbin:/opt/local/sbin:/opt/local/lib/postgresql83/bin:$PATH ficando assim: sudo env ARCHFLAGS='-arch i386' gem install postgres -- --with-pgsql-lib-dir=/opt/local/lib/postgresql83 --with-pgsql-include-dir=/opt/local/include/postgresql83
Continuar lendo...
0 comentários. Comente este artigo.