br_boleto 2.2.3 → 2.2.4
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/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
|