brcobranca_sicredi_400 1.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 +7 -0
- data/CHANGELOG.md +3 -0
- data/LICENSE +20 -0
- data/README.md +91 -0
- data/Rakefile +8 -0
- data/lib/brcobranca/arquivos/logos/ailos.eps +412 -0
- data/lib/brcobranca/arquivos/logos/ailos_carne.eps +412 -0
- data/lib/brcobranca/arquivos/logos/bancobrasil.eps +5402 -0
- data/lib/brcobranca/arquivos/logos/bancobrasil_carne.eps +5410 -0
- data/lib/brcobranca/arquivos/logos/bancobrasilia.eps +0 -0
- data/lib/brcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/banconordeste.eps +0 -0
- data/lib/brcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/banestes.eps +5198 -0
- data/lib/brcobranca/arquivos/logos/banestes_carne.eps +5206 -0
- data/lib/brcobranca/arquivos/logos/banrisul.eps +121 -0
- data/lib/brcobranca/arquivos/logos/banrisul_carne.eps +121 -0
- data/lib/brcobranca/arquivos/logos/bradesco.eps +5210 -0
- data/lib/brcobranca/arquivos/logos/bradesco_carne.eps +5214 -0
- data/lib/brcobranca/arquivos/logos/caixa.eps +5111 -0
- data/lib/brcobranca/arquivos/logos/caixa_carne.eps +5115 -0
- data/lib/brcobranca/arquivos/logos/cecred.eps +0 -0
- data/lib/brcobranca/arquivos/logos/cecred_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/citibank.eps +745 -0
- data/lib/brcobranca/arquivos/logos/citibank_carne.eps +745 -0
- data/lib/brcobranca/arquivos/logos/credisis.eps +0 -0
- data/lib/brcobranca/arquivos/logos/credisis_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/hsbc.eps +5124 -0
- data/lib/brcobranca/arquivos/logos/hsbc_carne.eps +5128 -0
- data/lib/brcobranca/arquivos/logos/itau.eps +5318 -0
- data/lib/brcobranca/arquivos/logos/itau_carne.eps +5322 -0
- data/lib/brcobranca/arquivos/logos/safra.eps +0 -0
- data/lib/brcobranca/arquivos/logos/safra_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/santander.eps +5305 -0
- data/lib/brcobranca/arquivos/logos/santander_carne.eps +5313 -0
- data/lib/brcobranca/arquivos/logos/sicoob.eps +5375 -0
- data/lib/brcobranca/arquivos/logos/sicoob_carne.eps +5379 -0
- data/lib/brcobranca/arquivos/logos/sicredi.eps +5379 -0
- data/lib/brcobranca/arquivos/logos/sicredi_carne.eps +5383 -0
- data/lib/brcobranca/arquivos/logos/unicred.eps +0 -0
- data/lib/brcobranca/arquivos/logos/unicred_carne.eps +0 -0
- data/lib/brcobranca/arquivos/templates/modelo_carne.eps +1112 -0
- data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
- data/lib/brcobranca/arquivos/templates/modelo_generico2.eps +9967 -0
- data/lib/brcobranca/boleto/ailos.rb +89 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +165 -0
- data/lib/brcobranca/boleto/banco_brasilia.rb +102 -0
- data/lib/brcobranca/boleto/banco_nordeste.rb +80 -0
- data/lib/brcobranca/boleto/banestes.rb +86 -0
- data/lib/brcobranca/boleto/banrisul.rb +95 -0
- data/lib/brcobranca/boleto/base.rb +256 -0
- data/lib/brcobranca/boleto/bradesco.rb +100 -0
- data/lib/brcobranca/boleto/caixa.rb +123 -0
- data/lib/brcobranca/boleto/citibank.rb +97 -0
- data/lib/brcobranca/boleto/credisis.rb +118 -0
- data/lib/brcobranca/boleto/hsbc.rb +96 -0
- data/lib/brcobranca/boleto/itau.rb +138 -0
- data/lib/brcobranca/boleto/safra.rb +152 -0
- data/lib/brcobranca/boleto/santander.rb +86 -0
- data/lib/brcobranca/boleto/sicoob.rb +120 -0
- data/lib/brcobranca/boleto/sicredi.rb +145 -0
- data/lib/brcobranca/boleto/template/base.rb +28 -0
- data/lib/brcobranca/boleto/template/rghost.rb +308 -0
- data/lib/brcobranca/boleto/template/rghost2.rb +264 -0
- data/lib/brcobranca/boleto/template/rghost_bolepix.rb +286 -0
- data/lib/brcobranca/boleto/template/rghost_carne.rb +319 -0
- data/lib/brcobranca/boleto/unicred.rb +99 -0
- data/lib/brcobranca/calculo.rb +120 -0
- data/lib/brcobranca/calculo_data.rb +63 -0
- data/lib/brcobranca/currency.rb +69 -0
- data/lib/brcobranca/formatacao.rb +104 -0
- data/lib/brcobranca/formatacao_string.rb +37 -0
- data/lib/brcobranca/limpeza.rb +20 -0
- data/lib/brcobranca/remessa/base.rb +72 -0
- data/lib/brcobranca/remessa/cnab240/ailos.rb +156 -0
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +249 -0
- data/lib/brcobranca/remessa/cnab240/base.rb +529 -0
- data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +307 -0
- data/lib/brcobranca/remessa/cnab240/caixa.rb +171 -0
- data/lib/brcobranca/remessa/cnab240/santander.rb +225 -0
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +229 -0
- data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +101 -0
- data/lib/brcobranca/remessa/cnab240/sicredi.rb +183 -0
- data/lib/brcobranca/remessa/cnab240/unicred.rb +10 -0
- data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +169 -0
- data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +167 -0
- data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +161 -0
- data/lib/brcobranca/remessa/cnab400/banrisul.rb +158 -0
- data/lib/brcobranca/remessa/cnab400/base.rb +132 -0
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +155 -0
- data/lib/brcobranca/remessa/cnab400/citibank.rb +139 -0
- data/lib/brcobranca/remessa/cnab400/credisis.rb +130 -0
- data/lib/brcobranca/remessa/cnab400/itau.rb +162 -0
- data/lib/brcobranca/remessa/cnab400/santander.rb +233 -0
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +305 -0
- data/lib/brcobranca/remessa/cnab400/sicredi.rb +117 -0
- data/lib/brcobranca/remessa/cnab400/unicred.rb +259 -0
- data/lib/brcobranca/remessa/pagamento.rb +320 -0
- data/lib/brcobranca/retorno/base.rb +11 -0
- data/lib/brcobranca/retorno/cnab240/ailos.rb +104 -0
- data/lib/brcobranca/retorno/cnab240/base.rb +41 -0
- data/lib/brcobranca/retorno/cnab240/caixa.rb +47 -0
- data/lib/brcobranca/retorno/cnab240/santander.rb +99 -0
- data/lib/brcobranca/retorno/cnab240/sicoob.rb +101 -0
- data/lib/brcobranca/retorno/cnab240/sicredi.rb +82 -0
- data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +130 -0
- data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +90 -0
- data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +113 -0
- data/lib/brcobranca/retorno/cnab400/banrisul.rb +42 -0
- data/lib/brcobranca/retorno/cnab400/base.rb +53 -0
- data/lib/brcobranca/retorno/cnab400/bradesco.rb +124 -0
- data/lib/brcobranca/retorno/cnab400/credisis.rb +116 -0
- data/lib/brcobranca/retorno/cnab400/itau.rb +144 -0
- data/lib/brcobranca/retorno/cnab400/santander.rb +58 -0
- data/lib/brcobranca/retorno/cnab400/sicredi.rb +78 -0
- data/lib/brcobranca/retorno/cnab400/unicred.rb +123 -0
- data/lib/brcobranca/retorno/retorno_cbr643.rb +48 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +99 -0
- data/lib/brcobranca/retorno/retorno_cnab400.rb +71 -0
- data/lib/brcobranca/util/date.rb +21 -0
- data/lib/brcobranca/util/empresa.rb +29 -0
- data/lib/brcobranca/util/errors.rb +76 -0
- data/lib/brcobranca/validations.rb +208 -0
- data/lib/brcobranca/version.rb +5 -0
- data/lib/brcobranca.rb +200 -0
- metadata +225 -0
@@ -0,0 +1,89 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Boleto
|
5
|
+
# Ailos
|
6
|
+
class Ailos < Base
|
7
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
8
|
+
validates_length_of :conta_corrente,
|
9
|
+
maximum: 8,
|
10
|
+
message: 'deve ser menor ou igual a 8 dígitos.'
|
11
|
+
validates_length_of :carteira, is: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
12
|
+
validates_length_of :convenio, is: 6, message: 'deve ser menor ou igual a 6 dígitos.'
|
13
|
+
validates_length_of :nosso_numero, maximum: 9, message: 'deve ser menor ou igual a 9 dígitos.'
|
14
|
+
|
15
|
+
# Nova instancia do Ailos
|
16
|
+
# @param (see Brcobranca::Boleto::Base#initialize)
|
17
|
+
def initialize(campos = {})
|
18
|
+
campos = {
|
19
|
+
carteira: '1',
|
20
|
+
local_pagamento: 'Pagar preferencialmente nas cooperativas do Sistema AILOS.'
|
21
|
+
}.merge!(campos)
|
22
|
+
super(campos)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
26
|
+
#
|
27
|
+
# @return [String] 3 caracteres numéricos.
|
28
|
+
def banco
|
29
|
+
'085'
|
30
|
+
end
|
31
|
+
|
32
|
+
# Dígito verificador do banco
|
33
|
+
# @return [Integer] 1 caracteres numéricos.
|
34
|
+
def banco_dv
|
35
|
+
'1'
|
36
|
+
end
|
37
|
+
|
38
|
+
# Dígito verificador da conta corrente
|
39
|
+
# @return [Integer] 1 caracteres numéricos.
|
40
|
+
def conta_corrente_dv
|
41
|
+
conta_corrente.modulo11(mapeamento: { 10 => 0 })
|
42
|
+
end
|
43
|
+
|
44
|
+
# Convenio
|
45
|
+
# @return [String] 6 caracteres numéricos.
|
46
|
+
def convenio=(valor)
|
47
|
+
@convenio = valor.to_s.rjust(6, '0') if valor
|
48
|
+
end
|
49
|
+
|
50
|
+
# Carteira
|
51
|
+
# @return [String] 2 caracteres numéricos.
|
52
|
+
def carteira=(valor)
|
53
|
+
@carteira = valor.to_s.rjust(2, '0') if valor
|
54
|
+
end
|
55
|
+
|
56
|
+
# Número seqüencial utilizado para identificar o boleto.
|
57
|
+
# (Número de dígitos depende do tipo de convênio).
|
58
|
+
# @raise [Brcobranca::NaoImplementado] Caso o tipo de convênio não seja suportado pelo Brcobranca.
|
59
|
+
#
|
60
|
+
# @overload numero
|
61
|
+
# @return [String] 9 caracteres numéricos.
|
62
|
+
def nosso_numero=(valor)
|
63
|
+
@nosso_numero = valor.to_s.rjust(9, '0')
|
64
|
+
end
|
65
|
+
|
66
|
+
# Nosso número para exibir no boleto.
|
67
|
+
# @return [String]
|
68
|
+
# @example
|
69
|
+
# boleto.nosso_numero_boleto #=> "10000000027000095-7"
|
70
|
+
def nosso_numero_boleto
|
71
|
+
"#{conta_corrente}#{conta_corrente_dv}#{nosso_numero}"
|
72
|
+
end
|
73
|
+
|
74
|
+
# Agência + conta corrente do cliente para exibir no boleto.
|
75
|
+
# @return [String]
|
76
|
+
# @example
|
77
|
+
# boleto.agencia_conta_boleto #=> "0001-9 / 0000002-7"
|
78
|
+
def agencia_conta_boleto
|
79
|
+
"#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
|
80
|
+
end
|
81
|
+
|
82
|
+
# Segunda parte do código de barras.
|
83
|
+
# @return [String] 25 caracteres numéricos.
|
84
|
+
def codigo_barras_segunda_parte
|
85
|
+
"#{convenio}#{nosso_numero_boleto}#{carteira}"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Boleto
|
5
|
+
# Banco do Brasil
|
6
|
+
class BancoBrasil < Base
|
7
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
8
|
+
validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
9
|
+
validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
10
|
+
validates_length_of :convenio, in: 4..8, message: 'não existente para este banco.'
|
11
|
+
|
12
|
+
validates_each :nosso_numero do |record, attr, value|
|
13
|
+
valor_tamanho = value.to_s.size
|
14
|
+
registro_tamanho = record.convenio.to_s.size
|
15
|
+
quantidade = if (valor_tamanho > 9) && (registro_tamanho == 8)
|
16
|
+
'9'
|
17
|
+
elsif (valor_tamanho > 10) && (registro_tamanho == 7)
|
18
|
+
'10'
|
19
|
+
elsif (valor_tamanho > 7) && (registro_tamanho == 4)
|
20
|
+
'7'
|
21
|
+
elsif (valor_tamanho > 5) && (registro_tamanho == 6) && !record.codigo_servico
|
22
|
+
'5'
|
23
|
+
elsif (valor_tamanho > 17) && (registro_tamanho == 6) && record.codigo_servico
|
24
|
+
'17'
|
25
|
+
end
|
26
|
+
record.errors.add attr, "deve ser menor ou igual a #{quantidade} dígitos." if quantidade
|
27
|
+
end
|
28
|
+
|
29
|
+
# Nova instancia do BancoBrasil
|
30
|
+
# @param (see Brcobranca::Boleto::Base#initialize)
|
31
|
+
def initialize(campos = {})
|
32
|
+
campos = {
|
33
|
+
carteira: '18',
|
34
|
+
codigo_servico: false,
|
35
|
+
local_pagamento: 'PAGÁVEL EM QUALQUER BANCO.'
|
36
|
+
}.merge!(campos)
|
37
|
+
super(campos)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
41
|
+
#
|
42
|
+
# @return [String] 3 caracteres numéricos.
|
43
|
+
def banco
|
44
|
+
'001'
|
45
|
+
end
|
46
|
+
|
47
|
+
# Carteira
|
48
|
+
#
|
49
|
+
# @return [String] 2 caracteres numéricos.
|
50
|
+
def carteira=(valor)
|
51
|
+
@carteira = valor.to_s.rjust(2, '0') if valor
|
52
|
+
end
|
53
|
+
|
54
|
+
# Dígito verificador do banco
|
55
|
+
#
|
56
|
+
# @return [String] 1 caracteres numéricos.
|
57
|
+
def banco_dv
|
58
|
+
banco.modulo11(mapeamento: { 10 => 'X' })
|
59
|
+
end
|
60
|
+
|
61
|
+
# Retorna dígito verificador da agência
|
62
|
+
#
|
63
|
+
# @return [String] 1 caracteres numéricos.
|
64
|
+
def agencia_dv
|
65
|
+
agencia.modulo11(mapeamento: { 10 => 'X' })
|
66
|
+
end
|
67
|
+
|
68
|
+
# Conta corrente
|
69
|
+
# @return [String] 8 caracteres numéricos.
|
70
|
+
def conta_corrente=(valor)
|
71
|
+
@conta_corrente = valor.to_s.rjust(8, '0') if valor
|
72
|
+
end
|
73
|
+
|
74
|
+
# Dígito verificador da conta corrente
|
75
|
+
# @return [String] 1 caracteres numéricos.
|
76
|
+
def conta_corrente_dv
|
77
|
+
conta_corrente.modulo11(mapeamento: { 10 => 'X' })
|
78
|
+
end
|
79
|
+
|
80
|
+
# Número seqüencial utilizado para identificar o boleto.
|
81
|
+
# (Número de dígitos depende do tipo de convênio).
|
82
|
+
# @raise [Brcobranca::NaoImplementado] Caso o tipo de convênio não seja suportado pelo Brcobranca.
|
83
|
+
#
|
84
|
+
# @overload nosso_numero
|
85
|
+
# Nosso Número de 17 dígitos com Convenio de 8 dígitos.
|
86
|
+
# @return [String] 9 caracteres numéricos.
|
87
|
+
# @overload nosso_numero
|
88
|
+
# Nosso Número de 17 dígitos com Convenio de 7 dígitos.
|
89
|
+
# @return [String] 10 caracteres numéricos.
|
90
|
+
# @overload nosso_numero
|
91
|
+
# Nosso Número de 7 dígitos com Convenio de 4 dígitos.
|
92
|
+
# @return [String] 4 caracteres numéricos.
|
93
|
+
# @overload nosso_numero
|
94
|
+
# Nosso Número de 11 dígitos com Convenio de 6 dígitos e {#codigo_servico} false.
|
95
|
+
# @return [String] 5 caracteres numéricos.
|
96
|
+
# @overload nosso_numero
|
97
|
+
# Nosso Número de 17 dígitos com Convenio de 6 dígitos e {#codigo_servico} true. (carteira 16 e 18)
|
98
|
+
# @return [String] 17 caracteres numéricos.
|
99
|
+
def nosso_numero
|
100
|
+
quantidade = case @convenio.to_s.size
|
101
|
+
when 8
|
102
|
+
9
|
103
|
+
when 7
|
104
|
+
10
|
105
|
+
when 4
|
106
|
+
7
|
107
|
+
when 6
|
108
|
+
codigo_servico ? 17 : 5
|
109
|
+
else
|
110
|
+
raise Brcobranca::NaoImplementado, 'Tipo de convênio não implementado.'
|
111
|
+
end
|
112
|
+
quantidade ? @nosso_numero.to_s.rjust(quantidade, '0') : @nosso_numero
|
113
|
+
end
|
114
|
+
|
115
|
+
# Dígito verificador do nosso número.
|
116
|
+
# @return [String] 1 caracteres numéricos.
|
117
|
+
# @see BancoBrasil#nosso_numero
|
118
|
+
def nosso_numero_dv
|
119
|
+
"#{convenio}#{nosso_numero}".modulo11(mapeamento: { 10 => 'X' })
|
120
|
+
end
|
121
|
+
|
122
|
+
# Nosso número para exibir no boleto.
|
123
|
+
# @return [String]
|
124
|
+
# @example
|
125
|
+
# boleto.nosso_numero_boleto #=> "12387989000004042-4"
|
126
|
+
def nosso_numero_boleto
|
127
|
+
"#{convenio}#{nosso_numero}"
|
128
|
+
end
|
129
|
+
|
130
|
+
# Agência + conta corrente do cliente para exibir no boleto.
|
131
|
+
# @return [String]
|
132
|
+
# @example
|
133
|
+
# boleto.agencia_conta_boleto #=> "0548-7 / 00001448-6"
|
134
|
+
def agencia_conta_boleto
|
135
|
+
"#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
|
136
|
+
end
|
137
|
+
|
138
|
+
# Segunda parte do código de barras.
|
139
|
+
# A montagem é feita baseada na quantidade de dígitos do convênio.
|
140
|
+
# @return [String] 25 caracteres numéricos.
|
141
|
+
def codigo_barras_segunda_parte
|
142
|
+
case convenio.to_s.size
|
143
|
+
when 8 # Nosso Número de 17 dígitos com Convenio de 8 dígitos e nosso_numero de 9 dígitos
|
144
|
+
"000000#{convenio}#{nosso_numero}#{carteira}"
|
145
|
+
when 7 # Nosso Número de 17 dígitos com Convenio de 7 dígitos e nosso_numero de 10 dígitos
|
146
|
+
"000000#{convenio}#{nosso_numero}#{carteira}"
|
147
|
+
when 6 # Convenio de 6 dígitos
|
148
|
+
if codigo_servico == false
|
149
|
+
# Nosso Número de 11 dígitos com Convenio de 6 dígitos e nosso_numero de 5 dígitos
|
150
|
+
"#{convenio}#{nosso_numero}#{agencia}#{conta_corrente}#{carteira}"
|
151
|
+
else
|
152
|
+
# Nosso Número de 17 dígitos com Convenio de 6 dígitos e sem nosso_numero, carteira 16 e 18
|
153
|
+
raise "Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é #{carteira}" unless %w[
|
154
|
+
16 18
|
155
|
+
].include?(carteira)
|
156
|
+
|
157
|
+
"#{convenio}#{nosso_numero}21"
|
158
|
+
end
|
159
|
+
when 4 # Nosso Número de 7 dígitos com Convenio de 4 dígitos e sem nosso_numero
|
160
|
+
"#{convenio}#{nosso_numero}#{agencia}#{conta_corrente}#{carteira}"
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Boleto
|
5
|
+
# Banco Brasilia
|
6
|
+
class BancoBrasilia < Base
|
7
|
+
# <b>OPCIONAL</b>: Incremento do Campo Livre do Nosso Número
|
8
|
+
attr_accessor :nosso_numero_incremento
|
9
|
+
|
10
|
+
# Validações
|
11
|
+
# Modalidade/Carteira de Cobrança (1-Sem Registro | 2-Registrada)
|
12
|
+
validates_length_of :agencia, is: 3, message: 'deve possuir 3 dígitos.'
|
13
|
+
validates_length_of :carteira, is: 1, message: 'deve possuir 1 dígito.'
|
14
|
+
validates_length_of :nosso_numero, maximum: 6, message: 'deve ser menor ou igual a 6 dígitos.'
|
15
|
+
validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
16
|
+
validates_length_of :nosso_numero_incremento, maximum: 3, message: 'deve ser menor ou igual a 3 dígitos.'
|
17
|
+
validates_presence_of :nosso_numero_incremento, message: 'não pode estar em branco.'
|
18
|
+
|
19
|
+
# Nova instância da BancoBrasilia
|
20
|
+
# @param (see Brcobranca::Boleto::Base#initialize)
|
21
|
+
def initialize(campos = {})
|
22
|
+
campos = {
|
23
|
+
carteira: '2',
|
24
|
+
nosso_numero_incremento: '000',
|
25
|
+
local_pagamento: 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO'
|
26
|
+
}.merge!(campos)
|
27
|
+
|
28
|
+
super(campos)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Código do banco emissor
|
32
|
+
# @return [String]
|
33
|
+
def banco
|
34
|
+
'070'
|
35
|
+
end
|
36
|
+
|
37
|
+
# Número da agência
|
38
|
+
# @return [String] 3 caracteres numéricos.
|
39
|
+
def agencia=(valor)
|
40
|
+
@agencia = valor.to_s.rjust(3, '0') if valor
|
41
|
+
end
|
42
|
+
|
43
|
+
# Conta corrente
|
44
|
+
# @return [String] 7 caracteres numéricos.
|
45
|
+
def conta_corrente=(valor)
|
46
|
+
@conta_corrente = valor.to_s.rjust(7, '0') if valor
|
47
|
+
end
|
48
|
+
|
49
|
+
# Número seqüencial utilizado para identificar o boleto.
|
50
|
+
# @return [String] 6 caracteres numéricos.
|
51
|
+
def nosso_numero=(valor)
|
52
|
+
@nosso_numero = valor.to_s.rjust(6, '0') if valor
|
53
|
+
end
|
54
|
+
|
55
|
+
# Incremento do Campo Livre do Nosso Número
|
56
|
+
# @return [String] 3 caracteres numéricos.
|
57
|
+
def nosso_numero_incremento=(valor)
|
58
|
+
@nosso_numero_incremento = valor.to_s.rjust(3, '0') if valor
|
59
|
+
end
|
60
|
+
|
61
|
+
# Nosso número boleto
|
62
|
+
# @return [String]
|
63
|
+
def nosso_numero_boleto
|
64
|
+
"#{carteira}#{nosso_numero}070#{codigo_barras_segunda_parte[-2..]}"
|
65
|
+
end
|
66
|
+
|
67
|
+
# Número da agência/código cedente do cliente para exibir no boleto.
|
68
|
+
# @return [String]
|
69
|
+
# @example
|
70
|
+
# boleto.agencia_conta_boleto #=> "1565/100000-4"
|
71
|
+
def agencia_conta_boleto
|
72
|
+
"000 - #{agencia} - #{conta_corrente}"
|
73
|
+
end
|
74
|
+
|
75
|
+
# Monta a segunda parte do código de barras.
|
76
|
+
#
|
77
|
+
# @return [String]
|
78
|
+
# POSIÇÃO | Tamanho| NOME DO CAMPO | CONTEÚDO/DESCRIÇÃO
|
79
|
+
# 1 - 3 | 3 | Incremento do Campo Livre do Nosso Número | Incremento do Campo livre. Tal incremento é opcional e uma vez utilizado deverá ser concatenado com as posições 2 a 7 do Nosso Número.
|
80
|
+
# 4 - 13 | 10 | Código do Beneficiário (Agencia/Conta) | Conta corrente de cobrança
|
81
|
+
# 14 - 25 | 12 | Nosso Número | Nosso Número. O formato é MSSSSSS070dd, em que M=Modalidade, S=Sequencial (campo livre do Nosso Número), 070-fixo, dd=Dígitos
|
82
|
+
#
|
83
|
+
# Composição do Nosso Número
|
84
|
+
# POSIÇÃO | Tamanho | NOME DO CAMPO | CONTEÚDO/DESCRIÇÃO
|
85
|
+
# 1 - 3 | 1 | Modalidade de Cobrança | Informar a modalidade de cobrança conforme a seguir:
|
86
|
+
# 1: Direta Modalidade 1;
|
87
|
+
# 2: Direta Modalidade 2;
|
88
|
+
# 3: Modalidade 3 (emissão BRB)
|
89
|
+
# As modalidades 1 e 2 são para a emissão local e a 3 para a emissão BRB.
|
90
|
+
# Neste caso, o padrão é postagem SIM.
|
91
|
+
# 4 - 9 | 6 | Campo Livre do Nosso Número | Neste campo livre, deve o sistema do sistema do Beneficiário controlar e identificar o boleto em sua carteira.
|
92
|
+
# Pode ser incrementado por meio das posições 1 a 3 da Chave BRB. Não são admitidas duplicidades.
|
93
|
+
# 10 - 12 | 3 | Banco | 070
|
94
|
+
# 13 - 13 | 1 | Dígito 1 | Calcula-se utilizando-se o sistema de “Módulo 10”, pesos 2 e 1. Ver detalhe ao lado.
|
95
|
+
# 14 - 14 | 1 | Dígito 2 | Calcula-se utilizando o sistema de “Modulo 11”, pesos de 2 a 7, com exceções quando o resto é igual a 0 e igual a 1. Ver detalhe ao lado.
|
96
|
+
def codigo_barras_segunda_parte
|
97
|
+
campo_livre = "#{nosso_numero_incremento}#{agencia}#{conta_corrente}#{carteira}#{nosso_numero}070"
|
98
|
+
campo_livre + campo_livre.duplo_digito
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Boleto
|
5
|
+
# Banco do Nordeste
|
6
|
+
class BancoNordeste < Base
|
7
|
+
# <b>REQUERIDO</b>: digito verificador da conta corrente
|
8
|
+
attr_accessor :digito_conta_corrente
|
9
|
+
|
10
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
11
|
+
validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
12
|
+
validates_length_of :digito_conta_corrente, is: 1, message: 'deve ser igual a 1 dígitos.'
|
13
|
+
validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
14
|
+
validates_length_of :nosso_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
15
|
+
|
16
|
+
# Nova instancia do Banco do Nordeste
|
17
|
+
# @param (see Brcobranca::Boleto::Base#initialize)
|
18
|
+
def initialize(campos = {})
|
19
|
+
campos = { carteira: '21' }.merge!(campos)
|
20
|
+
super(campos)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
24
|
+
#
|
25
|
+
# @return [String] 3 caracteres numéricos.
|
26
|
+
def banco
|
27
|
+
'004'
|
28
|
+
end
|
29
|
+
|
30
|
+
# Número da conta corrente
|
31
|
+
# @return [String] 7 caracteres numéricos.
|
32
|
+
def conta_corrente=(valor)
|
33
|
+
@conta_corrente = valor.to_s.rjust(7, '0') if valor
|
34
|
+
end
|
35
|
+
|
36
|
+
# Número sequencial utilizado para identificar o boleto.
|
37
|
+
# @return [String] 7 caracteres numéricos.
|
38
|
+
def nosso_numero=(valor)
|
39
|
+
@nosso_numero = 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.modulo11(
|
46
|
+
multiplicador: (2..8).to_a,
|
47
|
+
mapeamento: { 10 => 0, 11 => 0 }
|
48
|
+
) { |total| 11 - (total % 11) }
|
49
|
+
end
|
50
|
+
|
51
|
+
# Nosso número para exibir no boleto.
|
52
|
+
# @return [String]
|
53
|
+
# @example
|
54
|
+
# boleto.nosso_numero_boleto #=> "0020572-9"
|
55
|
+
def nosso_numero_boleto
|
56
|
+
"#{nosso_numero}-#{nosso_numero_dv}"
|
57
|
+
end
|
58
|
+
|
59
|
+
# Agência + codigo do cedente do cliente para exibir no boleto.
|
60
|
+
# @return [String]
|
61
|
+
# @example
|
62
|
+
# boleto.agencia_conta_boleto #=> "0059/189977-5"
|
63
|
+
def agencia_conta_boleto
|
64
|
+
"#{agencia}/#{conta_corrente}-#{digito_conta_corrente}"
|
65
|
+
end
|
66
|
+
|
67
|
+
# Segunda parte do código de barras.
|
68
|
+
# 9(04) | Agência <br/>
|
69
|
+
# 9(08) | Conta corrente com DV <br/>
|
70
|
+
# 9(08) | Nosso Numero Com DV<br/>
|
71
|
+
# 9(02) | Carteira<br/>
|
72
|
+
# 9(03) | Zeros<br/>
|
73
|
+
#
|
74
|
+
# @return [String] 25 caracteres numéricos.
|
75
|
+
def codigo_barras_segunda_parte
|
76
|
+
"#{agencia}#{conta_corrente}#{digito_conta_corrente}#{nosso_numero}#{nosso_numero_dv}#{carteira}000"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Boleto
|
5
|
+
# Banestes
|
6
|
+
class Banestes < Base
|
7
|
+
# <b>REQUERIDO</b>: digito verificador da conta corrente
|
8
|
+
attr_accessor :digito_conta_corrente
|
9
|
+
|
10
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
11
|
+
validates_length_of :conta_corrente, maximum: 10, message: 'deve ser menor ou igual a 10 dígitos.'
|
12
|
+
validates_length_of :nosso_numero, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
13
|
+
validates_length_of :variacao, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
|
14
|
+
validates_length_of :carteira, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
15
|
+
validates_length_of :digito_conta_corrente, is: 1, message: 'deve ser igual a 1 dígitos.'
|
16
|
+
|
17
|
+
def initialize(campos = {})
|
18
|
+
campos = { carteira: '11', variacao: '2' }.merge!(campos)
|
19
|
+
super(campos)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
23
|
+
#
|
24
|
+
# @return [String] 3 caracteres numéricos.
|
25
|
+
def banco
|
26
|
+
'021'
|
27
|
+
end
|
28
|
+
|
29
|
+
# Dígito verificador do banco
|
30
|
+
#
|
31
|
+
# @return [String] 1 caractere.
|
32
|
+
def banco_dv
|
33
|
+
'3'
|
34
|
+
end
|
35
|
+
|
36
|
+
# Agência
|
37
|
+
#
|
38
|
+
# @return [String] 4 caracteres numéricos.
|
39
|
+
def agencia=(valor)
|
40
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
41
|
+
end
|
42
|
+
|
43
|
+
# Conta
|
44
|
+
#
|
45
|
+
# @return [String] 7 caracteres numéricos.
|
46
|
+
def conta_corrente=(valor)
|
47
|
+
@conta_corrente = valor.to_s.rjust(10, '0') if valor
|
48
|
+
end
|
49
|
+
|
50
|
+
# Número documento
|
51
|
+
#
|
52
|
+
# @return [String] 8 caracteres numéricos.
|
53
|
+
def nosso_numero=(valor)
|
54
|
+
@nosso_numero = valor.to_s.rjust(8, '0') if valor
|
55
|
+
end
|
56
|
+
|
57
|
+
# Nosso número para exibição no boleto.
|
58
|
+
#
|
59
|
+
# @return [String] caracteres numéricos.
|
60
|
+
def nosso_numero_boleto
|
61
|
+
"#{nosso_numero}-#{nosso_numero_dv}"
|
62
|
+
end
|
63
|
+
|
64
|
+
def nosso_numero_dv
|
65
|
+
numero_dv_1 = nosso_numero.modulo11(mapeamento: { 10 => 0, 11 => 0 })
|
66
|
+
numero_dv_2 = "#{nosso_numero}#{numero_dv_1}".modulo11(mapeamento: { 10 => 0, 11 => 0 })
|
67
|
+
|
68
|
+
"#{numero_dv_1}#{numero_dv_2}"
|
69
|
+
end
|
70
|
+
|
71
|
+
def agencia_conta_boleto
|
72
|
+
"#{agencia.to_i} / #{conta_corrente.to_i}#{digito_conta_corrente}"
|
73
|
+
end
|
74
|
+
|
75
|
+
# Nosso Numero 'N' | Nosso número sem os dígitos | 08
|
76
|
+
# Conta corrente 'C' | No da conta corrente com DV | 11
|
77
|
+
# Tipo Cobranca 'R' | (2) Sem registro - (3) Caucionada - (4, 5, 6 e 7) Com registro | 01
|
78
|
+
# Codigo do banco cedente | Código do BANESTES '021' | 03
|
79
|
+
# Digitos | Dígitos verificadores | 02
|
80
|
+
def codigo_barras_segunda_parte
|
81
|
+
campo_livre = "#{nosso_numero}#{conta_corrente}#{digito_conta_corrente}#{variacao}021"
|
82
|
+
campo_livre + campo_livre.duplo_digito
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Boleto
|
5
|
+
# Banrisul
|
6
|
+
class Banrisul < Base
|
7
|
+
# <b>REQUERIDO</b>: digito verificador do convenio
|
8
|
+
attr_accessor :digito_convenio
|
9
|
+
|
10
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
11
|
+
validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
12
|
+
validates_length_of :nosso_numero, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
13
|
+
validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
|
14
|
+
validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
15
|
+
validates_length_of :digito_convenio, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
16
|
+
|
17
|
+
def initialize(campos = {})
|
18
|
+
campos = { carteira: '2' }.merge!(campos)
|
19
|
+
super(campos)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Codigo do banco emissor (3 dígitos sempre)
|
23
|
+
#
|
24
|
+
# @return [String] 3 caracteres numéricos.
|
25
|
+
def banco
|
26
|
+
'041'
|
27
|
+
end
|
28
|
+
|
29
|
+
# Dígito verificador do banco
|
30
|
+
#
|
31
|
+
# @return [String] 1 caractere.
|
32
|
+
def banco_dv
|
33
|
+
'8'
|
34
|
+
end
|
35
|
+
|
36
|
+
# Agência
|
37
|
+
#
|
38
|
+
# @return [String] 4 caracteres numéricos.
|
39
|
+
def agencia=(valor)
|
40
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
41
|
+
end
|
42
|
+
|
43
|
+
# Conta
|
44
|
+
#
|
45
|
+
# @return [String] 8 caracteres numéricos.
|
46
|
+
def conta_corrente=(valor)
|
47
|
+
@conta_corrente = valor.to_s.rjust(8, '0') if valor
|
48
|
+
end
|
49
|
+
|
50
|
+
# Número documento
|
51
|
+
#
|
52
|
+
# @return [String] 8 caracteres numéricos.
|
53
|
+
def nosso_numero=(valor)
|
54
|
+
@nosso_numero = valor.to_s.rjust(8, '0') if valor
|
55
|
+
end
|
56
|
+
|
57
|
+
# Número do convênio do cliente junto ao banco.
|
58
|
+
# @return [String] 7 caracteres numéricos.
|
59
|
+
def convenio=(valor)
|
60
|
+
@convenio = valor.to_s.rjust(7, '0') if valor
|
61
|
+
end
|
62
|
+
|
63
|
+
# Digito do convênio do cliente junto ao banco.
|
64
|
+
# @return [String] 2 caracteres numéricos.
|
65
|
+
def digito_convenio=(valor)
|
66
|
+
@digito_convenio = valor.to_s.rjust(2, '0') if valor
|
67
|
+
end
|
68
|
+
|
69
|
+
# Nosso número para exibição no boleto.
|
70
|
+
#
|
71
|
+
# @return [String] caracteres numéricos.
|
72
|
+
def nosso_numero_boleto
|
73
|
+
"#{nosso_numero}-#{nosso_numero.duplo_digito}"
|
74
|
+
end
|
75
|
+
|
76
|
+
def agencia_conta_boleto
|
77
|
+
"#{agencia} / #{convenio[0..5]}.#{convenio[6]}.#{digito_convenio}"
|
78
|
+
end
|
79
|
+
|
80
|
+
# Posições 20 a 20 - Produto:
|
81
|
+
# 1 Cobrança Normal, Fichário emitido pelo BANRISUL.
|
82
|
+
# 2 Cobrança Direta, Fichário emitido pelo CLIENTE.
|
83
|
+
# Posição 21 a 21 - Constante 1
|
84
|
+
# Posição 22 a 25 - Código da Agência, com quatro dígitos, sem o Número de Controle.
|
85
|
+
# Posição 26 a 32 - Código de Cedente do Beneficiário sem Número de Controle.
|
86
|
+
# Posição 33 a 40 - Nosso Número sem Número de Controle.
|
87
|
+
# Posição 41 a 42 - Constante 40.
|
88
|
+
# Posição 43 a 44 - Duplo Dígito referente às posições 20 a 42 (módulos 10 e 11).
|
89
|
+
def codigo_barras_segunda_parte
|
90
|
+
campo_livre = "#{carteira}1#{agencia}#{convenio}#{nosso_numero}40"
|
91
|
+
campo_livre + campo_livre.duplo_digito
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|