bbrcobranca 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +1 -0
- data/LICENSE +20 -0
- data/README.md +12 -0
- data/Rakefile +13 -0
- data/lib/bbrcobranca.rb +196 -0
- data/lib/bbrcobranca/arquivos/logos/bancobrasil.eps +5402 -0
- data/lib/bbrcobranca/arquivos/logos/bancobrasil_carne.eps +5410 -0
- data/lib/bbrcobranca/arquivos/logos/bancobrasilia.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/banconordeste.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/banestes.eps +5198 -0
- data/lib/bbrcobranca/arquivos/logos/banestes_carne.eps +5206 -0
- data/lib/bbrcobranca/arquivos/logos/banrisul.eps +121 -0
- data/lib/bbrcobranca/arquivos/logos/banrisul_carne.eps +121 -0
- data/lib/bbrcobranca/arquivos/logos/bradesco.eps +5210 -0
- data/lib/bbrcobranca/arquivos/logos/bradesco_carne.eps +5214 -0
- data/lib/bbrcobranca/arquivos/logos/caixa.eps +5111 -0
- data/lib/bbrcobranca/arquivos/logos/caixa_carne.eps +5115 -0
- data/lib/bbrcobranca/arquivos/logos/cecred.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/cecred_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/credisis.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/credisis_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/hsbc.eps +5124 -0
- data/lib/bbrcobranca/arquivos/logos/hsbc_carne.eps +5128 -0
- data/lib/bbrcobranca/arquivos/logos/itau.eps +5318 -0
- data/lib/bbrcobranca/arquivos/logos/itau_carne.eps +5322 -0
- data/lib/bbrcobranca/arquivos/logos/santander.eps +5305 -0
- data/lib/bbrcobranca/arquivos/logos/santander_carne.eps +5313 -0
- data/lib/bbrcobranca/arquivos/logos/sicoob.eps +5375 -0
- data/lib/bbrcobranca/arquivos/logos/sicoob_carne.eps +5379 -0
- data/lib/bbrcobranca/arquivos/logos/sicredi.eps +5379 -0
- data/lib/bbrcobranca/arquivos/logos/sicredi_carne.eps +5383 -0
- data/lib/bbrcobranca/arquivos/logos/unicred.eps +0 -0
- data/lib/bbrcobranca/arquivos/logos/unicred_carne.eps +0 -0
- data/lib/bbrcobranca/arquivos/templates/modelo_carne.eps +1112 -0
- data/lib/bbrcobranca/arquivos/templates/modelo_generico.eps +0 -0
- data/lib/bbrcobranca/boleto/banco_brasil.rb +157 -0
- data/lib/bbrcobranca/boleto/banco_brasilia.rb +102 -0
- data/lib/bbrcobranca/boleto/banco_nordeste.rb +79 -0
- data/lib/bbrcobranca/boleto/banestes.rb +85 -0
- data/lib/bbrcobranca/boleto/banrisul.rb +94 -0
- data/lib/bbrcobranca/boleto/base.rb +256 -0
- data/lib/bbrcobranca/boleto/bradesco.rb +99 -0
- data/lib/bbrcobranca/boleto/bradesco_grb.rb +85 -0
- data/lib/bbrcobranca/boleto/caixa.rb +121 -0
- data/lib/bbrcobranca/boleto/cecred.rb +86 -0
- data/lib/bbrcobranca/boleto/credisis.rb +116 -0
- data/lib/bbrcobranca/boleto/hsbc.rb +94 -0
- data/lib/bbrcobranca/boleto/itau.rb +138 -0
- data/lib/bbrcobranca/boleto/itau_adimplere.rb +159 -0
- data/lib/bbrcobranca/boleto/santander.rb +84 -0
- data/lib/bbrcobranca/boleto/santander_adimplere.rb +73 -0
- data/lib/bbrcobranca/boleto/sicoob.rb +119 -0
- data/lib/bbrcobranca/boleto/sicredi.rb +142 -0
- data/lib/bbrcobranca/boleto/template/base.rb +25 -0
- data/lib/bbrcobranca/boleto/template/rghost.rb +315 -0
- data/lib/bbrcobranca/boleto/template/rghost_carne.rb +317 -0
- data/lib/bbrcobranca/boleto/unicred.rb +141 -0
- data/lib/bbrcobranca/calculo.rb +115 -0
- data/lib/bbrcobranca/calculo_data.rb +62 -0
- data/lib/bbrcobranca/currency.rb +69 -0
- data/lib/bbrcobranca/formatacao.rb +103 -0
- data/lib/bbrcobranca/formatacao_string.rb +35 -0
- data/lib/bbrcobranca/limpeza.rb +20 -0
- data/lib/bbrcobranca/remessa/base.rb +76 -0
- data/lib/bbrcobranca/remessa/cnab240/banco_brasil.rb +246 -0
- data/lib/bbrcobranca/remessa/cnab240/base.rb +512 -0
- data/lib/bbrcobranca/remessa/cnab240/base_correspondente.rb +299 -0
- data/lib/bbrcobranca/remessa/cnab240/caixa.rb +163 -0
- data/lib/bbrcobranca/remessa/cnab240/cecred.rb +151 -0
- data/lib/bbrcobranca/remessa/cnab240/sicoob.rb +226 -0
- data/lib/bbrcobranca/remessa/cnab240/sicoob_banco_brasil.rb +94 -0
- data/lib/bbrcobranca/remessa/cnab240/sicredi.rb +177 -0
- data/lib/bbrcobranca/remessa/cnab240/unicred.rb +9 -0
- data/lib/bbrcobranca/remessa/cnab400/banco_brasil.rb +169 -0
- data/lib/bbrcobranca/remessa/cnab400/banco_brasilia.rb +166 -0
- data/lib/bbrcobranca/remessa/cnab400/banco_nordeste.rb +160 -0
- data/lib/bbrcobranca/remessa/cnab400/banrisul.rb +155 -0
- data/lib/bbrcobranca/remessa/cnab400/base.rb +119 -0
- data/lib/bbrcobranca/remessa/cnab400/bradesco.rb +130 -0
- data/lib/bbrcobranca/remessa/cnab400/citibank.rb +138 -0
- data/lib/bbrcobranca/remessa/cnab400/credisis.rb +128 -0
- data/lib/bbrcobranca/remessa/cnab400/itau.rb +157 -0
- data/lib/bbrcobranca/remessa/cnab400/santander.rb +231 -0
- data/lib/bbrcobranca/remessa/cnab400/sicoob.rb +308 -0
- data/lib/bbrcobranca/remessa/cnab400/unicred.rb +143 -0
- data/lib/bbrcobranca/remessa/pagamento.rb +288 -0
- data/lib/bbrcobranca/retorno/base.rb +49 -0
- data/lib/bbrcobranca/retorno/cnab240/base.rb +42 -0
- data/lib/bbrcobranca/retorno/cnab240/caixa.rb +48 -0
- data/lib/bbrcobranca/retorno/cnab240/cecred.rb +102 -0
- data/lib/bbrcobranca/retorno/cnab240/santander.rb +95 -0
- data/lib/bbrcobranca/retorno/cnab240/sicoob.rb +99 -0
- data/lib/bbrcobranca/retorno/cnab240/sicredi.rb +79 -0
- data/lib/bbrcobranca/retorno/cnab400/banco_brasil.rb +127 -0
- data/lib/bbrcobranca/retorno/cnab400/banco_brasilia.rb +89 -0
- data/lib/bbrcobranca/retorno/cnab400/banco_nordeste.rb +112 -0
- data/lib/bbrcobranca/retorno/cnab400/banrisul.rb +42 -0
- data/lib/bbrcobranca/retorno/cnab400/base.rb +50 -0
- data/lib/bbrcobranca/retorno/cnab400/bradesco.rb +124 -0
- data/lib/bbrcobranca/retorno/cnab400/credisis.rb +115 -0
- data/lib/bbrcobranca/retorno/cnab400/itau.rb +143 -0
- data/lib/bbrcobranca/retorno/cnab400/santander.rb +57 -0
- data/lib/bbrcobranca/retorno/cnab400/unicred.rb +118 -0
- data/lib/bbrcobranca/retorno/retorno_cbr643.rb +49 -0
- data/lib/bbrcobranca/retorno/retorno_cnab240.rb +97 -0
- data/lib/bbrcobranca/retorno/retorno_cnab400.rb +70 -0
- data/lib/bbrcobranca/util/date.rb +20 -0
- data/lib/bbrcobranca/util/empresa.rb +28 -0
- data/lib/bbrcobranca/util/errors.rb +76 -0
- data/lib/bbrcobranca/validations.rb +232 -0
- data/lib/bbrcobranca/version.rb +6 -0
- data/spec/arquivos/CBR64310.RET +28 -0
- data/spec/arquivos/CNAB240.RET +74 -0
- data/spec/arquivos/CNAB240CECRED.RET +10 -0
- data/spec/arquivos/CNAB240SANTANDER.RET +8 -0
- data/spec/arquivos/CNAB240SICOOB.RET +10 -0
- data/spec/arquivos/CNAB240SICREDI.CRT +8 -0
- data/spec/arquivos/CNAB400.RET +54 -0
- data/spec/arquivos/CNAB400BANCOBRASILIA.RET +3 -0
- data/spec/arquivos/CNAB400BANCONORDESTE.RET +3 -0
- data/spec/arquivos/CNAB400BANRISUL.RET +3 -0
- data/spec/arquivos/CNAB400BRADESCO.RET +8 -0
- data/spec/arquivos/CNAB400CREDISIS.RET +3 -0
- data/spec/arquivos/CNAB400ITAU.RET +54 -0
- data/spec/arquivos/CNAB400SANTANDER.RET +54 -0
- data/spec/arquivos/CNAB400UNICRED.RET +3 -0
- data/spec/bbrcobranca_spec.rb +34 -0
- data/spec/brcobranca/base_spec.rb +170 -0
- data/spec/brcobranca/boleto/banco_brasil_spec.rb +334 -0
- data/spec/brcobranca/boleto/banco_brasilia_spec.rb +152 -0
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +161 -0
- data/spec/brcobranca/boleto/banestes_spec.rb +194 -0
- data/spec/brcobranca/boleto/banrisul_spec.rb +182 -0
- data/spec/brcobranca/boleto/bradesco_spec.rb +211 -0
- data/spec/brcobranca/boleto/caixa_spec.rb +161 -0
- data/spec/brcobranca/boleto/cecred_spec.rb +147 -0
- data/spec/brcobranca/boleto/credisis_spec.rb +159 -0
- data/spec/brcobranca/boleto/hsbc_spec.rb +172 -0
- data/spec/brcobranca/boleto/itau_spec.rb +262 -0
- data/spec/brcobranca/boleto/santander_spec.rb +143 -0
- data/spec/brcobranca/boleto/sicoob_spec.rb +193 -0
- data/spec/brcobranca/boleto/sicredi_spec.rb +190 -0
- data/spec/brcobranca/boleto/unicred_spec.rb +149 -0
- data/spec/brcobranca/boletos_em_lote_spec.rb +38 -0
- data/spec/brcobranca/calculo_data_spec.rb +33 -0
- data/spec/brcobranca/calculo_spec.rb +185 -0
- data/spec/brcobranca/currency_spec.rb +79 -0
- data/spec/brcobranca/formatacao_spec.rb +46 -0
- data/spec/brcobranca/formatacao_string_spec.rb +24 -0
- data/spec/brcobranca/limpeza_spec.rb +10 -0
- data/spec/brcobranca/remessa/base_spec.rb +67 -0
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +217 -0
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +91 -0
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +163 -0
- data/spec/brcobranca/remessa/cnab240/cecred_spec.rb +164 -0
- data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +268 -0
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +198 -0
- data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +201 -0
- data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +193 -0
- data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +187 -0
- data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +183 -0
- data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +187 -0
- data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +190 -0
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +53 -0
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +201 -0
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +126 -0
- data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +188 -0
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +190 -0
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +152 -0
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +217 -0
- data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +185 -0
- data/spec/brcobranca/remessa/pagamento_spec.rb +227 -0
- data/spec/brcobranca/retorno/cnab240/base_spec.rb +23 -0
- data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +50 -0
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +50 -0
- data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +50 -0
- data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +31 -0
- data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +36 -0
- data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +39 -0
- data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +41 -0
- data/spec/brcobranca/retorno/cnab400/base_spec.rb +57 -0
- data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +58 -0
- data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +25 -0
- data/spec/brcobranca/retorno/cnab400/itau_spec.rb +58 -0
- data/spec/brcobranca/retorno/cnab400/santander_spec.rb +39 -0
- data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +42 -0
- data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +69 -0
- data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +57 -0
- data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +52 -0
- data/spec/brcobranca/rghost_spec.rb +29 -0
- data/spec/brcobranca/util/empresa_spec.rb +36 -0
- data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-itau-cnab400.rem +4 -0
- data/spec/fixtures/remessa/remessa-santander-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-sicoob-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-sicoob-correspondente-bb-cnab240.rem +4 -0
- data/spec/fixtures/remessa/remessa-sicredi-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-unicred-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-unicred-cnab400.rem +3 -0
- data/spec/spec.opts +8 -0
- data/spec/spec_helper.rb +38 -0
- data/spec/support/remessa_helpers.rb +13 -0
- data/spec/support/shared_examples/busca_logotipo.rb +15 -0
- data/spec/support/shared_examples/cnab240.rb +259 -0
- data/spec/support/shared_examples/cnab400.rb +180 -0
- data/spec/support/shared_examples/formatos_validos.rb +36 -0
- metadata +422 -0
@@ -0,0 +1,315 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rghost'
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
7
|
+
gem 'rghost'
|
8
|
+
require 'rghost'
|
9
|
+
end
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'rghost_barcode'
|
13
|
+
rescue LoadError
|
14
|
+
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
15
|
+
gem 'rghost_barcode'
|
16
|
+
require 'rghost_barcode'
|
17
|
+
end
|
18
|
+
|
19
|
+
module Bbrcobranca
|
20
|
+
module Boleto
|
21
|
+
module Template
|
22
|
+
# Templates para usar com Rghost
|
23
|
+
module Rghost
|
24
|
+
extend self
|
25
|
+
include RGhost unless include?(RGhost)
|
26
|
+
RGhost::Config::GS[:external_encoding] = Bbrcobranca.configuration.external_encoding
|
27
|
+
|
28
|
+
# Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
29
|
+
#
|
30
|
+
# @return [Stream]
|
31
|
+
# @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
|
32
|
+
# @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
|
33
|
+
def to(formato, options = {})
|
34
|
+
modelo_generico(self, options.merge!(formato: formato))
|
35
|
+
end
|
36
|
+
|
37
|
+
# Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
38
|
+
#
|
39
|
+
# @return [Stream]
|
40
|
+
# @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
|
41
|
+
# @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
|
42
|
+
def lote(boletos, options = {})
|
43
|
+
modelo_generico_multipage(boletos, options)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Cria o métodos dinâmicos (to_pdf, to_gif e etc) com todos os fomátos válidos.
|
47
|
+
#
|
48
|
+
# @return [Stream]
|
49
|
+
# @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
|
50
|
+
# @example
|
51
|
+
# @boleto.to_pdf #=> boleto gerado no formato pdf
|
52
|
+
def method_missing(m, *args)
|
53
|
+
method = m.to_s
|
54
|
+
if method.start_with?('to_')
|
55
|
+
modelo_generico(self, (args.first || {}).merge!(formato: method[3..-1]))
|
56
|
+
else
|
57
|
+
super
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
# Retorna um stream pronto para gravação em arquivo.
|
64
|
+
#
|
65
|
+
# @return [Stream]
|
66
|
+
# @param [Boleto] Instância de uma classe de boleto.
|
67
|
+
# @param [Hash] options Opção para a criação do boleto.
|
68
|
+
# @option options [Symbol] :resolucao Resolução em pixels.
|
69
|
+
# @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
70
|
+
def modelo_generico(boleto, options = {})
|
71
|
+
doc = Document.new paper: :A4 # 210x297
|
72
|
+
|
73
|
+
template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico.eps')
|
74
|
+
|
75
|
+
raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
|
76
|
+
|
77
|
+
modelo_generico_template(doc, boleto, template_path)
|
78
|
+
modelo_generico_cabecalho(doc, boleto)
|
79
|
+
modelo_generico_rodape(doc, boleto)
|
80
|
+
|
81
|
+
# Gerando codigo de barra com rghost_barcode
|
82
|
+
doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm", y: "#{@y - 1.67} cm") if boleto.codigo_barras
|
83
|
+
|
84
|
+
# Gerando stream
|
85
|
+
formato = (options.delete(:formato) || Bbrcobranca.configuration.formato)
|
86
|
+
resolucao = (options.delete(:resolucao) || Bbrcobranca.configuration.resolucao)
|
87
|
+
doc.render_stream(formato.to_sym, resolution: resolucao)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Retorna um stream para multiplos boletos pronto para gravação em arquivo.
|
91
|
+
#
|
92
|
+
# @return [Stream]
|
93
|
+
# @param [Array] Instâncias de classes de boleto.
|
94
|
+
# @param [Hash] options Opção para a criação do boleto.
|
95
|
+
# @option options [Symbol] :resolucao Resolução em pixels.
|
96
|
+
# @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
97
|
+
def modelo_generico_multipage(boletos, options = {})
|
98
|
+
doc = Document.new paper: :A4 # 210x297
|
99
|
+
|
100
|
+
template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico.eps')
|
101
|
+
|
102
|
+
raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
|
103
|
+
|
104
|
+
boletos.each_with_index do |boleto, index|
|
105
|
+
modelo_generico_template(doc, boleto, template_path)
|
106
|
+
modelo_generico_cabecalho(doc, boleto)
|
107
|
+
modelo_generico_rodape(doc, boleto)
|
108
|
+
|
109
|
+
# Gerando codigo de barra com rghost_barcode
|
110
|
+
doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm", y: "#{@y - 1.67} cm") if boleto.codigo_barras
|
111
|
+
|
112
|
+
# Cria nova página se não for o último boleto
|
113
|
+
doc.next_page unless index == boletos.length - 1
|
114
|
+
end
|
115
|
+
# Gerando stream
|
116
|
+
formato = (options.delete(:formato) || Bbrcobranca.configuration.formato)
|
117
|
+
resolucao = (options.delete(:resolucao) || Bbrcobranca.configuration.resolucao)
|
118
|
+
doc.render_stream(formato.to_sym, resolution: resolucao)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Define o template a ser usado no boleto
|
122
|
+
def modelo_generico_template(doc, _boleto, template_path)
|
123
|
+
doc.define_template(:template, template_path, x: '0.5 cm', y: '2.7 cm')
|
124
|
+
doc.use_template :template
|
125
|
+
|
126
|
+
doc.define_tags do
|
127
|
+
tag :grande, size: 13
|
128
|
+
tag :maior, size: 15
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def move_more(doc, x, y)
|
133
|
+
@x += x
|
134
|
+
@y += y
|
135
|
+
doc.moveto x: "#{@x} cm", y: "#{@y} cm"
|
136
|
+
end
|
137
|
+
# Monta o cabeçalho do layout do boleto
|
138
|
+
def modelo_generico_cabecalho(doc, boleto)
|
139
|
+
# INICIO Primeira parte do BOLETO
|
140
|
+
# Pontos iniciais em x e y
|
141
|
+
@x = 0.50
|
142
|
+
@y = 27.42
|
143
|
+
|
144
|
+
doc.image boleto.logotipo_cabecalho, x: 0.5, y: 28.6, zoom: 30 if boleto.logotipo_cabecalho
|
145
|
+
|
146
|
+
if boleto.linha_cabecalho1
|
147
|
+
doc.moveto x: "2.7 cm", y: "29.1 cm"
|
148
|
+
doc.text boleto.linha_cabecalho1
|
149
|
+
end
|
150
|
+
|
151
|
+
if boleto.linha_cabecalho2
|
152
|
+
doc.moveto x: "2.7 cm", y: "28.7 cm"
|
153
|
+
doc.text boleto.linha_cabecalho2
|
154
|
+
end
|
155
|
+
|
156
|
+
# LOGOTIPO do BANCO
|
157
|
+
doc.image boleto.logotipo, x: "#{@x} cm", y: "#{@y} cm"
|
158
|
+
# Dados
|
159
|
+
|
160
|
+
move_more(doc, 4.84, 0.02)
|
161
|
+
doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :maior
|
162
|
+
move_more(doc, 2, 0)
|
163
|
+
doc.show exibe_linha_digitavel_para(boleto), tag: :grande
|
164
|
+
move_more(doc, -6.5, -0.83)
|
165
|
+
|
166
|
+
doc.show boleto.cedente
|
167
|
+
|
168
|
+
move_more(doc, 15.8, 0)
|
169
|
+
doc.show boleto.agencia_conta_boleto
|
170
|
+
|
171
|
+
move_more(doc, -15.8, -0.9)
|
172
|
+
doc.show boleto.cedente_endereco
|
173
|
+
|
174
|
+
move_more(doc, 15.8, 0)
|
175
|
+
doc.show boleto.nosso_numero_boleto
|
176
|
+
|
177
|
+
move_more(doc, -15.8, -0.8)
|
178
|
+
doc.show boleto.documento_numero
|
179
|
+
|
180
|
+
move_more(doc, 3.5, 0)
|
181
|
+
doc.show boleto.especie
|
182
|
+
|
183
|
+
move_more(doc, 1.5, 0)
|
184
|
+
doc.show boleto.quantidade
|
185
|
+
|
186
|
+
move_more(doc, 2, 0)
|
187
|
+
doc.show "#{boleto.documento_cedente.formata_documento}"
|
188
|
+
|
189
|
+
move_more(doc, 3.8, 0)
|
190
|
+
doc.show boleto.data_vencimento.to_s_br
|
191
|
+
|
192
|
+
move_more(doc, 5, 0)
|
193
|
+
doc.show boleto.valor_documento.to_currency
|
194
|
+
|
195
|
+
move_more(doc, -15, -1.3)
|
196
|
+
doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
|
197
|
+
|
198
|
+
move_more(doc, 0, -0.3)
|
199
|
+
doc.show "#{boleto.sacado_endereco}"
|
200
|
+
if boleto.demonstrativo
|
201
|
+
doc.text_area boleto.demonstrativo, width: '18.5 cm', text_align: :left, x: "#{@x - 0.8} cm", y: "#{@y - 0.9} cm", row_height: '0.4 cm'
|
202
|
+
end
|
203
|
+
# FIM Primeira parte do BOLETO
|
204
|
+
end
|
205
|
+
|
206
|
+
# Monta o corpo e rodapé do layout do boleto
|
207
|
+
def modelo_generico_rodape(doc, boleto)
|
208
|
+
# INICIO Segunda parte do BOLETO BB
|
209
|
+
# Pontos iniciais em x e y
|
210
|
+
@x = 0.50
|
211
|
+
@y = 12.22
|
212
|
+
# LOGOTIPO do BANCO
|
213
|
+
doc.image boleto.logotipo, x: "#{@x} cm", y: "#{@y} cm"
|
214
|
+
|
215
|
+
move_more(doc, 4.84, 0.01)
|
216
|
+
doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :maior
|
217
|
+
|
218
|
+
move_more(doc, 2, 0)
|
219
|
+
doc.show exibe_linha_digitavel_para(boleto), tag: :grande
|
220
|
+
|
221
|
+
move_more(doc, -6.5, -0.9)
|
222
|
+
doc.show boleto.local_pagamento
|
223
|
+
|
224
|
+
move_more(doc, 15.8, 0)
|
225
|
+
doc.show boleto.data_vencimento.to_s_br if boleto.data_vencimento
|
226
|
+
|
227
|
+
move_more(doc, -15.8, -0.8)
|
228
|
+
if boleto.cedente_endereco
|
229
|
+
doc.show boleto.cedente_endereco
|
230
|
+
move_more(doc, 1.2, 0.3)
|
231
|
+
doc.show boleto.cedente
|
232
|
+
move_more(doc, -1.2, -0.3)
|
233
|
+
else
|
234
|
+
doc.show boleto.cedente
|
235
|
+
end
|
236
|
+
|
237
|
+
move_more(doc, 15.8, 0)
|
238
|
+
doc.show boleto.agencia_conta_boleto
|
239
|
+
|
240
|
+
move_more(doc, -15.8 , -0.9)
|
241
|
+
doc.show boleto.data_documento.to_s_br if boleto.data_documento
|
242
|
+
|
243
|
+
move_more(doc, 3.5, 0)
|
244
|
+
doc.show boleto.documento_numero
|
245
|
+
|
246
|
+
move_more(doc, 5.8, 0)
|
247
|
+
doc.show boleto.especie_documento
|
248
|
+
|
249
|
+
move_more(doc, 1.7, 0)
|
250
|
+
doc.show boleto.aceite
|
251
|
+
|
252
|
+
move_more(doc, 1.3, 0)
|
253
|
+
|
254
|
+
doc.show boleto.data_processamento.to_s_br if boleto.data_processamento
|
255
|
+
|
256
|
+
move_more(doc, 3.5, 0)
|
257
|
+
doc.show boleto.nosso_numero_boleto
|
258
|
+
|
259
|
+
move_more(doc, -12.1, -0.8)
|
260
|
+
if boleto.variacao
|
261
|
+
doc.show "#{boleto.carteira}-#{boleto.variacao}"
|
262
|
+
else
|
263
|
+
doc.show boleto.carteira
|
264
|
+
end
|
265
|
+
|
266
|
+
move_more(doc, 2, 0)
|
267
|
+
doc.show boleto.especie
|
268
|
+
|
269
|
+
move_more(doc, 10.1, 0)
|
270
|
+
doc.show boleto.valor_documento.to_currency
|
271
|
+
|
272
|
+
if boleto.instrucoes
|
273
|
+
doc.text_area boleto.instrucoes, width: '14 cm', text_align: :left, x: "#{@x -= 15.8} cm", y: "#{@y -= 0.9} cm", row_height: '0.4 cm'
|
274
|
+
move_more(doc, 0, -2)
|
275
|
+
else
|
276
|
+
move_more(doc, -15.8, -0.9)
|
277
|
+
doc.show boleto.instrucao1
|
278
|
+
|
279
|
+
move_more(doc, 0, -0.4)
|
280
|
+
doc.show boleto.instrucao2
|
281
|
+
|
282
|
+
move_more(doc, 0, -0.4)
|
283
|
+
doc.show boleto.instrucao3
|
284
|
+
|
285
|
+
move_more(doc, 0, -0.4)
|
286
|
+
doc.show boleto.instrucao4
|
287
|
+
|
288
|
+
move_more(doc, 0, -0.4)
|
289
|
+
doc.show boleto.instrucao5
|
290
|
+
|
291
|
+
move_more(doc, 0, -0.4)
|
292
|
+
doc.show boleto.instrucao6
|
293
|
+
end
|
294
|
+
|
295
|
+
|
296
|
+
move_more(doc, 0.5, -1.9)
|
297
|
+
doc.show "#{boleto.sacado} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}" if boleto.sacado && boleto.sacado_documento
|
298
|
+
|
299
|
+
move_more(doc, 0, -0.4)
|
300
|
+
doc.show "#{boleto.sacado_endereco}"
|
301
|
+
|
302
|
+
move_more(doc, 1.2, -0.93)
|
303
|
+
if boleto.avalista && boleto.avalista_documento
|
304
|
+
doc.show "#{boleto.avalista} - #{boleto.avalista_documento}"
|
305
|
+
end
|
306
|
+
# FIM Segunda parte do BOLETO
|
307
|
+
end
|
308
|
+
|
309
|
+
def exibe_linha_digitavel_para(boleto)
|
310
|
+
boleto.linha_digitavel || boleto.codigo_barras.linha_digitavel
|
311
|
+
end
|
312
|
+
end # Base
|
313
|
+
end
|
314
|
+
end
|
315
|
+
end
|
@@ -0,0 +1,317 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rghost'
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
7
|
+
gem 'rghost'
|
8
|
+
require 'rghost'
|
9
|
+
end
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'rghost_barcode'
|
13
|
+
rescue LoadError
|
14
|
+
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
15
|
+
gem 'rghost_barcode'
|
16
|
+
require 'rghost_barcode'
|
17
|
+
end
|
18
|
+
|
19
|
+
module Bbrcobranca
|
20
|
+
module Boleto
|
21
|
+
module Template
|
22
|
+
# Templates para usar com Rghost
|
23
|
+
module RghostCarne
|
24
|
+
extend self
|
25
|
+
include RGhost unless include?(RGhost)
|
26
|
+
RGhost::Config::GS[:external_encoding] = Bbrcobranca.configuration.external_encoding
|
27
|
+
|
28
|
+
# Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
29
|
+
#
|
30
|
+
# @return [Stream]
|
31
|
+
# @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
|
32
|
+
# @see Rghost#modelo_carne Recebe os mesmos parâmetros do Rghost#modelo_carne.
|
33
|
+
def to_carne(formato, options = {})
|
34
|
+
modelo_carne(self, options.merge!(formato: formato))
|
35
|
+
end
|
36
|
+
|
37
|
+
# Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
38
|
+
#
|
39
|
+
# @return [Stream]
|
40
|
+
# @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
|
41
|
+
# @see Rghost#modelo_carne Recebe os mesmos parâmetros do Rghost#modelo_carne.
|
42
|
+
def lote_carne(boletos, options = {})
|
43
|
+
modelo_carne_multipage(boletos, options)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Cria o métodos dinâmicos (to_pdf, to_gif e etc) com todos os fomátos válidos.
|
47
|
+
#
|
48
|
+
# @return [Stream]
|
49
|
+
# @see Rghost#modelo_carne Recebe os mesmos parâmetros do Rghost#modelo_carne.
|
50
|
+
# @example
|
51
|
+
# @boleto.to_pdf #=> boleto gerado no formato pdf
|
52
|
+
def method_missing(m, *args)
|
53
|
+
method = m.to_s
|
54
|
+
if method.start_with?('to_')
|
55
|
+
modelo_carne(self, (args.first || {}).merge!(formato: method[3..-1]))
|
56
|
+
else
|
57
|
+
super
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
# Retorna um stream pronto para gravação em arquivo.
|
64
|
+
#
|
65
|
+
# @return [Stream]
|
66
|
+
# @param [Boleto] Instância de uma classe de boleto.
|
67
|
+
# @param [Hash] options Opção para a criação do boleto.
|
68
|
+
# @option options [Symbol] :resolucao Resolução em pixels.
|
69
|
+
# @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
70
|
+
def modelo_carne(boleto, options = {})
|
71
|
+
doc = Document.new paper: [21, 9]
|
72
|
+
|
73
|
+
colunas = calc_colunas 1
|
74
|
+
linhas = calc_linhas 0
|
75
|
+
|
76
|
+
modelo_carne_load_background(doc, 0)
|
77
|
+
|
78
|
+
modelo_carne_define_tags(doc)
|
79
|
+
|
80
|
+
modelo_carne_build_data_left(doc, boleto, colunas, linhas)
|
81
|
+
modelo_carne_build_data_right(doc, boleto, colunas, linhas)
|
82
|
+
|
83
|
+
# Gerando stream
|
84
|
+
formato = (options.delete(:formato) || Bbrcobranca.configuration.formato)
|
85
|
+
resolucao = (options.delete(:resolucao) || Bbrcobranca.configuration.resolucao)
|
86
|
+
doc.render_stream(formato.to_sym, resolution: resolucao)
|
87
|
+
end
|
88
|
+
|
89
|
+
# Retorna um stream para multiplos boletos pronto para gravação em arquivo.
|
90
|
+
#
|
91
|
+
# @return [Stream]
|
92
|
+
# @param [Array] Instâncias de classes de boleto.
|
93
|
+
# @param [Hash] options Opção para a criação do boleto.
|
94
|
+
# @option options [Symbol] :resolucao Resolução em pixels.
|
95
|
+
# @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
96
|
+
def modelo_carne_multipage(boletos, options = {})
|
97
|
+
doc = Document.new paper: :A4
|
98
|
+
|
99
|
+
max_per_page = 3
|
100
|
+
curr_page_position = 0
|
101
|
+
heigth_template = 9 # altura do template é de 9 cm
|
102
|
+
initial_margin_bottom = 1.4 # margin inicial abaixo
|
103
|
+
|
104
|
+
modelo_carne_define_tags(doc)
|
105
|
+
|
106
|
+
boletos.each_with_index do |boleto, index|
|
107
|
+
curr_page_position += 1
|
108
|
+
|
109
|
+
margin_bottom = initial_margin_bottom + (heigth_template * (max_per_page - curr_page_position)) # onde o boleto sera impresso na pagina A4
|
110
|
+
|
111
|
+
modelo_carne_load_background doc, margin_bottom
|
112
|
+
|
113
|
+
colunas = calc_colunas 1
|
114
|
+
linhas = calc_linhas margin_bottom
|
115
|
+
|
116
|
+
modelo_carne_build_data_left(doc, boleto, colunas, linhas)
|
117
|
+
modelo_carne_build_data_right(doc, boleto, colunas, linhas)
|
118
|
+
|
119
|
+
if curr_page_position >= max_per_page # maximo 3 boletos por pagina
|
120
|
+
# Cria nova página se não for o último boleto
|
121
|
+
doc.next_page unless index == boletos.length - 1
|
122
|
+
|
123
|
+
curr_page_position = 0 # reinicia contador por página
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
# Gerando stream
|
128
|
+
formato = (options.delete(:formato) || Bbrcobranca.configuration.formato)
|
129
|
+
resolucao = (options.delete(:resolucao) || Bbrcobranca.configuration.resolucao)
|
130
|
+
|
131
|
+
doc.render_stream(formato.to_sym, resolution: resolucao)
|
132
|
+
end
|
133
|
+
|
134
|
+
# carrega background do boleto
|
135
|
+
def modelo_carne_load_background(doc, margin_bottom)
|
136
|
+
template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_carne.eps')
|
137
|
+
raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
|
138
|
+
|
139
|
+
doc.image template_path, x: 1, y: margin_bottom
|
140
|
+
end
|
141
|
+
|
142
|
+
# define os tamanhos
|
143
|
+
def modelo_carne_define_tags(doc)
|
144
|
+
doc.define_tags do
|
145
|
+
tag :grande, size: 13
|
146
|
+
tag :media, size: 10
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
# define as colunas do documento, conforme margem lateral esquerda
|
151
|
+
def calc_colunas(margin_left)
|
152
|
+
colunas = [0.1, 3.4, 4.5, 7.1, 7.8, 8.5, 9.1, 9.7, 11, 12.4, 13.3, 15]
|
153
|
+
|
154
|
+
colunas.each_with_index do |v, i|
|
155
|
+
colunas[i] = v + margin_left
|
156
|
+
end
|
157
|
+
|
158
|
+
colunas
|
159
|
+
end
|
160
|
+
|
161
|
+
# define as linhas do documento conforme margem inferior
|
162
|
+
def calc_linhas(margin_bottom)
|
163
|
+
linhas = [8.2, 7.5, 6.92, 6.34, 5.74, 5.1, 4.7, 4.3, 3.9, 3.5, 3.1, 2.32, 1.92, 1.69, 0.1]
|
164
|
+
|
165
|
+
linhas.each_with_index do |v, i|
|
166
|
+
linhas[i] = v + margin_bottom
|
167
|
+
end
|
168
|
+
|
169
|
+
linhas
|
170
|
+
end
|
171
|
+
|
172
|
+
# aplica dados do lado esquerdo
|
173
|
+
def modelo_carne_build_data_left(doc, boleto, colunas, linhas)
|
174
|
+
# LOGOTIPO do BANCO
|
175
|
+
doc.image boleto.logotipo, x: (colunas[0] - 0.11), y: linhas[0]
|
176
|
+
|
177
|
+
# Dados
|
178
|
+
|
179
|
+
# Numero do banco
|
180
|
+
doc.moveto x: colunas[1], y: linhas[0]
|
181
|
+
doc.show "#{boleto.banco}-#{boleto.banco_dv}"
|
182
|
+
|
183
|
+
# vencimento
|
184
|
+
doc.moveto x: colunas[0], y: linhas[1]
|
185
|
+
doc.show boleto.data_vencimento.to_s_br
|
186
|
+
|
187
|
+
# agencia/codigo cedente
|
188
|
+
doc.moveto x: colunas[0], y: linhas[2]
|
189
|
+
doc.show boleto.agencia_conta_boleto
|
190
|
+
|
191
|
+
# nosso numero
|
192
|
+
doc.moveto x: colunas[0], y: linhas[3]
|
193
|
+
doc.show boleto.nosso_numero_boleto
|
194
|
+
|
195
|
+
# valor do documento
|
196
|
+
doc.moveto x: colunas[0], y: linhas[4]
|
197
|
+
doc.show boleto.valor_documento.to_currency
|
198
|
+
|
199
|
+
# numero documento
|
200
|
+
doc.moveto x: colunas[0], y: linhas[11]
|
201
|
+
doc.show boleto.documento_numero
|
202
|
+
|
203
|
+
# sacado
|
204
|
+
doc.moveto x: colunas[0], y: linhas[13]
|
205
|
+
doc.show "#{boleto.sacado}"
|
206
|
+
end
|
207
|
+
|
208
|
+
# aplica dados do lado direito
|
209
|
+
def modelo_carne_build_data_right(doc, boleto, colunas, linhas)
|
210
|
+
# LOGOTIPO do BANCO
|
211
|
+
doc.image boleto.logotipo, x: (colunas[2] - 0.11), y: linhas[0]
|
212
|
+
|
213
|
+
# Numero do banco
|
214
|
+
doc.moveto x: colunas[4], y: linhas[0]
|
215
|
+
doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :grande
|
216
|
+
|
217
|
+
# linha digitavel
|
218
|
+
doc.moveto x: colunas[6], y: linhas[0]
|
219
|
+
doc.show exibe_linha_digitavel_para(boleto), tag: :media
|
220
|
+
|
221
|
+
# local de pagamento
|
222
|
+
doc.moveto x: colunas[2], y: linhas[1]
|
223
|
+
doc.show boleto.local_pagamento
|
224
|
+
|
225
|
+
# vencimento
|
226
|
+
doc.moveto x: colunas[11], y: linhas[1]
|
227
|
+
doc.show boleto.data_vencimento.to_s_br
|
228
|
+
|
229
|
+
# cedente
|
230
|
+
doc.moveto x: colunas[2], y: linhas[2]
|
231
|
+
doc.show boleto.cedente
|
232
|
+
|
233
|
+
# agencia/codigo cedente
|
234
|
+
doc.moveto x: colunas[11], y: linhas[2]
|
235
|
+
doc.show boleto.agencia_conta_boleto
|
236
|
+
|
237
|
+
# data do documento
|
238
|
+
doc.moveto x: colunas[2], y: linhas[3]
|
239
|
+
doc.show boleto.data_documento.to_s_br if boleto.data_documento
|
240
|
+
|
241
|
+
# numero documento
|
242
|
+
doc.moveto x: colunas[3], y: linhas[3]
|
243
|
+
doc.show boleto.documento_numero
|
244
|
+
|
245
|
+
# especie doc.
|
246
|
+
doc.moveto x: colunas[8], y: linhas[3]
|
247
|
+
doc.show boleto.especie_documento
|
248
|
+
|
249
|
+
# aceite
|
250
|
+
doc.moveto x: colunas[9], y: linhas[3]
|
251
|
+
doc.show boleto.aceite
|
252
|
+
|
253
|
+
# dt processamento
|
254
|
+
doc.moveto x: colunas[10], y: linhas[3]
|
255
|
+
doc.show boleto.data_processamento.to_s_br if boleto.data_processamento
|
256
|
+
|
257
|
+
# nosso numero
|
258
|
+
doc.moveto x: colunas[11], y: linhas[3]
|
259
|
+
doc.show boleto.nosso_numero_boleto
|
260
|
+
|
261
|
+
# uso do banco
|
262
|
+
## nada...
|
263
|
+
|
264
|
+
# carteira
|
265
|
+
doc.moveto x: colunas[3], y: linhas[4]
|
266
|
+
doc.show boleto.carteira
|
267
|
+
|
268
|
+
# especie
|
269
|
+
doc.moveto x: colunas[5], y: linhas[4]
|
270
|
+
doc.show boleto.especie
|
271
|
+
|
272
|
+
# quantidade
|
273
|
+
doc.moveto x: colunas[7], y: linhas[4]
|
274
|
+
doc.show boleto.quantidade
|
275
|
+
|
276
|
+
# valor documento
|
277
|
+
doc.moveto x: colunas[8], y: linhas[4]
|
278
|
+
doc.show boleto.valor_documento.to_currency
|
279
|
+
|
280
|
+
# valor do documento
|
281
|
+
doc.moveto x: colunas[11], y: linhas[4]
|
282
|
+
doc.show boleto.valor_documento.to_currency
|
283
|
+
|
284
|
+
# Instruções
|
285
|
+
doc.moveto x: colunas[2], y: linhas[5]
|
286
|
+
doc.show boleto.instrucao1
|
287
|
+
doc.moveto x: colunas[2], y: linhas[6]
|
288
|
+
doc.show boleto.instrucao2
|
289
|
+
doc.moveto x: colunas[2], y: linhas[7]
|
290
|
+
doc.show boleto.instrucao3
|
291
|
+
doc.moveto x: colunas[2], y: linhas[8]
|
292
|
+
doc.show boleto.instrucao4
|
293
|
+
doc.moveto x: colunas[2], y: linhas[9]
|
294
|
+
doc.show boleto.instrucao5
|
295
|
+
doc.moveto x: colunas[2], y: linhas[10]
|
296
|
+
doc.show boleto.instrucao6
|
297
|
+
|
298
|
+
# Sacado
|
299
|
+
doc.moveto x: colunas[2], y: linhas[11]
|
300
|
+
doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}" if boleto.sacado && boleto.sacado_documento
|
301
|
+
|
302
|
+
# Sacado endereço
|
303
|
+
doc.moveto x: colunas[2], y: linhas[12]
|
304
|
+
doc.show "#{boleto.sacado_endereco}"
|
305
|
+
|
306
|
+
# codigo de barras
|
307
|
+
# Gerando codigo de barra com rghost_barcode
|
308
|
+
doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.2 cm', x: colunas[2], y: linhas[14]) if boleto.codigo_barras
|
309
|
+
end
|
310
|
+
|
311
|
+
def exibe_linha_digitavel_para(boleto)
|
312
|
+
boleto.linha_digitavel || boleto.codigo_barras.linha_digitavel
|
313
|
+
end
|
314
|
+
end # Base
|
315
|
+
end
|
316
|
+
end
|
317
|
+
end
|