Code Monkey home page Code Monkey logo

brcobranca's Introduction

Gem para emissão de boletos de cobrança para bancos brasileiros.

Ruby FOSSA Status

Gem Version

Exemplos

API Server

Criado pelo pessoal da Akretion muito TOP \o/

API server for brcobranca

Bancos Disponíveis

Bancos Carteiras Documentações
001 - Banco do Brasil Todas as carteiras presentes na documentação pdf
004 - Banco do Nordeste Todas as carteiras presentes na documentação - Marcelo J. Both
021 - Banestes Todas as carteiras presentes na documentação
033 - Santander Todas as carteiras presentes na documentação - Ronaldo Araujo pdf
041 - Banrisul Todas as carteiras presentes na documentação
070 - Banco de Brasília Todas as carteiras presentes na documentação - Marcelo J. Both
104 - Caixa Todas as carteiras presentes na documentação - Túlio Ornelas pdf
237 - Bradesco Todas as carteiras presentes na documentação pdf
341 - Itaú Todas as carteiras presentes na documentação CNAB240, CNAB400
399 - HSBC CNR, CSB - Rafael DL
748 - Sicredi C (03)
756 - Sicoob Todas as carteiras presentes na documentação
085 - AILOS Todas as carteiras presentes na documentação - Marcelo J. Both
136 - Unicred 21 - Magno Costa
097 - CREDISIS Todas as carteiras presentes na documentação - Marcelo J. Both
745 - Citibank 3

Retornos e Remessas

Banco Retorno Remessa
Banco do Brasil 400 (ou CBR643) 400 (ou CBR641) e 240
Banco do Nordeste 400 400
Banco de Brasília 400 400
Banestes Não Não
Banrisul 400 400
Bradesco 400 400
Caixa 240 240
Citibank Não 400
HSBC Não Não
Itaú 400 400
Santander 400 e 240 400 e 240
Sicoob 240 400 e 240
Sicredi 240 240
UNICRED 400 400 e 240
AILOS 240 240
CREDISIS 400 400

Documentação

Caso queira verificar(ou adicionar) alguma documentação, acesse nosso wiki.

Rubydoc

Apoio

Licença

  • BSD

License

FOSSA Status

brcobranca's People

Contributors

aitherios avatar andersondias avatar antoniospneto avatar anylyne avatar brunobdaferreira avatar brunobrgs avatar cncardoso avatar dhyegocalota avatar efmiglioranza avatar ereboucas avatar fossabot avatar joaohornburg avatar johnwmcarneiro avatar josecoelho avatar kdiogenes avatar kivanio avatar marceloboth avatar mbcosta avatar miguelgraz avatar neilvcarvalho avatar pedrobachiega avatar rafaeldl avatar rodmachado avatar ronyvieira avatar shairontoledo avatar tulios avatar victor-arruda avatar wilfison avatar xptavares avatar yurighensev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

brcobranca's Issues

Código CEB para filiais

Alguns bancos possuem código de filiais CEB que altera diretamente o nosso número para alguns convênios.

Como isso deve ser tratado?

template pegando valor errado

na template diz especie doc.

mas no rghost.rb ela ta recebendo especie o certo seria 'doc.show boleto.especie_documento'

Problemas com geração de boleto em qualquer formato

Olá.

Estou usando a Gem de vocês e estou com um problema para geração em qualquer formato (PDF, PNG, TIFF, ...).

Ao executar o comando para gravação presente até nos exemplos:

boleto.to(:pdf)

Meu código falha, resultando no seguinte Stacktrace:

Error: /undefinedresource in resourcestatus Operand stack: false ct_StyleDicts --dict:0/4(L)-- Adobe-Japan1 --dict:0/4(L)-- Serif HeiseiMin-W3-83pv-RKSJ-H Font HeiseiMin-W3 CIDFont Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1967 1 3 %oparray_pop 1966 1 3 %oparray_pop 1950 1 3 %oparray_pop 1836 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- 1967 1 3 %oparray_pop 1967 1 3 %oparray_pop 1966 1 3 %oparray_pop --nostringval-- 1950 1 3 %oparray_pop 1836 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- 1915 10 9 %oparray_pop Dictionary stack: --dict:1186/1684(ro)(G)-- --dict:0/20(G)-- --dict:255/300(L)-- --dict:57/75(L)-- --dict:2/10(L)-- --dict:39/70(L)-- --dict:0/4(L)-- --dict:0/4(L)-- --dict:20/27(ro)(G)-- --dict:20/26(ro)(G)-- Current allocation mode is local Last OS error: No such file or directory 

Depois de muito buscar na internet, consegui a char a seguinte configuração:

Brcobranca.setup do |config|
  config.external_encoding = 'ascii-8bit'
end

Mas que não resolveu meu problema.

Seguindo detalhes do Stack, cheguei nos seguintes arquivos:

rghost (0.9.5) lib/rghost/ruby_ghost_engine.rb:86:in `render'
rghost (0.9.5) lib/rghost/document.rb:238:in `render'
rghost (0.9.5) lib/rghost/document.rb:258:in `render_stream'
brcobranca (4.1.0) lib/brcobranca/boleto/template/rghost.rb:87:in `modelo_generico'
brcobranca (4.1.0) lib/brcobranca/boleto/template/rghost.rb:34:in `to'

Estudei os seguintes arquivos e rodei testes usando apenas a gem do RGhost e não consegui reproduzir.

Dessa forma, entendo que o problema está relacionado, de alguma forma, a Gem de Brcobranca.

Não consegui chegar a um maior nível de detalhe mas acho que tem algo haver com o arquivo de formato, o template modelo_generico.eps.

Obrigado.

DV Geral do banco CAIXA

O gerente da CAIXA solicitou-me uma amostra de 10 boletos para homologação, sendo que o DV Geral deve está na sequencia de 0 a 9.

O problema é que eu não consigo gerar a amostra com o DV Geral "0", somente consigo de 1 a 9.

undefined method `convenio=' for #<Brcobranca::Boleto::Itau> em produção

Boa noite,

alguém poderia me ajudar como seguintes problemas que somente ocorrem em ambiente de produção:

undefined method `convenio=' for #<Brcobranca::Boleto::Itau:0xb95eba0>

e

undefined method `validates_length_of' for Brcobranca::Boleto::Itau:Class

O meu controller está assim:

      @info = Brcobranca::Boleto::Itau.new

      @info.convenio = '12345'
      @info.numero_documento = '12345678'

      # ...

No ambiente de desenvolvimento funciona perfeitamente.

Ruby: 1.9.3
Rails: 3.2.15

Numero Boleto Sicred

Boa tarde,
não encontrei a falha ainda mas ao gerar um boleto da sicredi usando o código abaixo ele dá erro, o numero do order.id = 220, porem com o mesmos dados só com o order.id = 221 funciona, isso é alguns números específicos do order.id.

@boleto.numero_documento = order.id.to_s.rjust(5, '0')

Nos Logs ele registra o seguinte erro:
Brcobranca::BoletoInvalido ():
app/controllers/admin/orders_controller.rb:190:in `download_order'

Linha 190:
send_data @boleto.to_pdf, :filename => "boleto_em_bloco.pdf", :disposition => 'attachment', :stream => false

Olhando por cima verifiquei que se eu for renderizar ele em html ele me gera nesta parte o erro <%= @boleto.codigo_barras.linha_digitavel %>

Já aconteceu outro caso parecido ?

Retorno CNAB400 Bradesco

Pela documentação que tenho aqui, o Bradesco utiliza algumas posições diferentes no arquivo de retorno CNAB400. Mais alguém tem esse problema ou estou com a documentação errada?

"Nosso número" Santander com limite de 8 dígitos

Porque o "nosso número" continua limitado a 8 dígitos? A documentação diz que, exceto para os bancos 353 e 008 (antigos códigos do Santander), o n/n deveria ter 12 dígitos. Na minha opinião não faz sentido ter essa limitação se o código do banco está fixo em 033 (que suporta os 12).

Existe algum outro motivo que não entendi?

Posição do cedente (Sem endereço)

db34a0e#diff-c7d46d015ec10d72922097f0cca7f348L177

doc.moveto x: '1.9 cm', y: '15.5 cm'
doc.show boleto.cedente
doc.moveto x: '0.7 cm', y: '15.2 cm'
doc.show boleto.cedente_endereco

O novo atributo 'cedente_endereco' alterou o local do 'cedente'. Mas quando não tem o endereço, da impressão de estar no lugar errado.

Acho que o correto, seria ficar assim:

doc.moveto x: '0.7 cm', y: '15.2 cm'
if boleto.cedente_endereco
  doc.show boleto.cedente_endereco
  doc.moveto x: '1.9 cm', y: '15.5 cm'
  doc.show boleto.cedente
else
  doc.show boleto.cedente
end

Arquivos de Retorno e Remessa

Olá Kivanio, parabéns para você e os colaboradores pela Gem, é muito boa.

Minha pergunta é sobre os arquivos de retorno e remessa.
No momento os mais importante é sobre o arquivo de retorno. Já tenho uma licença com o CobreBem que funciona em outra aplicação (não em rails). Eu teria que usá-la ? Ou existe outra alternativa ?

Abraços

Retorno de linha nos arquivos de Remessa

O Bradesco utiliza quebra de linha com retorno (\r\n) ao final de cada registro. Existem alguns testes verificando o tamanho dos registros das Remessas que estão falhando se isso for alterado. Alguém sabe se isso é válido ou ignorado por outros bancos também?

Error - Method 'zeros_esquerda' not found

Olá, estou fazendo uns testes, porém não estou conseguindo gerar boleto pois da esse erro ao executar o método `monta_codigo_43_digitos' ele da o erro conforme abaixo.

Agradeço a ajuda.

boleto = BancoItau.new
=> #<BancoItau:0xb7494244 @carteira="175", @Especie="R$", @local_pagamento="QUALQUER BANCO ATÉ O VENCIMENTO", @dias_vencimento=1, @moeda="9", @data_documento=Thu, 22 Apr 2010, @valor=0.0, @especie_documento="DM", @Aceite="S", @banco="341", @quantidade=1>
boleto.to :png
NoMethodError: undefined method zeros_esquerda' for nil:NilClass from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/whiny_nil.rb:52:inmethod_missing'
from /usr/lib/ruby/gems/1.8/gems/brcobranca-2.0.6/lib/brcobranca/boleto/banco_itau.rb:49:in monta_codigo_43_digitos' from /usr/lib/ruby/gems/1.8/gems/brcobranca-2.0.6/lib/brcobranca/boleto/base.rb:138:incodigo_barras'
from /usr/lib/ruby/gems/1.8/gems/brcobranca-2.0.6/lib/brcobranca/boleto/template/rghost.rb:63:in modelo_generico' from /usr/lib/ruby/gems/1.8/gems/brcobranca-2.0.6/lib/brcobranca/boleto/template/rghost.rb:28:into'
from (irb):2

Correção DV carteira 112 Itaú

Pessoal,

O Itaú utiliza para calculo do DV do nosso número em carteiras 112 carteira+nosso número. Segue correção do lib/brcobranca/boleto/banco_itau.rb:

a partir da linha 18:

def nosso_numero_dv
if %w(112 126 131 146 150 168).include?(self.carteira)
"#{self.carteira}#{self.numero_documento}".modulo10
else
numero_documento = self.numero_documento.zeros_esquerda(:tamanho => 8)
"#{self.agencia}#{self.conta_corrente}#{self.carteira}#{numero_documento}".modulo10
end
end

André Ortiz

Nosso numero no retorno do Sicoob parece não estar certo

Quando ocorre a leitura do nosso número no retorno Cnab 240 do Sicoob, pelo que constatei o valor recuperado está incorreto. No caso a leitura é feita entre os campos caracteres 46 e 56, no entanto na documentação é especificado da seguinte forma:
Seq: 13.3T
Posição: 38 a 57
Nosso Número:

  • Se emissão a cargo do Sicoob (vide planilha "Capa" deste arquivo): Brancos
  • Se emissão a cargo do Beneficiário (vide planilha "Capa" deste arquivo):
    NumTitulo - 10 posições (1 a 10)
    Parcela - 02 posições (11 a 12) - "01" se parcela única
    Modalidade - 02 posições (13 a 14) - vide planilha "Capa" deste arquivo
    Tipo Formulário - 01 posição (15 a 15):
    "1" -auto-copiativo
    "3"-auto-envelopável
    "4"-A4 sem envelopamento
    "6"-A4 sem envelopamento 3 vias
    Em branco - 05 posições (16 a 20)

Ou seja, numa linha como:
7560001300001T 0603032000000004587160000000008301011 ..., o valor extraído é 301011 ao invés de 0000000083.

No caso estou disposto a implementar a correção, caso essa minha analise estiver correta.

Agências com 5 dígitos

As maioria das agências do banco do brasil, por exemplo, são com 5 dígitos. Como 1234-3, essa é uma agência real. A gem não permite agências com 5 dígitos, apenas com 4. Neste caso peço para vocês alterarem o maximum de 4 para 5 no path boleto/banco_brasil.rb

validates_length_of :agencia, maximum: 5

Peço também, por favor, que vocês verifiquem este caso em outros models.

Obrigado

PS: Este caso foi relatado por Thales Ferreira, colaborador da Wake Up Digital.

Encoding de instruções com ruby 2.1.1

Olá a todos!

Estou utilizando a gem brcobranca -v 3.1.3, junto com a última versão de suas dependências, utilizo ruby 2.1.1 e Rails 3.2.19.

E tenho sucesso ao gerar boletos pelo banco Itaú, só que quando eu abro o arquivo as instruções estão da seguinte maneira:

Pagável na rede bancária até a data de vencimento.

Vi que existem Patchs, só que utilizando o ruby 1.9.3, e não funcionaram no meu caso, alguém já teve alguma experiência semelhante e pode me direcionar sobre oq ue devo fazer?

Obrigado

Funcionar com JRuby

Caro Kivanio, fiz um fork do seu projeto para implementar o modelo de boleto para caixa econômica, porém meu sistema roda sobre o JRuby. O brcobranca utiliza o rghost que não é compatível com o jruby, gostaria de saber como anda o processo de configuração do gerador de pdf e se você me indica algum caminho para implementar a compatibilidade.
Obrigado.

BACEN 3598 e 3656

Recebi um e-mail do Itaú dizendo que meus boletos foram rejeitados por não seguirem as especificações das circulares 3598 e 3656 do Banco Central, em vigor a partir de 28/06/2013.

3598: http://www.bcb.gov.br/pre/normativos/busca/normativo.asp?tipo=Circ&ano=2012&numero=3598
3656: http://www.bcb.gov.br/pre/normativos/busca/normativo.asp?tipo=circ&ano=2013&numero=3656

Segundo o pessoal do Itaú, esses foram os erros encontrados:

Conforme determinado pelo Banco Central do Brasil por meio das circulares 3.598 e 3.656, em vigor a partir de 28/06/2013:

Deve ser utilizadas às Novas Nomenclaturas abaixo citada nos boletos:

Beneficiário: antigo Cedente
Pagador: antigo Sacado
Agencia\Codigo do Beneficiário: antigo Agencia\Codigo do Cedente:
Recibo do Pagador: antigo Recibo do Sacado

O texto após literal instruções não padrão: Na mesma linha da literal "instruções", e com o mesmo tamanho de fonte, deve ser inserida a mensagem:
“ INSTRUÇÕES DE RESPONSABILIDADE DO BENEFICIÁRIO. QUALQUER DÚVIDA SOBRE ESTE BOLETO, CONTATE O BENEFICIÁRIO.”.

Acredito que será necessário alterar os arquivo modelo_generico.eps e modelo_carne.eps que estão com a nomenclatura antiga. Se alguém souber o caminho das pedras para editar esses arquivos .eps no Mac me avise que eu faço a alteração.

Apenas para referência, esse é o commit do projeto Bopepo (Java) que tratou do assunto: jrimum/bopepo@d3215c5

DVs estranhos boleto Itaú

Estou com problemas no boleto gerado para Itaú. Meu banco tem apenas 4 dígitos na agência, os DVs não batem com o que tenho em mãos. Quando gero os DVs juntando tanto a agencia com a conta corrente, o DV bate. Fiz pagamento para teste e não funcionou. Você tem idéia de como posso proceder para entender o problema?

Obrigado

Suporte Rails 4

A gem está dependente do activemodel 3. Alguém sabe se ela suporta Rails 4?

erro brcobranca 3.0.0

após atualizar para a versão 3.0.0 obtenho o seguinte erro ao tentar gerar múltiplos boletos com formato :pdf, inclusive ao rodar o exemplo brcobranca_exemplo.

private method `readlines' called for nil:NilClass

activesupport (3.0.6) lib/active_support/whiny_nil.rb:48:in method_missing' rghost (0.8.7.5) lib/rghost/document.rb:258:inrender_stream'
brcobranca (3.0.0) lib/brcobranca/boleto/template/rghost.rb:118:in modelo_generico_multipage' brcobranca (3.0.0) lib/brcobranca/boleto/template/rghost.rb:42:inlote'
app/controllers/faturas_controller.rb:100:in `fechar'

estou usando Rails 3.0.6 e ruby 1.8.7
alguma dica?

Imprimir multiplos boletos

Olá, criei um novo método para imprimir multiplos boletos em um único arquivo. No meu caso coloquei no arquivo rghost.rb. Tentei fazer com class_eval, redefinindo a classe, e tudo mais, mas há um problema pelo uso da constante FILE, então de qualquer forma a única alternativa era modificar o arquivo rghost.rb, resolvi já colocar tudo lá.

Bom, segue a implementação do método, caso alguem necessite:

def print_multipage(boletos=[], options={})
doc=Document.new :paper => :A4 # 210x297

      template_path = File.join(File.dirname(__FILE__),'..','..','arquivos','templates','modelo_generico.eps')

      raise "Não foi possível encontrar o template. Verifique o caminho" unless File.exist?(template_path)

  # Busca logo automaticamente
  logo = monta_logo
  doc.define_tags do
    tag :grande, :size => 13
  end

  boletos.each_with_index{ |bol, index|

      doc.define_template(:template, template_path, :x => '0.3 cm', :y => "0 cm")
      doc.use_template :template

      #INICIO Primeira parte do BOLETO
      # LOGOTIPO do BANCO
      doc.image(logo, :x => '0.5 cm', :y => '23.85 cm', :zoom => 80) if logo
      # Dados
      doc.moveto :x => '5.2 cm' , :y => '23.85 cm'
      doc.show "#{bol.banco}-#{bol.banco_dv}", :tag => :grande
      doc.moveto :x => '7.5 cm' , :y => '23.85 cm'
      doc.show bol.codigo_barras.linha_digitavel, :tag => :grande
      doc.moveto :x => '0.7 cm' , :y => '23 cm'
      doc.show bol.cedente
      doc.moveto :x => '11 cm' , :y => '23 cm'
      doc.show bol.agencia_conta_boleto
      doc.moveto :x => '14.2 cm' , :y => '23 cm'
      doc.show bol.especie
      doc.moveto :x => '15.7 cm' , :y => '23 cm'
      doc.show bol.quantidade
      doc.moveto :x => '0.7 cm' , :y => '22.2 cm'
      doc.show bol.numero_documento
      doc.moveto :x => '7 cm' , :y => '22.2 cm'
      doc.show "#{bol.documento_cedente.formata_documento}"
      doc.moveto :x => '12 cm' , :y => '22.2 cm'
      doc.show bol.data_vencimento.to_s_br
      doc.moveto :x => '16.5 cm' , :y => '23 cm'
      doc.show bol.nosso_numero_boleto
      doc.moveto :x => '16.5 cm' , :y => '22.2 cm'
      doc.show bol.valor_documento.to_currency
      doc.moveto :x => '1.4 cm' , :y => '20.9 cm'
      doc.show "#{bol.sacado} - #{bol.sacado_documento.formata_documento}"
      doc.moveto :x => '1.4 cm' , :y => '20.6 cm'
      doc.show "#{bol.sacado_endereco}"
      #FIM Primeira parte do BOLETO

      #INICIO Segunda parte do BOLETO BB
      # LOGOTIPO do BANCO
      doc.image(logo, :x => '0.5 cm', :y => '16.8 cm', :zoom => 80) if logo
      doc.moveto :x => '5.2 cm' , :y => '16.8 cm'
      doc.show "#{bol.banco}-#{bol.banco_dv}", :tag => :grande if bol.banco && bol.banco_dv
      doc.moveto :x => '7.5 cm' , :y => '16.8 cm'
      doc.show bol.codigo_barras.linha_digitavel, :tag => :grande if bol.codigo_barras && bol.codigo_barras.linha_digitavel
      doc.moveto :x => '0.7 cm' , :y => '16 cm'
      doc.show bol.local_pagamento if bol.local_pagamento
      doc.moveto :x => '16.5 cm' , :y => '16 cm'
      doc.show bol.data_vencimento.to_s_br if bol.data_vencimento
      doc.moveto :x => '0.7 cm' , :y => '15.2 cm'
      doc.show bol.cedente if bol.cedente
      doc.moveto :x => '16.5 cm' , :y => '15.2 cm'
      doc.show bol.agencia_conta_boleto
      doc.moveto :x => '0.7 cm' , :y => '14.4 cm'
      doc.show bol.data_documento.to_s_br if bol.data_documento
      doc.moveto :x => '4.2 cm' , :y => '14.4 cm'
      doc.show bol.numero_documento if bol.numero_documento
      doc.moveto :x => '10 cm' , :y => '14.4 cm'
      doc.show bol.especie if bol.especie
      doc.moveto :x => '11.7 cm' , :y => '14.4 cm'
      doc.show bol.aceite if bol.aceite
      doc.moveto :x => '13 cm' , :y => '14.4 cm'
      doc.show bol.data_processamento.to_s_br if bol.data_processamento
      doc.moveto :x => '16.5 cm' , :y => '14.4 cm'
      doc.show bol.nosso_numero_boleto
      doc.moveto :x => '4.4 cm' , :y => '13.5 cm'
      doc.show bol.carteira if bol.carteira
      doc.moveto :x => '6.4 cm' , :y => '13.5 cm'
      doc.show bol.moeda if bol.moeda
      doc.moveto :x => '8 cm' , :y => '13.5 cm'
      doc.show bol.quantidade if bol.quantidade
      doc.moveto :x => '11 cm' , :y => '13.5 cm'
      doc.show bol.valor.to_currency if bol.valor
      doc.moveto :x => '16.5 cm' , :y => '13.5 cm'
      doc.show bol.valor_documento.to_currency if bol.valor_documento
      doc.moveto :x => '0.7 cm' , :y => '12.7 cm'
      doc.show bol.instrucao1 if bol.instrucao1
      doc.moveto :x => '0.7 cm' , :y => '12.3 cm'
      doc.show bol.instrucao2 if bol.instrucao2
      doc.moveto :x => '0.7 cm' , :y => '11.9 cm'
      doc.show bol.instrucao3 if bol.instrucao3
      doc.moveto :x => '0.7 cm' , :y => '11.5 cm'
      doc.show bol.instrucao4 if bol.instrucao4
      doc.moveto :x => '0.7 cm' , :y => '11.1 cm'
      doc.show bol.instrucao5 if bol.instrucao5
      doc.moveto :x => '0.7 cm' , :y => '10.7 cm'
      doc.show bol.instrucao6 if bol.instrucao6
      doc.moveto :x => '1.2 cm' , :y => '8.8 cm'
      doc.show "#{bol.sacado} - #{bol.sacado_documento.formata_documento}" if bol.sacado && bol.sacado_documento
      doc.moveto :x => '1.2 cm' , :y => '8.4 cm'
      doc.show "#{bol.sacado_endereco}" if bol.sacado_endereco
      #FIM Segunda parte do BOLETO

      #Gerando codigo de barra com rghost_barcode
      doc.barcode_interleaved2of5(bol.codigo_barras, :width => '10.3 cm', :height => '1.3 cm', :x => '0.7 cm', :y => '5.8 cm' ) if bol.codigo_barras
      #Cria nova página se não for o ultimo boleto
      doc.next_page unless index == boletos.length-1

  }


  # Gerando stream
      options[:tipo] = options[:tipo].to_sym unless options[:tipo].kind_of?(Symbol)
      doc.render_stream(options[:tipo])
    end

Não está dos melhores, e não sei se foi o melhor lugar para fazer isso, mas de qualquer forma, resolveu meu problema de forma fácil. O ruim é que precisa instanciar um outro boleto do mesmo tipo dos boletos incluidos. Por exemplo:

@Bols = Array.new
@bols.push( BancoItau.new(:numero_documento=>1, :agencia => '1234', :conta_corrente => '12345', :documento_cedente => '042088649-40', :sacado_documento => '216462128-00', :quantidade=>2 ))
@bols.push(BancoItau.new(:numero_documento=>1, :agencia => '1234', :conta_corrente => '12345', :documento_cedente => '042088649-40', :sacado_documento => '216462128-00', :quantidade=>2 ))
pdf = BancoItau.new.print_multipage(@Bols, :tipo => 'pdf')

Enfim... segue a idéia, quem sabe consigam implementar de uma melhor forma.

Valeu, abraço, e obrigado pela biblioteca excelente.

Compatibilidade com Rails 3.2.x

Olá pessoal, alguém ja tentou usar a gem para rodar no rails 3.2.x ??
Tentei algumas vezes frustadas... hehe
Se alguém souber as configurações que devem ser feitas e puder ajudar agradeço.
Abraço

Problema com RGHost

Estou com o seguinte erro, alguem pode me ajudar ??

RuntimeError in HomeController#gerar_boleto

Ghostscript not found in your system environment (darwin12.5.0).
Install it and set the variable RGhost::Config::GS[:path] with the executable.
Example: RGhost::Config::GS[:path]='/path/to/my/gs' #unix-style
RGhost::Config::GS[:path]="C:\gs\bin\gswin32c.exe" #windows-style
Rails.root: /Users/Lailson/workspace/brcobranca_exemplo

Application Trace | Framework Trace | Full Trace
app/controllers/home_controller.rb:77:in `gerar_boleto'
Request

Eu segui os passos do cncardoso do post
#20

Boleto banespa

Olá Kivanio. Algum tempo atrás contribui com o codigo do banespa. Neste momento eu sugiro que retire o codigo do banespa da gem, por que ao tentar homologar com o agora santander não consegui. Eles me forneceram um material aonde a geração do código de barras é totalmente diferente da documentação que temos do banespa. Estou tendo que escrever o boleto do santander em outra linguagem, quando eu conseguir a homologação eu porto para o brcobrança.

att.

Diego

permitir usar prawn

Bom dia amigos!

Será que não seria interessante que a geração do boleto fosse feita em ruby? Em minha empresa usamos o prawn para gerar notas fiscais e funciona muito bem.

Não sei se facilitaria o desenvolvimento, mas o deploy ficaria bem mais fácil uma vez que prawn é escrita em ruby.

O que acham?

O banco Santander valida a presença de campos desnecessários e não valida a de necessários

Notei os seguintes problemas ao gerar boletos para o Santander:

  1. O brcobranca exige a conta corrente com até 5 dígitos. Isso tem dois problemas: a conta corrente do Santander possui 8 dígitos, e ela não é necessária para gerar o boleto.
  2. Não há validação de presença dos documentos nem do sacado nem do cedente, fazendo com que ocorra uma exceção ao tentar formatar esses números.

Adequação necessária nos layouts

O Banco Central do Brasil, através das circulares 3598 e 3656, prevê duas alterações no layout:

  • O cedente passa a ser beneficiário
  • O sacado passa a ser pagador
  • O CPF ou CNPJ do pagador passam a ser obrigatórios, assim como o do beneficiário

Rewrite!

Salve Kivânio,

Cara, estou trampando há tempos com uma versão própria do brcobrança:

  • Sem core exts! (ufff)
  • Sem nenhum código em português (comments/readme ok)
  • Fixes, organize e bla bla bla...

Minha branch ja saiu fora faz tempo então deixo aqui a proposta:
Quiser eu faço o rebase, rewrito o README em um branch aqui no repo.
Um v2, v3 tal....

Bracetas!

Suporte a personalização do Sacador/Avalista

Atualmente não é possível adicionar informações ao lado do Sacador/Avalista que aparece no layout, conforme imagem a seguir.

Como estamos precisando adicionar esta informação em um projeto, posso implementar isso e submeter o Pull Request, o que acha?

2013-11-01 at 8 39 am

Problema para rodar exemplo

Kivanio e Pessoal,

Consigo levantar o exemplo, mas sempre que tento escolher qualquer opção de gerar qualquer boleto em qualquer banco em qualquer formato ganho um erro de conversão de nil para String na linha 75 do app/controllers/home_controller.rb que é:

send_data @boleto.to(formato), :filename => "boleto_#{banco}.#{formato}"

Alguém consegue me ajudar?

Versão das minhas ruby, rails e gems:

$ rails -v

Rails 3.0.5

$ ruby -v

ruby 1.8.7 (2011-02-18 patchlevel 334) [i386-mingw32]

$ gem list

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.5, 3.0.3, 3.0.0)
actionpack (3.0.5, 3.0.3, 3.0.0)
activemodel (3.0.5, 3.0.3, 3.0.0)
activerecord (3.0.5, 3.0.3, 3.0.0)
activeresource (3.0.5, 3.0.3, 3.0.0)
activesupport (3.0.5, 3.0.3, 3.0.0)
arel (2.0.9, 2.0.7, 1.0.1)
builder (2.1.2)
bundler (1.0.11)
erubis (2.6.6)
i18n (0.5.0, 0.4.2)
mail (2.2.15, 2.2.14)
mime-types (1.16)
parseline (1.0.3)
polyglot (0.3.1)
rack (1.2.2, 1.2.1)
rack-mount (0.6.14, 0.6.13)
rack-test (0.5.7)
rails (3.0.5, 3.0.3, 3.0.0)
railties (3.0.5, 3.0.3, 3.0.0)
rake (0.8.7)
rghost (0.8.7.2)
rghost_barcode (0.8)
rubygems-update (1.7.1, 1.6.2)
sqlite3 (1.3.3 x86-mingw32)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.26, 0.3.24)

Abaixo o dump completo do erro:

TypeError in HomeController#gerar_boleto

can't convert nil into String
Rails.root: /home/novello/workspace/kivanio-brcobranca_exemplo-ae02bf3

Application Trace | Framework Trace | Full Trace
app/controllers/home_controller.rb:75:in `gerar_boleto'
Request

Parameters:

{"commit"=>"Gerar",
"authenticity_token"=>"nQ72ySXxOFiwezfZMUAnYxDjvU7XtYlRN1BTl7MCIC8=",
"utf8"=>"✓",
"boleto"=>{"formato"=>"jpg"},
"banco"=>"bb"}
Show session dump

Show env dump

Response

Headers:

None

Rails 3.1

Olá, alguma previsão para quando a GEM terá atualização para o Rails 3.1?

Obrigado.

Extender

Uma das maiores necessidades que eu geralmente vejo, para desenvolvedores, é um sistema que possibilite o envio de e-mails de boletos automaticamente para clientes em uma determinada data. Minha sugestão é a extensão do brcobranca, para que seja embutido em um novo sistema que possibilite tal necessidade.

Multiplos boletos

Bom dia, muito bom o seu plugin, parabens. Gostaria de saber se ele suporta a geração de multiplos boletos em um so pdf. Para que o cliente possa baixar toda a sua carteira de uma vez para impressão?

Grato pela atenção

Refatorar cálculo de módulos

Eu precisei arrumar uns detalhes no cálculo do dígito verificador para o Bradesco no meu repo local e vi que existem vários métodos fazendo isso sem muita flexibilidade. Minha sugestão é fazer apenas um método para o modulo 10 e 11 e passar o resto por parâmetro e adicionar um bloco para alterar o cálculo final também:

 def modulo11(options={}, &block )
   options[:mapeamento] ||= {}
   options[:multiplicador] ||= [9, 8, 7, 6, 5, 4, 3, 2]

   total = multiplicador(options[:multiplicador])
   valor = block_given? ? yield(total) : (11 - (total % 11))

   options[:mapeamento][valor] || valor                                                                                                        
 end

Ex Bradesco:

"12345".modulo11(multiplicador: [2,3,4,5,6,7], mapeamento: { 10 => "P"})

Ex com block:

"12345".modulo11(mapeamento: { 10 => "X"}) { |total| (total % 11) + 1 }

Assim podemos elimitar os métodos:

modulo11_2to9
modulo11_2to9_caixa
modulo11_9to2
modulo11_9to2_10_como_x
modulo11_9to2_10_como_zero

O que acham? Abraço!

Exportar pra HTML

Tem como renderizar o boleto em HTML mesmo, tipo esse [http://www.boletophp.com.br/boletophp/boleto_cef.php]?

A gente passou por uns problemas exportando pra PDF, com gente que não tinha o acrobat e o send_data travando o servidor. Exportar pra HTML seria uma boa :)

Homologando no BB

Enviei boletos gerados com a gem para o BB fazer homologação e eles me retornaram com as seguintes considerações:

Campo: ESPÉCIE DOC.
Informar Tipo de Documento que originou o bloqueto de cobrança.
Por exemplo: Duplicata de serviço --> informar: DS
Duplicata mercantil --> informar: DM
(foi informado: R$)

Campo: ESPÉCIE
Informar: R$ ou REAL (foi informado:9)

Campo: VALOR DOCUMENTO (localizado entre os campos VALOR DO DOCUMENTO e QUANTIDADE)

  • Não preencher
  • Corrigir nomeclatura - o nome correto deste campo é VALOR

RECIBO DO SACADO
Informar o CNPJ e o ENDEREÇO do CEDENTE. Esclarecemos que, conforme Lei Federal 12.039, de 01/10/2009, é OBRIGATÓRIO nos documentos de cobrança de dívida encaminhados ao consumidor (RECIBO DO SACADO), constar o nome, o endereço e o número de inscrição no Cadastro de Pessoa Jurídica – CNPJ do fornecedor do produto ou serviço.

Como posso gerar um outro .eps (semelhante ao lib/brcobranca/arquivos/templates/modelo_generico.eps) ?

erro de encoding ruby 1.9.2

logo ao rodar eu tenho o erro:
SyntaxError in HomeController#index
... @boleto.instrucao1 = "Pagável na rede bancária até a ..

quando coloco no inicio do controller:

encoding: utf-8

a pagina abre ok, mas ao mandar gerar o boleto, tenho o erro:
Encoding::UndefinedConversionError in HomeController#gerar_boleto
"\xE9" from ASCII-8BIT to UTF-8

Linha digitável

Utilizando a gem, percebi que não consigo o código da linha digitável do boleto.

O que acham de implementar?

Rails3

Opa Kiva,

Estou tentando utilizar no RoR 3, ate baixei o exemplo, mas sempre encontro o erro:

uninitialized constant Brcobranca::Boleto::Itau

Antes de comece a debugar, você pode dar uma luz?

remover monkeypatchs

devemos remover os monkeypatchs feito nas classes do ruby (procurar por class_eval)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.