br_boleto 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,141 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module BrBoleto
|
3
|
+
module Remessa
|
4
|
+
module Cnab240
|
5
|
+
class Bradesco < BrBoleto::Remessa::Cnab240::Base
|
6
|
+
def conta_class
|
7
|
+
BrBoleto::Conta::Bradesco
|
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
|
+
"#{conta.convenio}".adjust_size_to(20, '0', :right)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Posição 212 a 240 do Header do Arquivo
|
21
|
+
# Para o Bradesco esse espaço deve ter 'Brancos'
|
22
|
+
# TOTAL = 29 posições
|
23
|
+
def complemento_header_arquivo
|
24
|
+
''.rjust(29, ' ')
|
25
|
+
end
|
26
|
+
|
27
|
+
# Informação da conta
|
28
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
29
|
+
# ---------------------------------------------------------
|
30
|
+
# agencia 05 54 - 58
|
31
|
+
# digito Verif. agencia 01 59 - 59
|
32
|
+
# Número da Conta Corrente 12 60 - 71
|
33
|
+
# DV da Conta 01 72 - 72
|
34
|
+
# DV da Ag/Conta 01 73 - 73
|
35
|
+
#
|
36
|
+
# TOTAL = 20 posições
|
37
|
+
def informacoes_da_conta
|
38
|
+
informacoes = "#{conta.agencia}".adjust_size_to(5, '0', :right)
|
39
|
+
informacoes << "#{conta.agencia_dv}"
|
40
|
+
informacoes << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
|
41
|
+
if (conta.conta_corrente_dv.to_s).size == 2 # Para os Bancos que se utilizam de duas posições para o Dígito Verificador do Número da Conta Corrente.
|
42
|
+
informacoes << "#{(conta.conta_corrente_dv.to_s)[0]}" # Preencher este campo com a 1a posição deste dígito.
|
43
|
+
informacoes << "#{(conta.conta_corrente_dv.to_s)[1]}" # Preencher este campo com a 2a posição deste dígito.
|
44
|
+
else
|
45
|
+
informacoes << "#{conta.conta_corrente_dv}".adjust_size_to(2) # Caso contrário ajustar o conta_corrente_dv para 2 digitos adicionando espaço em branco no final
|
46
|
+
end
|
47
|
+
informacoes.adjust_size_to(20, '0')
|
48
|
+
end
|
49
|
+
|
50
|
+
########################### HEADER LOTE #############################
|
51
|
+
#
|
52
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
53
|
+
# ---------------------------------------------------------
|
54
|
+
# Cód. Cedente (convênio) 20 34-53
|
55
|
+
# TOTAL = 20 posições
|
56
|
+
def convenio_lote(lote)
|
57
|
+
codigo_convenio
|
58
|
+
end
|
59
|
+
|
60
|
+
######################### SEGMENTO P #############################
|
61
|
+
#
|
62
|
+
# segmento_p_posicao_024_a_057
|
63
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
64
|
+
# ---------------------------------------------------------
|
65
|
+
# Número da Conta Corrente 12 24 - 35
|
66
|
+
# DV da Conta 01 36 - 36
|
67
|
+
# DV da Ag/Conta 01 37 - 37
|
68
|
+
# Identificação do Produto 03 38 - 40
|
69
|
+
# Zeros 05 41 - 45
|
70
|
+
# Número Doc. 11 46 - 56
|
71
|
+
# DV Nosso Número 01 57 - 57
|
72
|
+
#
|
73
|
+
# TOTAL = 34 posições
|
74
|
+
def complemento_p(pagamento)
|
75
|
+
complemento = ''
|
76
|
+
complemento << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
|
77
|
+
if (conta.conta_corrente_dv.to_s).size == 2 # Para os Bancos que se utilizam de duas posições para o Dígito Verificador do Número da Conta Corrente.
|
78
|
+
complemento << "#{(conta.conta_corrente_dv.to_s)[0]}" # Preencher este campo com a 1a posição deste dígito.
|
79
|
+
complemento << "#{(conta.conta_corrente_dv.to_s)[1]}" # Preencher este campo com a 2a posição deste dígito.
|
80
|
+
else
|
81
|
+
complemento << "#{conta.conta_corrente_dv}".adjust_size_to(2) # Caso contrário ajustar o conta_corrente_dv para 2 digitos adicionando espaço em branco no final
|
82
|
+
end
|
83
|
+
complemento << "#{conta.carteira}".adjust_size_to(3, '0', :right)
|
84
|
+
complemento << ''.rjust(5, '0')
|
85
|
+
complemento << "#{pagamento.numero_documento}".adjust_size_to(11, '0', :right)
|
86
|
+
complemento << "#{pagamento.nosso_numero}".split('').last
|
87
|
+
complemento.adjust_size_to(34, '0')
|
88
|
+
end
|
89
|
+
|
90
|
+
# segmento_p_posicao_059_a_059
|
91
|
+
# POSIÇÃO TAMANHO DESCRIÇÃO
|
92
|
+
# -------------------------------------------------------------------
|
93
|
+
# 59 - 59 01 Forma de Cadastramento do Título no Banco
|
94
|
+
#
|
95
|
+
# TOTAL = 1 posição
|
96
|
+
def segmento_p_posicao_059_a_059(pagamento)
|
97
|
+
'1'
|
98
|
+
end
|
99
|
+
|
100
|
+
# segmento_p_posicao_063_a_077
|
101
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
102
|
+
# ---------------------------------------------------------
|
103
|
+
# Número Doc. 10 63 - 72
|
104
|
+
# Zeros 05 73 - 77
|
105
|
+
# TOTAL = 15 posições
|
106
|
+
def segmento_p_numero_do_documento(pagamento)
|
107
|
+
segmento = ''
|
108
|
+
segmento << "#{pagamento.numero_documento}".adjust_size_to(15, '0', :right)
|
109
|
+
segmento
|
110
|
+
end
|
111
|
+
|
112
|
+
######################### TRAILER LOTE #############################
|
113
|
+
#
|
114
|
+
# trailer_lote_posicao_024_a_240(lote, nr_lote)
|
115
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
116
|
+
# ----------------------------------------------------------------
|
117
|
+
# Qtd. Títulos em Cobrança 006 024 - 029
|
118
|
+
# Val. Tot. Títulos em Carteiras 017 030 - 046
|
119
|
+
# Qtd. Títulos em Cobrança 006 047 - 052
|
120
|
+
# Val. Tot. Títulos em Carteiras 017 053 - 069
|
121
|
+
# Qtd. Títulos em Cobrança 006 070 - 075
|
122
|
+
# Qtd. Títulos em Carteiras 017 076 - 092
|
123
|
+
# Qtd. de Títulos em Cobrança 006 093 - 098
|
124
|
+
# Val. Tot. dos Títulos em Carteiras 017 099 - 115
|
125
|
+
# N. Aviso de Lançamento 008 116 - 123
|
126
|
+
# Uso FEBRABAN 117 124 - 240
|
127
|
+
#
|
128
|
+
# TOTAL = 217 posições
|
129
|
+
#
|
130
|
+
def complemento_trailer_lote(lote, nr_lote)
|
131
|
+
complemento = ''
|
132
|
+
complemento << ''.rjust(92, '0') # VALORES UTILIZADOS APENAS PARA ARQUIVO DE RETORNO
|
133
|
+
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.
|
134
|
+
complemento << ''.rjust(117, ' ') # USO EXCLUSIVO FEBRABAN
|
135
|
+
complemento
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -84,7 +84,7 @@ module BrBoleto
|
|
84
84
|
def complemento_p(pagamento)
|
85
85
|
complemento = "#{conta.convenio}".adjust_size_to(6, '0', :right)
|
86
86
|
complemento << ''.rjust(11, '0')
|
87
|
-
complemento << "#{conta.carteira}".adjust_size_to(conta.valid_carteira_length, '
|
87
|
+
complemento << "#{conta.carteira}".adjust_size_to(conta.valid_carteira_length, '2', :right)
|
88
88
|
complemento << pagamento.nosso_numero.adjust_size_to(15, '0', :right)
|
89
89
|
complemento
|
90
90
|
end
|
@@ -121,6 +121,13 @@ module BrBoleto
|
|
121
121
|
def segmento_p_posicao_196_a_220(pagamento)
|
122
122
|
"#{pagamento.numero_documento}".adjust_size_to(25, '0', :right)
|
123
123
|
end
|
124
|
+
|
125
|
+
# Segmento Q Cód. Bco. Corresp. na Compensação
|
126
|
+
# Deve ser 3 espaços em branco
|
127
|
+
# 3 posições
|
128
|
+
def segmento_q_posicao_210_a_212
|
129
|
+
''.rjust(3, ' ')
|
130
|
+
end
|
124
131
|
|
125
132
|
def segmento_s_posicao_019_a_020_tipo_impressao_1_ou_2(pagamento)
|
126
133
|
'00'
|
@@ -0,0 +1,169 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
module BrBoleto
|
3
|
+
module Remessa
|
4
|
+
module Cnab240
|
5
|
+
class Cecred < BrBoleto::Remessa::Cnab240::Base
|
6
|
+
def conta_class
|
7
|
+
BrBoleto::Conta::Cecred
|
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
|
+
"#{conta.convenio}".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
|
+
# DV da Ag/Conta 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 << "#{conta.agencia_dv}"
|
33
|
+
informacoes << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
|
34
|
+
informacoes << "#{conta.conta_corrente_dv}".adjust_size_to(2)
|
35
|
+
informacoes
|
36
|
+
end
|
37
|
+
|
38
|
+
# Espaço reservado para o Banco
|
39
|
+
# TOTAL = 20 posições
|
40
|
+
def header_arquivo_posicao_172_a_191
|
41
|
+
''.rjust(20, ' ')
|
42
|
+
end
|
43
|
+
|
44
|
+
# Espaço reservado para a Empresa
|
45
|
+
# TOTAL = 20 posições
|
46
|
+
def header_arquivo_posicao_192_a_211
|
47
|
+
''.rjust(20, ' ')
|
48
|
+
end
|
49
|
+
|
50
|
+
# Para o Cecred esse espaço deve ter 'Brancos'
|
51
|
+
# TOTAL = 29 posições
|
52
|
+
def complemento_header_arquivo
|
53
|
+
''.rjust(29, ' ')
|
54
|
+
end
|
55
|
+
|
56
|
+
########################### HEADER LOTE #############################
|
57
|
+
|
58
|
+
# Forma de Lançamento
|
59
|
+
# Para o Cecred esse espaço deve ter 'Brancos'
|
60
|
+
def header_lote_posicao_012_a_013
|
61
|
+
''.adjust_size_to(2)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Convenio -> Código do Cedente no Banco
|
65
|
+
# Posicao 034 a 053
|
66
|
+
# TOTAL = 20 posições
|
67
|
+
def convenio_lote(lote)
|
68
|
+
codigo_convenio
|
69
|
+
end
|
70
|
+
|
71
|
+
######################### SEGMENTO P #############################
|
72
|
+
#
|
73
|
+
# segmento_p_posicao_024_a_057
|
74
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
75
|
+
# -----------------------------------------------------------------------
|
76
|
+
# Número da Conta Corrente 12 24 - 35
|
77
|
+
# DV da Conta 01 36 - 36
|
78
|
+
# DV da Ag/Conta 01 37 - 37
|
79
|
+
# Identificação do Título na Cooperativa 20 38 - 57
|
80
|
+
#
|
81
|
+
# TOTAL = 34 posições
|
82
|
+
def complemento_p(pagamento)
|
83
|
+
complemento = ''
|
84
|
+
complemento << "#{conta.conta_corrente}".adjust_size_to(12, '0', :right)
|
85
|
+
complemento << "#{conta.conta_corrente_dv}".adjust_size_to(2)
|
86
|
+
complemento << "#{pagamento.nosso_numero}".adjust_size_to(20)
|
87
|
+
complemento
|
88
|
+
end
|
89
|
+
|
90
|
+
# Forma de Cadastr. do Título no Banco
|
91
|
+
def segmento_p_posicao_059_a_059(pagamento)
|
92
|
+
'1'
|
93
|
+
end
|
94
|
+
|
95
|
+
# Tipo de Documento
|
96
|
+
def segmento_p_posicao_060_a_060
|
97
|
+
'1'
|
98
|
+
end
|
99
|
+
|
100
|
+
# Número do Documento de Cobrança
|
101
|
+
# Posição 063 a 077
|
102
|
+
# TOTAL = 15 posições
|
103
|
+
def segmento_p_numero_do_documento(pagamento)
|
104
|
+
segmento = "#{pagamento.numero_documento}".adjust_size_to(15, '0', :right)
|
105
|
+
end
|
106
|
+
|
107
|
+
# Código para Baixa/Devolução ('1' = Baixar / Devolver , '2' = Não Baixar / Não Devolver)
|
108
|
+
def segmento_p_posicao_224_a_224
|
109
|
+
'2'
|
110
|
+
end
|
111
|
+
|
112
|
+
# Número de Dias para Baixa/Devolução
|
113
|
+
# Para o Cecred esse espaço deve ter 'Brancos'
|
114
|
+
# TOTAL = 3 posoções
|
115
|
+
def segmento_p_posicao_225_a_227
|
116
|
+
''.adjust_size_to(3)
|
117
|
+
end
|
118
|
+
|
119
|
+
######################### SEGMENTO R #############################
|
120
|
+
#
|
121
|
+
# Tipo de Inscrição
|
122
|
+
# TOTAL = 1 posição
|
123
|
+
def segmento_q_posicao_154_a_154(pagamento)
|
124
|
+
'0'
|
125
|
+
end
|
126
|
+
|
127
|
+
# CNPF/CNPJ Avalista
|
128
|
+
# Para o Cecred esse espaço deve ter 'Zeros'
|
129
|
+
# # TOTAL = 15 posições
|
130
|
+
def segmento_q_posicao_155_a_169(pagamento)
|
131
|
+
''.adjust_size_to(15, '0', :right)
|
132
|
+
end
|
133
|
+
|
134
|
+
# Nome do avalista
|
135
|
+
# Para o Cecred esse espaço deve ter 'Brancos'
|
136
|
+
# # TOTAL = 40 posições
|
137
|
+
def segmento_q_posicao_170_a_209(pagamento)
|
138
|
+
''.adjust_size_to(40)
|
139
|
+
end
|
140
|
+
|
141
|
+
######################### TRAILER LOTE #############################
|
142
|
+
# trailer_lote_posicao_024_a_240(lote, nr_lote)
|
143
|
+
# DESCRIÇÃO TAMANHO POSIÇÃO
|
144
|
+
# ----------------------------------------------------------------
|
145
|
+
# Qtd. Títulos em Cobrança 006 024 - 029
|
146
|
+
# Val. Tot. Títulos em Carteiras 017 030 - 046
|
147
|
+
# Qtd. Títulos em Cobrança 006 047 - 052
|
148
|
+
# Val. Tot. Títulos em Carteiras 017 053 - 069
|
149
|
+
# Qtd. Títulos em Cobrança 006 070 - 075
|
150
|
+
# Qtd. Títulos em Carteiras 017 076 - 092
|
151
|
+
# Qtd. de Títulos em Cobrança 006 093 - 098
|
152
|
+
# Val. Tot. dos Títulos em Carteiras 017 099 - 115
|
153
|
+
# N. Aviso de Lançamento 008 116 - 123
|
154
|
+
# Uso FEBRABAN 117 124 - 240
|
155
|
+
#
|
156
|
+
# TOTAL = 217 posições
|
157
|
+
#
|
158
|
+
def complemento_trailer_lote(lote, nr_lote)
|
159
|
+
complemento = ''
|
160
|
+
complemento << ''.rjust(92, '0') # VALORES UTILIZADOS APENAS PARA ARQUIVO DE RETORNO
|
161
|
+
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.
|
162
|
+
complemento << ''.rjust(117, ' ') # USO EXCLUSIVO FEBRABAN
|
163
|
+
complemento
|
164
|
+
end
|
165
|
+
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
@@ -3,6 +3,7 @@ module BrBoleto
|
|
3
3
|
module Cnab240
|
4
4
|
module Helper
|
5
5
|
module SegmentoP
|
6
|
+
|
6
7
|
# Monta o registro segmento P do arquivo
|
7
8
|
#
|
8
9
|
# @param pagamento [BrBoleto::Remessa::Pagamento]
|
@@ -24,7 +25,7 @@ module BrBoleto
|
|
24
25
|
segmento_p << segmento_p_posicao_009_a_013(sequencial) # num. sequencial do registro no lote 5
|
25
26
|
segmento_p << segmento_p_posicao_014_a_014 # cod. segmento 1
|
26
27
|
segmento_p << segmento_p_posicao_015_a_015 # uso exclusivo 1
|
27
|
-
segmento_p << segmento_p_posicao_016_a_017
|
28
|
+
segmento_p << segmento_p_posicao_016_a_017(pagamento) # cod. movimento remessa 2
|
28
29
|
segmento_p << segmento_p_posicao_018_a_022 # agencia 5
|
29
30
|
segmento_p << segmento_p_posicao_023_a_023 # dv agencia 1
|
30
31
|
segmento_p << segmento_p_posicao_024_a_057(pagamento) # informacoes da conta 34
|
@@ -50,11 +51,11 @@ module BrBoleto
|
|
50
51
|
segmento_p << segmento_p_posicao_166_a_180(pagamento) # valor IOF 15
|
51
52
|
segmento_p << segmento_p_posicao_181_a_195(pagamento) # valor abatimento 15
|
52
53
|
segmento_p << segmento_p_posicao_196_a_220(pagamento) # identificacao titulo empresa 25 *
|
53
|
-
segmento_p << segmento_p_posicao_221_a_221
|
54
|
-
segmento_p << segmento_p_posicao_222_a_223
|
54
|
+
segmento_p << segmento_p_posicao_221_a_221(pagamento) # cod. para protesto 1 *
|
55
|
+
segmento_p << segmento_p_posicao_222_a_223(pagamento) # dias para protesto 2 *
|
55
56
|
segmento_p << segmento_p_posicao_224_a_224 # cod. para baixa 1 *
|
56
57
|
segmento_p << segmento_p_posicao_225_a_227 # dias para baixa 2 *
|
57
|
-
segmento_p << segmento_p_posicao_228_a_229
|
58
|
+
segmento_p << segmento_p_posicao_228_a_229(pagamento) # cod. da moeda 2
|
58
59
|
segmento_p << segmento_p_posicao_230_a_239 # uso exclusivo 10
|
59
60
|
segmento_p << segmento_p_posicao_240_a_240 # uso exclusivo 1
|
60
61
|
segmento_p.upcase
|
@@ -108,8 +109,9 @@ module BrBoleto
|
|
108
109
|
# cod. movimento remessa -> Padrão 01 = Entrada de Titulos
|
109
110
|
# 2 posições
|
110
111
|
#
|
111
|
-
def segmento_p_posicao_016_a_017
|
112
|
-
'
|
112
|
+
def segmento_p_posicao_016_a_017(pagamento)
|
113
|
+
code = "#{pagamento.identificacao_ocorrencia}".rjust(2, '0')
|
114
|
+
"#{conta.get_codigo_movimento_remessa(code, 240)}".adjust_size_to(2, '0')
|
113
115
|
end
|
114
116
|
|
115
117
|
# Agência Mantenedora da Conta
|
@@ -138,11 +140,11 @@ module BrBoleto
|
|
138
140
|
complemento_p(pagamento)
|
139
141
|
end
|
140
142
|
|
141
|
-
# Código da carteira
|
143
|
+
# Código da carteira ou tipo de cobrança
|
142
144
|
# 1 posição
|
143
145
|
#
|
144
146
|
def segmento_p_posicao_058_a_058
|
145
|
-
conta.
|
147
|
+
"#{conta.get_tipo_cobranca(conta.codigo_carteira, 240)}".adjust_size_to(1, '1')
|
146
148
|
end
|
147
149
|
|
148
150
|
# Forma de Cadastr. do Título no Banco
|
@@ -163,14 +165,14 @@ module BrBoleto
|
|
163
165
|
# 1 posição
|
164
166
|
#
|
165
167
|
def segmento_p_posicao_061_a_061(pagamento)
|
166
|
-
pagamento.emissao_boleto
|
168
|
+
"#{conta.get_identificacao_emissao(pagamento.emissao_boleto, 240)}".adjust_size_to(1, '2')
|
167
169
|
end
|
168
170
|
|
169
171
|
# Identificação da Distribuição
|
170
172
|
# 1 posição
|
171
173
|
#
|
172
174
|
def segmento_p_posicao_062_a_062(pagamento)
|
173
|
-
pagamento.distribuicao_boleto
|
175
|
+
"#{conta.get_distribuicao_boleto(pagamento.distribuicao_boleto)}".adjust_size_to(1, '2')
|
174
176
|
end
|
175
177
|
|
176
178
|
# Número do Documento de Cobrança
|
@@ -213,7 +215,7 @@ module BrBoleto
|
|
213
215
|
# 2 posições
|
214
216
|
#
|
215
217
|
def segmento_p_posicao_107_a_108(pagamento)
|
216
|
-
"#{pagamento.especie_titulo}".adjust_size_to(2, '0', :right)
|
218
|
+
"#{conta.get_especie_titulo(pagamento.especie_titulo, 240)}".adjust_size_to(2, '0', :right)
|
217
219
|
end
|
218
220
|
|
219
221
|
# Identific. de Título Aceito/Não Aceito (A ou N)
|
@@ -235,8 +237,7 @@ module BrBoleto
|
|
235
237
|
# Padrão FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento)
|
236
238
|
#
|
237
239
|
def segmento_p_posicao_118_a_118(pagamento)
|
238
|
-
|
239
|
-
cod.in?(['1','2','3']) ? cod : '3'
|
240
|
+
"#{conta.get_codigo_juros(pagamento.codigo_juros)}".adjust_size_to(1, '3')
|
240
241
|
end
|
241
242
|
|
242
243
|
# Data do Juros de Mora
|
@@ -257,7 +258,7 @@ module BrBoleto
|
|
257
258
|
# 1 posição
|
258
259
|
#
|
259
260
|
def segmento_p_posicao_142_a_142(pagamento)
|
260
|
-
"#{pagamento.cod_desconto}".adjust_size_to(1)
|
261
|
+
"#{conta.get_codigo_desconto(pagamento.cod_desconto)}".adjust_size_to(1, '0')
|
261
262
|
end
|
262
263
|
|
263
264
|
# Data do Desconto 1
|
@@ -298,15 +299,21 @@ module BrBoleto
|
|
298
299
|
# Código para Protesto
|
299
300
|
# 1 posição
|
300
301
|
#
|
301
|
-
def segmento_p_posicao_221_a_221
|
302
|
-
'1'
|
302
|
+
def segmento_p_posicao_221_a_221(pagamento)
|
303
|
+
"#{conta.get_codigo_protesto(pagamento.codigo_protesto)}".adjust_size_to(1, '1')
|
303
304
|
end
|
304
305
|
|
305
|
-
# Número de Dias para Protesto
|
306
|
+
# Número de Dias para Protesto
|
307
|
+
# Para os códigos '3' = Não Protestar e '8' = Negativação sem Protesto,
|
308
|
+
# setar dias de protesto '00', caso contrário setar o valor de dias_protesto
|
306
309
|
# 2 posições
|
307
310
|
#
|
308
|
-
def segmento_p_posicao_222_a_223
|
309
|
-
|
311
|
+
def segmento_p_posicao_222_a_223(pagamento)
|
312
|
+
if pagamento.codigo_protesto.to_i.in?([3, 8])
|
313
|
+
'00'
|
314
|
+
else
|
315
|
+
"#{pagamento.dias_protesto}".adjust_size_to(2, '0')
|
316
|
+
end
|
310
317
|
end
|
311
318
|
|
312
319
|
# Código para Baixa/Devolução
|
@@ -326,8 +333,9 @@ module BrBoleto
|
|
326
333
|
# Código da Moeda (09 para real)
|
327
334
|
# 2 posições
|
328
335
|
#
|
329
|
-
def segmento_p_posicao_228_a_229
|
330
|
-
'
|
336
|
+
def segmento_p_posicao_228_a_229(pagamento)
|
337
|
+
moeda = "#{pagamento.codigo_moeda}".rjust(2, '0')
|
338
|
+
"#{conta.get_codigo_moeda(moeda, 240)}".adjust_size_to(2, '0')
|
331
339
|
end
|
332
340
|
|
333
341
|
# Nº do Contrato da Operação de Crédito (Uso do banco)
|
@@ -23,7 +23,7 @@ module BrBoleto
|
|
23
23
|
segmento_q << segmento_q_posicao_009_a_013(sequencial) # num. sequencial do registro no lote 5
|
24
24
|
segmento_q << segmento_q_posicao_014_a_014 # cod. segmento 1
|
25
25
|
segmento_q << segmento_q_posicao_015_a_015 # uso exclusivo 1
|
26
|
-
segmento_q << segmento_q_posicao_016_a_017
|
26
|
+
segmento_q << segmento_q_posicao_016_a_017(pagamento) # cod. movimento remessa 2
|
27
27
|
segmento_q << segmento_q_posicao_018_a_018(pagamento) # tipo insc. sacado 1
|
28
28
|
segmento_q << segmento_q_posicao_019_a_033(pagamento) # documento sacado 14
|
29
29
|
segmento_q << segmento_q_posicao_034_a_073(pagamento) # nome cliente 40
|
@@ -90,8 +90,9 @@ module BrBoleto
|
|
90
90
|
# Código de Movimento Remessa
|
91
91
|
# 2 posições
|
92
92
|
#
|
93
|
-
def segmento_q_posicao_016_a_017
|
94
|
-
'
|
93
|
+
def segmento_q_posicao_016_a_017(pagamento)
|
94
|
+
code = "#{pagamento.identificacao_ocorrencia}".rjust(2, '0')
|
95
|
+
"#{conta.get_codigo_movimento_remessa(code, 240)}".adjust_size_to(2, '0')
|
95
96
|
end
|
96
97
|
|
97
98
|
# Tipo de Inscrição (1=CPF 2=CNPJ)
|
@@ -22,7 +22,7 @@ module BrBoleto
|
|
22
22
|
segmento_r << segmento_r_posicao_009_a_013(sequencial)
|
23
23
|
segmento_r << segmento_r_posicao_014_a_014
|
24
24
|
segmento_r << segmento_r_posicao_015_a_015
|
25
|
-
segmento_r << segmento_r_posicao_016_a_017
|
25
|
+
segmento_r << segmento_r_posicao_016_a_017(pagamento)
|
26
26
|
segmento_r << segmento_r_posicao_018_a_018(pagamento)
|
27
27
|
segmento_r << segmento_r_posicao_019_a_026(pagamento)
|
28
28
|
segmento_r << segmento_r_posicao_027_a_041(pagamento)
|
@@ -96,8 +96,9 @@ module BrBoleto
|
|
96
96
|
# Código de Movimento Remessa - 01 = Entrada de Titulos
|
97
97
|
# 2 posições
|
98
98
|
#
|
99
|
-
def segmento_r_posicao_016_a_017
|
100
|
-
'
|
99
|
+
def segmento_r_posicao_016_a_017(pagamento)
|
100
|
+
code = "#{pagamento.identificacao_ocorrencia}".rjust(2, '0')
|
101
|
+
"#{conta.get_codigo_movimento_remessa(code, 240)}".adjust_size_to(2, '0')
|
101
102
|
end
|
102
103
|
|
103
104
|
# Código do desconto 2
|
@@ -147,8 +148,7 @@ module BrBoleto
|
|
147
148
|
# Padrão FEBRABAN = (1 = Valor fixo e 2 = Percentual, 3 = isento)
|
148
149
|
#
|
149
150
|
def segmento_r_posicao_066_a_066(pagamento)
|
150
|
-
|
151
|
-
cod.in?(['1','2','3']) ? cod : '3'
|
151
|
+
"#{conta.get_codigo_multa(pagamento.codigo_multa)}".adjust_size_to(1, '3')
|
152
152
|
end
|
153
153
|
|
154
154
|
# Data da multa
|
@@ -22,7 +22,7 @@ module BrBoleto
|
|
22
22
|
segmento_s << segmento_s_posicao_009_a_013(sequencial)
|
23
23
|
segmento_s << segmento_s_posicao_014_a_014
|
24
24
|
segmento_s << segmento_s_posicao_015_a_015
|
25
|
-
segmento_s << segmento_s_posicao_016_a_017
|
25
|
+
segmento_s << segmento_s_posicao_016_a_017(pagamento)
|
26
26
|
segmento_s << segmento_s_posicao_018_a_018(pagamento)
|
27
27
|
if pagamento.tipo_impressao == '3'
|
28
28
|
segmento_s << segmento_s_tipo_impressao_3(pagamento)
|
@@ -80,8 +80,9 @@ module BrBoleto
|
|
80
80
|
# Código de Movimento Remessa - 01 = Entrada de Titulos
|
81
81
|
# 2 posições
|
82
82
|
#
|
83
|
-
def segmento_s_posicao_016_a_017
|
84
|
-
'
|
83
|
+
def segmento_s_posicao_016_a_017(pagamento)
|
84
|
+
code = "#{pagamento.identificacao_ocorrencia}".rjust(2, '0')
|
85
|
+
"#{conta.get_codigo_movimento_remessa(code, 240)}".adjust_size_to(2, '0')
|
85
86
|
end
|
86
87
|
|
87
88
|
# Tipo de impressão
|