brcobranca 3.2.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +13 -0
- data/.ruby-version +1 -1
- data/.travis.yml +7 -1
- data/Gemfile +13 -2
- data/Rakefile +2 -2
- data/brcobranca.gemspec +10 -17
- data/lib/brcobranca.rb +2 -5
- data/lib/brcobranca/arquivos/logos/bancobrasil.eps +0 -0
- data/lib/brcobranca/arquivos/logos/bradesco.eps +0 -0
- data/lib/brcobranca/arquivos/logos/caixa.eps +0 -0
- data/lib/brcobranca/arquivos/logos/hsbc.eps +0 -0
- data/lib/brcobranca/arquivos/logos/itau.eps +0 -0
- data/lib/brcobranca/arquivos/logos/santander.eps +0 -0
- data/lib/brcobranca/arquivos/logos/sicredi.eps +0 -0
- data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +27 -29
- data/lib/brcobranca/boleto/base.rb +29 -30
- data/lib/brcobranca/boleto/bradesco.rb +14 -15
- data/lib/brcobranca/boleto/caixa.rb +25 -23
- data/lib/brcobranca/boleto/hsbc.rb +30 -34
- data/lib/brcobranca/boleto/itau.rb +23 -25
- data/lib/brcobranca/boleto/santander.rb +17 -19
- data/lib/brcobranca/boleto/sicredi.rb +19 -19
- data/lib/brcobranca/boleto/template/base.rb +0 -2
- data/lib/brcobranca/boleto/template/rghost.rb +72 -74
- data/lib/brcobranca/boleto/template/rghost_carne.rb +105 -118
- data/lib/brcobranca/calculo.rb +22 -22
- data/lib/brcobranca/calculo_data.rb +8 -8
- data/lib/brcobranca/currency.rb +11 -11
- data/lib/brcobranca/formatacao.rb +16 -16
- data/lib/brcobranca/limpeza.rb +4 -4
- data/lib/brcobranca/retorno/base.rb +0 -1
- data/lib/brcobranca/retorno/retorno_cbr643.rb +35 -35
- data/lib/brcobranca/retorno/retorno_cnab240.rb +39 -40
- data/lib/brcobranca/retorno/retorno_cnab400.rb +21 -26
- data/lib/brcobranca/version.rb +2 -2
- data/spec/brcobranca/banco_bradesco_spec.rb +113 -113
- data/spec/brcobranca/banco_brasil_spec.rb +167 -167
- data/spec/brcobranca/banco_caixa_spec.rb +58 -58
- data/spec/brcobranca/banco_hsbc_spec.rb +117 -118
- data/spec/brcobranca/banco_sicredi_spec.rb +92 -93
- data/spec/brcobranca/base_spec.rb +78 -78
- data/spec/brcobranca/boletos_em_lote_spec.rb +22 -22
- data/spec/brcobranca/core_ext_spec.rb +134 -135
- data/spec/brcobranca/currency_spec.rb +59 -59
- data/spec/brcobranca/itau_spec.rb +137 -137
- data/spec/brcobranca/retorno_cbr643_spec.rb +32 -32
- data/spec/brcobranca/retorno_cnab400_spec.rb +40 -42
- data/spec/brcobranca/retorno_cnab_240_spec.rb +17 -19
- data/spec/brcobranca/rghost_spec.rb +21 -21
- data/spec/brcobranca/santander_spec.rb +80 -80
- data/spec/brcobranca_spec.rb +4 -4
- data/spec/spec_helper.rb +1 -1
- metadata +12 -54
- data/VERSION +0 -1
- data/lib/brcobranca/arquivos/logos/bancobrasil.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/bradesco.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/caixa.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/hsbc.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/itau.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/santander.jpg +0 -0
- data/lib/brcobranca/arquivos/logos/sicredi.jpg +0 -0
@@ -2,16 +2,15 @@
|
|
2
2
|
module Brcobranca
|
3
3
|
module Boleto
|
4
4
|
class Bradesco < Base # Banco BRADESCO
|
5
|
-
|
6
|
-
validates_length_of :
|
7
|
-
validates_length_of :
|
8
|
-
validates_length_of :
|
9
|
-
validates_length_of :carteira, :maximum => 2, :message => "deve ser menor ou igual a 2 dígitos."
|
5
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
6
|
+
validates_length_of :numero_documento, maximum: 11, message: 'deve ser menor ou igual a 11 dígitos.'
|
7
|
+
validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
8
|
+
validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
10
9
|
|
11
10
|
# Nova instancia do Bradesco
|
12
11
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
13
|
-
def initialize(campos={})
|
14
|
-
campos = {:
|
12
|
+
def initialize(campos = {})
|
13
|
+
campos = { carteira: '06' }.merge!(campos)
|
15
14
|
super(campos)
|
16
15
|
end
|
17
16
|
|
@@ -19,20 +18,20 @@ module Brcobranca
|
|
19
18
|
#
|
20
19
|
# @return [String] 3 caracteres numéricos.
|
21
20
|
def banco
|
22
|
-
|
21
|
+
'237'
|
23
22
|
end
|
24
23
|
|
25
24
|
# Carteira
|
26
25
|
#
|
27
26
|
# @return [String] 2 caracteres numéricos.
|
28
27
|
def carteira=(valor)
|
29
|
-
@carteira = valor.to_s.rjust(2,'0') if valor
|
28
|
+
@carteira = valor.to_s.rjust(2, '0') if valor
|
30
29
|
end
|
31
30
|
|
32
31
|
# Número seqüencial utilizado para identificar o boleto.
|
33
|
-
|
32
|
+
# @return [String] 11 caracteres numéricos.
|
34
33
|
def numero_documento=(valor)
|
35
|
-
@numero_documento = valor.to_s.rjust(11,'0') if valor
|
34
|
+
@numero_documento = valor.to_s.rjust(11, '0') if valor
|
36
35
|
end
|
37
36
|
|
38
37
|
# Nosso número para exibir no boleto.
|
@@ -40,7 +39,7 @@ module Brcobranca
|
|
40
39
|
# @example
|
41
40
|
# boleto.nosso_numero_boleto #=> ""06/00000004042-8"
|
42
41
|
def nosso_numero_boleto
|
43
|
-
"#{
|
42
|
+
"#{carteira}/#{numero_documento}-#{nosso_numero_dv}"
|
44
43
|
end
|
45
44
|
|
46
45
|
# Agência + conta corrente do cliente para exibir no boleto.
|
@@ -48,7 +47,7 @@ module Brcobranca
|
|
48
47
|
# @example
|
49
48
|
# boleto.agencia_conta_boleto #=> "0548-7 / 00001448-6"
|
50
49
|
def agencia_conta_boleto
|
51
|
-
"#{
|
50
|
+
"#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
|
52
51
|
end
|
53
52
|
|
54
53
|
# Segunda parte do código de barras.
|
@@ -62,8 +61,8 @@ module Brcobranca
|
|
62
61
|
#
|
63
62
|
# @return [String] 25 caracteres numéricos.
|
64
63
|
def codigo_barras_segunda_parte
|
65
|
-
"#{
|
64
|
+
"#{agencia}#{carteira}#{numero_documento}#{conta_corrente}0"
|
66
65
|
end
|
67
66
|
end
|
68
67
|
end
|
69
|
-
end
|
68
|
+
end
|
@@ -7,43 +7,46 @@
|
|
7
7
|
module Brcobranca
|
8
8
|
module Boleto
|
9
9
|
class Caixa < Base # Caixa
|
10
|
-
|
11
10
|
MODALIDADE_COBRANCA = {
|
12
|
-
:
|
13
|
-
:
|
11
|
+
registrada: '1',
|
12
|
+
sem_registro: '2'
|
14
13
|
}
|
15
14
|
|
16
15
|
EMISSAO_BOLETO = {
|
17
|
-
:
|
16
|
+
cedente: '4'
|
18
17
|
}
|
19
18
|
|
20
19
|
# Validações
|
21
|
-
validates_length_of :carteira, :
|
22
|
-
validates_length_of :convenio, :
|
23
|
-
validates_length_of :numero_documento, :
|
20
|
+
validates_length_of :carteira, is: 2, message: 'deve possuir 2 dígitos.'
|
21
|
+
validates_length_of :convenio, is: 6, message: 'deve possuir 6 dígitos.'
|
22
|
+
validates_length_of :numero_documento, is: 15, message: 'deve possuir 15 dígitos.'
|
24
23
|
|
25
24
|
# Nova instância da CaixaEconomica
|
26
25
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
27
|
-
def initialize
|
26
|
+
def initialize(campos = {})
|
28
27
|
campos = {
|
29
|
-
:
|
28
|
+
carteira: "#{MODALIDADE_COBRANCA[:sem_registro]}#{EMISSAO_BOLETO[:cedente]}"
|
30
29
|
}.merge!(campos)
|
31
30
|
|
32
|
-
campos.merge!(:
|
33
|
-
campos.merge!(:
|
34
|
-
campos.merge!(:
|
31
|
+
campos.merge!(convenio: campos[:convenio].rjust(6, '0')) if campos[:convenio]
|
32
|
+
campos.merge!(numero_documento: campos[:numero_documento].rjust(15, '0')) if campos[:numero_documento]
|
33
|
+
campos.merge!(local_pagamento: 'PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE')
|
35
34
|
|
36
35
|
super(campos)
|
37
36
|
end
|
38
37
|
|
39
38
|
# Código do banco emissor
|
40
39
|
# @return [String]
|
41
|
-
def banco
|
40
|
+
def banco
|
41
|
+
'104'
|
42
|
+
end
|
42
43
|
|
43
44
|
# Dígito verificador do código do banco em módulo 10
|
44
45
|
# Módulo 10 de 104 é 0
|
45
46
|
# @return [String]
|
46
|
-
def banco_dv
|
47
|
+
def banco_dv
|
48
|
+
'0'
|
49
|
+
end
|
47
50
|
|
48
51
|
# Nosso número, 17 dígitos
|
49
52
|
# 1 à 2: carteira
|
@@ -64,7 +67,7 @@ module Brcobranca
|
|
64
67
|
# @return [String]
|
65
68
|
# @example
|
66
69
|
# boleto.agencia_conta_boleto #=> "1565/100000-4"
|
67
|
-
def agencia_conta_boleto
|
70
|
+
def agencia_conta_boleto
|
68
71
|
"#{agencia}/#{convenio}-#{convenio_dv}"
|
69
72
|
end
|
70
73
|
|
@@ -85,17 +88,16 @@ module Brcobranca
|
|
85
88
|
# 25: dígito verificador do campo livre
|
86
89
|
# @return [String]
|
87
90
|
def codigo_barras_segunda_parte
|
88
|
-
campo_livre = "#{convenio}"
|
89
|
-
"#{convenio_dv}"
|
90
|
-
"#{nosso_numero_boleto[2..4]}"
|
91
|
-
"#{nosso_numero_boleto[0..0]}"
|
92
|
-
"#{nosso_numero_boleto[5..7]}"
|
93
|
-
"#{nosso_numero_boleto[1..1]}"
|
91
|
+
campo_livre = "#{convenio}" \
|
92
|
+
"#{convenio_dv}" \
|
93
|
+
"#{nosso_numero_boleto[2..4]}" \
|
94
|
+
"#{nosso_numero_boleto[0..0]}" \
|
95
|
+
"#{nosso_numero_boleto[5..7]}" \
|
96
|
+
"#{nosso_numero_boleto[1..1]}" \
|
94
97
|
"#{nosso_numero_boleto[8..16]}"
|
95
|
-
|
98
|
+
|
96
99
|
"#{campo_livre}#{campo_livre.modulo11_2to9_caixa}"
|
97
100
|
end
|
98
|
-
|
99
101
|
end
|
100
102
|
end
|
101
103
|
end
|
@@ -2,16 +2,15 @@
|
|
2
2
|
module Brcobranca
|
3
3
|
module Boleto
|
4
4
|
class Hsbc < Base # Banco HSBC
|
5
|
-
|
6
|
-
|
7
|
-
validates_length_of :
|
8
|
-
validates_length_of :
|
9
|
-
validates_length_of :conta_corrente, :maximum => 7, :message => "deve ser menor ou igual a 7 dígitos."
|
5
|
+
validates_inclusion_of :carteira, in: %w( CNR CSB ), message: 'não existente para este banco.'
|
6
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
7
|
+
validates_length_of :numero_documento, maximum: 13, message: 'deve ser menor ou igual a 13 dígitos.'
|
8
|
+
validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
10
9
|
|
11
10
|
# Nova instancia do Hsbc
|
12
11
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
13
|
-
def initialize(campos={})
|
14
|
-
campos = {:
|
12
|
+
def initialize(campos = {})
|
13
|
+
campos = { carteira: 'CNR' }.merge!(campos)
|
15
14
|
super(campos)
|
16
15
|
end
|
17
16
|
|
@@ -19,22 +18,20 @@ module Brcobranca
|
|
19
18
|
#
|
20
19
|
# @return [String] 3 caracteres numéricos.
|
21
20
|
def banco
|
22
|
-
|
21
|
+
'399'
|
23
22
|
end
|
24
23
|
|
25
24
|
# Número seqüencial utilizado para identificar o boleto.
|
26
25
|
# @return [String] 13 caracteres numéricos.
|
27
26
|
def numero_documento=(valor)
|
28
|
-
@numero_documento = valor.to_s.rjust(13,'0') if valor
|
27
|
+
@numero_documento = valor.to_s.rjust(13, '0') if valor
|
29
28
|
end
|
30
29
|
|
31
30
|
# Número seqüencial utilizado para identificar o boleto.
|
32
31
|
#
|
33
32
|
# O desenvolvedor poderá informar o código do nosso número quando gerado pelo banco
|
34
33
|
# @param valor Nosso número
|
35
|
-
|
36
|
-
@nosso_numero = valor
|
37
|
-
end
|
34
|
+
attr_writer :nosso_numero
|
38
35
|
|
39
36
|
# Número seqüencial utilizado para identificar o boleto.
|
40
37
|
#
|
@@ -44,25 +41,25 @@ module Brcobranca
|
|
44
41
|
# @return [String]
|
45
42
|
# @raise [Brcobranca::NaoImplementado] Caso a carteira informada não for CNR/CSB.
|
46
43
|
def nosso_numero
|
47
|
-
case
|
44
|
+
case carteira
|
48
45
|
when 'CNR' then
|
49
|
-
if
|
50
|
-
self.codigo_servico =
|
51
|
-
dia =
|
52
|
-
mes =
|
53
|
-
ano =
|
46
|
+
if data_vencimento.is_a?(Date)
|
47
|
+
self.codigo_servico = '4'
|
48
|
+
dia = data_vencimento.day.to_s.rjust(2, '0')
|
49
|
+
mes = data_vencimento.month.to_s.rjust(2, '0')
|
50
|
+
ano = data_vencimento.year.to_s[2..3]
|
54
51
|
data = "#{dia}#{mes}#{ano}"
|
55
52
|
|
56
|
-
parte_1 = "#{
|
57
|
-
soma = parte_1.to_i +
|
53
|
+
parte_1 = "#{numero_documento}#{numero_documento.modulo11_9to2_10_como_zero}#{codigo_servico}"
|
54
|
+
soma = parte_1.to_i + conta_corrente.to_i + data.to_i
|
58
55
|
"#{parte_1}#{soma.to_s.modulo11_9to2_10_como_zero}"
|
59
56
|
else
|
60
|
-
|
57
|
+
fail 'data_vencimento não é uma data.'
|
61
58
|
end
|
62
59
|
when 'CSB'
|
63
60
|
@nosso_numero
|
64
61
|
else
|
65
|
-
|
62
|
+
fail Brcobranca::NaoImplementado.new('Tipo de carteira não implementado.')
|
66
63
|
# TODO - Verificar outras carteiras.
|
67
64
|
# self.codigo_servico = "5"
|
68
65
|
# parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11_9to2_10_como_zero}#{self.codigo_servico}"
|
@@ -77,7 +74,7 @@ module Brcobranca
|
|
77
74
|
# @example
|
78
75
|
# boleto.nosso_numero_boleto #=> "0000000004042847"
|
79
76
|
def nosso_numero_boleto
|
80
|
-
|
77
|
+
nosso_numero
|
81
78
|
end
|
82
79
|
|
83
80
|
# Número do convênio/contrato do cliente para exibir no boleto.
|
@@ -85,7 +82,7 @@ module Brcobranca
|
|
85
82
|
# @example
|
86
83
|
# boleto.agencia_conta_boleto #=> "0061900"
|
87
84
|
def agencia_conta_boleto
|
88
|
-
|
85
|
+
conta_corrente
|
89
86
|
end
|
90
87
|
|
91
88
|
# Segunda parte do código de barras.
|
@@ -96,18 +93,17 @@ module Brcobranca
|
|
96
93
|
# @return [String] 25 caracteres numéricos.
|
97
94
|
# @raise [Brcobranca::NaoImplementado] Caso a carteira informada não for CNR/CSB.
|
98
95
|
def codigo_barras_segunda_parte
|
99
|
-
case
|
100
|
-
when
|
101
|
-
dias_julianos =
|
102
|
-
"#{
|
103
|
-
when
|
104
|
-
|
105
|
-
"#{
|
96
|
+
case carteira
|
97
|
+
when 'CNR'
|
98
|
+
dias_julianos = data_vencimento.to_juliano
|
99
|
+
"#{conta_corrente}#{numero_documento}#{dias_julianos}2"
|
100
|
+
when 'CSB'
|
101
|
+
fail Brcobranca::NaoImplementado.new('Nosso número não definido.') unless @nosso_numero
|
102
|
+
"#{nosso_numero}#{agencia}#{conta_corrente}001"
|
106
103
|
else
|
107
|
-
|
104
|
+
fail Brcobranca::NaoImplementado.new('Tipo de carteira não implementado.')
|
108
105
|
end
|
109
106
|
end
|
110
|
-
|
111
107
|
end
|
112
108
|
end
|
113
|
-
end
|
109
|
+
end
|
@@ -2,20 +2,19 @@
|
|
2
2
|
module Brcobranca
|
3
3
|
module Boleto
|
4
4
|
class Itau < Base # Banco Itaú
|
5
|
-
|
6
5
|
# Usado somente em carteiras especiais com registro para complementar o número do cocumento
|
7
6
|
attr_reader :seu_numero
|
8
7
|
|
9
|
-
validates_length_of :agencia, :
|
10
|
-
validates_length_of :convenio, :
|
11
|
-
validates_length_of :numero_documento, :
|
12
|
-
validates_length_of :conta_corrente, :
|
13
|
-
validates_length_of :seu_numero, :
|
8
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
9
|
+
validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
10
|
+
validates_length_of :numero_documento, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
11
|
+
validates_length_of :conta_corrente, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
12
|
+
validates_length_of :seu_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
14
13
|
|
15
14
|
# Nova instancia do Itau
|
16
15
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
17
|
-
def initialize(campos={})
|
18
|
-
campos = {:
|
16
|
+
def initialize(campos = {})
|
17
|
+
campos = { carteira: '175' }.merge!(campos)
|
19
18
|
super(campos)
|
20
19
|
end
|
21
20
|
|
@@ -23,31 +22,31 @@ module Brcobranca
|
|
23
22
|
#
|
24
23
|
# @return [String] 3 caracteres numéricos.
|
25
24
|
def banco
|
26
|
-
|
25
|
+
'341'
|
27
26
|
end
|
28
27
|
|
29
28
|
# Número do convênio/contrato do cliente junto ao banco.
|
30
29
|
# @return [String] 5 caracteres numéricos.
|
31
30
|
def convenio=(valor)
|
32
|
-
@convenio = valor.to_s.rjust(5,'0') if valor
|
31
|
+
@convenio = valor.to_s.rjust(5, '0') if valor
|
33
32
|
end
|
34
33
|
|
35
34
|
# Conta corrente
|
36
35
|
# @return [String] 5 caracteres numéricos.
|
37
36
|
def conta_corrente=(valor)
|
38
|
-
@conta_corrente = valor.to_s.rjust(5,'0') if valor
|
37
|
+
@conta_corrente = valor.to_s.rjust(5, '0') if valor
|
39
38
|
end
|
40
39
|
|
41
40
|
# Número seqüencial utilizado para identificar o boleto.
|
42
41
|
# @return [String] 8 caracteres numéricos.
|
43
42
|
def numero_documento=(valor)
|
44
|
-
@numero_documento = valor.to_s.rjust(8,'0') if valor
|
43
|
+
@numero_documento = valor.to_s.rjust(8, '0') if valor
|
45
44
|
end
|
46
45
|
|
47
46
|
# Número seqüencial utilizado para identificar o boleto.
|
48
47
|
# @return [String] 7 caracteres numéricos.
|
49
48
|
def seu_numero=(valor)
|
50
|
-
@seu_numero = valor.to_s.rjust(7,'0') if valor
|
49
|
+
@seu_numero = valor.to_s.rjust(7, '0') if valor
|
51
50
|
end
|
52
51
|
|
53
52
|
# Dígito verificador do nosso número.
|
@@ -59,17 +58,17 @@ module Brcobranca
|
|
59
58
|
#
|
60
59
|
# @return [String] 1 caracteres numéricos.
|
61
60
|
def nosso_numero_dv
|
62
|
-
if %w(112 126 131 146 150 168).include?(
|
63
|
-
"#{
|
61
|
+
if %w(112 126 131 146 150 168).include?(carteira)
|
62
|
+
"#{carteira}#{numero_documento}".modulo10
|
64
63
|
else
|
65
|
-
"#{
|
64
|
+
"#{agencia}#{conta_corrente}#{carteira}#{numero_documento}".modulo10
|
66
65
|
end
|
67
66
|
end
|
68
67
|
|
69
68
|
# Calcula o dígito verificador para conta corrente do Itau.
|
70
69
|
# Retorna apenas o dígito verificador da conta ou nil caso seja impossível calcular.
|
71
70
|
def agencia_conta_corrente_dv
|
72
|
-
"#{
|
71
|
+
"#{agencia}#{conta_corrente}".modulo10
|
73
72
|
end
|
74
73
|
|
75
74
|
# Nosso número para exibir no boleto.
|
@@ -77,7 +76,7 @@ module Brcobranca
|
|
77
76
|
# @example
|
78
77
|
# boleto.nosso_numero_boleto #=> "175/12345678-4"
|
79
78
|
def nosso_numero_boleto
|
80
|
-
"#{
|
79
|
+
"#{carteira}/#{numero_documento}-#{nosso_numero_dv}"
|
81
80
|
end
|
82
81
|
|
83
82
|
# Agência + conta corrente do cliente para exibir no boleto.
|
@@ -85,7 +84,7 @@ module Brcobranca
|
|
85
84
|
# @example
|
86
85
|
# boleto.agencia_conta_boleto #=> "0811 / 53678-8"
|
87
86
|
def agencia_conta_boleto
|
88
|
-
"#{
|
87
|
+
"#{agencia} / #{conta_corrente}-#{agencia_conta_corrente_dv}"
|
89
88
|
end
|
90
89
|
|
91
90
|
# Segunda parte do código de barras.
|
@@ -119,15 +118,14 @@ module Brcobranca
|
|
119
118
|
#
|
120
119
|
# @return [String] 25 caracteres numéricos.
|
121
120
|
def codigo_barras_segunda_parte
|
122
|
-
case
|
121
|
+
case carteira.to_i
|
123
122
|
when 198, 106, 107, 122, 142, 143, 195, 196
|
124
|
-
dv = "#{
|
125
|
-
"#{
|
123
|
+
dv = "#{carteira}#{numero_documento}#{seu_numero}#{convenio}".modulo10
|
124
|
+
"#{carteira}#{numero_documento}#{seu_numero}#{convenio}#{dv}0"
|
126
125
|
else
|
127
|
-
"#{
|
126
|
+
"#{carteira}#{numero_documento}#{nosso_numero_dv}#{agencia}#{conta_corrente}#{agencia_conta_corrente_dv}000"
|
128
127
|
end
|
129
128
|
end
|
130
|
-
|
131
129
|
end
|
132
130
|
end
|
133
|
-
end
|
131
|
+
end
|
@@ -4,20 +4,19 @@
|
|
4
4
|
module Brcobranca
|
5
5
|
module Boleto
|
6
6
|
class Santander < Base # Banco Santander
|
7
|
-
|
8
7
|
# Usado somente em carteiras especiais com registro para complementar o número do documento
|
9
8
|
attr_reader :seu_numero
|
10
9
|
|
11
|
-
validates_length_of :agencia, :
|
12
|
-
validates_length_of :convenio, :
|
13
|
-
validates_length_of :numero_documento, :
|
14
|
-
validates_length_of :seu_numero, :
|
10
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
11
|
+
validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
12
|
+
validates_length_of :numero_documento, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
13
|
+
validates_length_of :seu_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
15
14
|
|
16
15
|
# Nova instancia do Santander
|
17
16
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
18
|
-
def initialize(campos={})
|
19
|
-
campos = {:
|
20
|
-
|
17
|
+
def initialize(campos = {})
|
18
|
+
campos = { carteira: '102',
|
19
|
+
conta_corrente: '00000' # Obrigatória na classe base
|
21
20
|
}.merge!(campos)
|
22
21
|
super(campos)
|
23
22
|
end
|
@@ -26,32 +25,32 @@ module Brcobranca
|
|
26
25
|
#
|
27
26
|
# @return [String] 3 caracteres numéricos.
|
28
27
|
def banco
|
29
|
-
|
28
|
+
'033'
|
30
29
|
end
|
31
30
|
|
32
31
|
# Número do convênio/contrato do cliente junto ao banco. No Santander, é
|
33
32
|
# chamado de Código do Cedente.
|
34
33
|
# @return [String] 7 caracteres numéricos.
|
35
34
|
def convenio=(valor)
|
36
|
-
@convenio = valor.to_s.rjust(7,'0') if valor
|
35
|
+
@convenio = valor.to_s.rjust(7, '0') if valor
|
37
36
|
end
|
38
37
|
|
39
38
|
# Número sequencial utilizado para identificar o boleto.
|
40
39
|
# @return [String] 8 caracteres numéricos.
|
41
40
|
def numero_documento=(valor)
|
42
|
-
@numero_documento = valor.to_s.rjust(8,'0') if valor
|
41
|
+
@numero_documento = valor.to_s.rjust(8, '0') if valor
|
43
42
|
end
|
44
43
|
|
45
44
|
# Número sequencial utilizado para identificar o boleto.
|
46
45
|
# @return [String] 7 caracteres numéricos.
|
47
46
|
def seu_numero=(valor)
|
48
|
-
@seu_numero = valor.to_s.rjust(7,'0') if valor
|
47
|
+
@seu_numero = valor.to_s.rjust(7, '0') if valor
|
49
48
|
end
|
50
49
|
|
51
50
|
# Dígito verificador do nosso número.
|
52
51
|
# @return [String] 1 caracteres numéricos.
|
53
52
|
def nosso_numero_dv
|
54
|
-
nosso_numero =
|
53
|
+
nosso_numero = numero_documento.to_s.rjust(12, '0') unless numero_documento.nil?
|
55
54
|
nosso_numero.modulo11_2to9
|
56
55
|
end
|
57
56
|
|
@@ -60,8 +59,8 @@ module Brcobranca
|
|
60
59
|
# @example
|
61
60
|
# boleto.nosso_numero_boleto #=> "000090002720-7"
|
62
61
|
def nosso_numero_boleto
|
63
|
-
nosso_numero =
|
64
|
-
"#{nosso_numero}-#{
|
62
|
+
nosso_numero = numero_documento.to_s.rjust(12, '0') unless numero_documento.nil?
|
63
|
+
"#{nosso_numero}-#{nosso_numero_dv}"
|
65
64
|
end
|
66
65
|
|
67
66
|
# Agência + codigo do cedente do cliente para exibir no boleto.
|
@@ -69,7 +68,7 @@ module Brcobranca
|
|
69
68
|
# @example
|
70
69
|
# boleto.agencia_conta_boleto #=> "0059/1899775"
|
71
70
|
def agencia_conta_boleto
|
72
|
-
"#{
|
71
|
+
"#{agencia}/#{convenio}"
|
73
72
|
end
|
74
73
|
|
75
74
|
# Segunda parte do código de barras.
|
@@ -82,9 +81,8 @@ module Brcobranca
|
|
82
81
|
#
|
83
82
|
# @return [String] 25 caracteres numéricos.
|
84
83
|
def codigo_barras_segunda_parte
|
85
|
-
"9#{
|
84
|
+
"9#{convenio}00000#{numero_documento}0#{carteira}"
|
86
85
|
end
|
87
|
-
|
88
86
|
end
|
89
87
|
end
|
90
|
-
end
|
88
|
+
end
|