brcobranca_sicredi_400 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +3 -0
  3. data/LICENSE +20 -0
  4. data/README.md +91 -0
  5. data/Rakefile +8 -0
  6. data/lib/brcobranca/arquivos/logos/ailos.eps +412 -0
  7. data/lib/brcobranca/arquivos/logos/ailos_carne.eps +412 -0
  8. data/lib/brcobranca/arquivos/logos/bancobrasil.eps +5402 -0
  9. data/lib/brcobranca/arquivos/logos/bancobrasil_carne.eps +5410 -0
  10. data/lib/brcobranca/arquivos/logos/bancobrasilia.eps +0 -0
  11. data/lib/brcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
  12. data/lib/brcobranca/arquivos/logos/banconordeste.eps +0 -0
  13. data/lib/brcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
  14. data/lib/brcobranca/arquivos/logos/banestes.eps +5198 -0
  15. data/lib/brcobranca/arquivos/logos/banestes_carne.eps +5206 -0
  16. data/lib/brcobranca/arquivos/logos/banrisul.eps +121 -0
  17. data/lib/brcobranca/arquivos/logos/banrisul_carne.eps +121 -0
  18. data/lib/brcobranca/arquivos/logos/bradesco.eps +5210 -0
  19. data/lib/brcobranca/arquivos/logos/bradesco_carne.eps +5214 -0
  20. data/lib/brcobranca/arquivos/logos/caixa.eps +5111 -0
  21. data/lib/brcobranca/arquivos/logos/caixa_carne.eps +5115 -0
  22. data/lib/brcobranca/arquivos/logos/cecred.eps +0 -0
  23. data/lib/brcobranca/arquivos/logos/cecred_carne.eps +0 -0
  24. data/lib/brcobranca/arquivos/logos/citibank.eps +745 -0
  25. data/lib/brcobranca/arquivos/logos/citibank_carne.eps +745 -0
  26. data/lib/brcobranca/arquivos/logos/credisis.eps +0 -0
  27. data/lib/brcobranca/arquivos/logos/credisis_carne.eps +0 -0
  28. data/lib/brcobranca/arquivos/logos/hsbc.eps +5124 -0
  29. data/lib/brcobranca/arquivos/logos/hsbc_carne.eps +5128 -0
  30. data/lib/brcobranca/arquivos/logos/itau.eps +5318 -0
  31. data/lib/brcobranca/arquivos/logos/itau_carne.eps +5322 -0
  32. data/lib/brcobranca/arquivos/logos/safra.eps +0 -0
  33. data/lib/brcobranca/arquivos/logos/safra_carne.eps +0 -0
  34. data/lib/brcobranca/arquivos/logos/santander.eps +5305 -0
  35. data/lib/brcobranca/arquivos/logos/santander_carne.eps +5313 -0
  36. data/lib/brcobranca/arquivos/logos/sicoob.eps +5375 -0
  37. data/lib/brcobranca/arquivos/logos/sicoob_carne.eps +5379 -0
  38. data/lib/brcobranca/arquivos/logos/sicredi.eps +5379 -0
  39. data/lib/brcobranca/arquivos/logos/sicredi_carne.eps +5383 -0
  40. data/lib/brcobranca/arquivos/logos/unicred.eps +0 -0
  41. data/lib/brcobranca/arquivos/logos/unicred_carne.eps +0 -0
  42. data/lib/brcobranca/arquivos/templates/modelo_carne.eps +1112 -0
  43. data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
  44. data/lib/brcobranca/arquivos/templates/modelo_generico2.eps +9967 -0
  45. data/lib/brcobranca/boleto/ailos.rb +89 -0
  46. data/lib/brcobranca/boleto/banco_brasil.rb +165 -0
  47. data/lib/brcobranca/boleto/banco_brasilia.rb +102 -0
  48. data/lib/brcobranca/boleto/banco_nordeste.rb +80 -0
  49. data/lib/brcobranca/boleto/banestes.rb +86 -0
  50. data/lib/brcobranca/boleto/banrisul.rb +95 -0
  51. data/lib/brcobranca/boleto/base.rb +256 -0
  52. data/lib/brcobranca/boleto/bradesco.rb +100 -0
  53. data/lib/brcobranca/boleto/caixa.rb +123 -0
  54. data/lib/brcobranca/boleto/citibank.rb +97 -0
  55. data/lib/brcobranca/boleto/credisis.rb +118 -0
  56. data/lib/brcobranca/boleto/hsbc.rb +96 -0
  57. data/lib/brcobranca/boleto/itau.rb +138 -0
  58. data/lib/brcobranca/boleto/safra.rb +152 -0
  59. data/lib/brcobranca/boleto/santander.rb +86 -0
  60. data/lib/brcobranca/boleto/sicoob.rb +120 -0
  61. data/lib/brcobranca/boleto/sicredi.rb +145 -0
  62. data/lib/brcobranca/boleto/template/base.rb +28 -0
  63. data/lib/brcobranca/boleto/template/rghost.rb +308 -0
  64. data/lib/brcobranca/boleto/template/rghost2.rb +264 -0
  65. data/lib/brcobranca/boleto/template/rghost_bolepix.rb +286 -0
  66. data/lib/brcobranca/boleto/template/rghost_carne.rb +319 -0
  67. data/lib/brcobranca/boleto/unicred.rb +99 -0
  68. data/lib/brcobranca/calculo.rb +120 -0
  69. data/lib/brcobranca/calculo_data.rb +63 -0
  70. data/lib/brcobranca/currency.rb +69 -0
  71. data/lib/brcobranca/formatacao.rb +104 -0
  72. data/lib/brcobranca/formatacao_string.rb +37 -0
  73. data/lib/brcobranca/limpeza.rb +20 -0
  74. data/lib/brcobranca/remessa/base.rb +72 -0
  75. data/lib/brcobranca/remessa/cnab240/ailos.rb +156 -0
  76. data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +249 -0
  77. data/lib/brcobranca/remessa/cnab240/base.rb +529 -0
  78. data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +307 -0
  79. data/lib/brcobranca/remessa/cnab240/caixa.rb +171 -0
  80. data/lib/brcobranca/remessa/cnab240/santander.rb +225 -0
  81. data/lib/brcobranca/remessa/cnab240/sicoob.rb +229 -0
  82. data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +101 -0
  83. data/lib/brcobranca/remessa/cnab240/sicredi.rb +183 -0
  84. data/lib/brcobranca/remessa/cnab240/unicred.rb +10 -0
  85. data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +169 -0
  86. data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +167 -0
  87. data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +161 -0
  88. data/lib/brcobranca/remessa/cnab400/banrisul.rb +158 -0
  89. data/lib/brcobranca/remessa/cnab400/base.rb +132 -0
  90. data/lib/brcobranca/remessa/cnab400/bradesco.rb +155 -0
  91. data/lib/brcobranca/remessa/cnab400/citibank.rb +139 -0
  92. data/lib/brcobranca/remessa/cnab400/credisis.rb +130 -0
  93. data/lib/brcobranca/remessa/cnab400/itau.rb +162 -0
  94. data/lib/brcobranca/remessa/cnab400/santander.rb +233 -0
  95. data/lib/brcobranca/remessa/cnab400/sicoob.rb +305 -0
  96. data/lib/brcobranca/remessa/cnab400/sicredi.rb +117 -0
  97. data/lib/brcobranca/remessa/cnab400/unicred.rb +259 -0
  98. data/lib/brcobranca/remessa/pagamento.rb +320 -0
  99. data/lib/brcobranca/retorno/base.rb +11 -0
  100. data/lib/brcobranca/retorno/cnab240/ailos.rb +104 -0
  101. data/lib/brcobranca/retorno/cnab240/base.rb +41 -0
  102. data/lib/brcobranca/retorno/cnab240/caixa.rb +47 -0
  103. data/lib/brcobranca/retorno/cnab240/santander.rb +99 -0
  104. data/lib/brcobranca/retorno/cnab240/sicoob.rb +101 -0
  105. data/lib/brcobranca/retorno/cnab240/sicredi.rb +82 -0
  106. data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +130 -0
  107. data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +90 -0
  108. data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +113 -0
  109. data/lib/brcobranca/retorno/cnab400/banrisul.rb +42 -0
  110. data/lib/brcobranca/retorno/cnab400/base.rb +53 -0
  111. data/lib/brcobranca/retorno/cnab400/bradesco.rb +124 -0
  112. data/lib/brcobranca/retorno/cnab400/credisis.rb +116 -0
  113. data/lib/brcobranca/retorno/cnab400/itau.rb +144 -0
  114. data/lib/brcobranca/retorno/cnab400/santander.rb +58 -0
  115. data/lib/brcobranca/retorno/cnab400/sicredi.rb +78 -0
  116. data/lib/brcobranca/retorno/cnab400/unicred.rb +123 -0
  117. data/lib/brcobranca/retorno/retorno_cbr643.rb +48 -0
  118. data/lib/brcobranca/retorno/retorno_cnab240.rb +99 -0
  119. data/lib/brcobranca/retorno/retorno_cnab400.rb +71 -0
  120. data/lib/brcobranca/util/date.rb +21 -0
  121. data/lib/brcobranca/util/empresa.rb +29 -0
  122. data/lib/brcobranca/util/errors.rb +76 -0
  123. data/lib/brcobranca/validations.rb +208 -0
  124. data/lib/brcobranca/version.rb +5 -0
  125. data/lib/brcobranca.rb +200 -0
  126. metadata +225 -0
@@ -0,0 +1,145 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ #
5
+ # Sicredi
6
+ # Documentação: Maio 2016
7
+ #
8
+ module Brcobranca
9
+ module Boleto
10
+ # Banco SICREDI
11
+ class Sicredi < Base
12
+ # <b>REQUERIDO</b>: Código do posto da cooperativa de crédito
13
+ attr_accessor :posto
14
+
15
+ # <b>REQUERIDO</b>: Byte de identificação do cedente do bloqueto utilizado para compor o nosso número.
16
+ attr_accessor :byte_idt
17
+
18
+ validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
19
+ validates_length_of :nosso_numero, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
20
+ validates_length_of :conta_corrente, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
21
+ # Carteira
22
+ # 1 – Com Registro
23
+ # 3 – Sem Registro
24
+ # Obs.: O SICREDI não validará este campo.
25
+ validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
26
+ validates_length_of :posto, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
27
+ validates_length_of :byte_idt, is: 1,
28
+ message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
29
+ validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
30
+
31
+ # Nova instancia do Bradesco
32
+ # @param (see Brcobranca::Boleto::Base#initialize)
33
+ def initialize(campos = {})
34
+ campos = { carteira: '3', especie_documento: 'A' }.merge!(campos)
35
+ super(campos)
36
+ end
37
+
38
+ # Codigo do banco emissor (3 dígitos sempre)
39
+ #
40
+ # @return [String] 3 caracteres numéricos.
41
+ def banco
42
+ '748'
43
+ end
44
+
45
+ # Carteira
46
+ #
47
+ # @return [String] 2 caracteres numéricos.
48
+ def carteira=(valor)
49
+ @carteira = valor.to_s.rjust(1, '0') if valor
50
+ end
51
+
52
+ # Posto
53
+ #
54
+ # @return [String] 2 caracteres numéricos.
55
+ def posto=(valor)
56
+ @posto = valor.to_s.rjust(2, '0') if valor
57
+ end
58
+
59
+ # Número da conta corrente
60
+ # @return [String] 5 caracteres numéricos.
61
+ def conta_corrente=(valor)
62
+ @conta_corrente = valor.to_s.rjust(5, '0') if valor
63
+ end
64
+
65
+ # Código Beneficiário
66
+ # @return [String] 5 caracteres numéricos.
67
+ def convenio=(valor)
68
+ @convenio = valor.to_s.rjust(5, '0') if valor
69
+ end
70
+
71
+ # Dígito verificador do banco
72
+ # @return [String] 1 caractere.
73
+ def banco_dv
74
+ 'X'
75
+ end
76
+
77
+ # Nosso número para exibir no boleto.
78
+ # O campo Nosso Número deve ser apresentado no formato AA/BXXXXX-D, onde:
79
+ # AA = Ano atual
80
+ # B = Byte que pode ser de 2 a 9. Somente será 1 se forem boletos pré-impressos.
81
+ # XXXXX = número sequencial
82
+ # D = dígito verificador calculado
83
+ # @return [String]
84
+ # @example
85
+ # boleto.nosso_numero_boleto #=> "14/200022-5"
86
+ def nosso_numero_boleto
87
+ "#{nosso_numero_with_byte_idt[0..1]}/#{nosso_numero_with_byte_idt[2..]}-#{nosso_numero_dv}"
88
+ end
89
+
90
+ def nosso_numero_codigo_barra
91
+ nosso_numero_boleto.gsub(/\D/, '')
92
+ end
93
+
94
+ def nosso_numero_with_byte_idt
95
+ "#{data_processamento.strftime('%y')}#{byte_idt}#{nosso_numero}"
96
+ end
97
+
98
+ # Número seqüencial utilizado para identificar o boleto.
99
+ # @return [String] 5 caracteres numéricos.
100
+ def nosso_numero=(valor)
101
+ @nosso_numero = valor.to_s.rjust(5, '0') if valor
102
+ end
103
+
104
+ # Dígito verificador do nosso número
105
+ # @return [Integer] 1 caracteres numéricos.
106
+ def nosso_numero_dv
107
+ "#{agencia_posto_conta}#{nosso_numero_with_byte_idt}"
108
+ .modulo11(mapeamento: mapeamento_para_modulo_11)
109
+ end
110
+
111
+ def agencia_conta_boleto
112
+ "#{agencia}.#{posto}.#{convenio}"
113
+ end
114
+
115
+ def agencia_posto_conta
116
+ "#{agencia}#{posto}#{convenio}"
117
+ end
118
+
119
+ # Segunda parte do código de barras.
120
+ # Posição Tamanho Conteúdo
121
+ # 20 – 20 01 Código numérico correspondente ao tipo de cobrança: “1” – Com Registro “3 – Sem Registro”. Obs.: O SICREDI não validará este campo.
122
+ # 21 – 21 01 Código numérico correspondente ao tipo de carteira: “1” - carteira simples
123
+ # 22 – 30 09 Nosso número
124
+ # 31 – 34 # 04 # Cooperativa de crédito/agência beneficiária
125
+ # 35 – 36 # 02 # Posto da cooperativa de crédito/agência beneficiária
126
+ # 37 – 41 # 05 # Código do beneficiário
127
+ # 42 – 42 # 01 # Será 1 (um) quando houver valor expresso no campo “valor do documento”
128
+ # 43 – 43 # 01 # Filler – zeros “0”
129
+ # 44 – 44 # 01 # DV do campo livre calculado por módulo 11 com aproveitamento total (resto igual a 0 ou 1 DV cai para 0)
130
+ def codigo_barras_segunda_parte
131
+ campo_livre = "#{carteira}1#{nosso_numero_codigo_barra}#{agencia_posto_conta}10"
132
+ campo_livre + campo_livre.modulo11(mapeamento: mapeamento_para_modulo_11).to_s
133
+ end
134
+
135
+ private
136
+
137
+ def mapeamento_para_modulo_11
138
+ {
139
+ 10 => 0,
140
+ 11 => 0
141
+ }
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Brcobranca
4
+ module Boleto
5
+ module Template
6
+ module Base
7
+ module_function
8
+
9
+ def define_template(template)
10
+ case template
11
+ when :rghost
12
+ [Brcobranca::Boleto::Template::Rghost]
13
+ when :rghost_carne
14
+ [Brcobranca::Boleto::Template::RghostCarne]
15
+ when :rghost_bolepix
16
+ [Brcobranca::Boleto::Template::RghostBolepix]
17
+ when :rghost2
18
+ [Brcobranca::Boleto::Template::Rghost2]
19
+ when :both
20
+ [Brcobranca::Boleto::Template::Rghost, Brcobranca::Boleto::Template::RghostCarne]
21
+ else
22
+ [Brcobranca::Boleto::Template::Rghost]
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,308 @@
1
+ # frozen_string_literal: true
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 Brcobranca
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] = Brcobranca.configuration.external_encoding
27
+ RGhost::Config::GS[:default_params] << '-dNOSAFER'
28
+
29
+ # Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
30
+ #
31
+ # @return [Stream]
32
+ # @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
33
+ # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
34
+ def to(formato, options = {})
35
+ modelo_generico(self, options.merge!(formato: formato))
36
+ end
37
+
38
+ # Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
39
+ #
40
+ # @return [Stream]
41
+ # @see http://wiki.github.com/shairontoledo/rghost/supported-devices-drivers-and-formats Veja mais formatos na documentação do rghost.
42
+ # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
43
+ def lote(boletos, options = {})
44
+ modelo_generico_multipage(boletos, options)
45
+ end
46
+
47
+ # Cria o métodos dinâmicos (to_pdf, to_gif e etc) com todos os fomátos válidos.
48
+ #
49
+ # @return [Stream]
50
+ # @see Rghost#modelo_generico Recebe os mesmos parâmetros do Rghost#modelo_generico.
51
+ # @example
52
+ # @boleto.to_pdf #=> boleto gerado no formato pdf
53
+ def method_missing(m, *args)
54
+ method = m.to_s
55
+ if method.start_with?('to_')
56
+ modelo_generico(self, (args.first || {}).merge!(formato: method[3..]))
57
+ else
58
+ super
59
+ end
60
+ end
61
+
62
+ private
63
+
64
+ # Retorna um stream pronto para gravação em arquivo.
65
+ #
66
+ # @return [Stream]
67
+ # @param [Boleto] Instância de uma classe de boleto.
68
+ # @param [Hash] options Opção para a criação do boleto.
69
+ # @option options [Symbol] :resolucao Resolução em pixels.
70
+ # @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
71
+ def modelo_generico(boleto, options = {})
72
+ doc = Document.new paper: :A4 # 210x297
73
+
74
+ template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico.eps')
75
+
76
+ raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
77
+
78
+ modelo_generico_template(doc, boleto, template_path)
79
+ modelo_generico_cabecalho(doc, boleto)
80
+ modelo_generico_rodape(doc, boleto)
81
+
82
+ # Gerando codigo de barra com rghost_barcode
83
+ if boleto.codigo_barras
84
+ doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm",
85
+ y: "#{@y - 1.67} cm")
86
+ end
87
+
88
+ # Gerando stream
89
+ formato = options.delete(:formato) || Brcobranca.configuration.formato
90
+ resolucao = options.delete(:resolucao) || Brcobranca.configuration.resolucao
91
+ doc.render_stream(formato.to_sym, resolution: resolucao)
92
+ end
93
+
94
+ # Retorna um stream para multiplos boletos pronto para gravação em arquivo.
95
+ #
96
+ # @return [Stream]
97
+ # @param [Array] Instâncias de classes de boleto.
98
+ # @param [Hash] options Opção para a criação do boleto.
99
+ # @option options [Symbol] :resolucao Resolução em pixels.
100
+ # @option options [Symbol] :formato Formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
101
+ def modelo_generico_multipage(boletos, options = {})
102
+ doc = Document.new paper: :A4 # 210x297
103
+
104
+ template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico.eps')
105
+
106
+ raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
107
+
108
+ boletos.each_with_index do |boleto, index|
109
+ modelo_generico_template(doc, boleto, template_path)
110
+ modelo_generico_cabecalho(doc, boleto)
111
+ modelo_generico_rodape(doc, boleto)
112
+
113
+ # Gerando codigo de barra com rghost_barcode
114
+ if boleto.codigo_barras
115
+ doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm",
116
+ y: "#{@y - 1.67} cm")
117
+ end
118
+
119
+ # Cria nova página se não for o último boleto
120
+ doc.next_page unless index == boletos.length - 1
121
+ end
122
+ # Gerando stream
123
+ formato = options.delete(:formato) || Brcobranca.configuration.formato
124
+ resolucao = options.delete(:resolucao) || Brcobranca.configuration.resolucao
125
+ doc.render_stream(formato.to_sym, resolution: resolucao)
126
+ end
127
+
128
+ # Define o template a ser usado no boleto
129
+ def modelo_generico_template(doc, _boleto, template_path)
130
+ doc.define_template(:template, template_path, x: '0.5 cm', y: '2.7 cm')
131
+ doc.use_template :template
132
+
133
+ doc.define_tags do
134
+ tag :grande, size: 13
135
+ tag :maior, size: 15
136
+ end
137
+ end
138
+
139
+ def move_more(doc, x, y)
140
+ @x += x
141
+ @y += y
142
+ doc.moveto x: "#{@x} cm", y: "#{@y} cm"
143
+ end
144
+
145
+ # Monta o cabeçalho do layout do boleto
146
+ def modelo_generico_cabecalho(doc, boleto)
147
+ # INICIO Primeira parte do BOLETO
148
+ # Pontos iniciais em x e y
149
+ @x = 0.50
150
+ @y = 27.42
151
+ # LOGOTIPO do BANCO
152
+ doc.image boleto.logotipo, x: "#{@x} cm", y: "#{@y} cm"
153
+ # Dados
154
+
155
+ move_more(doc, 4.84, 0.02)
156
+ doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :maior
157
+ move_more(doc, 2, 0)
158
+ doc.show boleto.codigo_barras.linha_digitavel, tag: :grande
159
+ move_more(doc, -6.5, -0.83)
160
+
161
+ doc.show boleto.cedente
162
+
163
+ move_more(doc, 15.8, 0)
164
+ doc.show boleto.agencia_conta_boleto
165
+
166
+ move_more(doc, -15.8, -0.9)
167
+ doc.show boleto.cedente_endereco
168
+
169
+ move_more(doc, 15.8, 0)
170
+ doc.show boleto.nosso_numero_boleto
171
+
172
+ move_more(doc, -15.8, -0.8)
173
+ doc.show boleto.documento_numero
174
+
175
+ move_more(doc, 3.5, 0)
176
+ doc.show boleto.especie
177
+
178
+ move_more(doc, 1.5, 0)
179
+ doc.show boleto.quantidade
180
+
181
+ move_more(doc, 2, 0)
182
+ doc.show boleto.documento_cedente.formata_documento.to_s
183
+
184
+ move_more(doc, 3.8, 0)
185
+ doc.show boleto.data_vencimento.to_s_br
186
+
187
+ move_more(doc, 5, 0)
188
+ doc.show boleto.valor_documento.to_currency
189
+
190
+ move_more(doc, -15, -1.3)
191
+ doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
192
+
193
+ move_more(doc, 0, -0.3)
194
+ doc.show boleto.sacado_endereco.to_s
195
+ return unless boleto.demonstrativo
196
+
197
+ doc.text_area boleto.demonstrativo, width: '18.5 cm', text_align: :left, x: "#{@x - 0.8} cm",
198
+ y: "#{@y - 0.9} cm", row_height: '0.4 cm'
199
+
200
+ # FIM Primeira parte do BOLETO
201
+ end
202
+
203
+ # Monta o corpo e rodapé do layout do boleto
204
+ def modelo_generico_rodape(doc, boleto)
205
+ # INICIO Segunda parte do BOLETO BB
206
+ # Pontos iniciais em x e y
207
+ @x = 0.50
208
+ @y = 12.22
209
+ # LOGOTIPO do BANCO
210
+ doc.image boleto.logotipo, x: "#{@x} cm", y: "#{@y} cm"
211
+
212
+ move_more(doc, 4.84, 0.01)
213
+ doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :maior
214
+
215
+ move_more(doc, 2, 0)
216
+ doc.show boleto.codigo_barras.linha_digitavel, tag: :grande
217
+
218
+ move_more(doc, -6.5, -0.9)
219
+ doc.show boleto.local_pagamento
220
+
221
+ move_more(doc, 15.8, 0)
222
+ doc.show boleto.data_vencimento.to_s_br if boleto.data_vencimento
223
+
224
+ move_more(doc, -15.8, -0.8)
225
+ if boleto.cedente_endereco
226
+ doc.show boleto.cedente_endereco
227
+ move_more(doc, 1.2, 0.3)
228
+ doc.show boleto.cedente
229
+ move_more(doc, -1.2, -0.3)
230
+ else
231
+ doc.show boleto.cedente
232
+ end
233
+
234
+ move_more(doc, 15.8, 0)
235
+ doc.show boleto.agencia_conta_boleto
236
+
237
+ move_more(doc, -15.8, -0.9)
238
+ doc.show boleto.data_documento.to_s_br if boleto.data_documento
239
+
240
+ move_more(doc, 3.5, 0)
241
+ doc.show boleto.documento_numero
242
+
243
+ move_more(doc, 5.8, 0)
244
+ doc.show boleto.especie_documento
245
+
246
+ move_more(doc, 1.7, 0)
247
+ doc.show boleto.aceite
248
+
249
+ move_more(doc, 1.3, 0)
250
+
251
+ doc.show boleto.data_processamento.to_s_br if boleto.data_processamento
252
+
253
+ move_more(doc, 3.5, 0)
254
+ doc.show boleto.nosso_numero_boleto
255
+
256
+ move_more(doc, -12.1, -0.8)
257
+ if boleto.variacao
258
+ doc.show "#{boleto.carteira}-#{boleto.variacao}"
259
+ else
260
+ doc.show boleto.carteira
261
+ end
262
+
263
+ move_more(doc, 2, 0)
264
+ doc.show boleto.especie
265
+
266
+ move_more(doc, 10.1, 0)
267
+ doc.show boleto.valor_documento.to_currency
268
+
269
+ if boleto.instrucoes
270
+ doc.text_area boleto.instrucoes, width: '14 cm', text_align: :left, x: "#{@x -= 15.8} cm", y: "#{@y -= 0.9} cm",
271
+ row_height: '0.4 cm'
272
+ move_more(doc, 0, -2)
273
+ else
274
+ move_more(doc, -15.8, -0.9)
275
+ doc.show boleto.instrucao1
276
+
277
+ move_more(doc, 0, -0.4)
278
+ doc.show boleto.instrucao2
279
+
280
+ move_more(doc, 0, -0.4)
281
+ doc.show boleto.instrucao3
282
+
283
+ move_more(doc, 0, -0.4)
284
+ doc.show boleto.instrucao4
285
+
286
+ move_more(doc, 0, -0.4)
287
+ doc.show boleto.instrucao5
288
+
289
+ move_more(doc, 0, -0.4)
290
+ doc.show boleto.instrucao6
291
+ end
292
+
293
+ move_more(doc, 0.5, -1.9)
294
+ if boleto.sacado && boleto.sacado_documento
295
+ doc.show "#{boleto.sacado} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}"
296
+ end
297
+
298
+ move_more(doc, 0, -0.4)
299
+ doc.show boleto.sacado_endereco.to_s
300
+
301
+ move_more(doc, 1.2, -0.93)
302
+ doc.show "#{boleto.avalista} - #{boleto.avalista_documento}" if boleto.avalista && boleto.avalista_documento
303
+ # FIM Segunda parte do BOLETO
304
+ end
305
+ end
306
+ end
307
+ end
308
+ end