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