br_boleto 2.0.1 → 2.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +1 -1
- data/Gemfile.lock +2 -2
- data/br_boleto.gemspec +2 -3
- data/lib/br_boleto/association/have_conta.rb +27 -25
- data/lib/br_boleto/association/have_pagador.rb +2 -0
- data/lib/br_boleto/boleto/base.rb +0 -4
- data/lib/br_boleto/boleto/bradesco.rb +80 -0
- data/lib/br_boleto/boleto/caixa.rb +10 -12
- data/lib/br_boleto/boleto/cecred.rb +76 -0
- data/lib/br_boleto/boleto/itau.rb +114 -0
- data/lib/br_boleto/boleto/sicredi.rb +101 -0
- data/lib/br_boleto/boleto/unicred.rb +21 -0
- data/lib/br_boleto/conta/base.rb +28 -3
- data/lib/br_boleto/conta/bradesco.rb +120 -0
- data/lib/br_boleto/conta/caixa.rb +22 -12
- data/lib/br_boleto/conta/cecred.rb +67 -0
- data/lib/br_boleto/conta/itau.rb +199 -0
- data/lib/br_boleto/conta/sicoob.rb +40 -11
- data/lib/br_boleto/conta/sicredi.rb +171 -0
- data/lib/br_boleto/conta/unicred.rb +38 -0
- data/lib/br_boleto/helper/default_codes.rb +535 -26
- data/lib/br_boleto/pagador.rb +4 -0
- data/lib/br_boleto/remessa/base.rb +2 -0
- data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
- data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
- data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
- data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
- data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
- data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
- data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
- data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
- data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
- data/lib/br_boleto/remessa/pagamento.rb +93 -43
- data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
- data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
- data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
- data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
- data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
- data/lib/br_boleto/retorno/pagamento.rb +18 -4
- data/lib/br_boleto/version.rb +2 -2
- data/lib/br_boleto.rb +28 -0
- data/lib/config/locales/br-boleto-en.yml +1 -0
- data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
- data/test/br_boleto/association/have_pagador_test.rb +24 -0
- data/test/br_boleto/boleto/bradesco_test.rb +125 -0
- data/test/br_boleto/boleto/caixa_test.rb +18 -18
- data/test/br_boleto/boleto/cecred_test.rb +115 -0
- data/test/br_boleto/boleto/itau_test.rb +160 -0
- data/test/br_boleto/boleto/sicredi_test.rb +136 -0
- data/test/br_boleto/boleto/unicred_test.rb +128 -0
- data/test/br_boleto/conta/base_test.rb +298 -3
- data/test/br_boleto/conta/bradesco_test.rb +142 -0
- data/test/br_boleto/conta/caixa_test.rb +7 -6
- data/test/br_boleto/conta/cecred_test.rb +119 -0
- data/test/br_boleto/conta/itau_test.rb +189 -0
- data/test/br_boleto/conta/sicoob_test.rb +32 -2
- data/test/br_boleto/conta/sicredi_test.rb +180 -0
- data/test/br_boleto/conta/unicred_test.rb +154 -0
- data/test/br_boleto/pagador_test.rb +22 -2
- data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
- data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
- data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
- data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
- data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
- data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
- data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
- data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
- data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
- data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
- data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
- data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
- data/test/br_boleto/retorno/pagamento_test.rb +7 -0
- data/test/factories/boleto/boleto_bradesco.rb +18 -0
- data/test/factories/boleto/boleto_cecred.rb +18 -0
- data/test/factories/boleto/boleto_itau.rb +18 -0
- data/test/factories/boleto/boleto_sicredi.rb +18 -0
- data/test/factories/boleto/boleto_unicred.rb +18 -0
- data/test/factories/conta/bradesco.rb +16 -0
- data/test/factories/conta/caixa.rb +2 -1
- data/test/factories/conta/cecred.rb +15 -0
- data/test/factories/conta/itau.rb +15 -0
- data/test/factories/conta/sicoob.rb +2 -1
- data/test/factories/conta/sicredi.rb +15 -0
- data/test/factories/conta/unicred.rb +15 -0
- data/test/factories/remessa/cnab240/bradesco.rb +9 -0
- data/test/factories/remessa/cnab240/cecred.rb +9 -0
- data/test/factories/remessa/cnab240/itau.rb +9 -0
- data/test/factories/remessa/cnab240/sicredi.rb +9 -0
- data/test/factories/remessa/cnab240/unicred.rb +9 -0
- data/test/factories/remessa/cnab400/bradesco.rb +8 -0
- data/test/factories/remessa/cnab400/itau.rb +8 -0
- data/test/factories/remessa/cnab400/sicredi.rb +8 -0
- data/test/factories/remessa/cnab400/unicred.rb +8 -0
- data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
- data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
- data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
- data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
- data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
- data/test/fixtures/retorno/cnab400/itau.ret +54 -0
- metadata +138 -3
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Remessa
|
|
4
|
+
module Cnab240
|
|
5
|
+
class Itau < BrBoleto::Remessa::Cnab240::Base
|
|
6
|
+
def conta_class
|
|
7
|
+
BrBoleto::Conta::Itau
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
########################### HEADER ARQUIVO #############################
|
|
11
|
+
#
|
|
12
|
+
# Informação da conta
|
|
13
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
14
|
+
# ---------------------------------------------------------
|
|
15
|
+
# Complemento Registro (Zero) 01 53 - 53
|
|
16
|
+
# Agencia 04 54 - 57
|
|
17
|
+
# Complemento Registro (Branco) 01 58 - 58
|
|
18
|
+
# Complemento Registro (Zeros) 07 59 - 65
|
|
19
|
+
# Conta Corrente 05 66 - 70
|
|
20
|
+
# Complemento Registro (Branco) 01 71 - 71
|
|
21
|
+
# DV da Conta 01 72 - 72
|
|
22
|
+
#
|
|
23
|
+
# TOTAL = 20 posições
|
|
24
|
+
def informacoes_da_conta
|
|
25
|
+
informacoes = ''.rjust(1, '0')
|
|
26
|
+
informacoes << "#{conta.agencia}".adjust_size_to(4, '0', :right)
|
|
27
|
+
informacoes << ''.rjust(1)
|
|
28
|
+
informacoes << ''.rjust(7, '0')
|
|
29
|
+
informacoes << "#{conta.conta_corrente}".adjust_size_to(5, '0', :right)
|
|
30
|
+
informacoes << ''.rjust(1)
|
|
31
|
+
informacoes << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0')
|
|
32
|
+
informacoes
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Espaço reservado para o Banco
|
|
36
|
+
# Para o Itau esse espaço deve ter 'Brancos'
|
|
37
|
+
# 54 posições
|
|
38
|
+
def header_arquivo_posicao_172_a_225
|
|
39
|
+
''.rjust(54)
|
|
40
|
+
end
|
|
41
|
+
def header_arquivo_posicao_172_a_191
|
|
42
|
+
header_arquivo_posicao_172_a_225
|
|
43
|
+
end
|
|
44
|
+
def header_arquivo_posicao_192_a_211
|
|
45
|
+
''
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Posição 226 a 228 do Header do Arquivo
|
|
49
|
+
# Para o Itau esse espaço deve ter 'Zeros'
|
|
50
|
+
# 3 posições
|
|
51
|
+
def header_posicao_226_a_228
|
|
52
|
+
''.rjust(3, '0')
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Posição 229 a 240 do Header do Arquivo
|
|
56
|
+
# Para o Itau esse espaço deve ter 'Brancos'
|
|
57
|
+
# 12 posições
|
|
58
|
+
def header_posicao_229_a_240
|
|
59
|
+
''.rjust(12)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def complemento_header_arquivo
|
|
63
|
+
"#{header_posicao_226_a_228}#{header_posicao_229_a_240}"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
########################### HEADER LOTE #############################
|
|
67
|
+
#
|
|
68
|
+
# COMPLEMENTO DE REGISTRO
|
|
69
|
+
# Para o Itau esse espaço deve ter 'Brancos'
|
|
70
|
+
# 20 posições
|
|
71
|
+
def codigo_convenio
|
|
72
|
+
''.adjust_size_to(20)
|
|
73
|
+
end
|
|
74
|
+
def convenio_lote(lote)
|
|
75
|
+
codigo_convenio
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
######################### SEGMENTO P #############################
|
|
79
|
+
#
|
|
80
|
+
# segmento_p_posicao_024_a_057
|
|
81
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
82
|
+
# -----------------------------------------------------------
|
|
83
|
+
# COMPLEMENTO DE REGISTRO (ZEROS) 07 24 - 30
|
|
84
|
+
# NÚMERO DA CONTA CORRENTE 05 31 - 35
|
|
85
|
+
# COMPLEMENTO DE REGISTRO (BRANCO) 01 36 - 36
|
|
86
|
+
# DV AG./CONTA EMPRESA 01 37 - 37
|
|
87
|
+
# NÚMERO DA CARTEIRA 03 38 - 40
|
|
88
|
+
# NÚMERO DOCUMENTO 08 41 - 48
|
|
89
|
+
# NOSSO NÚMERO DV 01 49 - 49
|
|
90
|
+
# COMPLEMENTO DE REGISTRO (BRANCOS) 08 50 - 57
|
|
91
|
+
#
|
|
92
|
+
# TOTAL = 34 posições
|
|
93
|
+
def complemento_p(pagamento)
|
|
94
|
+
complemento = ''.adjust_size_to(7, '0', :right)
|
|
95
|
+
complemento << "#{conta.conta_corrente}".adjust_size_to(5, '0', :right)
|
|
96
|
+
complemento << ''.rjust(1)
|
|
97
|
+
complemento << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)
|
|
98
|
+
complemento << "#{conta.carteira}".adjust_size_to(3, '0', :right)
|
|
99
|
+
complemento << "#{pagamento.numero_documento}".adjust_size_to(8, '0', :right)
|
|
100
|
+
complemento << "#{pagamento.nosso_numero}".split('').last
|
|
101
|
+
complemento << ''.rjust(8)
|
|
102
|
+
complemento
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Segmento P posição 059 a 062
|
|
106
|
+
# Para o Itau esse espaço deve ter 'Zeros'
|
|
107
|
+
# 5 posições
|
|
108
|
+
def segmento_p_posicao_058_a_062
|
|
109
|
+
''.rjust(5, '0')
|
|
110
|
+
end
|
|
111
|
+
def segmento_p_posicao_058_a_058
|
|
112
|
+
segmento_p_posicao_058_a_062
|
|
113
|
+
end
|
|
114
|
+
def segmento_p_posicao_059_a_059(pagamento)
|
|
115
|
+
''
|
|
116
|
+
end
|
|
117
|
+
def segmento_p_posicao_060_a_060
|
|
118
|
+
''
|
|
119
|
+
end
|
|
120
|
+
def segmento_p_posicao_061_a_061(pagamento)
|
|
121
|
+
''
|
|
122
|
+
end
|
|
123
|
+
def segmento_p_posicao_062_a_062(pagamento)
|
|
124
|
+
''
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# segmento_p_posicao_063_a_077
|
|
128
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
129
|
+
# ---------------------------------------------------------
|
|
130
|
+
# Número Doc. 10 63 - 72
|
|
131
|
+
# Brancos 05 73 - 77
|
|
132
|
+
# TOTAL = 15 posições
|
|
133
|
+
def segmento_p_numero_do_documento(pagamento)
|
|
134
|
+
segmento = "#{pagamento.numero_documento}".adjust_size_to(10, '0', :right)
|
|
135
|
+
segmento << ''.rjust(5)
|
|
136
|
+
segmento
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# Código do Juros de Mora
|
|
140
|
+
# Para o Itau esse espaço deve ter 'Zero'
|
|
141
|
+
# 1 posição
|
|
142
|
+
def segmento_p_posicao_118_a_118(pagamento)
|
|
143
|
+
'0'
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
# Código da Moeda
|
|
148
|
+
# Para o Itau esse espaço deve ter 'Zeros'
|
|
149
|
+
# 2 posições
|
|
150
|
+
def segmento_p_posicao_228_a_229(pagamento)
|
|
151
|
+
'00'
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
######################### SEGMENTO R #############################
|
|
155
|
+
# Codigo da multa
|
|
156
|
+
def segmento_r_posicao_066_a_066(pagamento)
|
|
157
|
+
"#{conta.get_codigo_multa('0')}".adjust_size_to(1, '0')
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
######################### TRAILER LOTE #############################
|
|
161
|
+
#
|
|
162
|
+
# trailer_lote_posicao_024_a_240(lote, nr_lote)
|
|
163
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
164
|
+
# ----------------------------------------------------------------
|
|
165
|
+
# Qtd. Títulos em Cobrança 006 024 - 029
|
|
166
|
+
# Val. Tot. Títulos em Carteiras 017 030 - 046
|
|
167
|
+
# Qtd. Títulos em Cobrança 006 047 - 052
|
|
168
|
+
# Val. Tot. Títulos em Carteiras 017 053 - 069
|
|
169
|
+
# Complemento De Registro (Zeros) 046 070 - 115
|
|
170
|
+
# N. Aviso de Lançamento 008 116 - 123
|
|
171
|
+
# Uso FEBRABAN 117 124 - 240
|
|
172
|
+
#
|
|
173
|
+
# TOTAL = 217 posições
|
|
174
|
+
#
|
|
175
|
+
def complemento_trailer_lote(lote, nr_lote)
|
|
176
|
+
complemento = ''
|
|
177
|
+
complemento << ''.rjust(92, '0') # VALORES UTILIZADOS APENAS PARA ARQUIVO DE RETORNO
|
|
178
|
+
complemento << ''.rjust(8, '0') # Número do aviso de lançamento do crédito referente a(os) título(s) de cobrança, que poderá ser utilizado no extrato de conta corrente.
|
|
179
|
+
complemento << ''.rjust(117, ' ') # USO EXCLUSIVO FEBRABAN
|
|
180
|
+
complemento
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
end
|
|
@@ -239,24 +239,12 @@ module BrBoleto
|
|
|
239
239
|
''.rjust(117, ' ')
|
|
240
240
|
end
|
|
241
241
|
|
|
242
|
-
#
|
|
243
|
-
# Padrão
|
|
244
|
-
# Padrão do SICOOB = (1 = Valor fixo e 2 = Percentual, 0 = isento)
|
|
242
|
+
# Código para Protesto
|
|
243
|
+
# Padrão do SICOOB '1' = Protestar Dias Corridos
|
|
245
244
|
# 1 posição
|
|
246
245
|
#
|
|
247
|
-
def
|
|
248
|
-
|
|
249
|
-
cod.in?(['1','2']) ? cod : '0'
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
# Codigo do Juros
|
|
253
|
-
# Padrão pela FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento)
|
|
254
|
-
# Padrão do SICOOB = (1 = Valor fixo e 2 = Percentual, 0 = isento)
|
|
255
|
-
# 1 posição
|
|
256
|
-
#
|
|
257
|
-
def segmento_p_posicao_118_a_118(pagamento)
|
|
258
|
-
cod = "#{pagamento.codigo_juros}".adjust_size_to(1, '0')
|
|
259
|
-
cod.in?(['1','2']) ? cod : '0'
|
|
246
|
+
def segmento_p_posicao_221_a_221(pagamento)
|
|
247
|
+
'1'
|
|
260
248
|
end
|
|
261
249
|
|
|
262
250
|
end
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Remessa
|
|
4
|
+
module Cnab240
|
|
5
|
+
class Sicredi < BrBoleto::Remessa::Cnab240::Base
|
|
6
|
+
def conta_class
|
|
7
|
+
BrBoleto::Conta::Sicredi
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
########################### HEADER ARQUIVO #############################
|
|
11
|
+
|
|
12
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
13
|
+
# ---------------------------------------------------------
|
|
14
|
+
# Cód. Cedente (convênio) 20 33-52
|
|
15
|
+
# TOTAL = 20 posições
|
|
16
|
+
def codigo_convenio
|
|
17
|
+
''.adjust_size_to(20)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Informação da conta
|
|
21
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
22
|
+
# ---------------------------------------------------------
|
|
23
|
+
# agencia 05 53 - 57
|
|
24
|
+
# digito Verif. agencia 01 58 - 58
|
|
25
|
+
# Número da Conta Corrente 12 59 - 70
|
|
26
|
+
# DV da Conta 01 71 - 71
|
|
27
|
+
# Branco 01 72 - 72
|
|
28
|
+
#
|
|
29
|
+
# TOTAL = 20 posições
|
|
30
|
+
def informacoes_da_conta
|
|
31
|
+
informacoes = "#{conta.agencia}".adjust_size_to(5, '0', :right)
|
|
32
|
+
informacoes << ''.adjust_size_to(1)
|
|
33
|
+
informacoes << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
|
|
34
|
+
informacoes << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)
|
|
35
|
+
informacoes << ''.adjust_size_to(1)
|
|
36
|
+
informacoes.adjust_size_to(20, '0')
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Densidade de gravação (BPI), do arquivo encaminhado.
|
|
40
|
+
def header_arquivo_posicao_167_a_171
|
|
41
|
+
'01600'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Para uso reservado do Banco
|
|
45
|
+
# Para o Sicredi esse espaço deve ter 'Brancos'
|
|
46
|
+
# 20 posições
|
|
47
|
+
def header_arquivo_posicao_172_a_191
|
|
48
|
+
''.rjust(20, ' ')
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Para uso reservado da Empresa
|
|
52
|
+
# Para o Sicredi esse espaço deve ter 'Brancos'
|
|
53
|
+
# 20 posições
|
|
54
|
+
def header_arquivo_posicao_192_a_211
|
|
55
|
+
''.rjust(20, ' ')
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Uso exclusivo FEBRABAN/CNAB
|
|
59
|
+
# Para o Sicredi esse espaço deve ter 'Brancos'
|
|
60
|
+
# TOTAL = 29 posições
|
|
61
|
+
def complemento_header_arquivo
|
|
62
|
+
''.rjust(29, ' ')
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
############################ HEADER LOTE ###############################
|
|
66
|
+
|
|
67
|
+
# Uso exclusivo FEBRABAN/CNAB
|
|
68
|
+
# Para o Sicredi esse espaço deve ter 'Brancos'
|
|
69
|
+
# 2 posições
|
|
70
|
+
def header_lote_posicao_012_a_013
|
|
71
|
+
''.rjust(2, ' ')
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
75
|
+
# ---------------------------------------------------------
|
|
76
|
+
# Cód. Cedente (convênio) 20 34-53
|
|
77
|
+
# TOTAL = 20 posições
|
|
78
|
+
def convenio_lote(lote)
|
|
79
|
+
''.rjust(20, ' ')
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
############################ SEGMENTO P ################################
|
|
83
|
+
|
|
84
|
+
# Dígito Verificador da Agência
|
|
85
|
+
def segmento_p_posicao_023_a_023
|
|
86
|
+
''.adjust_size_to(1)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Forma de Cadastr. do Título no Banco
|
|
90
|
+
def segmento_p_posicao_059_a_059(pagamento)
|
|
91
|
+
'1'
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# segmento_p_posicao_024_a_057
|
|
95
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
96
|
+
# ---------------------------------------------------------
|
|
97
|
+
# Número da Conta Corrente 12 24 - 35
|
|
98
|
+
# DV da Conta 01 36 - 36
|
|
99
|
+
# Branco 01 37 - 37
|
|
100
|
+
# Nosso número 20 38 - 57
|
|
101
|
+
#
|
|
102
|
+
# TOTAL = 34 posições
|
|
103
|
+
def complemento_p(pagamento)
|
|
104
|
+
complemento = ''
|
|
105
|
+
complemento << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
|
|
106
|
+
complemento << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)
|
|
107
|
+
complemento << ''.adjust_size_to(1)
|
|
108
|
+
complemento << "#{pagamento.nosso_numero}".adjust_size_to(20)
|
|
109
|
+
complemento.adjust_size_to(34, '0')
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
# segmento_p_posicao_063_a_077
|
|
114
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
115
|
+
# ---------------------------------------------------------
|
|
116
|
+
# Número Doc. 10 63 - 72
|
|
117
|
+
# Brancos 05 73 - 77
|
|
118
|
+
# TOTAL = 15 posições
|
|
119
|
+
def segmento_p_numero_do_documento(pagamento)
|
|
120
|
+
segmento = ''
|
|
121
|
+
segmento << "#{pagamento.numero_documento}".adjust_size_to(10, '0', :right)
|
|
122
|
+
segmento << ''.rjust(5, ' ')
|
|
123
|
+
segmento
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Data do Juros de Mora
|
|
127
|
+
# Para o SICREDI é um Registro do tipo filler com 'Zeros' obrigatório
|
|
128
|
+
# 8 posições
|
|
129
|
+
def segmento_p_posicao_119_a_126(pagamento)
|
|
130
|
+
''.adjust_size_to(8, '0')
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
# Código para Baixa/Devolução
|
|
135
|
+
# Sicredi utiliza sempre domínio ‘1’ para esse campo ( '1' => Baixar / devolver ).
|
|
136
|
+
# 1 posição
|
|
137
|
+
def segmento_p_posicao_224_a_224
|
|
138
|
+
'1'
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Número de Dias para Baixa/Devolução
|
|
142
|
+
# Sicredi utiliza sempre, nesse campo, 60 dias para baixa/devolução.
|
|
143
|
+
# 3 posoções
|
|
144
|
+
#
|
|
145
|
+
def segmento_p_posicao_225_a_227
|
|
146
|
+
'060'
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
############################ SEGMENTO R ################################
|
|
150
|
+
|
|
151
|
+
# Código do desconto 2
|
|
152
|
+
# 1 posição
|
|
153
|
+
def segmento_r_posicao_018_a_018(pagamento)
|
|
154
|
+
'2'
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Código do desconto 3
|
|
158
|
+
# 1 posição
|
|
159
|
+
def segmento_r_posicao_042_a_042(pagamento)
|
|
160
|
+
'2'
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# Codigo da multa
|
|
164
|
+
# O Sicredi apenas aceita o campo multa preenchido com '2' - Percentual.
|
|
165
|
+
# 1 posição
|
|
166
|
+
def segmento_r_posicao_066_a_066(pagamento)
|
|
167
|
+
'2'
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Data da multa
|
|
171
|
+
# Para o SICREDI é um Registro do tipo filler com 'Zeros' obrigatório
|
|
172
|
+
# 8 posição
|
|
173
|
+
def segmento_r_posicao_067_a_074(pagamento)
|
|
174
|
+
"".adjust_size_to(8, '0')
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
########################### TRAILER LOTE ################################
|
|
178
|
+
|
|
179
|
+
# trailer_lote_posicao_024_a_240(lote, nr_lote)
|
|
180
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
181
|
+
# ----------------------------------------------------------------
|
|
182
|
+
# Qtd. Títulos em Cobrança 006 024 - 029
|
|
183
|
+
# Val. Tot. Títulos em Carteiras 017 030 - 046
|
|
184
|
+
# Qtd. Títulos em Cobrança 006 047 - 052
|
|
185
|
+
# Val. Tot. Títulos em Carteiras 017 053 - 069
|
|
186
|
+
# Qtd. Títulos em Cobrança 006 070 - 075
|
|
187
|
+
# Qtd. Títulos em Carteiras 017 076 - 092
|
|
188
|
+
# Qtd. de Títulos em Cobrança 006 093 - 098
|
|
189
|
+
# Val. Tot. dos Títulos em Carteiras 017 099 - 115
|
|
190
|
+
# N. Aviso de Lançamento 008 116 - 123
|
|
191
|
+
# Uso FEBRABAN 117 124 - 240
|
|
192
|
+
#
|
|
193
|
+
# TOTAL = 217 posições
|
|
194
|
+
#
|
|
195
|
+
def complemento_trailer_lote(lote, nr_lote)
|
|
196
|
+
complemento = ''
|
|
197
|
+
complemento << ''.rjust(92, '0') # Valores só serão utilizados para informação do arquivo retorno
|
|
198
|
+
complemento << ''.rjust(8, ' ') # O Sicredi atualmente não utiliza este campo
|
|
199
|
+
complemento << ''.rjust(117, ' ') # USO EXCLUSIVO FEBRABAN
|
|
200
|
+
complemento
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Remessa
|
|
4
|
+
module Cnab240
|
|
5
|
+
# A Unicred (através do CobExpress) utiliza e o layout de boleto os arquivos de remessa/retorno disponibilizados pelo Banco Bradesco.
|
|
6
|
+
class Unicred < BrBoleto::Remessa::Cnab240::Bradesco
|
|
7
|
+
def conta_class
|
|
8
|
+
BrBoleto::Conta::Unicred
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# segmento_p_posicao_024_a_057
|
|
12
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
|
13
|
+
# ---------------------------------------------------------
|
|
14
|
+
# Número da Conta Corrente 12 24 - 35
|
|
15
|
+
# DV da Conta 01 36 - 36
|
|
16
|
+
# DV da Ag/Conta (Branco) 01 37 - 37
|
|
17
|
+
# Número Doc. 11 38 - 48
|
|
18
|
+
# Nosso Número 01 49 - 49
|
|
19
|
+
# Brancos 08 50 - 57
|
|
20
|
+
#
|
|
21
|
+
# TOTAL = 34 posições
|
|
22
|
+
def complemento_p(pagamento)
|
|
23
|
+
complemento = ''
|
|
24
|
+
complemento << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
|
|
25
|
+
complemento << "#{conta.conta_corrente_dv}".adjust_size_to(1)
|
|
26
|
+
complemento << ''.adjust_size_to(1)
|
|
27
|
+
complemento << "#{pagamento.numero_documento}".adjust_size_to(11, '0', :right)
|
|
28
|
+
complemento << "#{pagamento.nosso_numero}".split('').last
|
|
29
|
+
complemento << ''.adjust_size_to(8)
|
|
30
|
+
complemento.adjust_size_to(34)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Por padrão o UNICRED não utiliza o Segmento S
|
|
34
|
+
def usa_segmento_S?
|
|
35
|
+
false
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|