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,42 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Retorno
|
|
4
|
+
module Cnab400
|
|
5
|
+
class Bradesco < BrBoleto::Retorno::Cnab400::Base
|
|
6
|
+
private
|
|
7
|
+
def detalhe_fields #:doc:
|
|
8
|
+
{ # ATRIBUTO POSIÇÃO DA LINHA
|
|
9
|
+
|
|
10
|
+
sacado_documento: 4..17,
|
|
11
|
+
carteira: 23..24,
|
|
12
|
+
agencia_sem_dv: 25..29,
|
|
13
|
+
# agencia_com_dv: 25..29,
|
|
14
|
+
numero_conta: 30..35,
|
|
15
|
+
numero_conta_dv: 36,
|
|
16
|
+
nosso_numero: 71..82,
|
|
17
|
+
data_ocorrencia: 111..116,
|
|
18
|
+
data_ocorrencia_sacado: 111..116,
|
|
19
|
+
numero_documento: 117..126,
|
|
20
|
+
data_vencimento: 147..152,
|
|
21
|
+
valor_titulo: 153..165,
|
|
22
|
+
agencia_recebedora_com_dv: 169..173,
|
|
23
|
+
banco_recebedor: 166..168,
|
|
24
|
+
especie_titulo: 174..175,
|
|
25
|
+
valor_tarifa: 176..188,
|
|
26
|
+
valor_outras_despesas: 189..201,
|
|
27
|
+
valor_juros_multa: 267..279,
|
|
28
|
+
valor_iof: 215..227,
|
|
29
|
+
valor_abatimento: 228..240,
|
|
30
|
+
valor_desconto: 241..253,
|
|
31
|
+
valor_pago: 254..266,
|
|
32
|
+
valor_ocorrencia_sacado: 254..266,
|
|
33
|
+
valor_liquido: 254..266,
|
|
34
|
+
valor_outros_creditos: 280..292,
|
|
35
|
+
data_credito: 296..301,
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Retorno
|
|
4
|
+
module Cnab400
|
|
5
|
+
class Itau < BrBoleto::Retorno::Cnab400::Base
|
|
6
|
+
private
|
|
7
|
+
def detalhe_fields #:doc:
|
|
8
|
+
{ # ATRIBUTO POSIÇÃO DA LINHA
|
|
9
|
+
|
|
10
|
+
sacado_documento: 4..17,
|
|
11
|
+
agencia_sem_dv: 18..21,
|
|
12
|
+
numero_conta: 24..28,
|
|
13
|
+
numero_conta_dv: 29,
|
|
14
|
+
numero_documento: 53..70,
|
|
15
|
+
carteira: 83..85,
|
|
16
|
+
nosso_numero: 86..93,
|
|
17
|
+
nosso_numero_dv: 94,
|
|
18
|
+
cod_carteira: 108,
|
|
19
|
+
codigo_ocorrencia_banco_correspondente: 109..110,
|
|
20
|
+
data_ocorrencia: 111..116,
|
|
21
|
+
data_ocorrencia_sacado: 111..116,
|
|
22
|
+
data_vencimento: 147..152,
|
|
23
|
+
valor_titulo: 153..165,
|
|
24
|
+
banco_recebedor: 166..168,
|
|
25
|
+
agencia_recebedora_com_dv: 169..173,
|
|
26
|
+
especie_titulo: 174..175,
|
|
27
|
+
valor_tarifa: 176..188,
|
|
28
|
+
valor_iof: 215..227,
|
|
29
|
+
valor_abatimento: 228..240,
|
|
30
|
+
valor_desconto: 241..253,
|
|
31
|
+
valor_pago: 254..266,
|
|
32
|
+
valor_ocorrencia_sacado: 254..266,
|
|
33
|
+
valor_liquido: 254..266,
|
|
34
|
+
valor_juros_multa: 267..279,
|
|
35
|
+
valor_outros_creditos: 280..292,
|
|
36
|
+
data_credito: 296..301,
|
|
37
|
+
sacado_nome: 325..354,
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -8,8 +8,8 @@ module BrBoleto
|
|
|
8
8
|
{ # ATRIBUTO POSIÇÃO DA LINHA
|
|
9
9
|
agencia_sem_dv: 18..21,
|
|
10
10
|
agencia_com_dv: 18..22,
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
numero_conta_dv: 31,
|
|
12
|
+
numero_conta: 23..30,
|
|
13
13
|
nosso_numero: 63..74,
|
|
14
14
|
parcela: 75..76,
|
|
15
15
|
modalidade: 107..108,
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Retorno
|
|
4
|
+
module Cnab400
|
|
5
|
+
class Sicredi < BrBoleto::Retorno::Cnab400::Base
|
|
6
|
+
private
|
|
7
|
+
def detalhe_fields #:doc:
|
|
8
|
+
{ # ATRIBUTO POSIÇÃO DA LINHA
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
carteira: 14..14,
|
|
12
|
+
numero_conta_dv: '',
|
|
13
|
+
numero_conta: 15..19,
|
|
14
|
+
nosso_numero: 48..62,
|
|
15
|
+
data_ocorrencia: 111..116,
|
|
16
|
+
data_ocorrencia_sacado: 111..116,
|
|
17
|
+
numero_documento: 117..126,
|
|
18
|
+
data_vencimento: 147..152,
|
|
19
|
+
valor_titulo: 153..165,
|
|
20
|
+
especie_titulo: 175..175,
|
|
21
|
+
valor_tarifa: 176..188,
|
|
22
|
+
valor_outras_despesas: 189..201,
|
|
23
|
+
valor_abatimento: 228..240,
|
|
24
|
+
valor_desconto: 241..253,
|
|
25
|
+
valor_pago: 254..266,
|
|
26
|
+
valor_ocorrencia_sacado: 254..266,
|
|
27
|
+
valor_liquido: 254..266,
|
|
28
|
+
valor_juros_multa: 267..279,
|
|
29
|
+
valor_outros_creditos: 280..292,
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# sacado_documento: 4..17,
|
|
33
|
+
# agencia_sem_dv: 25..29,
|
|
34
|
+
# agencia_recebedora_com_dv: 169..173,
|
|
35
|
+
# banco_recebedor: 166..168,
|
|
36
|
+
# data_credito: 296..301,
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Retorno
|
|
4
|
+
module Cnab400
|
|
5
|
+
class Unicred < BrBoleto::Retorno::Cnab400::Bradesco
|
|
6
|
+
# A Unicred (através do CobExpress) utiliza e o layout de boleto os arquivos de remessa/retorno disponibilizados pelo Banco Bradesco.
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -11,11 +11,19 @@ module BrBoleto
|
|
|
11
11
|
attr_accessor :agencia_sem_dv # tamanho = 5
|
|
12
12
|
|
|
13
13
|
# NÚMERO DA CONTA CORRENTE/CEDENTE
|
|
14
|
-
attr_accessor :
|
|
15
|
-
attr_accessor :
|
|
16
|
-
alias_attribute :codigo_cedente, :
|
|
17
|
-
|
|
14
|
+
attr_accessor :numero_conta # tamanho = 12
|
|
15
|
+
attr_accessor :numero_conta_dv # tamanho = 1
|
|
16
|
+
alias_attribute :codigo_cedente, :numero_conta
|
|
17
|
+
def numero_conta_com_dv
|
|
18
|
+
"#{numero_conta}#{numero_conta_dv}" # tamanho = 13
|
|
19
|
+
end
|
|
20
|
+
|
|
18
21
|
|
|
22
|
+
# CÓDIGO DE MOVIMENTO RETORNO
|
|
23
|
+
# Tamanho Posição
|
|
24
|
+
# 2 16-17
|
|
25
|
+
attr_accessor :codigo_movimento_retorno
|
|
26
|
+
|
|
19
27
|
# IDENTIFICAÇÃO DO TÍTULO
|
|
20
28
|
# Tamanho Posição
|
|
21
29
|
# 1 37-37
|
|
@@ -25,11 +33,15 @@ module BrBoleto
|
|
|
25
33
|
# Tamanho Posição
|
|
26
34
|
# 20 38-57
|
|
27
35
|
attr_accessor :nosso_numero
|
|
36
|
+
|
|
37
|
+
# DÍGITO VERIFICADOR NOSSO NÚMERO
|
|
38
|
+
attr_accessor :nosso_numero_dv
|
|
28
39
|
|
|
29
40
|
# CÓDIGO DA CARTEIRA
|
|
30
41
|
# Tamanho Posição
|
|
31
42
|
# 1 58-58
|
|
32
43
|
attr_accessor :carteira
|
|
44
|
+
attr_accessor :cod_carteira
|
|
33
45
|
|
|
34
46
|
# NÚMERO DO DOCUMENTO
|
|
35
47
|
# Tamanho Posição
|
|
@@ -243,6 +255,8 @@ module BrBoleto
|
|
|
243
255
|
self.instance_variable_set("@#{attr_name}", BrBoleto::Helper::FormatValue.string_to_date(value) )
|
|
244
256
|
end
|
|
245
257
|
end
|
|
258
|
+
|
|
259
|
+
|
|
246
260
|
end
|
|
247
261
|
end
|
|
248
262
|
end
|
data/lib/br_boleto/version.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
module BrBoleto
|
|
2
2
|
module Version
|
|
3
3
|
MAJOR = 2 #inclui alterações de API e pode quebrar compatibilidade com versões anteriores
|
|
4
|
-
MINOR =
|
|
5
|
-
PATCH =
|
|
4
|
+
MINOR = 1 #inclui novas funcionalidades, sem quebrar APIs existentes
|
|
5
|
+
PATCH = 0 #corrige bugs ou traz melhorias em implementações já existentes
|
|
6
6
|
CURRENT = "#{MAJOR}.#{MINOR}.#{PATCH}"
|
|
7
7
|
end
|
|
8
8
|
end
|
data/lib/br_boleto.rb
CHANGED
|
@@ -72,6 +72,11 @@ module BrBoleto
|
|
|
72
72
|
autoload :Base
|
|
73
73
|
autoload :Sicoob
|
|
74
74
|
autoload :Caixa
|
|
75
|
+
autoload :Bradesco
|
|
76
|
+
autoload :Unicred
|
|
77
|
+
autoload :Sicredi
|
|
78
|
+
autoload :Cecred
|
|
79
|
+
autoload :Itau
|
|
75
80
|
end
|
|
76
81
|
|
|
77
82
|
module Boleto
|
|
@@ -80,6 +85,11 @@ module BrBoleto
|
|
|
80
85
|
autoload :Base
|
|
81
86
|
autoload :Sicoob
|
|
82
87
|
autoload :Caixa
|
|
88
|
+
autoload :Bradesco
|
|
89
|
+
autoload :Unicred
|
|
90
|
+
autoload :Sicredi
|
|
91
|
+
autoload :Cecred
|
|
92
|
+
autoload :Itau
|
|
83
93
|
end
|
|
84
94
|
|
|
85
95
|
|
|
@@ -94,11 +104,20 @@ module BrBoleto
|
|
|
94
104
|
autoload :Base
|
|
95
105
|
autoload :Sicoob
|
|
96
106
|
autoload :Caixa
|
|
107
|
+
autoload :Bradesco
|
|
108
|
+
autoload :Unicred
|
|
109
|
+
autoload :Sicredi
|
|
110
|
+
autoload :Cecred
|
|
111
|
+
autoload :Itau
|
|
97
112
|
end
|
|
98
113
|
module Cnab400
|
|
99
114
|
extend ActiveSupport::Autoload
|
|
100
115
|
autoload :Base
|
|
101
116
|
autoload :Sicoob
|
|
117
|
+
autoload :Bradesco
|
|
118
|
+
autoload :Unicred
|
|
119
|
+
autoload :Sicredi
|
|
120
|
+
autoload :Itau
|
|
102
121
|
end
|
|
103
122
|
end
|
|
104
123
|
|
|
@@ -111,11 +130,20 @@ module BrBoleto
|
|
|
111
130
|
autoload :Base
|
|
112
131
|
autoload :Sicoob
|
|
113
132
|
autoload :Caixa
|
|
133
|
+
autoload :Bradesco
|
|
134
|
+
autoload :Unicred
|
|
135
|
+
autoload :Sicredi
|
|
136
|
+
autoload :Cecred
|
|
137
|
+
autoload :Itau
|
|
114
138
|
end
|
|
115
139
|
module Cnab400
|
|
116
140
|
extend ActiveSupport::Autoload
|
|
117
141
|
autoload :Base
|
|
118
142
|
autoload :Sicoob
|
|
143
|
+
autoload :Bradesco
|
|
144
|
+
autoload :Unicred
|
|
145
|
+
autoload :Sicredi
|
|
146
|
+
autoload :Itau
|
|
119
147
|
end
|
|
120
148
|
end
|
|
121
149
|
|
|
@@ -85,6 +85,7 @@ describe BrBoleto::HavePagador do
|
|
|
85
85
|
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:uf)} #{get_message(:blank, {})}")
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
+
|
|
88
89
|
context "o valor setado nas validações devem obedecer a classe que inclui a pagador. Mesmo que a pagador tenha uma validação diferente" do
|
|
89
90
|
before do
|
|
90
91
|
subject.pagador.valid_endereco_required = true
|
|
@@ -107,4 +108,27 @@ describe BrBoleto::HavePagador do
|
|
|
107
108
|
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:uf)} #{get_message(:blank, {})}")
|
|
108
109
|
end
|
|
109
110
|
end
|
|
111
|
+
|
|
112
|
+
it 'Validação para avalsita' do
|
|
113
|
+
subject.stubs(:valid_avalista_required).returns(true)
|
|
114
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:nome_avalista)} #{get_message(:blank, {})}")
|
|
115
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:documento_avalista)} #{get_message(:blank, {})}")
|
|
116
|
+
end
|
|
117
|
+
context "o valor setado nas validações devem obedecer a classe que inclui a pagador. Mesmo que a pagador tenha uma validação diferente" do
|
|
118
|
+
before do
|
|
119
|
+
subject.pagador.valid_avalista_required = true
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "Se os metodos do objeto que temm a pagador tiverem valor nos seus metodos deve permanecer esses valores" do
|
|
123
|
+
subject.stubs(:valid_avalista_required).returns(false)
|
|
124
|
+
wont_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:nome_avalista)} #{get_message(:blank, {})}")
|
|
125
|
+
wont_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:documento_avalista)} #{get_message(:blank, {})}")
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "Deve considerar as validações setadas na pagador se não houver os metodos sobrescritos no objeto que tem a pagador" do
|
|
129
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:nome_avalista)} #{get_message(:blank, {})}")
|
|
130
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:documento_avalista)} #{get_message(:blank, {})}")
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
110
134
|
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'test_helper'
|
|
3
|
+
|
|
4
|
+
describe BrBoleto::Boleto::Bradesco do
|
|
5
|
+
subject { FactoryGirl.build(:boleto_bradesco, conta: conta) }
|
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_bradesco) }
|
|
7
|
+
|
|
8
|
+
context "on validations" do
|
|
9
|
+
it { must validate_length_of(:numero_documento).is_at_most(11).with_message(:custom_length_maximum) }
|
|
10
|
+
|
|
11
|
+
context '#conta.carteira' do
|
|
12
|
+
it { subject.valid_carteira_inclusion.must_equal ['06','09','19','21','22'] }
|
|
13
|
+
it "validação da carteira da conta" do
|
|
14
|
+
subject.conta.carteira = '4'
|
|
15
|
+
conta_must_be_msg_error(:carteira, :custom_inclusion, {list: '06, 09, 19, 21, 22'})
|
|
16
|
+
subject.conta.carteira = '06'
|
|
17
|
+
conta_wont_be_msg_error(:carteira, :custom_inclusion, {list: '06, 09, 19, 21, 22'})
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#conta.convenio / codigo_cedente' do
|
|
22
|
+
it { subject.valid_convenio_maximum.must_equal 7 }
|
|
23
|
+
it { subject.valid_convenio_required.must_equal true }
|
|
24
|
+
|
|
25
|
+
it "validação obrigatoriedade do codigo_cedente da conta" do
|
|
26
|
+
subject.conta.codigo_cedente = ''
|
|
27
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
28
|
+
subject.conta.codigo_cedente = '123456'
|
|
29
|
+
conta_wont_be_msg_error(:convenio, :blank)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
36
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Bradesco.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
37
|
+
end
|
|
38
|
+
def conta_wont_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
39
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Bradesco.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "#default_values" do
|
|
44
|
+
it "local_pagamento deve ter o valor padrão conforme a documentação" do
|
|
45
|
+
BrBoleto::Boleto::Bradesco.new.local_pagamento.must_equal 'PAGÁVEL PREFERENCIALMENTE NA REDE BRADESCO OU NO BRADESCO EXPRESSO'
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "#digito_verificador_nosso_numero" do
|
|
50
|
+
it "deve calcular pelo Modulo11Fator3197" do
|
|
51
|
+
subject.conta.agencia = 21
|
|
52
|
+
subject.numero_documento = 111
|
|
53
|
+
BrBoleto::Calculos::Modulo11FatorDe2a7.expects(:new).with("2100000000111").returns("meu_resultado")
|
|
54
|
+
subject.digito_verificador_nosso_numero.must_equal "meu_resultado"
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe "#nosso_numero" do
|
|
59
|
+
subject { FactoryGirl.build(:boleto_bradesco, numero_documento: '68315') }
|
|
60
|
+
|
|
61
|
+
it "deve retornar o numero do documento com o digito_verificador_nosso_numero" do
|
|
62
|
+
subject.stubs(:digito_verificador_nosso_numero).returns('9')
|
|
63
|
+
subject.numero_documento = '3646'
|
|
64
|
+
subject.nosso_numero.must_equal "21/00000003646-9"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "#codigo_de_barras_do_banco" do
|
|
69
|
+
subject do
|
|
70
|
+
FactoryGirl.build(:boleto_bradesco, conta: {
|
|
71
|
+
carteira: '21',
|
|
72
|
+
agencia: '78',
|
|
73
|
+
conta_corrente: '668',
|
|
74
|
+
},
|
|
75
|
+
numero_documento: '395'
|
|
76
|
+
)
|
|
77
|
+
end
|
|
78
|
+
it "deve montar o codigo corretamente com as informações" do
|
|
79
|
+
subject.stubs(:nosso_numero).returns('21/00000003646-9')
|
|
80
|
+
|
|
81
|
+
result = subject.codigo_de_barras_do_banco
|
|
82
|
+
result.size.must_equal 25
|
|
83
|
+
|
|
84
|
+
result[0..3].must_equal '0078' # Agencia
|
|
85
|
+
result[4..5].must_equal '21' # Carteira
|
|
86
|
+
result[6..16].must_equal '00000000395' # Numero documento
|
|
87
|
+
result[17..23].must_equal '0000668' # Conta Corrente
|
|
88
|
+
result[24].must_equal '0' # Zero
|
|
89
|
+
|
|
90
|
+
subject.codigo_de_barras_do_banco.must_equal '0078210000000039500006680'
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe "#codigo_de_barras" do
|
|
97
|
+
subject do
|
|
98
|
+
FactoryGirl.build(:boleto_bradesco) do |bradesco|
|
|
99
|
+
bradesco.conta.agencia = 3069
|
|
100
|
+
bradesco.conta.codigo_cedente = 828_19 # Para o bradesco é o código do cliente
|
|
101
|
+
bradesco.conta.codigo_cedente_dv = '0' # Para o bradesco é o código do cliente
|
|
102
|
+
bradesco.conta.carteira = '06'
|
|
103
|
+
bradesco.numero_documento = 100_10
|
|
104
|
+
bradesco.valor_documento = 93015.78
|
|
105
|
+
bradesco.data_vencimento = Date.parse('2020-02-17')
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it { subject.codigo_de_barras.must_equal '23799816800093015783069060000001001000897550' }
|
|
110
|
+
it { subject.linha_digitavel.must_equal '23793.06901 60000.001002 10008.975509 9 81680009301578' }
|
|
111
|
+
|
|
112
|
+
it "codigo de barras de um boleto de exemplo" do
|
|
113
|
+
subject.conta.agencia = 3069
|
|
114
|
+
subject.conta.codigo_cedente = 82819 # Para o bradesco é o código do cliente
|
|
115
|
+
subject.conta.codigo_cedente_dv = 0 # Para o bradesco é o código do cliente
|
|
116
|
+
subject.conta.carteira = '06'
|
|
117
|
+
subject.numero_documento = 15_679
|
|
118
|
+
subject.valor_documento = 408.50
|
|
119
|
+
subject.data_vencimento = Date.parse('2016-09-01')
|
|
120
|
+
|
|
121
|
+
subject.linha_digitavel.must_equal '23793.06901 60000.001564 79008.975504 7 69040000040850'
|
|
122
|
+
subject.codigo_de_barras.must_equal '23797690400000408503069060000001567900897550'
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
@@ -5,13 +5,13 @@ describe BrBoleto::Boleto::Caixa do
|
|
|
5
5
|
subject { FactoryGirl.build(:boleto_caixa) }
|
|
6
6
|
|
|
7
7
|
context "on validations" do
|
|
8
|
-
it { must validate_length_of(:numero_documento).is_at_most(
|
|
8
|
+
it { must validate_length_of(:numero_documento).is_at_most(11).with_message(:custom_length_maximum) }
|
|
9
9
|
|
|
10
10
|
context '#conta.carteira' do
|
|
11
11
|
it { subject.valid_carteira_inclusion.must_equal ['14','24'] }
|
|
12
12
|
it 'carteira deve ter 2 digitos' do
|
|
13
13
|
subject.valid_carteira_length.must_equal 2
|
|
14
|
-
subject.conta.carteira = '
|
|
14
|
+
subject.conta.carteira = '2'
|
|
15
15
|
conta_must_be_msg_error(:carteira, :custom_length_is, {count: 2})
|
|
16
16
|
subject.conta.carteira = '123'
|
|
17
17
|
conta_must_be_msg_error(:carteira, :custom_length_is, {count: 2})
|
|
@@ -98,18 +98,18 @@ describe BrBoleto::Boleto::Caixa do
|
|
|
98
98
|
end
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
describe "#tipo_cobranca" do
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
end
|
|
101
|
+
# describe "#tipo_cobranca" do
|
|
102
|
+
# it "deve pegar o primeiro caracter da carteira se houver valor na carteira" do
|
|
103
|
+
# subject.conta.carteira = 'X7'
|
|
104
|
+
# subject.tipo_cobranca.must_equal 'X'
|
|
105
|
+
# subject.conta.carteira = 'A7'
|
|
106
|
+
# subject.tipo_cobranca.must_equal 'A'
|
|
107
|
+
# end
|
|
108
|
+
# it "se carteira for nil não deve dar erro" do
|
|
109
|
+
# subject.conta.carteira = nil
|
|
110
|
+
# subject.tipo_cobranca.must_be_nil
|
|
111
|
+
# end
|
|
112
|
+
# end
|
|
113
113
|
|
|
114
114
|
describe "#identificador_de_emissao" do
|
|
115
115
|
it "deve retornar o ultimo caractere da carteira" do
|
|
@@ -129,7 +129,7 @@ describe BrBoleto::Boleto::Caixa do
|
|
|
129
129
|
end
|
|
130
130
|
|
|
131
131
|
it "codigo completo conforme a documentação" do
|
|
132
|
-
subject.composicao_codigo_barras.must_equal '
|
|
132
|
+
subject.composicao_codigo_barras.must_equal '123456000010AB4CDEFGHIJK'
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
it "da posição 0 até 5 deve ter o valor de codigo_beneficiario " do
|
|
@@ -141,7 +141,7 @@ describe BrBoleto::Boleto::Caixa do
|
|
|
141
141
|
end
|
|
142
142
|
|
|
143
143
|
it "da posição 7 até 9 deve ter o valor de nosso_numero_de_3_a_5 " do
|
|
144
|
-
subject.composicao_codigo_barras[7..9].must_equal '
|
|
144
|
+
subject.composicao_codigo_barras[7..9].must_equal '000'
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
it "da posição 10 até 10 deve ter o valor de tipo_cobranca " do
|
|
@@ -149,7 +149,7 @@ describe BrBoleto::Boleto::Caixa do
|
|
|
149
149
|
end
|
|
150
150
|
|
|
151
151
|
it "da posição 11 até 13 deve ter o valor de nosso_numero_de_6_a_8 " do
|
|
152
|
-
subject.composicao_codigo_barras[11..13].must_equal '
|
|
152
|
+
subject.composicao_codigo_barras[11..13].must_equal '0AB'
|
|
153
153
|
end
|
|
154
154
|
|
|
155
155
|
it "da posição 14 até 14 deve ter o valor de identificador_de_emissao " do
|
|
@@ -157,7 +157,7 @@ describe BrBoleto::Boleto::Caixa do
|
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
it "da posição 15 até 23 deve ter o valor de nosso_numero_de_9_a_17 " do
|
|
160
|
-
subject.composicao_codigo_barras[15..23].must_equal '
|
|
160
|
+
subject.composicao_codigo_barras[15..23].must_equal 'CDEFGHIJK'
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
it "a posição 24 deve ser nil " do
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'test_helper'
|
|
3
|
+
|
|
4
|
+
describe BrBoleto::Boleto::Cecred do
|
|
5
|
+
subject { FactoryGirl.build(:boleto_cecred, conta: conta) }
|
|
6
|
+
let(:conta) { FactoryGirl.build(:conta_cecred) }
|
|
7
|
+
|
|
8
|
+
context "on validations" do
|
|
9
|
+
it { must validate_length_of(:numero_documento).is_at_most(9).with_message(:custom_length_maximum) }
|
|
10
|
+
|
|
11
|
+
context '#conta.carteira' do
|
|
12
|
+
it { subject.valid_carteira_inclusion.must_equal ['1'] }
|
|
13
|
+
it "validação da carteira da conta" do
|
|
14
|
+
subject.conta.carteira = '6'
|
|
15
|
+
conta_must_be_msg_error(:carteira, :custom_inclusion, {list: '1'})
|
|
16
|
+
subject.conta.carteira = '1'
|
|
17
|
+
conta_wont_be_msg_error(:carteira, :custom_inclusion, {list: '1'})
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe '#conta.convenio / codigo_cedente' do
|
|
22
|
+
it { subject.valid_convenio_maximum.must_equal 6 }
|
|
23
|
+
it { subject.valid_convenio_required.must_equal true }
|
|
24
|
+
|
|
25
|
+
it "validação obrigatoriedade do codigo_cedente da conta" do
|
|
26
|
+
subject.conta.codigo_cedente = ''
|
|
27
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
28
|
+
subject.conta.codigo_cedente = '123456'
|
|
29
|
+
conta_wont_be_msg_error(:convenio, :blank)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
36
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Cecred.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
37
|
+
end
|
|
38
|
+
def conta_wont_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
39
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Cecred.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "#default_values" do
|
|
44
|
+
it "local_pagamento deve ter o valor padrão conforme a documentação" do
|
|
45
|
+
BrBoleto::Boleto::Cecred.new.local_pagamento.must_equal 'PAGAVEL PREFERENCIALMENTE NAS COOPERATIVAS DO SISTEMA CECRED.'
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "#nosso_numero" do
|
|
50
|
+
subject { FactoryGirl.build(:boleto_cecred, numero_documento: '68315') }
|
|
51
|
+
|
|
52
|
+
it "deve retornar a conta corrente com DV e o numero do documento" do
|
|
53
|
+
subject.numero_documento = '3646'
|
|
54
|
+
subject.conta.conta_corrente = '1234567'
|
|
55
|
+
subject.conta.conta_corrente_dv = '9'
|
|
56
|
+
subject.nosso_numero.must_equal "12345679000003646"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe "#codigo_de_barras_do_banco" do
|
|
61
|
+
subject do
|
|
62
|
+
FactoryGirl.build(:boleto_cecred, conta: {
|
|
63
|
+
carteira: '1',
|
|
64
|
+
conta_corrente: '668',
|
|
65
|
+
conta_corrente_dv: '7',
|
|
66
|
+
convenio: '987',
|
|
67
|
+
},
|
|
68
|
+
numero_documento: '395'
|
|
69
|
+
)
|
|
70
|
+
end
|
|
71
|
+
it "deve montar o codigo corretamente com as informações" do
|
|
72
|
+
subject.stubs(:nosso_numero).returns('21/00000003646-9')
|
|
73
|
+
|
|
74
|
+
result = subject.codigo_de_barras_do_banco
|
|
75
|
+
result.size.must_equal 25
|
|
76
|
+
|
|
77
|
+
result[0..5].must_equal '000987' # Convênio
|
|
78
|
+
result[6..13].must_equal '00006687' # Conta Corrente com DV
|
|
79
|
+
result[14..22].must_equal '000000395' # Numero documento
|
|
80
|
+
result[23..24].must_equal '01' # Carteira
|
|
81
|
+
|
|
82
|
+
subject.codigo_de_barras_do_banco.must_equal '0009870000668700000039501'
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
describe "#codigo_de_barras" do
|
|
87
|
+
subject do
|
|
88
|
+
FactoryGirl.build(:boleto_cecred) do |cecred|
|
|
89
|
+
cecred.conta.agencia = 3069
|
|
90
|
+
cecred.conta.codigo_cedente = 828_19 # Para o cecred é o código do cliente
|
|
91
|
+
cecred.conta.codigo_cedente_dv = '0' # Para o cecred é o código do cliente
|
|
92
|
+
cecred.conta.carteira = '06'
|
|
93
|
+
cecred.numero_documento = 100_10
|
|
94
|
+
cecred.valor_documento = 93015.78
|
|
95
|
+
cecred.data_vencimento = Date.parse('2020-02-17')
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it { subject.codigo_de_barras.must_equal '08595816800093015780828198975599800001001006' }
|
|
100
|
+
it { subject.linha_digitavel.must_equal '08590.82810 98975.599808 00010.010064 5 81680009301578' }
|
|
101
|
+
|
|
102
|
+
it "codigo de barras de um boleto de exemplo" do
|
|
103
|
+
subject.conta.agencia = 3069
|
|
104
|
+
subject.conta.codigo_cedente = 82819 # Para o cecred é o código do cliente
|
|
105
|
+
subject.conta.codigo_cedente_dv = 0 # Para o cecred é o código do cliente
|
|
106
|
+
subject.conta.carteira = '06'
|
|
107
|
+
subject.numero_documento = 15_679
|
|
108
|
+
subject.valor_documento = 408.50
|
|
109
|
+
subject.data_vencimento = Date.parse('2016-09-01')
|
|
110
|
+
|
|
111
|
+
subject.linha_digitavel.must_equal '08590.82810 98975.599808 00015.679061 6 69040000040850'
|
|
112
|
+
subject.codigo_de_barras.must_equal '08596690400000408500828198975599800001567906'
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|