br_boleto 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +1 -1
- data/Gemfile.lock +2 -2
- data/br_boleto.gemspec +2 -3
- data/lib/br_boleto/association/have_conta.rb +27 -25
- data/lib/br_boleto/association/have_pagador.rb +2 -0
- data/lib/br_boleto/boleto/base.rb +0 -4
- data/lib/br_boleto/boleto/bradesco.rb +80 -0
- data/lib/br_boleto/boleto/caixa.rb +10 -12
- data/lib/br_boleto/boleto/cecred.rb +76 -0
- data/lib/br_boleto/boleto/itau.rb +114 -0
- data/lib/br_boleto/boleto/sicredi.rb +101 -0
- data/lib/br_boleto/boleto/unicred.rb +21 -0
- data/lib/br_boleto/conta/base.rb +28 -3
- data/lib/br_boleto/conta/bradesco.rb +120 -0
- data/lib/br_boleto/conta/caixa.rb +22 -12
- data/lib/br_boleto/conta/cecred.rb +67 -0
- data/lib/br_boleto/conta/itau.rb +199 -0
- data/lib/br_boleto/conta/sicoob.rb +40 -11
- data/lib/br_boleto/conta/sicredi.rb +171 -0
- data/lib/br_boleto/conta/unicred.rb +38 -0
- data/lib/br_boleto/helper/default_codes.rb +535 -26
- data/lib/br_boleto/pagador.rb +4 -0
- data/lib/br_boleto/remessa/base.rb +2 -0
- data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
- data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
- data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
- data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
- data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
- data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
- data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
- data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
- data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
- data/lib/br_boleto/remessa/pagamento.rb +93 -43
- data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
- data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
- data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
- data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
- data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
- data/lib/br_boleto/retorno/pagamento.rb +18 -4
- data/lib/br_boleto/version.rb +2 -2
- data/lib/br_boleto.rb +28 -0
- data/lib/config/locales/br-boleto-en.yml +1 -0
- data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
- data/test/br_boleto/association/have_pagador_test.rb +24 -0
- data/test/br_boleto/boleto/bradesco_test.rb +125 -0
- data/test/br_boleto/boleto/caixa_test.rb +18 -18
- data/test/br_boleto/boleto/cecred_test.rb +115 -0
- data/test/br_boleto/boleto/itau_test.rb +160 -0
- data/test/br_boleto/boleto/sicredi_test.rb +136 -0
- data/test/br_boleto/boleto/unicred_test.rb +128 -0
- data/test/br_boleto/conta/base_test.rb +298 -3
- data/test/br_boleto/conta/bradesco_test.rb +142 -0
- data/test/br_boleto/conta/caixa_test.rb +7 -6
- data/test/br_boleto/conta/cecred_test.rb +119 -0
- data/test/br_boleto/conta/itau_test.rb +189 -0
- data/test/br_boleto/conta/sicoob_test.rb +32 -2
- data/test/br_boleto/conta/sicredi_test.rb +180 -0
- data/test/br_boleto/conta/unicred_test.rb +154 -0
- data/test/br_boleto/pagador_test.rb +22 -2
- data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
- data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
- data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
- data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
- data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
- data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
- data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
- data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
- data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
- data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
- data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
- data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
- data/test/br_boleto/retorno/pagamento_test.rb +7 -0
- data/test/factories/boleto/boleto_bradesco.rb +18 -0
- data/test/factories/boleto/boleto_cecred.rb +18 -0
- data/test/factories/boleto/boleto_itau.rb +18 -0
- data/test/factories/boleto/boleto_sicredi.rb +18 -0
- data/test/factories/boleto/boleto_unicred.rb +18 -0
- data/test/factories/conta/bradesco.rb +16 -0
- data/test/factories/conta/caixa.rb +2 -1
- data/test/factories/conta/cecred.rb +15 -0
- data/test/factories/conta/itau.rb +15 -0
- data/test/factories/conta/sicoob.rb +2 -1
- data/test/factories/conta/sicredi.rb +15 -0
- data/test/factories/conta/unicred.rb +15 -0
- data/test/factories/remessa/cnab240/bradesco.rb +9 -0
- data/test/factories/remessa/cnab240/cecred.rb +9 -0
- data/test/factories/remessa/cnab240/itau.rb +9 -0
- data/test/factories/remessa/cnab240/sicredi.rb +9 -0
- data/test/factories/remessa/cnab240/unicred.rb +9 -0
- data/test/factories/remessa/cnab400/bradesco.rb +8 -0
- data/test/factories/remessa/cnab400/itau.rb +8 -0
- data/test/factories/remessa/cnab400/sicredi.rb +8 -0
- data/test/factories/remessa/cnab400/unicred.rb +8 -0
- data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
- data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
- data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
- data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
- data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
- data/test/fixtures/retorno/cnab400/itau.ret +54 -0
- metadata +138 -3
@@ -0,0 +1,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
|