brcobranca 6.5.0 → 6.6.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/lib/brcobranca.rb +1 -0
- data/lib/brcobranca/arquivos/logos/banconordeste.eps +0 -0
- data/lib/brcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
- data/lib/brcobranca/boleto/banco_nordeste.rb +92 -0
- data/lib/brcobranca/version.rb +1 -1
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +118 -0
- data/spec/support/shared_examples/formatos_validos.rb +34 -0
- metadata +9 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dde684f4e1747019a423680e7f4fd10d5d66ece6
|
|
4
|
+
data.tar.gz: 5ed7b52056973139c8cc2187906cfa0276ccce69
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4063569215fcff25384c5f107653fa3ae10e2fb7f7ab0c67bca214423fc0fad591b6ea6a378c825c58769653ebdb0111d59f999bd25bb4ecd28ef3390e6263b5
|
|
7
|
+
data.tar.gz: f887d0a6a6fd852ea3189521ffd2d312f21e42379421c5b0128e6657d113371696038f10ce3f64b5e7a43e0bf6c93a1cb646751a7b9d6653e95350cf63b5a535
|
data/lib/brcobranca.rb
CHANGED
|
@@ -95,6 +95,7 @@ module Brcobranca
|
|
|
95
95
|
# Módulo para classes de boletos
|
|
96
96
|
module Boleto
|
|
97
97
|
autoload :Base, 'brcobranca/boleto/base'
|
|
98
|
+
autoload :BancoNordeste, 'brcobranca/boleto/banco_nordeste'
|
|
98
99
|
autoload :BancoBrasil, 'brcobranca/boleto/banco_brasil'
|
|
99
100
|
autoload :Itau, 'brcobranca/boleto/itau'
|
|
100
101
|
autoload :Hsbc, 'brcobranca/boleto/hsbc'
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module Brcobranca
|
|
3
|
+
module Boleto
|
|
4
|
+
class BancoNordeste < Base # Banco do Nordeste
|
|
5
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
|
6
|
+
validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
|
7
|
+
validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
|
8
|
+
validates_length_of :numero_documento, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
|
9
|
+
|
|
10
|
+
# Nova instancia do Banco do Nordeste
|
|
11
|
+
# @param (see Brcobranca::Boleto::Base#initialize)
|
|
12
|
+
def initialize(campos = {})
|
|
13
|
+
campos = { carteira: '21' }.merge!(campos)
|
|
14
|
+
super(campos)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
|
18
|
+
#
|
|
19
|
+
# @return [String] 3 caracteres numéricos.
|
|
20
|
+
def banco
|
|
21
|
+
'004'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Número da conta corrente
|
|
25
|
+
# @return [String] 7 caracteres numéricos.
|
|
26
|
+
def conta_corrente=(valor)
|
|
27
|
+
@conta_corrente = valor.to_s.rjust(7, '0') if valor
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Número do convênio/contrato do cliente junto ao banco.
|
|
31
|
+
# @return [String] 7 caracteres numéricos.
|
|
32
|
+
def convenio=(valor)
|
|
33
|
+
@convenio = valor.to_s.rjust(7, '0') if valor
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Número sequencial utilizado para identificar o boleto.
|
|
37
|
+
# @return [String] 8 caracteres numéricos.
|
|
38
|
+
def numero_documento=(valor)
|
|
39
|
+
@numero_documento = valor.to_s.rjust(7, '0') if valor
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Dígito verificador do nosso número.
|
|
43
|
+
# @return [String] 1 caracteres numéricos.
|
|
44
|
+
def nosso_numero_dv
|
|
45
|
+
nosso_numero = numero_documento.to_s.rjust(7, '0') unless numero_documento.nil?
|
|
46
|
+
nosso_numero.modulo11(
|
|
47
|
+
multiplicador: (2..8).to_a,
|
|
48
|
+
mapeamento: { 10 => 0, 11 => 0 }
|
|
49
|
+
) { |total| 11 - (total % 11) }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Nosso número para exibir no boleto.
|
|
53
|
+
# @return [String]
|
|
54
|
+
# @example
|
|
55
|
+
# boleto.nosso_numero_boleto #=> "0020572-9"
|
|
56
|
+
def nosso_numero_boleto
|
|
57
|
+
nosso_numero = numero_documento.to_s.rjust(7, '0') unless numero_documento.nil?
|
|
58
|
+
"#{nosso_numero}-#{nosso_numero_dv} #{carteira}"
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Agência + codigo do cedente do cliente para exibir no boleto.
|
|
62
|
+
# @return [String]
|
|
63
|
+
# @example
|
|
64
|
+
# boleto.agencia_conta_boleto #=> "0059/1899775"
|
|
65
|
+
def agencia_conta_boleto
|
|
66
|
+
"#{agencia}/#{convenio_com_dv}"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Dígito verificador da convênio
|
|
70
|
+
# @return [Integer] 1 caracteres numéricos.
|
|
71
|
+
def convenio_dv
|
|
72
|
+
convenio.modulo11
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def convenio_com_dv
|
|
76
|
+
"#{convenio}-#{convenio_dv}"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Segunda parte do código de barras.
|
|
80
|
+
# 9(04) | Agência <br/>
|
|
81
|
+
# 9(08) | Convenio com DV <br/>
|
|
82
|
+
# 9(08) | Nosso Numero Com DV<br/>
|
|
83
|
+
# 9(02) | Carteira<br/>
|
|
84
|
+
# 9(03) | Zeros<br/>
|
|
85
|
+
#
|
|
86
|
+
# @return [String] 25 caracteres numéricos.
|
|
87
|
+
def codigo_barras_segunda_parte
|
|
88
|
+
"#{agencia}#{convenio}#{convenio_dv}#{numero_documento}#{nosso_numero_dv}#{carteira}000"
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
data/lib/brcobranca/version.rb
CHANGED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
RSpec.describe Brcobranca::Boleto::BancoNordeste do #:nodoc:[all]
|
|
5
|
+
before do
|
|
6
|
+
@valid_attributes = {
|
|
7
|
+
valor: 25.0,
|
|
8
|
+
local_pagamento: 'QUALQUER BANCO ATÉ O VENCIMENTO',
|
|
9
|
+
cedente: 'Kivanio Barbosa',
|
|
10
|
+
documento_cedente: '12345678912',
|
|
11
|
+
sacado: 'Claudio Pozzebom',
|
|
12
|
+
sacado_documento: '12345678900',
|
|
13
|
+
agencia: '0016',
|
|
14
|
+
conta_corrente: '0001193',
|
|
15
|
+
convenio: '0001193',
|
|
16
|
+
numero_documento: '0000053'
|
|
17
|
+
}
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'Criar nova instancia com atributos padrões' do
|
|
21
|
+
boleto_novo = described_class.new
|
|
22
|
+
expect(boleto_novo.banco).to eql('004')
|
|
23
|
+
expect(boleto_novo.especie_documento).to eql('DM')
|
|
24
|
+
expect(boleto_novo.especie).to eql('R$')
|
|
25
|
+
expect(boleto_novo.moeda).to eql('9')
|
|
26
|
+
expect(boleto_novo.data_documento).to eql(Date.today)
|
|
27
|
+
expect(boleto_novo.data_vencimento).to eql(Date.today)
|
|
28
|
+
expect(boleto_novo.aceite).to eql('S')
|
|
29
|
+
expect(boleto_novo.quantidade).to eql(1)
|
|
30
|
+
expect(boleto_novo.valor).to eql(0.0)
|
|
31
|
+
expect(boleto_novo.valor_documento).to eql(0.0)
|
|
32
|
+
expect(boleto_novo.local_pagamento).to eql('QUALQUER BANCO ATÉ O VENCIMENTO')
|
|
33
|
+
expect(boleto_novo.carteira).to eql('21')
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it 'Criar nova instancia com atributos válidos' do
|
|
37
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
38
|
+
expect(boleto_novo.banco).to eql('004')
|
|
39
|
+
expect(boleto_novo.especie_documento).to eql('DM')
|
|
40
|
+
expect(boleto_novo.especie).to eql('R$')
|
|
41
|
+
expect(boleto_novo.moeda).to eql('9')
|
|
42
|
+
expect(boleto_novo.data_documento).to eql(Date.today)
|
|
43
|
+
expect(boleto_novo.data_vencimento).to eql(Date.today)
|
|
44
|
+
expect(boleto_novo.aceite).to eql('S')
|
|
45
|
+
expect(boleto_novo.quantidade).to eql(1)
|
|
46
|
+
expect(boleto_novo.valor).to eql(25.0)
|
|
47
|
+
expect(boleto_novo.valor_documento).to eql(25.0)
|
|
48
|
+
expect(boleto_novo.local_pagamento).to eql('QUALQUER BANCO ATÉ O VENCIMENTO')
|
|
49
|
+
expect(boleto_novo.cedente).to eql('Kivanio Barbosa')
|
|
50
|
+
expect(boleto_novo.documento_cedente).to eql('12345678912')
|
|
51
|
+
expect(boleto_novo.sacado).to eql('Claudio Pozzebom')
|
|
52
|
+
expect(boleto_novo.sacado_documento).to eql('12345678900')
|
|
53
|
+
expect(boleto_novo.agencia).to eql('0016')
|
|
54
|
+
expect(boleto_novo.convenio).to eql('0001193')
|
|
55
|
+
expect(boleto_novo.numero_documento).to eql('0000053')
|
|
56
|
+
expect(boleto_novo.carteira).to eql('21')
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it 'Gerar boleto' do
|
|
60
|
+
@valid_attributes[:valor] = 1000.00
|
|
61
|
+
@valid_attributes[:data_vencimento] = Date.parse('2009/10/21')
|
|
62
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
63
|
+
expect(boleto_novo.codigo_barras_segunda_parte).to eql('0016000119320000053121000')
|
|
64
|
+
expect(boleto_novo.codigo_barras).to eql('00491439700001000000016000119320000053121000')
|
|
65
|
+
expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00490.01605 00119.320000 00531.210003 1 43970000100000')
|
|
66
|
+
|
|
67
|
+
@valid_attributes[:valor] = 54.00
|
|
68
|
+
@valid_attributes[:numero_documento] = '0002720'
|
|
69
|
+
@valid_attributes[:data_vencimento] = Date.parse('2012/09/08')
|
|
70
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
71
|
+
expect(boleto_novo.codigo_barras_segunda_parte).to eql('0016000119320002720021000')
|
|
72
|
+
expect(boleto_novo.codigo_barras).to eql('00497545000000054000016000119320002720021000')
|
|
73
|
+
expect(boleto_novo.codigo_barras.linha_digitavel).to eql('00490.01605 00119.320000 27200.210006 7 54500000005400')
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it 'Não permitir gerar boleto com atributos inválido' do
|
|
77
|
+
boleto_novo = described_class.new
|
|
78
|
+
expect { boleto_novo.codigo_barras }.to raise_error(Brcobranca::BoletoInvalido)
|
|
79
|
+
expect(boleto_novo.errors.count).to eql(3)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it 'Montar nosso_numero_dv' do
|
|
83
|
+
@valid_attributes[:numero_documento] = '0000010'
|
|
84
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
85
|
+
expect(boleto_novo.nosso_numero_dv).to eql(8)
|
|
86
|
+
|
|
87
|
+
@valid_attributes[:numero_documento] = '0020572'
|
|
88
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
89
|
+
expect(boleto_novo.nosso_numero_dv).to eql(9)
|
|
90
|
+
|
|
91
|
+
@valid_attributes[:numero_documento] = '1961005'
|
|
92
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
93
|
+
expect(boleto_novo.nosso_numero_dv).to eql(0)
|
|
94
|
+
|
|
95
|
+
@valid_attributes[:numero_documento] = '0000053'
|
|
96
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
97
|
+
expect(boleto_novo.nosso_numero_dv).to eql(1)
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'Montar nosso_numero_boleto' do
|
|
102
|
+
@valid_attributes[:numero_documento] = '0000010'
|
|
103
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
104
|
+
expect(boleto_novo.nosso_numero_boleto).to eql('0000010-8 21')
|
|
105
|
+
|
|
106
|
+
@valid_attributes[:numero_documento] = '0020572'
|
|
107
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
108
|
+
expect(boleto_novo.nosso_numero_boleto).to eql('0020572-9 21')
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
describe 'Busca logotipo do banco' do
|
|
112
|
+
it_behaves_like 'busca_logotipo'
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
describe 'Formato do boleto' do
|
|
116
|
+
it_behaves_like 'formatos_validos'
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
shared_examples_for 'formatos_validos' do
|
|
3
|
+
it 'válido com método to_' do
|
|
4
|
+
@valid_attributes[:data_documento] = Date.parse('2009/08/13')
|
|
5
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
6
|
+
|
|
7
|
+
%w(pdf jpg tif png).each do |format|
|
|
8
|
+
file_body = boleto_novo.send("to_#{format}".to_sym)
|
|
9
|
+
tmp_file = Tempfile.new('foobar.' << format)
|
|
10
|
+
tmp_file.puts file_body
|
|
11
|
+
tmp_file.close
|
|
12
|
+
expect(File.exist?(tmp_file.path)).to be_truthy
|
|
13
|
+
expect(File.stat(tmp_file.path).zero?).to be_falsey
|
|
14
|
+
expect(File.delete(tmp_file.path)).to eql(1)
|
|
15
|
+
expect(File.exist?(tmp_file.path)).to be_falsey
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'válido' do
|
|
20
|
+
@valid_attributes[:data_documento] = Date.parse('2009/08/13')
|
|
21
|
+
boleto_novo = described_class.new(@valid_attributes)
|
|
22
|
+
|
|
23
|
+
%w(pdf jpg tif png).each do |format|
|
|
24
|
+
file_body = boleto_novo.to(format)
|
|
25
|
+
tmp_file = Tempfile.new('foobar.' << format)
|
|
26
|
+
tmp_file.puts file_body
|
|
27
|
+
tmp_file.close
|
|
28
|
+
expect(File.exist?(tmp_file.path)).to be_truthy
|
|
29
|
+
expect(File.stat(tmp_file.path).zero?).to be_falsey
|
|
30
|
+
expect(File.delete(tmp_file.path)).to eql(1)
|
|
31
|
+
expect(File.exist?(tmp_file.path)).to be_falsey
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
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: 6.
|
|
4
|
+
version: 6.6.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: 2016-07-
|
|
11
|
+
date: 2016-07-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rghost
|
|
@@ -105,6 +105,8 @@ files:
|
|
|
105
105
|
- lib/brcobranca.rb
|
|
106
106
|
- lib/brcobranca/arquivos/logos/bancobrasil.eps
|
|
107
107
|
- lib/brcobranca/arquivos/logos/bancobrasil_carne.eps
|
|
108
|
+
- lib/brcobranca/arquivos/logos/banconordeste.eps
|
|
109
|
+
- lib/brcobranca/arquivos/logos/banconordeste_carne.eps
|
|
108
110
|
- lib/brcobranca/arquivos/logos/banestes.eps
|
|
109
111
|
- lib/brcobranca/arquivos/logos/banestes_carne.eps
|
|
110
112
|
- lib/brcobranca/arquivos/logos/bradesco.eps
|
|
@@ -126,6 +128,7 @@ files:
|
|
|
126
128
|
- lib/brcobranca/arquivos/templates/modelo_carne.eps
|
|
127
129
|
- lib/brcobranca/arquivos/templates/modelo_generico.eps
|
|
128
130
|
- lib/brcobranca/boleto/banco_brasil.rb
|
|
131
|
+
- lib/brcobranca/boleto/banco_nordeste.rb
|
|
129
132
|
- lib/brcobranca/boleto/banestes.rb
|
|
130
133
|
- lib/brcobranca/boleto/base.rb
|
|
131
134
|
- lib/brcobranca/boleto/bradesco.rb
|
|
@@ -179,6 +182,7 @@ files:
|
|
|
179
182
|
- spec/arquivos/CNAB400ITAU.RET
|
|
180
183
|
- spec/brcobranca/base_spec.rb
|
|
181
184
|
- spec/brcobranca/boleto/banco_brasil_spec.rb
|
|
185
|
+
- spec/brcobranca/boleto/banco_nordeste_spec.rb
|
|
182
186
|
- spec/brcobranca/boleto/banestes_spec.rb
|
|
183
187
|
- spec/brcobranca/boleto/bradesco_spec.rb
|
|
184
188
|
- spec/brcobranca/boleto/caixa_spec.rb
|
|
@@ -234,6 +238,7 @@ files:
|
|
|
234
238
|
- spec/support/shared_examples/busca_logotipo.rb
|
|
235
239
|
- spec/support/shared_examples/cnab240.rb
|
|
236
240
|
- spec/support/shared_examples/cnab400.rb
|
|
241
|
+
- spec/support/shared_examples/formatos_validos.rb
|
|
237
242
|
homepage: http://rubygems.org/gems/brcobranca
|
|
238
243
|
licenses: []
|
|
239
244
|
metadata: {}
|
|
@@ -268,6 +273,7 @@ test_files:
|
|
|
268
273
|
- spec/arquivos/CNAB400ITAU.RET
|
|
269
274
|
- spec/brcobranca/base_spec.rb
|
|
270
275
|
- spec/brcobranca/boleto/banco_brasil_spec.rb
|
|
276
|
+
- spec/brcobranca/boleto/banco_nordeste_spec.rb
|
|
271
277
|
- spec/brcobranca/boleto/banestes_spec.rb
|
|
272
278
|
- spec/brcobranca/boleto/bradesco_spec.rb
|
|
273
279
|
- spec/brcobranca/boleto/caixa_spec.rb
|
|
@@ -323,3 +329,4 @@ test_files:
|
|
|
323
329
|
- spec/support/shared_examples/busca_logotipo.rb
|
|
324
330
|
- spec/support/shared_examples/cnab240.rb
|
|
325
331
|
- spec/support/shared_examples/cnab400.rb
|
|
332
|
+
- spec/support/shared_examples/formatos_validos.rb
|