br_boleto 2.2.3 → 2.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.markdown +0 -1
- data/lib/br_boleto/boleto/itau.rb +0 -1
- data/lib/br_boleto/remessa/cnab400/banco_brasil.rb +1 -1
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +3 -3
- data/lib/br_boleto/remessa/cnab400/caixa.rb +1 -1
- data/lib/br_boleto/remessa/cnab400/itau.rb +1 -1
- data/lib/br_boleto/remessa/cnab400/santander.rb +1 -1
- data/lib/br_boleto/remessa/cnab400/sicredi.rb +1 -1
- data/lib/br_boleto/remessa/pagamento.rb +56 -14
- data/lib/br_boleto/version.rb +1 -1
- data/lib/config/locales/br-boleto-en.yml +0 -1
- data/lib/config/locales/br-boleto-pt-BR.yml +0 -1
- data/test/br_boleto/remessa/cnab400/banco_brasil_test.rb +1 -1
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +14 -2
- data/test/br_boleto/remessa/cnab400/caixa_test.rb +1 -1
- data/test/br_boleto/remessa/cnab400/itau_test.rb +1 -1
- data/test/br_boleto/remessa/cnab400/santander_test.rb +1 -1
- data/test/br_boleto/remessa/cnab400/sicredi_test.rb +1 -1
- data/test/br_boleto/remessa/cnab400/unicred_test.rb +1 -1
- data/test/br_boleto/remessa/pagamento_test.rb +116 -30
- data/test/factories/remessa/pagamento.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05cd136fdc280d0b850eeaa28d6005620d448a7b
|
4
|
+
data.tar.gz: 9b6ad1b838faa5e35ec6836121ad7fc3bb8791e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d636ab8f752bee300f7445abbdbdeb85f88627de89b2a72e4e212656bf0694385924ea5c148fab528ef65fdf46a1545d2a3d7b9b2e38472247e93cb4d1c8eb2e
|
7
|
+
data.tar.gz: 8a360c1dfd33ad1a9ea42165121b32ba70c9467f0c91042c18af06e676a733a7e663ba085eb2ffce4bb8019570feafa8608f8cae5e49e6519f9ec970bb49add6
|
data/Gemfile.lock
CHANGED
data/README.markdown
CHANGED
@@ -345,7 +345,6 @@ pagamento = BrBoleto::Remessa::Pagamento.new({
|
|
345
345
|
# ....
|
346
346
|
},
|
347
347
|
data_emissao: Date.today, # Valor default
|
348
|
-
valor_mora: 0.0, # Valor default
|
349
348
|
valor_desconto: 0.0, # Valor default
|
350
349
|
valor_iof: 0.0, # Valor default
|
351
350
|
valor_abatimento: 0.0, # Valor default
|
@@ -71,7 +71,6 @@ module BrBoleto
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
|
75
74
|
# As carteiras de cobrança 107, 122, 142, 143, 196 e 198 são carteiras especiais, sem registro, na qual são utilizadas 15 posições
|
76
75
|
# numéricas para identificação do título liquidado (8 do Nosso Número e 7 do Seu Número).
|
77
76
|
#
|
@@ -184,7 +184,7 @@ module BrBoleto
|
|
184
184
|
# Tamanho: 58
|
185
185
|
def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
|
186
186
|
detalhe = ''
|
187
|
-
detalhe <<
|
187
|
+
detalhe << pagamento.valor_juros_monetario_formatado(13)
|
188
188
|
detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
|
189
189
|
detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
|
190
190
|
detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
|
@@ -100,9 +100,9 @@ module BrBoleto
|
|
100
100
|
end
|
101
101
|
def detalhe_posicao_063_108(pagamento)
|
102
102
|
info = ''.adjust_size_to(3, '0')
|
103
|
-
if
|
103
|
+
if "#{pagamento.codigo_multa}".in?(%w[1 2])
|
104
104
|
info << '2'
|
105
|
-
info <<
|
105
|
+
info << pagamento.percentual_multa_formatado(4) # tem multa: preencher com percentual da multa com 2 decimais
|
106
106
|
else
|
107
107
|
info << '0'
|
108
108
|
info << ''.adjust_size_to(4, '0', :right) # sem multa: preencher com zeros.
|
@@ -184,7 +184,7 @@ module BrBoleto
|
|
184
184
|
# Tamanho: 58
|
185
185
|
def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
|
186
186
|
detalhe = ''
|
187
|
-
detalhe <<
|
187
|
+
detalhe << pagamento.valor_juros_monetario_formatado(13)
|
188
188
|
detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
|
189
189
|
detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
|
190
190
|
detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
|
@@ -146,7 +146,7 @@ module BrBoleto
|
|
146
146
|
# Tamanho: 58
|
147
147
|
def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
|
148
148
|
detalhe = ''
|
149
|
-
detalhe <<
|
149
|
+
detalhe << pagamento.valor_juros_monetario_formatado(13)
|
150
150
|
detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
|
151
151
|
detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
|
152
152
|
detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
|
@@ -134,7 +134,7 @@ module BrBoleto
|
|
134
134
|
# Tamanho: 58
|
135
135
|
def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
|
136
136
|
detalhe = ''
|
137
|
-
detalhe <<
|
137
|
+
detalhe << pagamento.valor_juros_monetario_formatado(13)
|
138
138
|
detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
|
139
139
|
detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
|
140
140
|
detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
|
@@ -135,7 +135,7 @@ module BrBoleto
|
|
135
135
|
# Tamanho: 58
|
136
136
|
def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
|
137
137
|
detalhe = ''
|
138
|
-
detalhe <<
|
138
|
+
detalhe << pagamento.valor_juros_monetario_formatado(13)
|
139
139
|
detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
|
140
140
|
detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
|
141
141
|
detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
|
@@ -206,7 +206,7 @@ module BrBoleto
|
|
206
206
|
# Tamanho: 58
|
207
207
|
def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
|
208
208
|
detalhe = ''
|
209
|
-
detalhe <<
|
209
|
+
detalhe << pagamento.valor_juros_monetario_formatado(13)
|
210
210
|
detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
|
211
211
|
detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
|
212
212
|
detalhe << ''.adjust_size_to(13,'0')
|
@@ -46,11 +46,6 @@ module BrBoleto
|
|
46
46
|
# <b>OPCIONAL</b>: codigo da 2a instrucao
|
47
47
|
attr_accessor :cod_segunda_instrucao
|
48
48
|
|
49
|
-
# <b>OPCIONAL</b>: valor da mora ao dia
|
50
|
-
# Dependendo do banco será o valor percentual ou valor em reais
|
51
|
-
# CNAB: 240 e 400
|
52
|
-
attr_accessor :valor_mora
|
53
|
-
|
54
49
|
# <b>OPCIONAL</b>: data limite para o desconto
|
55
50
|
# CNAB: 240 e 400
|
56
51
|
attr_accessor :data_desconto
|
@@ -82,9 +77,24 @@ module BrBoleto
|
|
82
77
|
# - E Ainda alguns bancos como o SICOOB não conseguem seguir o padrão e usam o cód '0' para Isento
|
83
78
|
attr_accessor :codigo_multa, :data_multa
|
84
79
|
#CNAB 240 e 400
|
85
|
-
attr_accessor :valor_multa # Valor
|
80
|
+
attr_accessor :valor_multa # Valor de acordo com o código da multa
|
86
81
|
def percentual_multa # Valor % Ex: 2.5% = 2.5
|
87
|
-
|
82
|
+
if codigo_multa.to_i == 1
|
83
|
+
BrBoleto::Helper::Number.new(valor_multa).get_percent_by_total(valor_documento)
|
84
|
+
elsif codigo_multa.to_i == 2
|
85
|
+
valor_multa.to_f
|
86
|
+
else
|
87
|
+
0.0
|
88
|
+
end
|
89
|
+
end
|
90
|
+
def valor_multa_monetario # Valor da multa em R$
|
91
|
+
if codigo_multa.to_i == 1
|
92
|
+
valor_multa.to_f
|
93
|
+
elsif codigo_multa.to_i == 2
|
94
|
+
(valor_multa.to_f/100.0 * valor_documento.to_f).round(4)
|
95
|
+
else
|
96
|
+
0.0
|
97
|
+
end
|
88
98
|
end
|
89
99
|
|
90
100
|
# <b>OPCIONAL</b>: Informações para Juros
|
@@ -94,10 +104,30 @@ module BrBoleto
|
|
94
104
|
# - '3' Isento
|
95
105
|
# - E Ainda alguns bancos como o SICOOB não conseguem seguir o padrão e usam o cód '0' para Isento
|
96
106
|
attr_accessor :codigo_juros, :data_juros
|
97
|
-
attr_accessor :valor_juros # Valor
|
98
|
-
|
107
|
+
attr_accessor :valor_juros # Valor de acordo com o código da multa
|
108
|
+
|
109
|
+
# Cálculo para saber a taxa de juros % ao mês.
|
110
|
+
# É efetuado o calculo apenas quando o codigo de juros for setado
|
111
|
+
# com 1, na qual significa que foi setado o valor R$ diário.
|
112
|
+
# Esse método sempre deve retornar o percentual de juros MENSAL
|
113
|
+
#
|
99
114
|
def percentual_juros # Valor % Ex: 2.5% = 2.5
|
100
|
-
|
115
|
+
if codigo_juros.to_i == 1
|
116
|
+
(valor_juros.to_f*30/valor_documento.to_f*100).to_f.round(2)
|
117
|
+
elsif codigo_juros.to_i == 2
|
118
|
+
valor_juros.to_f
|
119
|
+
else
|
120
|
+
0.0
|
121
|
+
end
|
122
|
+
end
|
123
|
+
def valor_juros_monetario # Valor da juros em R$ cobrado ao dia
|
124
|
+
if codigo_juros.to_i == 1
|
125
|
+
valor_juros.to_f
|
126
|
+
elsif codigo_juros.to_i == 2
|
127
|
+
(valor_juros.to_f/100.0 * valor_documento.to_f / 30).round(4)
|
128
|
+
else
|
129
|
+
0.0
|
130
|
+
end
|
101
131
|
end
|
102
132
|
|
103
133
|
# <b>OPCIONAL</b>: Número da parquela que o pagamento representa
|
@@ -286,7 +316,6 @@ module BrBoleto
|
|
286
316
|
def default_values
|
287
317
|
{
|
288
318
|
data_emissao: Date.today,
|
289
|
-
valor_mora: 0.0,
|
290
319
|
valor_desconto: 0.0,
|
291
320
|
valor_iof: 0.0,
|
292
321
|
valor_abatimento: 0.0,
|
@@ -361,13 +390,26 @@ module BrBoleto
|
|
361
390
|
BrBoleto::Helper::Number.new(valor_documento).formata_valor_monetario(tamanho)
|
362
391
|
end
|
363
392
|
|
364
|
-
# Formata o campo
|
393
|
+
# Formata o campo valor_juros_monetario
|
394
|
+
# referentes as casas decimais
|
395
|
+
# exe. R$199,90 => 0000000019990
|
396
|
+
#
|
397
|
+
# @param tamanho [Integer]
|
398
|
+
# quantidade de caracteres a ser retornado
|
399
|
+
#
|
400
|
+
def valor_juros_monetario_formatado(tamanho = 13)
|
401
|
+
BrBoleto::Helper::Number.new(valor_juros_monetario).formata_valor_monetario(tamanho)
|
402
|
+
end
|
403
|
+
|
404
|
+
# Formata o campo valor_multa_monetario
|
405
|
+
# referentes as casas decimais
|
406
|
+
# exe. R$199,90 => 0000000019990
|
365
407
|
#
|
366
408
|
# @param tamanho [Integer]
|
367
409
|
# quantidade de caracteres a ser retornado
|
368
410
|
#
|
369
|
-
def
|
370
|
-
BrBoleto::Helper::Number.new(
|
411
|
+
def valor_multa_monetario_formatado(tamanho = 13)
|
412
|
+
BrBoleto::Helper::Number.new(valor_multa_monetario).formata_valor_monetario(tamanho)
|
371
413
|
end
|
372
414
|
|
373
415
|
# Formata o campo valor dos descontos
|
data/lib/br_boleto/version.rb
CHANGED
@@ -2,7 +2,7 @@ module BrBoleto
|
|
2
2
|
module Version
|
3
3
|
MAJOR = 2 #inclui alterações de API e pode quebrar compatibilidade com versões anteriores
|
4
4
|
MINOR = 2 #inclui novas funcionalidades, sem quebrar APIs existentes
|
5
|
-
PATCH =
|
5
|
+
PATCH = 4 #corrige bugs ou traz melhorias em implementações já existentes
|
6
6
|
CURRENT = "#{MAJOR}.#{MINOR}.#{PATCH}"
|
7
7
|
end
|
8
8
|
end
|
@@ -67,7 +67,6 @@ en:
|
|
67
67
|
tipo_impressao: Tipo de impressão
|
68
68
|
cod_primeira_instrucao: Cód. 1ª instrução
|
69
69
|
cod_segunda_instrucao: Cód. 2ª instrução
|
70
|
-
valor_mora: Valor mora
|
71
70
|
data_desconto: Data do desconto
|
72
71
|
valor_desconto: Valor de desconto
|
73
72
|
cod_desconto: Código de desconto
|
@@ -67,7 +67,6 @@ pt-BR:
|
|
67
67
|
tipo_impressao: Tipo de impressão
|
68
68
|
cod_primeira_instrucao: Cód. 1ª instrução
|
69
69
|
cod_segunda_instrucao: Cód. 2ª instrução
|
70
|
-
valor_mora: Valor mora
|
71
70
|
data_desconto: Data do desconto
|
72
71
|
valor_desconto: Valor de desconto
|
73
72
|
cod_desconto: Código de desconto
|
@@ -176,7 +176,7 @@ describe BrBoleto::Remessa::Cnab400::BancoBrasil do
|
|
176
176
|
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
177
177
|
end
|
178
178
|
it "deve conter as informações nas posições corretas" do
|
179
|
-
pagamento.
|
179
|
+
pagamento.valor_juros = '0.39'
|
180
180
|
pagamento.valor_iof = '2.7'
|
181
181
|
pagamento.data_desconto = Date.parse('21/03/2018')
|
182
182
|
pagamento.valor_desconto = 4.3
|
@@ -70,7 +70,7 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
70
70
|
subject.detalhe_posicao_063_108(pagamento).size.must_equal 46
|
71
71
|
end
|
72
72
|
it "deve conter as informações nas posições corretas" do
|
73
|
-
pagamento.assign_attributes(tipo_emissao: 2)
|
73
|
+
pagamento.assign_attributes(tipo_emissao: 2, codigo_multa: 0)
|
74
74
|
result = subject.detalhe_posicao_063_108(pagamento)
|
75
75
|
|
76
76
|
result[0..2].must_equal '000'
|
@@ -84,6 +84,18 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
84
84
|
|
85
85
|
result.size.must_equal 46
|
86
86
|
end
|
87
|
+
it "Quando houver multa porém foi setado com o codigo_multa 1 - deve sempre setar o valor percentual da multa e o codigo 2" do
|
88
|
+
pagamento.assign_attributes(codigo_multa: '1', valor_multa: 7.47, valor_documento: 78.98)
|
89
|
+
result = subject.detalhe_posicao_063_108(pagamento)
|
90
|
+
result[3].must_equal '2' # Identificativos de Multa
|
91
|
+
result[4..7].must_equal '0946' # Percentual de Multa por Atraso
|
92
|
+
end
|
93
|
+
it "Quando houver multa porém foi setado com o codigo_multa 2 - deve sempre setar o valor percentual da multa e o codigo 2" do
|
94
|
+
pagamento.assign_attributes(codigo_multa: '2', valor_multa: 7.47, valor_documento: 78.98)
|
95
|
+
result = subject.detalhe_posicao_063_108(pagamento)
|
96
|
+
result[3].must_equal '2' # Identificativos de Multa
|
97
|
+
result[4..7].must_equal '0747' # Percentual de Multa por Atraso
|
98
|
+
end
|
87
99
|
end
|
88
100
|
|
89
101
|
describe '#informacoes_do_pagamento' do
|
@@ -118,7 +130,7 @@ describe BrBoleto::Remessa::Cnab400::Bradesco do
|
|
118
130
|
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
119
131
|
end
|
120
132
|
it "deve conter as informações nas posições corretas" do
|
121
|
-
pagamento.
|
133
|
+
pagamento.valor_juros = '0.39'
|
122
134
|
pagamento.valor_iof = '2.7'
|
123
135
|
pagamento.data_desconto = Date.parse('21/03/2018')
|
124
136
|
pagamento.valor_desconto = 4.3
|
@@ -123,7 +123,7 @@ describe BrBoleto::Remessa::Cnab400::Caixa do
|
|
123
123
|
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
124
124
|
end
|
125
125
|
it "deve conter as informações nas posições corretas" do
|
126
|
-
pagamento.
|
126
|
+
pagamento.valor_juros = '0.39'
|
127
127
|
pagamento.valor_iof = '2.7'
|
128
128
|
pagamento.data_desconto = Date.parse('21/03/2018')
|
129
129
|
pagamento.valor_desconto = 4.3
|
@@ -116,7 +116,7 @@ describe BrBoleto::Remessa::Cnab400::Itau do
|
|
116
116
|
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
117
117
|
end
|
118
118
|
it "deve conter as informações nas posições corretas" do
|
119
|
-
pagamento.
|
119
|
+
pagamento.valor_juros = '0.39'
|
120
120
|
pagamento.valor_iof = '2.7'
|
121
121
|
pagamento.data_desconto = Date.parse('21/03/2018')
|
122
122
|
pagamento.valor_desconto = 4.3
|
@@ -116,7 +116,7 @@ describe BrBoleto::Remessa::Cnab400::Santander do
|
|
116
116
|
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
117
117
|
end
|
118
118
|
it "deve conter as informações nas posições corretas" do
|
119
|
-
pagamento.
|
119
|
+
pagamento.valor_juros = '0.39'
|
120
120
|
pagamento.valor_iof = '2.7'
|
121
121
|
pagamento.data_desconto = Date.parse('21/03/2018')
|
122
122
|
pagamento.valor_desconto = 4.3
|
@@ -170,7 +170,7 @@ describe BrBoleto::Remessa::Cnab400::Sicredi do
|
|
170
170
|
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
171
171
|
end
|
172
172
|
it "deve conter as informações nas posições corretas" do
|
173
|
-
pagamento.
|
173
|
+
pagamento.valor_juros = '0.39'
|
174
174
|
pagamento.data_desconto = Date.parse('21/03/2018')
|
175
175
|
pagamento.valor_desconto = 4.3
|
176
176
|
pagamento.valor_abatimento = 56.47
|
@@ -124,7 +124,7 @@ describe BrBoleto::Remessa::Cnab400::Unicred do
|
|
124
124
|
subject.detalhe_multas_e_juros_do_pagamento(pagamento, 2).size.must_equal 58
|
125
125
|
end
|
126
126
|
it "deve conter as informações nas posições corretas" do
|
127
|
-
pagamento.
|
127
|
+
pagamento.valor_juros = '0.39'
|
128
128
|
pagamento.valor_iof = '2.7'
|
129
129
|
pagamento.data_desconto = Date.parse('21/03/2018')
|
130
130
|
pagamento.valor_desconto = 4.3
|
@@ -56,32 +56,106 @@ describe BrBoleto::Remessa::Pagamento do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "#percentual_multa" do
|
59
|
-
it "deve
|
60
|
-
subject.assign_attributes(valor_multa: 7.47, valor_documento: 78.98)
|
59
|
+
it "Quando o codigo_multa for 1, então deve calcular o percentual de multa pois o valor_multa representa o valor em R$" do
|
60
|
+
subject.assign_attributes(codigo_multa: '1', valor_multa: 7.47, valor_documento: 78.98)
|
61
61
|
subject.percentual_multa.must_equal 9.458091
|
62
|
+
|
63
|
+
subject.assign_attributes(codigo_multa: 1, valor_multa: 8.5, valor_documento: 90.0)
|
64
|
+
subject.percentual_multa.must_equal 9.444444
|
65
|
+
end
|
66
|
+
|
67
|
+
it "Quando o codigo_multa for 2, então deve retornar o próprio valor que está em valor_multa, pois representa o valor em %" do
|
68
|
+
subject.assign_attributes(codigo_multa: '2', valor_multa: 7.47, valor_documento: 78.98)
|
69
|
+
subject.percentual_multa.must_equal 7.47
|
70
|
+
|
71
|
+
subject.assign_attributes(codigo_multa: 2, valor_multa: 8.5, valor_documento: 90.0)
|
72
|
+
subject.percentual_multa.must_equal 8.5
|
73
|
+
end
|
74
|
+
|
75
|
+
it "Quando o codigo_multa for 0 ou 3, então deve retornar zero, pois não tem multa" do
|
76
|
+
subject.assign_attributes(codigo_multa: '0', valor_multa: 7.47, valor_documento: 78.98)
|
77
|
+
subject.percentual_multa.must_equal 0
|
78
|
+
|
79
|
+
subject.assign_attributes(codigo_multa: 3, valor_multa: 8.5, valor_documento: 90.0)
|
80
|
+
subject.percentual_multa.must_equal 0
|
62
81
|
end
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
82
|
+
end
|
83
|
+
|
84
|
+
describe "#valor_multa_monetario" do
|
85
|
+
it "Quando o codigo_multa for 1, então deve retornar o próprio valor que está em valor_multa, pois representa o valor em R$" do
|
86
|
+
subject.assign_attributes(codigo_multa: '1', valor_multa: 7.47, valor_documento: 78.98)
|
87
|
+
subject.valor_multa_monetario.must_equal 7.47
|
88
|
+
|
89
|
+
subject.assign_attributes(codigo_multa: 1, valor_multa: 8.5, valor_documento: 90.0)
|
90
|
+
subject.valor_multa_monetario.must_equal 8.5
|
91
|
+
end
|
92
|
+
|
93
|
+
it "Quando o codigo_multa for 2, então deve calcular o valor de multa pois o valor_multa representa o valor em %" do
|
94
|
+
subject.assign_attributes(codigo_multa: '2', valor_multa: 7.47, valor_documento: 78.98)
|
95
|
+
subject.valor_multa_monetario.must_equal 5.8998
|
96
|
+
|
97
|
+
subject.assign_attributes(codigo_multa: 2, valor_multa: 8.5, valor_documento: 90.0)
|
98
|
+
subject.valor_multa_monetario.must_equal 7.65
|
99
|
+
end
|
100
|
+
|
101
|
+
it "Quando o codigo_multa for 0 ou 3, então deve retornar zero, pois não tem multa" do
|
102
|
+
subject.assign_attributes(codigo_multa: '0', valor_multa: 7.47, valor_documento: 78.98)
|
103
|
+
subject.valor_multa_monetario.must_equal 0
|
104
|
+
|
105
|
+
subject.assign_attributes(codigo_multa: 3, valor_multa: 8.5, valor_documento: 90.0)
|
106
|
+
subject.valor_multa_monetario.must_equal 0
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "#percentual_juros -> Deve retornar a taxa de juros mensal" do
|
111
|
+
it "Quando o codigo_juros for 1, então deve calcular o percentual de juros pois o valor_juros representa o valor em R$" do
|
112
|
+
subject.assign_attributes(codigo_juros: '1', valor_juros: 0.9, valor_documento: 78.98)
|
113
|
+
subject.percentual_juros.must_equal 34.19
|
114
|
+
|
115
|
+
subject.assign_attributes(codigo_juros: 1, valor_juros: 0.0153, valor_documento: 90.0)
|
116
|
+
subject.percentual_juros.must_equal 0.51
|
117
|
+
end
|
118
|
+
|
119
|
+
it "Quando o codigo_juros for 2, então deve retornar o próprio valor que está em valor_juros, pois representa o valor em %" do
|
120
|
+
subject.assign_attributes(codigo_juros: '2', valor_juros: 7.47, valor_documento: 78.98)
|
121
|
+
subject.percentual_juros.must_equal 7.47
|
122
|
+
|
123
|
+
subject.assign_attributes(codigo_juros: 2, valor_juros: 8.5, valor_documento: 90.0)
|
124
|
+
subject.percentual_juros.must_equal 8.5
|
125
|
+
end
|
126
|
+
|
127
|
+
it "Quando o codigo_juros for 0 ou 3, então deve retornar zero, pois não tem juros" do
|
128
|
+
subject.assign_attributes(codigo_juros: '0', valor_juros: 7.47, valor_documento: 78.98)
|
129
|
+
subject.percentual_juros.must_equal 0
|
68
130
|
|
69
|
-
subject.
|
131
|
+
subject.assign_attributes(codigo_juros: 3, valor_juros: 8.5, valor_documento: 90.0)
|
132
|
+
subject.percentual_juros.must_equal 0
|
70
133
|
end
|
71
134
|
end
|
72
135
|
|
73
|
-
describe "#
|
74
|
-
it "deve retornar o
|
75
|
-
subject.assign_attributes(valor_juros:
|
76
|
-
subject.
|
136
|
+
describe "#valor_juros_monetario -> Deve retornar o valor do juros cobrado por dia" do
|
137
|
+
it "Quando o codigo_juros for 1, então deve retornar o próprio valor que está em valor_juros, pois representa o valor em R$" do
|
138
|
+
subject.assign_attributes(codigo_juros: '1', valor_juros: 1.0, valor_documento: 78.98)
|
139
|
+
subject.valor_juros_monetario.must_equal 1.0
|
140
|
+
|
141
|
+
subject.assign_attributes(codigo_juros: 1, valor_juros: 0.50, valor_documento: 90.0)
|
142
|
+
subject.valor_juros_monetario.must_equal 0.50
|
77
143
|
end
|
78
|
-
it "deve utilizar o metodo get_percent_by_total de Helper::Number para gerar o percentual" do
|
79
|
-
subject.assign_attributes(valor_juros: 8.47, valor_documento: 100.00)
|
80
|
-
numero = BrBoleto::Helper::Number.new(50.0)
|
81
|
-
BrBoleto::Helper::Number.expects(:new).returns(numero)
|
82
|
-
numero.expects(:get_percent_by_total).with(100.00).returns(10.47)
|
83
144
|
|
84
|
-
|
145
|
+
it "Quando o codigo_juros for 2, então deve calcular o valor de juros por 30 dias pois o valor_juros representa o valor em %" do
|
146
|
+
subject.assign_attributes(codigo_juros: '2', valor_juros: 7.47, valor_documento: 78.98)
|
147
|
+
subject.valor_juros_monetario.must_equal 0.1967
|
148
|
+
|
149
|
+
subject.assign_attributes(codigo_juros: 2, valor_juros: 8.5, valor_documento: 90.0)
|
150
|
+
subject.valor_juros_monetario.must_equal 0.255
|
151
|
+
end
|
152
|
+
|
153
|
+
it "Quando o codigo_juros for 0 ou 3, então deve retornar zero, pois não tem juros" do
|
154
|
+
subject.assign_attributes(codigo_juros: '0', valor_juros: 7.47, valor_documento: 78.98)
|
155
|
+
subject.valor_juros_monetario.must_equal 0
|
156
|
+
|
157
|
+
subject.assign_attributes(codigo_juros: 3, valor_juros: 8.5, valor_documento: 90.0)
|
158
|
+
subject.valor_juros_monetario.must_equal 0
|
85
159
|
end
|
86
160
|
end
|
87
161
|
|
@@ -118,7 +192,6 @@ describe BrBoleto::Remessa::Pagamento do
|
|
118
192
|
describe "default_values" do
|
119
193
|
let(:object) { subject.class.new() }
|
120
194
|
it "for data_emissao" do object.data_emissao.must_equal Date.today end
|
121
|
-
it "for valor_mora" do object.valor_mora.must_equal 0.0 end
|
122
195
|
it "for valor_desconto" do object.valor_desconto.must_equal 0.0 end
|
123
196
|
it "for valor_iof" do object.valor_iof.must_equal 0.0 end
|
124
197
|
it "for valor_abatimento" do object.valor_abatimento.must_equal 0.0 end
|
@@ -233,6 +306,20 @@ describe BrBoleto::Remessa::Pagamento do
|
|
233
306
|
end
|
234
307
|
end
|
235
308
|
end
|
309
|
+
describe "#valor_multa_monetario_formatado" do
|
310
|
+
context "com padrao de tamanho = 13 digitos" do
|
311
|
+
it "deve formatar o valor removendo separador de casas decimais e aredondando para 2 casas decimais" do
|
312
|
+
subject.stubs(:valor_multa_monetario).returns 7856.888
|
313
|
+
subject.valor_multa_monetario_formatado.must_equal "0000000785689"
|
314
|
+
end
|
315
|
+
end
|
316
|
+
context "passando a quantidade de digitos" do
|
317
|
+
it "deve formatar o valor removendo separador de casas decimais e aredondando para 2 casas decimais" do
|
318
|
+
subject.stubs(:valor_multa_monetario).returns 6.888
|
319
|
+
subject.valor_multa_monetario_formatado(4).must_equal "0689"
|
320
|
+
end
|
321
|
+
end
|
322
|
+
end
|
236
323
|
|
237
324
|
describe "#data_juros_formatado" do
|
238
325
|
it "deve chamar o metodo formata_data com padrão de formato %d%m%Y" do
|
@@ -260,33 +347,32 @@ describe BrBoleto::Remessa::Pagamento do
|
|
260
347
|
end
|
261
348
|
end
|
262
349
|
end
|
263
|
-
|
264
|
-
describe "#valor_documento_formatado" do
|
350
|
+
describe "#valor_juros_monetario_formatado" do
|
265
351
|
context "com padrao de tamanho = 13 digitos" do
|
266
352
|
it "deve formatar o valor removendo separador de casas decimais e aredondando para 2 casas decimais" do
|
267
|
-
subject.
|
268
|
-
subject.
|
353
|
+
subject.stubs(:valor_juros_monetario).returns 7856.888
|
354
|
+
subject.valor_juros_monetario_formatado.must_equal "0000000785689"
|
269
355
|
end
|
270
356
|
end
|
271
357
|
context "passando a quantidade de digitos" do
|
272
358
|
it "deve formatar o valor removendo separador de casas decimais e aredondando para 2 casas decimais" do
|
273
|
-
subject.
|
274
|
-
subject.
|
359
|
+
subject.stubs(:valor_juros_monetario).returns 6.888
|
360
|
+
subject.valor_juros_monetario_formatado(4).must_equal "0689"
|
275
361
|
end
|
276
362
|
end
|
277
363
|
end
|
278
364
|
|
279
|
-
describe "#
|
365
|
+
describe "#valor_documento_formatado" do
|
280
366
|
context "com padrao de tamanho = 13 digitos" do
|
281
367
|
it "deve formatar o valor removendo separador de casas decimais e aredondando para 2 casas decimais" do
|
282
|
-
subject.
|
283
|
-
subject.
|
368
|
+
subject.valor_documento = 7856.888
|
369
|
+
subject.valor_documento_formatado.must_equal "0000000785689"
|
284
370
|
end
|
285
371
|
end
|
286
372
|
context "passando a quantidade de digitos" do
|
287
373
|
it "deve formatar o valor removendo separador de casas decimais e aredondando para 2 casas decimais" do
|
288
|
-
subject.
|
289
|
-
subject.
|
374
|
+
subject.valor_documento = 7856.888
|
375
|
+
subject.valor_documento_formatado(10).must_equal "0000785689"
|
290
376
|
end
|
291
377
|
end
|
292
378
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: br_boleto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bruno M. Mergen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|