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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e60af310245b6b49e8a67c848f646fb639365ac7
4
- data.tar.gz: d9d725c1e54701ff10aeb9488ffc18e3e1f80fed
3
+ metadata.gz: e53dff5788715182714847a00352ec6862e56980
4
+ data.tar.gz: be53bf1c74e1c1ee13f5a643ac73b2391adc1da5
5
5
  SHA512:
6
- metadata.gz: c51a8c61fc8044564172b0592e788c90710d8477009f91f0169013c139fb511be621b252c9684da814234d83e12c0ea76cb91ae3430b3c56c09fb2e4f0db8dcc
7
- data.tar.gz: ce9984679c2a1647ca76aca89fc3a3ad817e30d1b504a1eaa16d48fafcec90199c060112d37f992f298e66b98f4cb55cffaf2f2aee21a2b4c6796ac251999916
6
+ metadata.gz: '09bc69a626f590736304d139f4f9251ff736feb73415ee63551289f7a8150470c18bc3862812ff76c64c9604821b18ba89bc948b2b2c1885a2056d1e43bc1a96'
7
+ data.tar.gz: 275ea24759fdd00a304db1fb7db3cfc799a7f34557be9a2b50aa3a23cec672c8baddf5828c43e5fe6c843ddef4168673f5761f6bdaaaf3a517e261e1f84c62f6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 8.0.0
4
+
5
+ - Corrige erro no cálculo do fator de vencimento
6
+ - Boleto da Caixa passa a ser no formato registrado por padrão.
7
+
3
8
  ## 7.0.0
4
9
  - Adicionado Banrisul
5
10
  - Rubocop styles
@@ -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: '2',
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
- validates_length_of :seu_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
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.variacao
209
- doc.show "#{boleto.carteira}-#{boleto.variacao}"
208
+ if boleto.carteira_label
209
+ doc.show boleto.carteira_label
210
210
  else
211
- doc.show boleto.carteira
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).to_s.rjust(4, '0')
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>
@@ -2,5 +2,5 @@
2
2
  #
3
3
 
4
4
  module Brcobranca
5
- VERSION = '7.3.0'
5
+ VERSION = '8.0.0'
6
6
  end
@@ -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('2')
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('2452740000200040000000010')
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('24000000000000001-2')
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: 7.3.0
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-04-12 00:00:00.000000000 Z
11
+ date: 2017-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rghost