brcobranca 7.3.0 → 8.0.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/CHANGELOG.md +5 -0
- data/lib/brcobranca/boleto/base.rb +3 -0
- data/lib/brcobranca/boleto/caixa.rb +3 -2
- data/lib/brcobranca/boleto/itau.rb +9 -2
- data/lib/brcobranca/boleto/template/rghost.rb +7 -3
- data/lib/brcobranca/calculo_data.rb +16 -1
- data/lib/brcobranca/version.rb +1 -1
- data/spec/brcobranca/boleto/caixa_spec.rb +3 -3
- data/spec/brcobranca/boleto/itau_spec.rb +25 -0
- data/spec/brcobranca/calculo_data_spec.rb +8 -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: e53dff5788715182714847a00352ec6862e56980
|
|
4
|
+
data.tar.gz: be53bf1c74e1c1ee13f5a643ac73b2391adc1da5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '09bc69a626f590736304d139f4f9251ff736feb73415ee63551289f7a8150470c18bc3862812ff76c64c9604821b18ba89bc948b2b2c1885a2056d1e43bc1a96'
|
|
7
|
+
data.tar.gz: 275ea24759fdd00a304db1fb7db3cfc799a7f34557be9a2b50aa3a23cec672c8baddf5828c43e5fe6c843ddef4168673f5761f6bdaaaf3a517e261e1f84c62f6
|
data/CHANGELOG.md
CHANGED
|
@@ -23,6 +23,8 @@ module Brcobranca
|
|
|
23
23
|
# <b>REQUERIDO</b>: Carteira utilizada
|
|
24
24
|
attr_accessor :carteira
|
|
25
25
|
# <b>OPCIONAL</b>: Variacao da carteira(opcional para a maioria dos bancos)
|
|
26
|
+
attr_accessor :carteira_label
|
|
27
|
+
# <b>OPCIONAL</b>: Rótulo da Carteira, RG ou SR, somente para impressão no boleto.
|
|
26
28
|
attr_accessor :variacao
|
|
27
29
|
# <b>OPCIONAL</b>: Data de processamento do boleto, geralmente igual a data_documento
|
|
28
30
|
attr_accessor :data_processamento
|
|
@@ -203,6 +205,7 @@ module Brcobranca
|
|
|
203
205
|
codigo = "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}"
|
|
204
206
|
codigo
|
|
205
207
|
else
|
|
208
|
+
self.errors.add(:base, :too_long, message: "tamanho(#{codigo.size}) prévio do código de barras(#{codigo}) inválido, deveria ser 43 dígitos")
|
|
206
209
|
raise Brcobranca::BoletoInvalido, self
|
|
207
210
|
end
|
|
208
211
|
end
|
|
@@ -10,7 +10,7 @@ module Brcobranca
|
|
|
10
10
|
class Caixa < Base # Caixa
|
|
11
11
|
# <b>REQUERIDO</b>: Emissão do boleto
|
|
12
12
|
attr_accessor :emissao
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
# Validações
|
|
15
15
|
# Modalidade/Carteira de Cobrança (1-Registrada | 2-Sem Registro)
|
|
16
16
|
validates_length_of :carteira, is: 1, message: 'deve possuir 1 dígitos.'
|
|
@@ -23,7 +23,8 @@ module Brcobranca
|
|
|
23
23
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
|
24
24
|
def initialize(campos = {})
|
|
25
25
|
campos = {
|
|
26
|
-
carteira: '
|
|
26
|
+
carteira: '1',
|
|
27
|
+
carteira_label: 'RG',
|
|
27
28
|
emissao: '4'
|
|
28
29
|
}.merge!(campos)
|
|
29
30
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
+
require 'active_support/core_ext/object/with_options'
|
|
4
|
+
|
|
3
5
|
module Brcobranca
|
|
4
6
|
module Boleto
|
|
5
7
|
class Itau < Base # Banco Itaú
|
|
@@ -10,8 +12,9 @@ module Brcobranca
|
|
|
10
12
|
validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
|
11
13
|
validates_length_of :numero_documento, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
|
12
14
|
validates_length_of :conta_corrente, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
with_options if: :usa_seu_numero? do |v|
|
|
16
|
+
v.validates_length_of :seu_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
|
17
|
+
end
|
|
15
18
|
# Nova instancia do Itau
|
|
16
19
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
|
17
20
|
def initialize(campos = {})
|
|
@@ -50,6 +53,10 @@ module Brcobranca
|
|
|
50
53
|
@seu_numero = valor.to_s.rjust(7, '0') if valor
|
|
51
54
|
end
|
|
52
55
|
|
|
56
|
+
def usa_seu_numero?
|
|
57
|
+
%w(198 106 107 122 142 143 195 196).include?(carteira.to_s)
|
|
58
|
+
end
|
|
59
|
+
|
|
53
60
|
# Dígito verificador do nosso número.
|
|
54
61
|
#
|
|
55
62
|
# Para a grande maioria das carteiras, são considerados para a obtenção do DAC/DV, os dados
|
|
@@ -205,10 +205,14 @@ module Brcobranca
|
|
|
205
205
|
doc.moveto x: '20.3 cm', y: '14.4 cm'
|
|
206
206
|
doc.show boleto.nosso_numero_boleto, align: :show_right
|
|
207
207
|
doc.moveto x: '4.4 cm', y: '13.5 cm'
|
|
208
|
-
if boleto.
|
|
209
|
-
doc.show
|
|
208
|
+
if boleto.carteira_label
|
|
209
|
+
doc.show boleto.carteira_label
|
|
210
210
|
else
|
|
211
|
-
|
|
211
|
+
if boleto.variacao
|
|
212
|
+
doc.show "#{boleto.carteira}-#{boleto.variacao}"
|
|
213
|
+
else
|
|
214
|
+
doc.show boleto.carteira
|
|
215
|
+
end
|
|
212
216
|
end
|
|
213
217
|
doc.moveto x: '6.4 cm', y: '13.5 cm'
|
|
214
218
|
doc.show boleto.especie
|
|
@@ -5,12 +5,27 @@ module Brcobranca
|
|
|
5
5
|
# Métodos auxiliares de cálculos envolvendo Datas.
|
|
6
6
|
module CalculoData
|
|
7
7
|
# Calcula o número de dias corridos entre a <b>data base ("Fixada" em 07.10.1997)</b> e a <b>data de vencimento</b> desejada.
|
|
8
|
+
# A partir de 22.02.2025, o fator retorna para '1000' adicionando- se '1' a cada dia subsequente a este fator
|
|
9
|
+
# até que chegue a 9999 novamente onde deve ser usada nova data base começando de 1000.
|
|
10
|
+
#
|
|
11
|
+
# Somente serão considerados válidos para pagamento os boletos com 3.000 fatores de vencimento anteriores
|
|
12
|
+
# e 5.500 fatores futuros, ambos em relação a data atual.
|
|
13
|
+
# Boletos fora deste controle não serão considerados validos para pagamento na rede bancária.
|
|
14
|
+
# Ex. Hoje é 13/03/2014 (fator 6.001)
|
|
15
|
+
# Limite para emissão ou pagamento de boletos vencido: 24/12/2005 (fator 3.000)
|
|
16
|
+
# Limite para emissão ou pagamento de boletos à vencer: 03/04/2029 (fator 2.501)
|
|
17
|
+
#
|
|
8
18
|
# @return [String] Contendo 4 dígitos
|
|
9
19
|
# @example
|
|
10
20
|
# Date.parse(2000-07-04).fator_vencimento #=> 1001
|
|
11
21
|
def fator_vencimento
|
|
12
22
|
data_base = Date.parse '1997-10-07'
|
|
13
|
-
Integer(self - data_base)
|
|
23
|
+
fator_vencimento = Integer(self - data_base)
|
|
24
|
+
while fator_vencimento > 9999
|
|
25
|
+
data_base = data_base + 10000
|
|
26
|
+
fator_vencimento = Integer(self - data_base) + 1000
|
|
27
|
+
end
|
|
28
|
+
fator_vencimento.to_s
|
|
14
29
|
end
|
|
15
30
|
|
|
16
31
|
# Mostra a data em formato <b>dia/mês/ano</b>
|
data/lib/brcobranca/version.rb
CHANGED
|
@@ -33,7 +33,7 @@ RSpec.describe Brcobranca::Boleto::Caixa do #:nodoc:[all]
|
|
|
33
33
|
expect(boleto_novo.valor_documento).to be(0.0)
|
|
34
34
|
expect(boleto_novo.local_pagamento).to eql('PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE')
|
|
35
35
|
expect(boleto_novo.codigo_servico).to be_falsey
|
|
36
|
-
expect(boleto_novo.carteira).to eql('
|
|
36
|
+
expect(boleto_novo.carteira).to eql('1')
|
|
37
37
|
expect(boleto_novo.emissao).to eql('4')
|
|
38
38
|
end
|
|
39
39
|
|
|
@@ -55,7 +55,7 @@ RSpec.describe Brcobranca::Boleto::Caixa do #:nodoc:[all]
|
|
|
55
55
|
boleto_novo = described_class.new @valid_attributes
|
|
56
56
|
expect { boleto_novo.codigo_barras }.not_to raise_error
|
|
57
57
|
expect(boleto_novo.codigo_barras_segunda_parte).not_to be_blank
|
|
58
|
-
expect(boleto_novo.codigo_barras_segunda_parte).to eql('
|
|
58
|
+
expect(boleto_novo.codigo_barras_segunda_parte).to eql('2452740000100040000000017')
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
it 'Não permitir gerar boleto com atributos inválidos' do
|
|
@@ -103,7 +103,7 @@ RSpec.describe Brcobranca::Boleto::Caixa do #:nodoc:[all]
|
|
|
103
103
|
|
|
104
104
|
it 'Montar nosso_numero_boleto' do
|
|
105
105
|
boleto_novo = described_class.new @valid_attributes
|
|
106
|
-
expect(boleto_novo.nosso_numero_boleto).to eq('
|
|
106
|
+
expect(boleto_novo.nosso_numero_boleto).to eq('14000000000000001-4')
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
it 'Montar agencia_conta_boleto' do
|
|
@@ -57,6 +57,16 @@ RSpec.describe Brcobranca::Boleto::Itau do
|
|
|
57
57
|
expect(boleto_novo.numero_documento).to eql('12345678')
|
|
58
58
|
expect(boleto_novo.carteira).to eql('175')
|
|
59
59
|
end
|
|
60
|
+
|
|
61
|
+
it '#usa_seu_numero?' do
|
|
62
|
+
@valid_attributes[:carteira] = 198
|
|
63
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
64
|
+
expect(boleto_novo.usa_seu_numero?).to be_truthy
|
|
65
|
+
|
|
66
|
+
@valid_attributes[:carteira] = 109
|
|
67
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
68
|
+
expect(boleto_novo.usa_seu_numero?).to be_falsey
|
|
69
|
+
end
|
|
60
70
|
|
|
61
71
|
it 'Gerar boleto' do
|
|
62
72
|
@valid_attributes[:data_vencimento] = Date.parse('2009/08/14')
|
|
@@ -117,9 +127,24 @@ RSpec.describe Brcobranca::Boleto::Itau do
|
|
|
117
127
|
@valid_attributes[:seu_numero] = '123456'
|
|
118
128
|
boleto_novo = described_class.new(@valid_attributes)
|
|
119
129
|
|
|
130
|
+
expect(boleto_novo.send(:codigo_barras_primeira_parte)).to eql('341925250000013500')
|
|
120
131
|
expect(boleto_novo.codigo_barras_segunda_parte).to eql('1960025828101234560123440')
|
|
121
132
|
expect(boleto_novo.codigo_barras).to eql('34192252500000135001960025828101234560123440')
|
|
122
133
|
expect(boleto_novo.codigo_barras.linha_digitavel).to eql('34191.96005 25828.101235 45601.234409 2 25250000013500')
|
|
134
|
+
|
|
135
|
+
@valid_attributes[:numero_documento] = '00010152'
|
|
136
|
+
@valid_attributes[:data_vencimento] = Date.parse('2029/05/20')
|
|
137
|
+
@valid_attributes[:carteira] = 109
|
|
138
|
+
@valid_attributes[:valor] = 6757.87
|
|
139
|
+
@valid_attributes[:seu_numero] = '00010152'
|
|
140
|
+
@valid_attributes[:agencia] = '1248'
|
|
141
|
+
@valid_attributes[:conta_corrente] = '02124'
|
|
142
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
143
|
+
|
|
144
|
+
expect(boleto_novo.send(:codigo_barras_primeira_parte)).to eql('341925480000675787')
|
|
145
|
+
expect(boleto_novo.codigo_barras_segunda_parte).to eql('1090001015271248021246000')
|
|
146
|
+
expect(boleto_novo.codigo_barras).to eql('34194254800006757871090001015271248021246000')
|
|
147
|
+
expect(boleto_novo.codigo_barras.linha_digitavel).to eql('34191.09008 01015.271248 80212.460002 4 25480000675787')
|
|
123
148
|
end
|
|
124
149
|
|
|
125
150
|
it 'Não permitir gerar boleto com atributos inválido' do
|
|
@@ -7,6 +7,14 @@ RSpec.describe Brcobranca::CalculoData do
|
|
|
7
7
|
expect((Date.parse '2008-02-01').fator_vencimento).to eq('3769')
|
|
8
8
|
expect((Date.parse '2008-02-02').fator_vencimento).to eq('3770')
|
|
9
9
|
expect((Date.parse '2008-02-06').fator_vencimento).to eq('3774')
|
|
10
|
+
expect((Date.parse '03/07/2000').fator_vencimento).to eq('1000')
|
|
11
|
+
expect((Date.parse '04/07/2000').fator_vencimento).to eq('1001')
|
|
12
|
+
expect((Date.parse '05/07/2000').fator_vencimento).to eq('1002')
|
|
13
|
+
expect((Date.parse '01/05/2002').fator_vencimento).to eq('1667')
|
|
14
|
+
expect((Date.parse '17/11/2010').fator_vencimento).to eq('4789')
|
|
15
|
+
expect((Date.parse '21/02/2025').fator_vencimento).to eq('9999')
|
|
16
|
+
expect((Date.parse '22/02/2025').fator_vencimento).to eq('1000')
|
|
17
|
+
expect((Date.parse '23/02/2025').fator_vencimento).to eq('1001')
|
|
10
18
|
end
|
|
11
19
|
|
|
12
20
|
it 'Formata a data no padrão visual brasileiro' do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: brcobranca
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 8.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kivanio Barbosa
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-
|
|
11
|
+
date: 2017-05-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rghost
|