brcobranca 8.0.0 → 9.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/.travis.yml +5 -3
- data/CHANGELOG.md +9 -0
- data/Gemfile +2 -2
- data/README.md +24 -12
- data/brcobranca.gemspec +0 -2
- data/lib/brcobranca.rb +43 -26
- data/lib/brcobranca/arquivos/logos/bancobrasilia.eps +0 -0
- data/lib/brcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/cecred.eps +427 -0
- data/lib/brcobranca/arquivos/logos/cecred_carne.eps +427 -0
- data/lib/brcobranca/arquivos/logos/credisis.eps +5402 -0
- data/lib/brcobranca/arquivos/logos/credisis_carne.eps +5410 -0
- data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +21 -21
- data/lib/brcobranca/boleto/banco_brasilia.rb +96 -0
- data/lib/brcobranca/boleto/banco_nordeste.rb +4 -6
- data/lib/brcobranca/boleto/banestes.rb +7 -7
- data/lib/brcobranca/boleto/banrisul.rb +5 -5
- data/lib/brcobranca/boleto/base.rb +28 -22
- data/lib/brcobranca/boleto/bradesco.rb +6 -6
- data/lib/brcobranca/boleto/caixa.rb +11 -18
- data/lib/brcobranca/boleto/cecred.rb +86 -0
- data/lib/brcobranca/boleto/credisis.rb +124 -0
- data/lib/brcobranca/boleto/hsbc.rb +10 -27
- data/lib/brcobranca/boleto/itau.rb +9 -10
- data/lib/brcobranca/boleto/santander.rb +5 -6
- data/lib/brcobranca/boleto/sicoob.rb +5 -5
- data/lib/brcobranca/boleto/sicredi.rb +7 -7
- data/lib/brcobranca/boleto/template/rghost.rb +127 -80
- data/lib/brcobranca/boleto/template/rghost_carne.rb +9 -9
- data/lib/brcobranca/boleto/unicred.rb +126 -4
- data/lib/brcobranca/calculo_data.rb +3 -0
- data/lib/brcobranca/formatacao_string.rb +15 -5
- data/lib/brcobranca/remessa/base.rb +16 -9
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +14 -13
- data/lib/brcobranca/remessa/cnab240/base.rb +252 -119
- data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +299 -0
- data/lib/brcobranca/remessa/cnab240/caixa.rb +61 -7
- data/lib/brcobranca/remessa/cnab240/cecred.rb +151 -0
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +109 -123
- data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +94 -0
- data/lib/brcobranca/remessa/cnab240/sicredi.rb +177 -0
- data/lib/brcobranca/remessa/cnab240/unicred.rb +9 -0
- data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +14 -0
- data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +166 -0
- data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +4 -6
- data/lib/brcobranca/remessa/cnab400/banrisul.rb +155 -0
- data/lib/brcobranca/remessa/cnab400/base.rb +4 -4
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +7 -8
- data/lib/brcobranca/remessa/cnab400/citibank.rb +3 -4
- data/lib/brcobranca/remessa/cnab400/credisis.rb +128 -0
- data/lib/brcobranca/remessa/cnab400/itau.rb +23 -6
- data/lib/brcobranca/remessa/cnab400/santander.rb +80 -65
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +2 -2
- data/lib/brcobranca/remessa/cnab400/unicred.rb +143 -0
- data/lib/brcobranca/remessa/pagamento.rb +50 -14
- data/lib/brcobranca/retorno/base.rb +4 -4
- data/lib/brcobranca/retorno/cnab240/base.rb +11 -8
- data/lib/brcobranca/retorno/cnab240/caixa.rb +4 -0
- data/lib/brcobranca/retorno/cnab240/cecred.rb +102 -0
- data/lib/brcobranca/retorno/cnab240/santander.rb +35 -12
- data/lib/brcobranca/retorno/cnab240/sicoob.rb +8 -4
- data/lib/brcobranca/retorno/cnab240/sicredi.rb +79 -0
- data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +127 -0
- data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +89 -0
- data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +112 -0
- data/lib/brcobranca/retorno/cnab400/banrisul.rb +42 -0
- data/lib/brcobranca/retorno/cnab400/base.rb +18 -7
- data/lib/brcobranca/retorno/cnab400/bradesco.rb +9 -3
- data/lib/brcobranca/retorno/cnab400/credisis.rb +115 -0
- data/lib/brcobranca/retorno/cnab400/itau.rb +10 -4
- data/lib/brcobranca/retorno/cnab400/santander.rb +57 -0
- data/lib/brcobranca/retorno/cnab400/unicred.rb +118 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +7 -3
- data/lib/brcobranca/retorno/retorno_cnab400.rb +6 -77
- data/lib/brcobranca/util/date.rb +20 -0
- data/lib/brcobranca/util/errors.rb +76 -0
- data/lib/brcobranca/validations.rb +232 -0
- data/lib/brcobranca/version.rb +1 -1
- data/spec/arquivos/CNAB240CECRED.RET +10 -0
- data/spec/arquivos/CNAB240SANTANDER.RET +8 -26
- data/spec/arquivos/CNAB240SICREDI.CRT +8 -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/CNAB400CREDISIS.RET +3 -0
- data/spec/arquivos/CNAB400SANTANDER.RET +54 -0
- data/spec/arquivos/CNAB400UNICRED.RET +3 -0
- data/spec/brcobranca/base_spec.rb +6 -4
- data/spec/brcobranca/boleto/banco_brasil_spec.rb +22 -22
- data/spec/brcobranca/boleto/banco_brasilia_spec.rb +134 -0
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +19 -19
- data/spec/brcobranca/boleto/banestes_spec.rb +19 -19
- data/spec/brcobranca/boleto/banrisul_spec.rb +14 -14
- data/spec/brcobranca/boleto/bradesco_spec.rb +13 -13
- data/spec/brcobranca/boleto/caixa_spec.rb +7 -7
- data/spec/brcobranca/boleto/cecred_spec.rb +147 -0
- data/spec/brcobranca/boleto/credisis_spec.rb +155 -0
- data/spec/brcobranca/boleto/hsbc_spec.rb +17 -37
- data/spec/brcobranca/boleto/itau_spec.rb +16 -16
- data/spec/brcobranca/boleto/santander_spec.rb +11 -11
- data/spec/brcobranca/boleto/sicoob_spec.rb +17 -17
- data/spec/brcobranca/boleto/sicredi_spec.rb +13 -13
- data/spec/brcobranca/boleto/unicred_spec.rb +10 -10
- data/spec/brcobranca/boletos_em_lote_spec.rb +1 -1
- data/spec/brcobranca/formatacao_string_spec.rb +1 -1
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +10 -18
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +39 -38
- 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 +58 -39
- 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_brasilia_spec.rb +183 -0
- data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +4 -2
- data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +190 -0
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +1 -1
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +16 -11
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +11 -11
- data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +188 -0
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +25 -12
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +35 -36
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +37 -0
- data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +185 -0
- data/spec/brcobranca/remessa/pagamento_spec.rb +45 -27
- data/spec/brcobranca/retorno/cnab240/base_spec.rb +7 -8
- data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +50 -0
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +35 -18
- data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +20 -19
- 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 +34 -13
- data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +4 -4
- data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +25 -0
- data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -4
- 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_cnab400_spec.rb +1 -1
- data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +1 -1
- data/spec/brcobranca/rghost_spec.rb +1 -1
- data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +1 -1
- data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +1 -1
- data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +5 -4
- data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +5 -4
- data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +1 -1
- data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +6 -5
- data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +7 -0
- data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +1 -1
- data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +3 -0
- data/spec/fixtures/remessa/remessa-itau-cnab400.rem +3 -2
- data/spec/fixtures/remessa/remessa-santander-cnab400.rem +2 -2
- 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/support/shared_examples/busca_logotipo.rb +0 -2
- data/spec/support/shared_examples/cnab240.rb +92 -28
- data/spec/support/shared_examples/cnab400.rb +60 -14
- data/spec/support/shared_examples/formatos_validos.rb +6 -6
- metadata +103 -31
@@ -5,7 +5,7 @@ module Brcobranca
|
|
5
5
|
class Sicoob < Base # Sicoob (Bancoob)
|
6
6
|
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
7
7
|
validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
8
|
-
validates_length_of :
|
8
|
+
validates_length_of :nosso_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
9
9
|
validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
10
10
|
validates_length_of :variacao, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
11
11
|
validates_length_of :quantidade, maximum: 3, message: 'deve ser menor ou igual a 3 dígitos.'
|
@@ -46,8 +46,8 @@ module Brcobranca
|
|
46
46
|
# Número documento
|
47
47
|
#
|
48
48
|
# @return [String] 7 caracteres numéricos.
|
49
|
-
def
|
50
|
-
@
|
49
|
+
def nosso_numero=(valor)
|
50
|
+
@nosso_numero = valor.to_s.rjust(7, '0') if valor
|
51
51
|
end
|
52
52
|
|
53
53
|
# Quantidade
|
@@ -61,7 +61,7 @@ module Brcobranca
|
|
61
61
|
#
|
62
62
|
# @return [String] 8 caracteres numéricos.
|
63
63
|
def nosso_numero_boleto
|
64
|
-
"#{
|
64
|
+
"#{nosso_numero}#{nosso_numero_dv}"
|
65
65
|
end
|
66
66
|
|
67
67
|
# 3.13. Nosso número: Código de controle que permite ao Sicoob e à empresa identificar os dados da cobrança que deu origem ao boleto.
|
@@ -93,7 +93,7 @@ module Brcobranca
|
|
93
93
|
# Ex.: 11 – 3 = 8, então Nosso Número + DV = 21-8
|
94
94
|
#
|
95
95
|
def nosso_numero_dv
|
96
|
-
"#{agencia}#{convenio.rjust(10, '0')}#{
|
96
|
+
"#{agencia}#{convenio.rjust(10, '0')}#{nosso_numero}".modulo11(
|
97
97
|
reverse: false,
|
98
98
|
multiplicador: [3, 1, 9, 7],
|
99
99
|
mapeamento: { 10 => 0, 11 => 0 }
|
@@ -14,7 +14,7 @@ module Brcobranca
|
|
14
14
|
attr_accessor :byte_idt
|
15
15
|
|
16
16
|
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
17
|
-
validates_length_of :
|
17
|
+
validates_length_of :nosso_numero, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
18
18
|
validates_length_of :conta_corrente, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
19
19
|
# Carteira
|
20
20
|
# 1 – Com Registro
|
@@ -81,27 +81,27 @@ module Brcobranca
|
|
81
81
|
# @example
|
82
82
|
# boleto.nosso_numero_boleto #=> "14/200022-5"
|
83
83
|
def nosso_numero_boleto
|
84
|
-
"#{
|
84
|
+
"#{nosso_numero_with_byte_idt[0..1]}/#{nosso_numero_with_byte_idt[2..-1]}-#{nosso_numero_dv}"
|
85
85
|
end
|
86
86
|
|
87
87
|
def nosso_numero_codigo_barra
|
88
88
|
nosso_numero_boleto.gsub(/\D/, '')
|
89
89
|
end
|
90
90
|
|
91
|
-
def
|
92
|
-
"#{
|
91
|
+
def nosso_numero_with_byte_idt
|
92
|
+
"#{data_processamento.strftime('%y')}#{byte_idt}#{nosso_numero}"
|
93
93
|
end
|
94
94
|
|
95
95
|
# Número seqüencial utilizado para identificar o boleto.
|
96
96
|
# @return [String] 5 caracteres numéricos.
|
97
|
-
def
|
98
|
-
@
|
97
|
+
def nosso_numero=(valor)
|
98
|
+
@nosso_numero = valor.to_s.rjust(5, '0') if valor
|
99
99
|
end
|
100
100
|
|
101
101
|
# Dígito verificador do nosso número
|
102
102
|
# @return [Integer] 1 caracteres numéricos.
|
103
103
|
def nosso_numero_dv
|
104
|
-
"#{agencia_posto_conta}#{
|
104
|
+
"#{agencia_posto_conta}#{nosso_numero_with_byte_idt}"
|
105
105
|
.modulo11(mapeamento: mapeamento_para_modulo_11)
|
106
106
|
end
|
107
107
|
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
#
|
3
2
|
|
4
3
|
begin
|
5
4
|
require 'rghost'
|
@@ -80,7 +79,7 @@ module Brcobranca
|
|
80
79
|
modelo_generico_rodape(doc, boleto)
|
81
80
|
|
82
81
|
# Gerando codigo de barra com rghost_barcode
|
83
|
-
doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x:
|
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
|
84
83
|
|
85
84
|
# Gerando stream
|
86
85
|
formato = (options.delete(:formato) || Brcobranca.configuration.formato)
|
@@ -108,7 +107,8 @@ module Brcobranca
|
|
108
107
|
modelo_generico_rodape(doc, boleto)
|
109
108
|
|
110
109
|
# Gerando codigo de barra com rghost_barcode
|
111
|
-
doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x:
|
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
112
|
# Cria nova página se não for o último boleto
|
113
113
|
doc.next_page unless index == boletos.length - 1
|
114
114
|
end
|
@@ -120,127 +120,174 @@ module Brcobranca
|
|
120
120
|
|
121
121
|
# Define o template a ser usado no boleto
|
122
122
|
def modelo_generico_template(doc, _boleto, template_path)
|
123
|
-
doc.define_template(:template, template_path, x: '0.
|
123
|
+
doc.define_template(:template, template_path, x: '0.5 cm', y: '2.7 cm')
|
124
124
|
doc.use_template :template
|
125
125
|
|
126
126
|
doc.define_tags do
|
127
127
|
tag :grande, size: 13
|
128
|
+
tag :maior, size: 15
|
128
129
|
end
|
129
130
|
end
|
130
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
|
131
137
|
# Monta o cabeçalho do layout do boleto
|
132
138
|
def modelo_generico_cabecalho(doc, boleto)
|
133
139
|
# INICIO Primeira parte do BOLETO
|
140
|
+
# Pontos iniciais em x e y
|
141
|
+
@x = 0.50
|
142
|
+
@y = 27.42
|
134
143
|
# LOGOTIPO do BANCO
|
135
|
-
doc.image boleto.logotipo, x:
|
144
|
+
doc.image boleto.logotipo, x: "#{@x} cm", y: "#{@y} cm"
|
136
145
|
# Dados
|
137
|
-
|
138
|
-
doc
|
139
|
-
doc.
|
146
|
+
|
147
|
+
move_more(doc, 4.84, 0.02)
|
148
|
+
doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :maior
|
149
|
+
move_more(doc, 2, 0)
|
140
150
|
doc.show boleto.codigo_barras.linha_digitavel, tag: :grande
|
141
|
-
doc
|
151
|
+
move_more(doc, -6.5, -0.83)
|
152
|
+
|
142
153
|
doc.show boleto.cedente
|
143
|
-
|
154
|
+
|
155
|
+
move_more(doc, 15.8, 0)
|
144
156
|
doc.show boleto.agencia_conta_boleto
|
145
|
-
|
157
|
+
|
158
|
+
move_more(doc, -15.8, -0.9)
|
159
|
+
doc.show boleto.cedente_endereco
|
160
|
+
|
161
|
+
move_more(doc, 15.8, 0)
|
162
|
+
doc.show boleto.nosso_numero_boleto
|
163
|
+
|
164
|
+
move_more(doc, -15.8, -0.8)
|
165
|
+
doc.show boleto.documento_numero
|
166
|
+
|
167
|
+
move_more(doc, 3.5, 0)
|
146
168
|
doc.show boleto.especie
|
147
|
-
|
169
|
+
|
170
|
+
move_more(doc, 1.5, 0)
|
148
171
|
doc.show boleto.quantidade
|
149
|
-
|
150
|
-
doc
|
151
|
-
doc.
|
152
|
-
|
153
|
-
doc
|
172
|
+
|
173
|
+
move_more(doc, 2, 0)
|
174
|
+
doc.show "#{boleto.documento_cedente.formata_documento}"
|
175
|
+
|
176
|
+
move_more(doc, 3.8, 0)
|
154
177
|
doc.show boleto.data_vencimento.to_s_br
|
155
|
-
|
156
|
-
doc
|
157
|
-
doc.
|
158
|
-
|
159
|
-
doc
|
178
|
+
|
179
|
+
move_more(doc, 5, 0)
|
180
|
+
doc.show boleto.valor_documento.to_currency
|
181
|
+
|
182
|
+
move_more(doc, -15, -1.3)
|
160
183
|
doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
|
161
|
-
|
162
|
-
doc
|
163
|
-
doc.
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
doc.moveto x: '0.7 cm', y: '19.0 cm'
|
168
|
-
doc.show boleto.demonstrativo3
|
184
|
+
|
185
|
+
move_more(doc, 0, -0.3)
|
186
|
+
doc.show "#{boleto.sacado_endereco}"
|
187
|
+
if boleto.demonstrativo
|
188
|
+
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'
|
189
|
+
end
|
169
190
|
# FIM Primeira parte do BOLETO
|
170
191
|
end
|
171
192
|
|
172
193
|
# Monta o corpo e rodapé do layout do boleto
|
173
194
|
def modelo_generico_rodape(doc, boleto)
|
174
195
|
# INICIO Segunda parte do BOLETO BB
|
196
|
+
# Pontos iniciais em x e y
|
197
|
+
@x = 0.50
|
198
|
+
@y = 12.22
|
175
199
|
# LOGOTIPO do BANCO
|
176
|
-
doc.image boleto.logotipo, x:
|
177
|
-
|
178
|
-
doc
|
179
|
-
doc.
|
200
|
+
doc.image boleto.logotipo, x: "#{@x} cm", y: "#{@y} cm"
|
201
|
+
|
202
|
+
move_more(doc, 4.84, 0.01)
|
203
|
+
doc.show "#{boleto.banco}-#{boleto.banco_dv}", tag: :maior
|
204
|
+
|
205
|
+
move_more(doc, 2, 0)
|
180
206
|
doc.show boleto.codigo_barras.linha_digitavel, tag: :grande
|
181
|
-
|
207
|
+
|
208
|
+
move_more(doc, -6.5, -0.9)
|
182
209
|
doc.show boleto.local_pagamento
|
183
|
-
|
184
|
-
doc
|
185
|
-
doc.
|
210
|
+
|
211
|
+
move_more(doc, 15.8, 0)
|
212
|
+
doc.show boleto.data_vencimento.to_s_br if boleto.data_vencimento
|
213
|
+
|
214
|
+
move_more(doc, -15.8, -0.8)
|
186
215
|
if boleto.cedente_endereco
|
187
216
|
doc.show boleto.cedente_endereco
|
188
|
-
doc
|
217
|
+
move_more(doc, 1.2, 0.3)
|
189
218
|
doc.show boleto.cedente
|
219
|
+
move_more(doc, -1.2, -0.3)
|
190
220
|
else
|
191
221
|
doc.show boleto.cedente
|
192
222
|
end
|
193
|
-
|
194
|
-
doc
|
195
|
-
doc.
|
223
|
+
|
224
|
+
move_more(doc, 15.8, 0)
|
225
|
+
doc.show boleto.agencia_conta_boleto
|
226
|
+
|
227
|
+
move_more(doc, -15.8 , -0.9)
|
196
228
|
doc.show boleto.data_documento.to_s_br if boleto.data_documento
|
197
|
-
|
198
|
-
doc.
|
199
|
-
doc.
|
229
|
+
|
230
|
+
move_more(doc, 3.5, 0)
|
231
|
+
doc.show boleto.documento_numero
|
232
|
+
|
233
|
+
move_more(doc, 5.8, 0)
|
200
234
|
doc.show boleto.especie_documento
|
201
|
-
|
235
|
+
|
236
|
+
move_more(doc, 1.7, 0)
|
202
237
|
doc.show boleto.aceite
|
203
|
-
|
238
|
+
|
239
|
+
move_more(doc, 1.3, 0)
|
240
|
+
|
204
241
|
doc.show boleto.data_processamento.to_s_br if boleto.data_processamento
|
205
|
-
|
206
|
-
doc
|
207
|
-
doc.
|
208
|
-
|
209
|
-
|
242
|
+
|
243
|
+
move_more(doc, 3.5, 0)
|
244
|
+
doc.show boleto.nosso_numero_boleto
|
245
|
+
|
246
|
+
move_more(doc, -12.1, -0.8)
|
247
|
+
if boleto.variacao
|
248
|
+
doc.show "#{boleto.carteira}-#{boleto.variacao}"
|
210
249
|
else
|
211
|
-
|
212
|
-
doc.show "#{boleto.carteira}-#{boleto.variacao}"
|
213
|
-
else
|
214
|
-
doc.show boleto.carteira
|
215
|
-
end
|
250
|
+
doc.show boleto.carteira
|
216
251
|
end
|
217
|
-
|
252
|
+
|
253
|
+
move_more(doc, 2, 0)
|
218
254
|
doc.show boleto.especie
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
255
|
+
|
256
|
+
move_more(doc, 10.1, 0)
|
257
|
+
doc.show boleto.valor_documento.to_currency
|
258
|
+
|
259
|
+
if boleto.instrucoes
|
260
|
+
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'
|
261
|
+
move_more(doc, 0, -2)
|
262
|
+
else
|
263
|
+
move_more(doc, -15.8, -0.9)
|
264
|
+
doc.show boleto.instrucao1
|
265
|
+
|
266
|
+
move_more(doc, 0, -0.4)
|
267
|
+
doc.show boleto.instrucao2
|
268
|
+
|
269
|
+
move_more(doc, 0, -0.4)
|
270
|
+
doc.show boleto.instrucao3
|
271
|
+
|
272
|
+
move_more(doc, 0, -0.4)
|
273
|
+
doc.show boleto.instrucao4
|
274
|
+
|
275
|
+
move_more(doc, 0, -0.4)
|
276
|
+
doc.show boleto.instrucao5
|
277
|
+
|
278
|
+
move_more(doc, 0, -0.4)
|
279
|
+
doc.show boleto.instrucao6
|
280
|
+
end
|
281
|
+
|
282
|
+
|
283
|
+
move_more(doc, 0.5, -1.9)
|
238
284
|
doc.show "#{boleto.sacado} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}" if boleto.sacado && boleto.sacado_documento
|
239
|
-
doc.moveto x: '1.2 cm', y: '8.4 cm'
|
240
|
-
doc.show boleto.sacado_endereco.to_s
|
241
285
|
|
286
|
+
move_more(doc, 0, -0.4)
|
287
|
+
doc.show "#{boleto.sacado_endereco}"
|
288
|
+
|
289
|
+
move_more(doc, 1.2, -0.93)
|
242
290
|
if boleto.avalista && boleto.avalista_documento
|
243
|
-
doc.moveto x: '2.4 cm', y: '7.47 cm'
|
244
291
|
doc.show "#{boleto.avalista} - #{boleto.avalista_documento}"
|
245
292
|
end
|
246
293
|
# FIM Segunda parte do BOLETO
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
#
|
3
2
|
|
4
3
|
begin
|
5
4
|
require 'rghost'
|
@@ -117,11 +116,12 @@ module Brcobranca
|
|
117
116
|
modelo_carne_build_data_left(doc, boleto, colunas, linhas)
|
118
117
|
modelo_carne_build_data_right(doc, boleto, colunas, linhas)
|
119
118
|
|
120
|
-
|
121
|
-
|
122
|
-
|
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
|
123
122
|
|
124
|
-
|
123
|
+
curr_page_position = 0 # reinicia contador por página
|
124
|
+
end
|
125
125
|
end
|
126
126
|
|
127
127
|
# Gerando stream
|
@@ -198,11 +198,11 @@ module Brcobranca
|
|
198
198
|
|
199
199
|
# numero documento
|
200
200
|
doc.moveto x: colunas[0], y: linhas[11]
|
201
|
-
doc.show boleto.
|
201
|
+
doc.show boleto.documento_numero
|
202
202
|
|
203
203
|
# sacado
|
204
204
|
doc.moveto x: colunas[0], y: linhas[13]
|
205
|
-
doc.show boleto.sacado
|
205
|
+
doc.show "#{boleto.sacado}"
|
206
206
|
end
|
207
207
|
|
208
208
|
# aplica dados do lado direito
|
@@ -240,7 +240,7 @@ module Brcobranca
|
|
240
240
|
|
241
241
|
# numero documento
|
242
242
|
doc.moveto x: colunas[3], y: linhas[3]
|
243
|
-
doc.show boleto.
|
243
|
+
doc.show boleto.documento_numero
|
244
244
|
|
245
245
|
# especie doc.
|
246
246
|
doc.moveto x: colunas[8], y: linhas[3]
|
@@ -301,7 +301,7 @@ module Brcobranca
|
|
301
301
|
|
302
302
|
# Sacado endereço
|
303
303
|
doc.moveto x: colunas[2], y: linhas[12]
|
304
|
-
doc.show boleto.sacado_endereco
|
304
|
+
doc.show "#{boleto.sacado_endereco}"
|
305
305
|
|
306
306
|
# codigo de barras
|
307
307
|
# Gerando codigo de barra com rghost_barcode
|
@@ -2,18 +2,140 @@
|
|
2
2
|
#
|
3
3
|
module Brcobranca
|
4
4
|
module Boleto
|
5
|
-
class Unicred <
|
5
|
+
class Unicred < Base # Banco Unicred
|
6
|
+
# <b>REQUERIDO</b>: Código do posto da cooperativa de crédito
|
7
|
+
attr_accessor :posto
|
8
|
+
|
9
|
+
# <b>REQUERIDO</b>: Byte de identificação do cedente do bloqueto utilizado para compor o nosso número.
|
10
|
+
attr_accessor :byte_idt
|
11
|
+
|
12
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
13
|
+
validates_length_of :nosso_numero, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
14
|
+
validates_length_of :conta_corrente, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
15
|
+
# Carteira
|
16
|
+
# 1 – Com Registro
|
17
|
+
# 3 – Sem Registro
|
18
|
+
# Obs.: O Unicred não validará este campo.
|
19
|
+
validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
|
20
|
+
validates_length_of :posto, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
21
|
+
validates_length_of :byte_idt, is: 1, message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
|
22
|
+
validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
23
|
+
|
6
24
|
# Nova instancia do Unicred
|
7
25
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
8
26
|
def initialize(campos = {})
|
9
|
-
campos = {
|
10
|
-
carteira: '3',
|
27
|
+
campos = { carteira: '3',
|
11
28
|
especie_documento: 'DM',
|
12
29
|
local_pagamento: 'PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED'
|
13
30
|
}.merge!(campos)
|
14
|
-
|
15
31
|
super(campos)
|
16
32
|
end
|
33
|
+
|
34
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
35
|
+
#
|
36
|
+
# @return [String] 3 caracteres numéricos.
|
37
|
+
def banco
|
38
|
+
'748'
|
39
|
+
end
|
40
|
+
|
41
|
+
# Carteira
|
42
|
+
#
|
43
|
+
# @return [String] 2 caracteres numéricos.
|
44
|
+
def carteira=(valor)
|
45
|
+
@carteira = valor.to_s.rjust(1, '0') if valor
|
46
|
+
end
|
47
|
+
|
48
|
+
# Posto
|
49
|
+
#
|
50
|
+
# @return [String] 2 caracteres numéricos.
|
51
|
+
def posto=(valor)
|
52
|
+
@posto = valor.to_s.rjust(2, '0') if valor
|
53
|
+
end
|
54
|
+
|
55
|
+
# Número da conta corrente
|
56
|
+
# @return [String] 5 caracteres numéricos.
|
57
|
+
def conta_corrente=(valor)
|
58
|
+
@conta_corrente = valor.to_s.rjust(5, '0') if valor
|
59
|
+
end
|
60
|
+
|
61
|
+
# Código Beneficiário
|
62
|
+
# @return [String] 5 caracteres numéricos.
|
63
|
+
def convenio=(valor)
|
64
|
+
@convenio = valor.to_s.rjust(5, '0') if valor
|
65
|
+
end
|
66
|
+
|
67
|
+
# Dígito verificador do banco
|
68
|
+
# @return [String] 1 caractere.
|
69
|
+
def banco_dv
|
70
|
+
'X'
|
71
|
+
end
|
72
|
+
|
73
|
+
# Nosso número para exibir no boleto.
|
74
|
+
# O campo Nosso Número deve ser apresentado no formato AA/BXXXXX-D, onde:
|
75
|
+
# AA = Ano atual
|
76
|
+
# B = Byte que pode ser de 2 a 9. Somente será 1 se forem boletos pré-impressos.
|
77
|
+
# XXXXX = número sequencial
|
78
|
+
# D = dígito verificador calculado
|
79
|
+
# @return [String]
|
80
|
+
# @example
|
81
|
+
# boleto.nosso_numero_boleto #=> "14/200022-5"
|
82
|
+
def nosso_numero_boleto
|
83
|
+
"#{nosso_numero_with_byte_idt[0..1]}/#{nosso_numero_with_byte_idt[2..-1]}-#{nosso_numero_dv}"
|
84
|
+
end
|
85
|
+
|
86
|
+
def nosso_numero_codigo_barra
|
87
|
+
nosso_numero_boleto.gsub(/\D/, '')
|
88
|
+
end
|
89
|
+
|
90
|
+
def nosso_numero_with_byte_idt
|
91
|
+
"#{data_processamento.strftime('%y')}#{byte_idt}#{nosso_numero}"
|
92
|
+
end
|
93
|
+
|
94
|
+
# Número seqüencial utilizado para identificar o boleto.
|
95
|
+
# @return [String] 5 caracteres numéricos.
|
96
|
+
def nosso_numero=(valor)
|
97
|
+
@nosso_numero = valor.to_s.rjust(5, '0') if valor
|
98
|
+
end
|
99
|
+
|
100
|
+
# Dígito verificador do nosso número
|
101
|
+
# @return [Integer] 1 caracteres numéricos.
|
102
|
+
def nosso_numero_dv
|
103
|
+
"#{agencia_posto_conta}#{nosso_numero_with_byte_idt}"
|
104
|
+
.modulo11(mapeamento: mapeamento_para_modulo_11)
|
105
|
+
end
|
106
|
+
|
107
|
+
def agencia_conta_boleto
|
108
|
+
"#{agencia}.#{posto}.#{convenio}"
|
109
|
+
end
|
110
|
+
|
111
|
+
def agencia_posto_conta
|
112
|
+
"#{agencia}#{posto}#{convenio}"
|
113
|
+
end
|
114
|
+
|
115
|
+
# Segunda parte do código de barras.
|
116
|
+
# Posição Tamanho Conteúdo
|
117
|
+
# 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.
|
118
|
+
# 21 – 21 01 Código numérico correspondente ao tipo de carteira: “1” - carteira simples
|
119
|
+
# 22 – 30 09 Nosso número
|
120
|
+
# 31 – 34 # 04 # Cooperativa de crédito/agência beneficiária
|
121
|
+
# 35 – 36 # 02 # Posto da cooperativa de crédito/agência beneficiária
|
122
|
+
# 37 – 41 # 05 # Código do beneficiário
|
123
|
+
# 42 – 42 # 01 # Será 1 (um) quando houver valor expresso no campo “valor do documento”
|
124
|
+
# 43 – 43 # 01 # Filler – zeros “0”
|
125
|
+
# 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)
|
126
|
+
def codigo_barras_segunda_parte
|
127
|
+
campo_livre = "#{carteira}1#{nosso_numero_codigo_barra}#{agencia_posto_conta}10"
|
128
|
+
campo_livre + campo_livre.modulo11(mapeamento: mapeamento_para_modulo_11).to_s
|
129
|
+
end
|
130
|
+
|
131
|
+
private
|
132
|
+
|
133
|
+
def mapeamento_para_modulo_11
|
134
|
+
{
|
135
|
+
10 => 0,
|
136
|
+
11 => 0
|
137
|
+
}
|
138
|
+
end
|
17
139
|
end
|
18
140
|
end
|
19
141
|
end
|