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,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
|