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
data/lib/br_boleto/conta/base.rb
CHANGED
|
@@ -45,6 +45,12 @@ module BrBoleto
|
|
|
45
45
|
#
|
|
46
46
|
attr_accessor :carteira
|
|
47
47
|
|
|
48
|
+
# Cógigo da carteira / Tipo de Cobrança
|
|
49
|
+
# Código adotado pela FEBRABAN, para identificar a característica dos títulos dentro das modalidades
|
|
50
|
+
# de cobrança existentes no banco
|
|
51
|
+
#
|
|
52
|
+
attr_accessor :codigo_carteira
|
|
53
|
+
|
|
48
54
|
# Modalidade da carteira
|
|
49
55
|
# Alguns bancos utilizam campos separados para definir a modalidade e a carteira
|
|
50
56
|
# porém normalmente é utilizado a nomenclatura "MODALIDADE DA CARTEIRA". Quando utilizado essa
|
|
@@ -61,6 +67,8 @@ module BrBoleto
|
|
|
61
67
|
# Por isso foi criado um alias para que cada um utilize a nomenclatura que preferir.
|
|
62
68
|
attr_accessor :convenio
|
|
63
69
|
attr_accessor :convenio_dv
|
|
70
|
+
|
|
71
|
+
alias_attribute :codigo_empresa, :convenio
|
|
64
72
|
alias_attribute :codigo_cedente, :convenio
|
|
65
73
|
alias_attribute :codigo_cedente_dv, :convenio_dv
|
|
66
74
|
alias_attribute :codigo_beneficiario, :convenio
|
|
@@ -116,7 +124,13 @@ module BrBoleto
|
|
|
116
124
|
validates :carteira, custom_length: {maximum: :valid_carteira_maximum}, if: :valid_carteira_maximum
|
|
117
125
|
validates :carteira, presence: true, if: :valid_carteira_required
|
|
118
126
|
validates :carteira, custom_inclusion: {in: :valid_carteira_inclusion}, if: :valid_carteira_inclusion
|
|
119
|
-
|
|
127
|
+
|
|
128
|
+
# => COD. CARTEIRA / TIPO DE COBRANÇA
|
|
129
|
+
attr_accessor :valid_codigo_carteira_length
|
|
130
|
+
attr_accessor :valid_codigo_carteira_required
|
|
131
|
+
validates :codigo_carteira, custom_length: {is: :valid_codigo_carteira_length}, if: :valid_codigo_carteira_length
|
|
132
|
+
validates :codigo_carteira, presence: true, if: :valid_codigo_carteira_required
|
|
133
|
+
|
|
120
134
|
# => CONTA CORRENTE
|
|
121
135
|
attr_accessor :valid_conta_corrente_length
|
|
122
136
|
attr_accessor :valid_conta_corrente_minimum
|
|
@@ -231,9 +245,20 @@ module BrBoleto
|
|
|
231
245
|
# Agência, código do cedente ou nosso número.
|
|
232
246
|
# <b>Esse campo é específico para cada banco</b>.
|
|
233
247
|
#
|
|
234
|
-
# @return [String] - Corresponde aos campos "Agencia / Codigo do Cedente".
|
|
248
|
+
# @return [String] - Corresponde aos campos "Agencia / Codigo do Cedente-Digito Verificador".
|
|
235
249
|
def agencia_codigo_cedente
|
|
236
|
-
"#{agencia} / #{codigo_cedente}"
|
|
250
|
+
"#{agencia} / #{codigo_cedente}-#{codigo_cedente_dv}"
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
# Código da Carteira ou Tipo de Cobrança
|
|
254
|
+
# Código adotado pela FEBRABAN, para identificar a característica dos títulos dentro das
|
|
255
|
+
# modalidades de cobrança existentes no banco
|
|
256
|
+
def tipo_cobranca
|
|
257
|
+
if codigo_carteira.present?
|
|
258
|
+
codigo_carteira
|
|
259
|
+
elsif carteira.present?
|
|
260
|
+
carteira.first
|
|
261
|
+
end
|
|
237
262
|
end
|
|
238
263
|
|
|
239
264
|
# Embora o padrão seja mostrar o número da carteira no boleto,
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Conta
|
|
4
|
+
class Bradesco < BrBoleto::Conta::Base
|
|
5
|
+
|
|
6
|
+
# MODALIDADE CARTEIRA:
|
|
7
|
+
# _______________________________________________
|
|
8
|
+
# | Carteira | Descrição |
|
|
9
|
+
# | 06 | Sem registro |
|
|
10
|
+
# | 09 | Com registro |
|
|
11
|
+
# | 19 | Com registro |
|
|
12
|
+
# | 21 | Cobrança Interna Com Registro |
|
|
13
|
+
# | 22 | Cobrança Interna Sem Registro |
|
|
14
|
+
# ------------------------------------------------
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def default_values
|
|
18
|
+
super.merge({
|
|
19
|
+
carteira: '06',
|
|
20
|
+
valid_carteira_required: true, # <- Validação dinâmica que a modalidade é obrigatória
|
|
21
|
+
valid_carteira_length: 2, # <- Validação dinâmica que a modalidade deve ter 2 digitos
|
|
22
|
+
valid_carteira_inclusion: %w[06 09 19 21 22], # <- Validação dinâmica de valores aceitos para a modalidade
|
|
23
|
+
codigo_carteira: '1', # Cobrança Simples
|
|
24
|
+
valid_codigo_carteira_length: 1, # <- Validação dinâmica que a modalidade deve ter 1 digito
|
|
25
|
+
valid_conta_corrente_required: true, # <- Validação dinâmica que a conta_corrente é obrigatória
|
|
26
|
+
valid_conta_corrente_maximum: 7, # <- Validação que a conta_corrente deve ter no máximo 7 digitos
|
|
27
|
+
valid_convenio_required: true, # <- Validação que a convenio deve ter obrigatório
|
|
28
|
+
valid_convenio_maximum: 7, # <- Validação que a convenio deve ter no máximo 7 digitos
|
|
29
|
+
})
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def codigo_banco
|
|
33
|
+
'237'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Dígito do código do banco descrito na documentação
|
|
37
|
+
def codigo_banco_dv
|
|
38
|
+
'2'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def nome_banco
|
|
42
|
+
@nome_banco ||= 'BRADESCO'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def versao_layout_arquivo_cnab_240
|
|
46
|
+
'084'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def versao_layout_lote_cnab_240
|
|
50
|
+
'042'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def agencia_dv
|
|
54
|
+
# utilizando a agencia com 4 digitos
|
|
55
|
+
# para calcular o digito
|
|
56
|
+
@agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(agencia).to_s
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def conta_corrente_dv
|
|
60
|
+
@conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a7.new(conta_corrente).to_s
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Campo Agência / Código do Cedente
|
|
64
|
+
# @return [String] Agência com 4 caracteres - digito da agência / Conta de Cobrança com 7 caracteres - Digito da Conta
|
|
65
|
+
# Exemplo: 9999-D / 9999999-D
|
|
66
|
+
def agencia_codigo_cedente
|
|
67
|
+
"#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Número da Carteira de Cobrança, que a empresa opera no Banco.
|
|
71
|
+
# 21 – Cobrança Interna Com Registro
|
|
72
|
+
# 22 – Cobrança Interna sem registro
|
|
73
|
+
# Para as demais carteiras, retornar o número da carteira.
|
|
74
|
+
def carteira_formatada
|
|
75
|
+
if cobranca_interna_formatada.present?
|
|
76
|
+
cobranca_interna_formatada
|
|
77
|
+
else
|
|
78
|
+
carteira
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Retorna a mensagem que devera aparecer no campo carteira para cobranca interna.
|
|
83
|
+
# @return [String]
|
|
84
|
+
def cobranca_interna_formatada
|
|
85
|
+
cobranca_interna = { '21' => '21 – Cobrança Interna Com Registro', '22' => '22 – Cobrança Interna sem registro' }
|
|
86
|
+
cobranca_interna[carteira.to_s]
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Espécie do Título
|
|
90
|
+
def equivalent_especie_titulo_400
|
|
91
|
+
super.merge(
|
|
92
|
+
# Padrão Código para
|
|
93
|
+
{# da GEM o Banco
|
|
94
|
+
'07' => '10' , # Letra de Câmbio
|
|
95
|
+
'17' => '05' , # Recibo
|
|
96
|
+
'19' => '11' , # Nota de Débito
|
|
97
|
+
'32' => '30' , # Boleto de Proposta
|
|
98
|
+
})
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Códigos de Movimento Remessa / Identificacao Ocorrência específicos do Banco
|
|
102
|
+
def equivalent_codigo_movimento_remessa_400
|
|
103
|
+
super.merge(
|
|
104
|
+
# Padrão Código para
|
|
105
|
+
{# da GEM o Banco
|
|
106
|
+
'10' => '18' , # Sustar protesto e baixar Título
|
|
107
|
+
'11' => '19' , # Sustar protesto e manter em carteira
|
|
108
|
+
'31' => '22' , # Transferência Cessão Crédito
|
|
109
|
+
'33' => '68' , # Acerto nos dados do rateio de Crédito
|
|
110
|
+
'43' => '23' , # Transferência entre Carteiras
|
|
111
|
+
'45' => '45' , # Pedido de Negativação
|
|
112
|
+
'46' => '46' , # Excluir Negativação com baixa
|
|
113
|
+
'47' => '47' , # Excluir negativação e manter pendente
|
|
114
|
+
'34' => '69' , # Cancelamento do rateio de crédito.
|
|
115
|
+
})
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
@@ -4,10 +4,13 @@ module BrBoleto
|
|
|
4
4
|
class Caixa < BrBoleto::Conta::Base
|
|
5
5
|
|
|
6
6
|
# MODALIDADE CARTEIRA
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
7
|
+
# Opcoes:
|
|
8
|
+
# 14: Cobrança Simples com registro
|
|
9
|
+
# 24: Cobrança Simples sem registro
|
|
10
|
+
#
|
|
11
|
+
# Carteira/Modalidade:
|
|
12
|
+
# 1/4 = Registrada / Emissão do boleto(4-Beneficiário)
|
|
13
|
+
# 2/4 = Sem Registro / Emissão do boleto(4-Beneficiário)
|
|
11
14
|
|
|
12
15
|
# versão do aplicativo da caixa
|
|
13
16
|
attr_accessor :versao_aplicativo
|
|
@@ -22,13 +25,15 @@ module BrBoleto
|
|
|
22
25
|
|
|
23
26
|
def default_values
|
|
24
27
|
super.merge({
|
|
25
|
-
carteira:
|
|
26
|
-
valid_carteira_required:
|
|
27
|
-
valid_carteira_length:
|
|
28
|
-
valid_carteira_inclusion:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
carteira: '14', # Com registro
|
|
29
|
+
valid_carteira_required: true, # <- Validação dinâmica que a carteira é obrigatória
|
|
30
|
+
valid_carteira_length: 2, # <- Validação dinâmica que a carteira deve ter 2 digitos
|
|
31
|
+
valid_carteira_inclusion: %w[14 24], # <- Validação dinâmica de valores aceitos para a modalidade
|
|
32
|
+
codigo_carteira: '1', # Cobrança Simples
|
|
33
|
+
valid_codigo_carteira_length: 1, # <- Validação dinâmica que a carteira deve ter 1 digito
|
|
34
|
+
valid_convenio_required: true, # <- Validação que a convenio deve ter obrigatório
|
|
35
|
+
valid_convenio_maximum: 6, # <- Validação que a convenio deve ter no máximo 6 digitos
|
|
36
|
+
versao_aplicativo: '0',
|
|
32
37
|
})
|
|
33
38
|
end
|
|
34
39
|
|
|
@@ -71,7 +76,7 @@ module BrBoleto
|
|
|
71
76
|
"#{@versao_aplicativo}".rjust(4, '0') if @versao_aplicativo.present?
|
|
72
77
|
end
|
|
73
78
|
|
|
74
|
-
# Formata a carteira dependendo se ela é registrada ou não.
|
|
79
|
+
# Formata a carteira da carteira dependendo se ela é registrada ou não.
|
|
75
80
|
#
|
|
76
81
|
# Para cobrança COM registro usar: <b>RG</b>
|
|
77
82
|
# Para Cobrança SEM registro usar: <b>SR</b>
|
|
@@ -104,6 +109,11 @@ module BrBoleto
|
|
|
104
109
|
"#{agencia} / #{codigo_cedente}-#{codigo_cedente_dv}"
|
|
105
110
|
end
|
|
106
111
|
|
|
112
|
+
# Identificação da Distribuição exclusiva da CAIXA
|
|
113
|
+
def equivalent_distribuicao_boleto
|
|
114
|
+
super.merge({'0' => '0' }) # 0 = Postagem pelo Beneficiário
|
|
115
|
+
end
|
|
116
|
+
|
|
107
117
|
end
|
|
108
118
|
end
|
|
109
119
|
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Conta
|
|
4
|
+
class Cecred < BrBoleto::Conta::Base
|
|
5
|
+
|
|
6
|
+
# MODALIDADE CARTEIRA:
|
|
7
|
+
# _________________________________________________________
|
|
8
|
+
# | Carteira | Descrição |
|
|
9
|
+
# | 1 | Com Cadastramento (Cobrança Registrada) |
|
|
10
|
+
# ---------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
def default_values
|
|
13
|
+
super.merge({
|
|
14
|
+
carteira: '1',
|
|
15
|
+
valid_carteira_required: true, # <- Validação dinâmica que a modalidade é obrigatória
|
|
16
|
+
valid_carteira_length: 1, # <- Validação dinâmica que a modalidade deve ter 2 digitos
|
|
17
|
+
valid_carteira_inclusion: %w[1], # <- Validação dinâmica de valores aceitos para a modalidade
|
|
18
|
+
codigo_carteira: '1', # Cobrança Simples
|
|
19
|
+
valid_codigo_carteira_length: 1, # <- Validação dinâmica que a modalidade deve ter 1 digito
|
|
20
|
+
valid_conta_corrente_required: true, # <- Validação dinâmica que a conta_corrente é obrigatória
|
|
21
|
+
valid_conta_corrente_maximum: 7, # <- Validação que a conta_corrente deve ter no máximo 7 digitos
|
|
22
|
+
valid_convenio_required: true, # <- Validação que a convenio deve ter obrigatório
|
|
23
|
+
valid_convenio_maximum: 6, # <- Validação que a convenio deve ter no máximo 7 digitos
|
|
24
|
+
})
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def codigo_banco
|
|
28
|
+
'085'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Dígito do código do banco descrito na documentação
|
|
32
|
+
def codigo_banco_dv
|
|
33
|
+
'1'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def nome_banco
|
|
37
|
+
@nome_banco ||= 'CECRED'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def versao_layout_arquivo_cnab_240
|
|
41
|
+
'087'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def versao_layout_lote_cnab_240
|
|
45
|
+
'045'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def agencia_dv
|
|
49
|
+
# utilizando a agencia com 4 digitos
|
|
50
|
+
# para calcular o digito
|
|
51
|
+
@agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9.new(agencia).to_s
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def conta_corrente_dv
|
|
55
|
+
@conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9.new(conta_corrente).to_s
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Campo Agência / Código do Cedente
|
|
59
|
+
# @return [String] Agência com 4 caracteres - digito da agência / Conta de Cobrança com 7 caracteres - Digito da Conta
|
|
60
|
+
# Exemplo: 9999-D / 9999999-D
|
|
61
|
+
def agencia_codigo_cedente
|
|
62
|
+
"#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Conta
|
|
4
|
+
class Itau < BrBoleto::Conta::Base
|
|
5
|
+
|
|
6
|
+
# MODALIDADE CARTEIRA:
|
|
7
|
+
# _______________________________________________________________________
|
|
8
|
+
# | Carteira | Descrição |
|
|
9
|
+
# | 104 | Escritural Eletrônica - Carnê |
|
|
10
|
+
# | 105 | Escritural Eletrônica - Dólar - Carnê |
|
|
11
|
+
# | 107 | Sem registro com emissão integral - 15 posições |
|
|
12
|
+
# | 108 | Direta eletrônica emissão integral – carnê |
|
|
13
|
+
# | 109 | Direta eletrônica sem emissão - simples |
|
|
14
|
+
# | 112 | Escritural eletrônica - simples/contratual |
|
|
15
|
+
# | 113 | Escritural Eletrônica - TR - Carnê |
|
|
16
|
+
# | 116 | Escritural Carnê com IOF 0,38% |
|
|
17
|
+
# | 117 | Escritural Carnê com IOF 2,38% |
|
|
18
|
+
# | 119 | Escritural Carnê com IOF 7,38% |
|
|
19
|
+
# | 121 | Direta eletrônica emissão parcial - simples/contratual |
|
|
20
|
+
# | 122 | Sem registro - 15 posições |
|
|
21
|
+
# | 126 | Direta Eletrônica Sem Emissão - Seguros |
|
|
22
|
+
# | 131 | Direta Eletrônica com Valor em Aberto |
|
|
23
|
+
# | 134 | Escritural com IOF 0,38% |
|
|
24
|
+
# | 135 | Escritural com IOF 2,38% |
|
|
25
|
+
# | 136 | Escritural com IOF 7,38% |
|
|
26
|
+
# | 142 | Sem registro - 15 posições |
|
|
27
|
+
# | 143 | Sem registro - 15 posições |
|
|
28
|
+
# | 146 | Direta eletrônica |
|
|
29
|
+
# | 147 | Escritural eletrônica – Dolar |
|
|
30
|
+
# | 150 | Direta eletrônica sem emissão - Dolar |
|
|
31
|
+
# | 168 | Direta eletrônica sem emissão - TR |
|
|
32
|
+
# | 169 | Sem registro emissão Parcial Seguros C/IOF 7% |
|
|
33
|
+
# | 174 | Sem registro emissão parcial com protesto borderô |
|
|
34
|
+
# | 175 | Sem registro sem emissão com protesto eletrônico |
|
|
35
|
+
# | 180 | Direta Eletrônica emissão integral - simples/contratual |
|
|
36
|
+
# | 191 | Duplicatas - Transferência de Desconto |
|
|
37
|
+
# | 196 | Sem registro com emissão e entrega – 15 posições |
|
|
38
|
+
# | 198 | Sem registro sem emissão 15 dígitos |
|
|
39
|
+
# ------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
def default_values
|
|
42
|
+
super.merge({
|
|
43
|
+
carteira: '109',
|
|
44
|
+
valid_carteira_required: true, # <- Validação dinâmica que a modalidade é obrigatória
|
|
45
|
+
valid_carteira_length: 3, # <- Validação dinâmica que a modalidade deve ter 2 digitos
|
|
46
|
+
valid_carteira_inclusion: carteiras_suportadas, # <- Validação dinâmica de valores aceitos para a modalidade
|
|
47
|
+
codigo_carteira: '1', # Cobrança Simples
|
|
48
|
+
valid_codigo_carteira_length: 1, # <- Validação dinâmica que a modalidade deve ter 1 digito
|
|
49
|
+
valid_conta_corrente_required: true, # <- Validação dinâmica que a conta_corrente é obrigatória
|
|
50
|
+
valid_conta_corrente_maximum: 5, # <- Validação que a conta_corrente deve ter no máximo 7 digitos
|
|
51
|
+
valid_convenio_required: true, # <- Validação que a convenio deve ter obrigatório
|
|
52
|
+
valid_convenio_maximum: 5, # <- Validação que a convenio deve ter no máximo 7 digitos
|
|
53
|
+
})
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def codigo_banco
|
|
57
|
+
'341'
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Dígito do código do banco descrito na documentação
|
|
61
|
+
def codigo_banco_dv
|
|
62
|
+
'7'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def nome_banco
|
|
66
|
+
@nome_banco ||= 'ITAU'
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def versao_layout_arquivo_cnab_240
|
|
70
|
+
'040'
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def versao_layout_lote_cnab_240
|
|
74
|
+
'030'
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def agencia_dv
|
|
78
|
+
@agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(agencia).to_s
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Dígito da conta corrente calculado apartir do Modulo10.
|
|
82
|
+
def conta_corrente_dv
|
|
83
|
+
@conta_corrente_dv ||= BrBoleto::Calculos::Modulo10.new("#{agencia}#{conta_corrente}").to_s
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Campo Agência / Código do Cedente
|
|
87
|
+
# @return [String] Agência com 4 caracteres / Conta de Cobrança com 5 caracteres - Digito da Conta
|
|
88
|
+
# Exemplo: 9999 / 99999-D
|
|
89
|
+
def agencia_codigo_cedente
|
|
90
|
+
"#{agencia} / #{conta_corrente}-#{conta_corrente_dv}"
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Carteiras suportadas
|
|
94
|
+
def carteiras_suportadas
|
|
95
|
+
%w[104 105 107 108 109 112 113 116 117 119 121 122 126 131 134 135 136 142 143 146 147 150 168 169 174 175 180 191 196 198]
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# As carteiras de cobrança 107, 122, 142, 143, 196 e 198 são carteiras especiais,
|
|
99
|
+
# na qual são utilizadas 15 posições numéricas para identificação do título
|
|
100
|
+
# liquidado (8 do Nosso Número e 7 do Seu Número).
|
|
101
|
+
def carteiras_especiais_codigo_barras
|
|
102
|
+
%w(107 122 142 143 196 198)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Carteiras que devem ser calculadas o módulo 10 usando carteira e número do documento.
|
|
106
|
+
def carteiras_especiais_nosso_numero_dv
|
|
107
|
+
%w(126 131 146 150 168)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Espécie do Título
|
|
111
|
+
def equivalent_especie_titulo_240
|
|
112
|
+
super.merge(
|
|
113
|
+
# Padrão Código para
|
|
114
|
+
{# da GEM o Banco
|
|
115
|
+
'02' => '01' , # DUPLICATA MERCANTIL
|
|
116
|
+
'12' => '02' , # NOTA PROMISSÓRIA
|
|
117
|
+
'16' => '03' , # NOTA DE SEGURO
|
|
118
|
+
'21' => '04' , # MENSALIDADE ESCOLAR
|
|
119
|
+
'17' => '05' , # RECIBO
|
|
120
|
+
'66' => '06' , # CONTRATO
|
|
121
|
+
'77' => '07' , # COSSEGUROS
|
|
122
|
+
'04' => '08' , # DUPLICATA DE SERVIÇO
|
|
123
|
+
'07' => '09' , # LETRA DE CÂMBIO
|
|
124
|
+
'19' => '13' , # NOTA DE DÉBITOS
|
|
125
|
+
'24' => '15' , # DOCUMENTO DE DÍVIDA
|
|
126
|
+
'30' => '16' , # ENCARGOS CONDOMINIAIS
|
|
127
|
+
'88' => '17' , # CONTA DE PRESTAÇÃO DE SERVIÇOS
|
|
128
|
+
'32' => '18' , # BOLETO DE PROPOSTA
|
|
129
|
+
})
|
|
130
|
+
end
|
|
131
|
+
def equivalent_especie_titulo_400
|
|
132
|
+
super.merge(
|
|
133
|
+
# Padrão Código para
|
|
134
|
+
{# da GEM o Banco
|
|
135
|
+
'02' => '01' , # DUPLICATA MERCANTIL
|
|
136
|
+
'12' => '02' , # NOTA PROMISSÓRIA
|
|
137
|
+
'16' => '03' , # NOTA DE SEGURO
|
|
138
|
+
'21' => '04' , # MENSALIDADE ESCOLAR
|
|
139
|
+
'17' => '05' , # RECIBO
|
|
140
|
+
'66' => '06' , # CONTRATO
|
|
141
|
+
'77' => '07' , # COSSEGUROS
|
|
142
|
+
'04' => '08' , # DUPLICATA DE SERVIÇO
|
|
143
|
+
'07' => '09' , # LETRA DE CÂMBIO
|
|
144
|
+
'19' => '13' , # NOTA DE DÉBITOS
|
|
145
|
+
'24' => '15' , # DOCUMENTO DE DÍVIDA
|
|
146
|
+
'30' => '16' , # ENCARGOS CONDOMINIAIS
|
|
147
|
+
'88' => '17' , # CONTA DE PRESTAÇÃO DE SERVIÇOS
|
|
148
|
+
'32' => '18' , # BOLETO DE PROPOSTA
|
|
149
|
+
})
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Códigos de Movimento Remessa / Identificacao Ocorrência específicos do Banco
|
|
153
|
+
def equivalent_codigo_movimento_remessa_240
|
|
154
|
+
super.merge(
|
|
155
|
+
# Padrão Código para
|
|
156
|
+
{# da GEM o Banco
|
|
157
|
+
'10' => '18' , # SUSTAR O PROTESTO
|
|
158
|
+
'38' => '38' , # BENEFICIÁRIO NÃO CONCORDA COM A ALEGAÇÃO DO PAGADOR CÓDIGO DA ALEGAÇÃO
|
|
159
|
+
'41' => '41' , # EXCLUSÃO DE SACADOR AVALISTA
|
|
160
|
+
'66' => '66' , # ENTRADA EM NEGATIVAÇÃO EXPRESSA
|
|
161
|
+
'67' => '67' , # NÃO NEGATIVAR (INIBE ENTRADA EM NEGATIVAÇÃO EXPRESSA
|
|
162
|
+
'68' => '68' , # EXCLUIR NEGATIVAÇÃO EXPRESSA (ATÉ 15 DIAS CORRIDOS APÓS A ENTRADA EM NEGATIVAÇÃO EXPRESSA)
|
|
163
|
+
'69' => '69' , # CANCELAR NEGATIVAÇÃO EXPRESSA (APÓS TÍTULO TER SIDO NEGATIVADO)
|
|
164
|
+
'93' => '93' , # DESCONTAR TÍTULOS ENCAMINHADOS NO DIA
|
|
165
|
+
})
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
# Código para Protesto
|
|
169
|
+
def equivalent_codigo_protesto
|
|
170
|
+
super.merge(
|
|
171
|
+
# Padrão Código para
|
|
172
|
+
{# da GEM o Banco
|
|
173
|
+
'0' => '0' , # Sem instrução
|
|
174
|
+
'07' => '07' , # Negativar (Dias Corridos)
|
|
175
|
+
})
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Código para Multa
|
|
179
|
+
def equivalent_codigo_multa
|
|
180
|
+
super.merge({ '0' => '0' }) # NÃO REGISTRA A MULTA
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Codigo da carteira de acordo com a documentacao o Itau (Pag. 18, Nota 5)
|
|
184
|
+
# se a carteira nao forem as testadas (147, 150 e 191 )
|
|
185
|
+
# retorna 'I' que é o codigo das carteiras restantes na documentacao
|
|
186
|
+
def get_codigo_carteira
|
|
187
|
+
equivalent_codigo_carteira[carteira] || 'I'
|
|
188
|
+
end
|
|
189
|
+
def equivalent_codigo_carteira
|
|
190
|
+
{
|
|
191
|
+
'147' => 'E', # ESCRITURAL ELETRÔNICA – DÓLAR
|
|
192
|
+
'150' => 'U', # DIRETA ELETRÔNICA SEM EMISSÃO – DÓLAR
|
|
193
|
+
'191' => '1', # DUPLICATAS - TRANSFERÊNCIA DE DESCONTO
|
|
194
|
+
}
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
end
|
|
@@ -13,17 +13,19 @@ module BrBoleto
|
|
|
13
13
|
|
|
14
14
|
def default_values
|
|
15
15
|
super.merge({
|
|
16
|
-
carteira:
|
|
17
|
-
modalidade:
|
|
18
|
-
valid_modalidade_required: true,
|
|
19
|
-
valid_modalidade_length: 2,
|
|
20
|
-
valid_modalidade_inclusion: %w[01 02 03]
|
|
21
|
-
valid_carteira_required: true,
|
|
22
|
-
valid_carteira_length: 1,
|
|
23
|
-
valid_carteira_inclusion: %w[1 3],
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
carteira: '1', # Simples
|
|
17
|
+
modalidade: '01', # Com registro
|
|
18
|
+
valid_modalidade_required: true, # <- Validação dinâmica que a modalidade é obrigatória
|
|
19
|
+
valid_modalidade_length: 2, # <- Validação dinâmica que a modalidade deve ter 2 digitos
|
|
20
|
+
valid_modalidade_inclusion: %w[01 02 03],# <- Validação dinâmica de valores aceitos para a modalidade
|
|
21
|
+
valid_carteira_required: true, # <- Validação dinâmica que a carteira é obrigatória
|
|
22
|
+
valid_carteira_length: 1, # <- Validação dinâmica que a carteira deve ter 1 digito
|
|
23
|
+
valid_carteira_inclusion: %w[1 3], # <- Validação dinâmica de valores aceitos para a carteira
|
|
24
|
+
codigo_carteira: '1', # Cobrança Simples
|
|
25
|
+
valid_codigo_carteira_length: 1, # <- Validação dinâmica que a carteira deve ter 1 digito
|
|
26
|
+
valid_conta_corrente_required: true, # <- Validação dinâmica que a conta_corrente é obrigatória
|
|
27
|
+
valid_conta_corrente_maximum: 8, # <- Validação que a conta_corrente deve ter no máximo 8 digitos
|
|
28
|
+
valid_codigo_cedente_maximum: 6, # <- Validação que a codigo_cedente/convênio deve ter no máximo 7 digitos
|
|
27
29
|
})
|
|
28
30
|
end
|
|
29
31
|
|
|
@@ -59,6 +61,33 @@ module BrBoleto
|
|
|
59
61
|
# para calcular o digito
|
|
60
62
|
@conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(conta_corrente).to_s
|
|
61
63
|
end
|
|
64
|
+
|
|
65
|
+
# Códigos de Movimento Remessa / Identificacao Ocorrência específicos do Banco
|
|
66
|
+
def equivalent_codigo_movimento_remessa_400
|
|
67
|
+
super.merge(
|
|
68
|
+
{
|
|
69
|
+
'23' => '12', # Alteração de Pagador
|
|
70
|
+
'46' => '34', # Baixa - Pagamento Direto ao Beneficiário
|
|
71
|
+
})
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Código que representa a isenção de juros e multa deve ser '0'
|
|
75
|
+
# Diferentemente do padrão da FEBRABAN que é '3'
|
|
76
|
+
# Ou seja, se passar o código 3 deve considerar '0'
|
|
77
|
+
#
|
|
78
|
+
def equivalent_codigo_juros
|
|
79
|
+
super.merge({'3' => '0', '0'=>'0'})
|
|
80
|
+
end
|
|
81
|
+
def equivalent_codigo_multa
|
|
82
|
+
super.merge({'3' => '0', '0'=>'0'})
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def default_codigo_juros
|
|
86
|
+
'0'
|
|
87
|
+
end
|
|
88
|
+
def default_codigo_multa
|
|
89
|
+
'0'
|
|
90
|
+
end
|
|
62
91
|
end
|
|
63
92
|
end
|
|
64
93
|
end
|