brcobranca 7.3.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
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