brcobranca 6.9.1 → 7.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 +3 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +7 -7
- data/README.md +14 -12
- data/Rakefile +1 -0
- data/brcobranca.gemspec +1 -0
- data/lib/brcobranca/arquivos/logos/banrisul.eps +121 -0
- data/lib/brcobranca/arquivos/logos/banrisul_carne.eps +121 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +8 -8
- data/lib/brcobranca/boleto/banco_nordeste.rb +1 -0
- data/lib/brcobranca/boleto/banestes.rb +10 -10
- data/lib/brcobranca/boleto/banrisul.rb +84 -0
- data/lib/brcobranca/boleto/base.rb +6 -5
- data/lib/brcobranca/boleto/bradesco.rb +2 -1
- data/lib/brcobranca/boleto/caixa.rb +6 -5
- data/lib/brcobranca/boleto/hsbc.rb +7 -6
- data/lib/brcobranca/boleto/itau.rb +1 -0
- data/lib/brcobranca/boleto/santander.rb +1 -0
- data/lib/brcobranca/boleto/sicoob.rb +12 -11
- data/lib/brcobranca/boleto/sicredi.rb +1 -0
- data/lib/brcobranca/boleto/template/base.rb +5 -4
- data/lib/brcobranca/boleto/template/rghost.rb +7 -6
- data/lib/brcobranca/boleto/template/rghost_carne.rb +9 -9
- data/lib/brcobranca/boleto/unicred.rb +1 -1
- data/lib/brcobranca/calculo.rb +14 -15
- data/lib/brcobranca/calculo_data.rb +2 -0
- data/lib/brcobranca/currency.rb +4 -3
- data/lib/brcobranca/formatacao.rb +2 -1
- data/lib/brcobranca/formatacao_string.rb +1 -0
- data/lib/brcobranca/limpeza.rb +1 -0
- data/lib/brcobranca/remessa/base.rb +2 -1
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +7 -6
- data/lib/brcobranca/remessa/cnab240/base.rb +16 -15
- data/lib/brcobranca/remessa/cnab240/caixa.rb +1 -0
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +9 -9
- data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +2 -3
- data/lib/brcobranca/remessa/cnab400/base.rb +8 -7
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/citibank.rb +3 -2
- data/lib/brcobranca/remessa/cnab400/itau.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/santander.rb +7 -5
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +6 -5
- data/lib/brcobranca/remessa/pagamento.rb +4 -4
- data/lib/brcobranca/retorno/base.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/base.rb +6 -7
- data/lib/brcobranca/retorno/cnab240/caixa.rb +1 -0
- data/lib/brcobranca/retorno/cnab240/santander.rb +3 -3
- data/lib/brcobranca/retorno/cnab240/sicoob.rb +7 -6
- data/lib/brcobranca/retorno/cnab400/base.rb +5 -6
- data/lib/brcobranca/retorno/cnab400/bradesco.rb +1 -0
- data/lib/brcobranca/retorno/cnab400/itau.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cbr643.rb +1 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +3 -2
- data/lib/brcobranca/retorno/retorno_cnab400.rb +1 -0
- data/lib/brcobranca/util/empresa.rb +2 -3
- data/lib/brcobranca/version.rb +2 -1
- data/lib/brcobranca.rb +3 -1
- data/spec/brcobranca/base_spec.rb +51 -50
- data/spec/brcobranca/boleto/banco_brasil_spec.rb +46 -45
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +13 -12
- data/spec/brcobranca/boleto/banestes_spec.rb +108 -105
- data/spec/brcobranca/boleto/banrisul_spec.rb +165 -0
- data/spec/brcobranca/boleto/bradesco_spec.rb +56 -52
- data/spec/brcobranca/boleto/caixa_spec.rb +9 -7
- data/spec/brcobranca/boleto/hsbc_spec.rb +17 -15
- data/spec/brcobranca/boleto/itau_spec.rb +22 -20
- data/spec/brcobranca/boleto/santander_spec.rb +16 -14
- data/spec/brcobranca/boleto/sicoob_spec.rb +94 -94
- data/spec/brcobranca/boleto/sicredi_spec.rb +32 -28
- data/spec/brcobranca/boleto/unicred_spec.rb +16 -14
- data/spec/brcobranca/boletos_em_lote_spec.rb +4 -3
- data/spec/brcobranca/calculo_data_spec.rb +2 -1
- data/spec/brcobranca/calculo_spec.rb +97 -97
- data/spec/brcobranca/currency_spec.rb +6 -5
- data/spec/brcobranca/formatacao_spec.rb +1 -0
- data/spec/brcobranca/formatacao_string_spec.rb +1 -2
- data/spec/brcobranca/limpeza_spec.rb +1 -0
- data/spec/brcobranca/remessa/base_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +13 -11
- data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +2 -1
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +20 -18
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +11 -9
- data/spec/brcobranca/remessa/pagamento_spec.rb +12 -10
- data/spec/brcobranca/retorno/cnab240/base_spec.rb +10 -9
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +23 -22
- data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +21 -20
- data/spec/brcobranca/retorno/cnab400/base_spec.rb +13 -12
- data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +3 -1
- data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -1
- data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +1 -0
- data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +1 -0
- data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +1 -0
- data/spec/brcobranca/rghost_spec.rb +1 -0
- data/spec/brcobranca/util/empresa_spec.rb +13 -12
- data/spec/brcobranca_spec.rb +6 -5
- data/spec/spec_helper.rb +3 -3
- data/spec/support/remessa_helpers.rb +3 -1
- data/spec/support/shared_examples/busca_logotipo.rb +2 -0
- data/spec/support/shared_examples/cnab240.rb +22 -20
- data/spec/support/shared_examples/cnab400.rb +12 -12
- data/spec/support/shared_examples/formatos_validos.rb +6 -4
- metadata +7 -2
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Boleto
|
4
5
|
class Bradesco < Base # Banco BRADESCO
|
@@ -12,7 +13,7 @@ module Brcobranca
|
|
12
13
|
def initialize(campos = {})
|
13
14
|
campos = { carteira: '06' }.merge!(campos)
|
14
15
|
|
15
|
-
campos
|
16
|
+
campos[:local_pagamento] = 'Pagável preferencialmente na Rede Bradesco ou Bradesco Expresso'
|
16
17
|
|
17
18
|
super(campos)
|
18
19
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
#
|
3
|
+
#
|
3
4
|
# A Caixa tem dois padrões para a geração de boleto: SIGCB e SICOB.
|
4
5
|
# O SICOB foi substiuido pelo SIGCB que é implementado por esta classe.
|
5
6
|
# http://downloads.caixa.gov.br/_arquivos/cobranca_caixa_sigcb/manuais/CODIGO_BARRAS_SIGCB.PDF
|
@@ -9,9 +10,9 @@ module Brcobranca
|
|
9
10
|
class Caixa < Base # Caixa
|
10
11
|
# <b>REQUERIDO</b>: Emissão do boleto
|
11
12
|
attr_accessor :emissao
|
12
|
-
|
13
|
+
|
13
14
|
# Validações
|
14
|
-
#Modalidade/Carteira de Cobrança (1-Registrada | 2-Sem Registro)
|
15
|
+
# Modalidade/Carteira de Cobrança (1-Registrada | 2-Sem Registro)
|
15
16
|
validates_length_of :carteira, is: 1, message: 'deve possuir 1 dígitos.'
|
16
17
|
# Emissão do boleto (4-Beneficiário)
|
17
18
|
validates_length_of :emissao, is: 1, message: 'deve possuir 1 dígitos.'
|
@@ -26,7 +27,7 @@ module Brcobranca
|
|
26
27
|
emissao: '4'
|
27
28
|
}.merge!(campos)
|
28
29
|
|
29
|
-
campos
|
30
|
+
campos[:local_pagamento] = 'PREFERENCIALMENTE NAS CASAS LOTÉRICAS ATÉ O VALOR LIMITE'
|
30
31
|
|
31
32
|
super(campos)
|
32
33
|
end
|
@@ -68,7 +69,7 @@ module Brcobranca
|
|
68
69
|
def nosso_numero
|
69
70
|
"#{carteira}#{emissao}#{numero_documento}"
|
70
71
|
end
|
71
|
-
|
72
|
+
|
72
73
|
# Dígito verificador do Nosso Número
|
73
74
|
# Utiliza-se o [-1..-1] para retornar o último caracter
|
74
75
|
# @return [String]
|
@@ -115,7 +116,7 @@ module Brcobranca
|
|
115
116
|
"#{nosso_numero[1..1]}" \
|
116
117
|
"#{nosso_numero[8..16]}"
|
117
118
|
|
118
|
-
|
119
|
+
campo_livre.to_s +
|
119
120
|
campo_livre.modulo11(
|
120
121
|
multiplicador: (2..9).to_a,
|
121
122
|
mapeamento: { 10 => 0, 11 => 0 }
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Boleto
|
4
5
|
class Hsbc < Base # Banco HSBC
|
5
|
-
validates_inclusion_of :carteira, in: %w(
|
6
|
+
validates_inclusion_of :carteira, in: %w(CNR CSB), message: 'não existente para este banco.'
|
6
7
|
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
7
8
|
validates_length_of :numero_documento, maximum: 13, message: 'deve ser menor ou igual a 13 dígitos.'
|
8
9
|
validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
@@ -54,13 +55,13 @@ module Brcobranca
|
|
54
55
|
soma = parte_1.to_i + conta_corrente.to_i + data.to_i
|
55
56
|
"#{parte_1}#{soma.to_s.modulo11(mapeamento: { 10 => 0 })}"
|
56
57
|
else
|
57
|
-
|
58
|
-
|
58
|
+
errors.add(:data_vencimento, 'não é uma data.')
|
59
|
+
raise Brcobranca::BoletoInvalido, self
|
59
60
|
end
|
60
61
|
when 'CSB'
|
61
62
|
@nosso_numero
|
62
63
|
else
|
63
|
-
|
64
|
+
raise Brcobranca::NaoImplementado, 'Tipo de carteira não implementado.'
|
64
65
|
# TODO - Verificar outras carteiras.
|
65
66
|
# self.codigo_servico = "5"
|
66
67
|
# parte_1 = "#{self.numero_documento}#{self.numero_documento.modulo11(mapeamento: { 10 => 0 })}#{self.codigo_servico}"
|
@@ -99,10 +100,10 @@ module Brcobranca
|
|
99
100
|
dias_julianos = data_vencimento.to_juliano
|
100
101
|
"#{conta_corrente}#{numero_documento}#{dias_julianos}2"
|
101
102
|
when 'CSB'
|
102
|
-
|
103
|
+
raise Brcobranca::NaoImplementado, 'Nosso número não definido.' unless @nosso_numero
|
103
104
|
"#{nosso_numero}#{agencia}#{conta_corrente}001"
|
104
105
|
else
|
105
|
-
|
106
|
+
raise Brcobranca::NaoImplementado, 'Tipo de carteira não implementado.'
|
106
107
|
end
|
107
108
|
end
|
108
109
|
end
|
@@ -1,16 +1,17 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Boleto
|
4
5
|
class Sicoob < Base # Sicoob (Bancoob)
|
5
|
-
validates_length_of :agencia, maximum: 4, message:
|
6
|
-
validates_length_of :conta_corrente, maximum: 8, message:
|
7
|
-
validates_length_of :numero_documento, maximum: 7, message:
|
6
|
+
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
7
|
+
validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
8
|
+
validates_length_of :numero_documento, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
8
9
|
validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
9
10
|
validates_length_of :variacao, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
10
11
|
validates_length_of :quantidade, maximum: 3, message: 'deve ser menor ou igual a 3 dígitos.'
|
11
12
|
|
12
13
|
def initialize(campos = {})
|
13
|
-
campos = { carteira:
|
14
|
+
campos = { carteira: '1', variacao: '01', quantidade: '001' }.merge!(campos)
|
14
15
|
super(campos)
|
15
16
|
end
|
16
17
|
|
@@ -18,42 +19,42 @@ module Brcobranca
|
|
18
19
|
#
|
19
20
|
# @return [String] 3 caracteres numéricos.
|
20
21
|
def banco
|
21
|
-
|
22
|
+
'756'
|
22
23
|
end
|
23
24
|
|
24
25
|
# Dígito verificador do banco
|
25
26
|
#
|
26
27
|
# @return [String] 1 caractere.
|
27
28
|
def banco_dv
|
28
|
-
|
29
|
+
'0'
|
29
30
|
end
|
30
31
|
|
31
32
|
# Agência
|
32
33
|
#
|
33
34
|
# @return [String] 4 caracteres numéricos.
|
34
35
|
def agencia=(valor)
|
35
|
-
@agencia = valor.to_s.rjust(4,
|
36
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
36
37
|
end
|
37
38
|
|
38
39
|
# Convênio
|
39
40
|
#
|
40
41
|
# @return [String] 7 caracteres numéricos.
|
41
42
|
def convenio=(valor)
|
42
|
-
@convenio = valor.to_s.rjust(7,
|
43
|
+
@convenio = valor.to_s.rjust(7, '0') if valor
|
43
44
|
end
|
44
45
|
|
45
46
|
# Número documento
|
46
47
|
#
|
47
48
|
# @return [String] 7 caracteres numéricos.
|
48
49
|
def numero_documento=(valor)
|
49
|
-
@numero_documento = valor.to_s.rjust(7,
|
50
|
+
@numero_documento = valor.to_s.rjust(7, '0') if valor
|
50
51
|
end
|
51
52
|
|
52
53
|
# Quantidade
|
53
54
|
#
|
54
55
|
# @return [String] 3 caracteres numéricos.
|
55
56
|
def quantidade=(valor)
|
56
|
-
@quantidade = valor.to_s.rjust(3,
|
57
|
+
@quantidade = valor.to_s.rjust(3, '0') if valor
|
57
58
|
end
|
58
59
|
|
59
60
|
# Nosso número para exibição no boleto.
|
@@ -92,7 +93,7 @@ module Brcobranca
|
|
92
93
|
# Ex.: 11 – 3 = 8, então Nosso Número + DV = 21-8
|
93
94
|
#
|
94
95
|
def nosso_numero_dv
|
95
|
-
"#{agencia}#{convenio.rjust(10,
|
96
|
+
"#{agencia}#{convenio.rjust(10, '0')}#{numero_documento}".modulo11(
|
96
97
|
reverse: false,
|
97
98
|
multiplicador: [3, 1, 9, 7],
|
98
99
|
mapeamento: { 10 => 0, 11 => 0 }
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
|
3
4
|
module Brcobranca
|
4
5
|
module Boleto
|
@@ -9,13 +10,13 @@ module Brcobranca
|
|
9
10
|
def define_template(template)
|
10
11
|
case template
|
11
12
|
when :rghost
|
12
|
-
|
13
|
+
[Brcobranca::Boleto::Template::Rghost]
|
13
14
|
when :rghost_carne
|
14
|
-
|
15
|
+
[Brcobranca::Boleto::Template::RghostCarne]
|
15
16
|
when :both
|
16
|
-
|
17
|
+
[Brcobranca::Boleto::Template::Rghost, Brcobranca::Boleto::Template::RghostCarne]
|
17
18
|
else
|
18
|
-
|
19
|
+
[Brcobranca::Boleto::Template::Rghost]
|
19
20
|
end
|
20
21
|
end
|
21
22
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
|
3
4
|
begin
|
4
5
|
require 'rghost'
|
@@ -22,7 +23,7 @@ module Brcobranca
|
|
22
23
|
# Templates para usar com Rghost
|
23
24
|
module Rghost
|
24
25
|
extend self
|
25
|
-
include RGhost unless
|
26
|
+
include RGhost unless include?(RGhost)
|
26
27
|
RGhost::Config::GS[:external_encoding] = Brcobranca.configuration.external_encoding
|
27
28
|
|
28
29
|
# Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
@@ -72,7 +73,7 @@ module Brcobranca
|
|
72
73
|
|
73
74
|
template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico.eps')
|
74
75
|
|
75
|
-
|
76
|
+
raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
|
76
77
|
|
77
78
|
modelo_generico_template(doc, boleto, template_path)
|
78
79
|
modelo_generico_cabecalho(doc, boleto)
|
@@ -99,7 +100,7 @@ module Brcobranca
|
|
99
100
|
|
100
101
|
template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_generico.eps')
|
101
102
|
|
102
|
-
|
103
|
+
raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
|
103
104
|
|
104
105
|
boletos.each_with_index do |boleto, index|
|
105
106
|
modelo_generico_template(doc, boleto, template_path)
|
@@ -148,7 +149,7 @@ module Brcobranca
|
|
148
149
|
doc.moveto x: '0.7 cm', y: '22.2 cm'
|
149
150
|
doc.show boleto.numero_documento
|
150
151
|
doc.moveto x: '7 cm', y: '22.2 cm'
|
151
|
-
doc.show
|
152
|
+
doc.show boleto.documento_cedente.formata_documento.to_s
|
152
153
|
doc.moveto x: '12 cm', y: '22.2 cm'
|
153
154
|
doc.show boleto.data_vencimento.to_s_br
|
154
155
|
doc.moveto x: '20.3 cm', y: '23 cm'
|
@@ -158,7 +159,7 @@ module Brcobranca
|
|
158
159
|
doc.moveto x: '1.5 cm', y: '20.9 cm'
|
159
160
|
doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
|
160
161
|
doc.moveto x: '1.5 cm', y: '20.6 cm'
|
161
|
-
doc.show
|
162
|
+
doc.show boleto.sacado_endereco.to_s
|
162
163
|
doc.moveto x: '0.7 cm', y: '19.8 cm'
|
163
164
|
doc.show boleto.demonstrativo1
|
164
165
|
doc.moveto x: '0.7 cm', y: '19.4 cm'
|
@@ -232,7 +233,7 @@ module Brcobranca
|
|
232
233
|
doc.moveto x: '1.2 cm', y: '8.8 cm'
|
233
234
|
doc.show "#{boleto.sacado} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}" if boleto.sacado && boleto.sacado_documento
|
234
235
|
doc.moveto x: '1.2 cm', y: '8.4 cm'
|
235
|
-
doc.show
|
236
|
+
doc.show boleto.sacado_endereco.to_s
|
236
237
|
|
237
238
|
if boleto.avalista && boleto.avalista_documento
|
238
239
|
doc.moveto x: '2.4 cm', y: '7.47 cm'
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
|
3
4
|
begin
|
4
5
|
require 'rghost'
|
@@ -22,7 +23,7 @@ module Brcobranca
|
|
22
23
|
# Templates para usar com Rghost
|
23
24
|
module RghostCarne
|
24
25
|
extend self
|
25
|
-
include RGhost unless
|
26
|
+
include RGhost unless include?(RGhost)
|
26
27
|
RGhost::Config::GS[:external_encoding] = Brcobranca.configuration.external_encoding
|
27
28
|
|
28
29
|
# Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
@@ -116,12 +117,11 @@ module Brcobranca
|
|
116
117
|
modelo_carne_build_data_left(doc, boleto, colunas, linhas)
|
117
118
|
modelo_carne_build_data_right(doc, boleto, colunas, linhas)
|
118
119
|
|
119
|
-
|
120
|
-
|
121
|
-
|
120
|
+
next unless curr_page_position >= max_per_page # maximo 3 boletos por pagina
|
121
|
+
# Cria nova página se não for o último boleto
|
122
|
+
doc.next_page unless index == boletos.length - 1
|
122
123
|
|
123
|
-
|
124
|
-
end
|
124
|
+
curr_page_position = 0 # reinicia contador por página
|
125
125
|
end
|
126
126
|
|
127
127
|
# Gerando stream
|
@@ -134,7 +134,7 @@ module Brcobranca
|
|
134
134
|
# carrega background do boleto
|
135
135
|
def modelo_carne_load_background(doc, margin_bottom)
|
136
136
|
template_path = File.join(File.dirname(__FILE__), '..', '..', 'arquivos', 'templates', 'modelo_carne.eps')
|
137
|
-
|
137
|
+
raise 'Não foi possível encontrar o template. Verifique o caminho' unless File.exist?(template_path)
|
138
138
|
|
139
139
|
doc.image template_path, x: 1, y: margin_bottom
|
140
140
|
end
|
@@ -202,7 +202,7 @@ module Brcobranca
|
|
202
202
|
|
203
203
|
# sacado
|
204
204
|
doc.moveto x: colunas[0], y: linhas[13]
|
205
|
-
doc.show
|
205
|
+
doc.show boleto.sacado.to_s
|
206
206
|
end
|
207
207
|
|
208
208
|
# aplica dados do lado direito
|
@@ -301,7 +301,7 @@ module Brcobranca
|
|
301
301
|
|
302
302
|
# Sacado endereço
|
303
303
|
doc.moveto x: colunas[2], y: linhas[12]
|
304
|
-
doc.show
|
304
|
+
doc.show boleto.sacado_endereco.to_s
|
305
305
|
|
306
306
|
# codigo de barras
|
307
307
|
# Gerando codigo de barra com rghost_barcode
|
data/lib/brcobranca/calculo.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
# @author Kivanio Barbosa
|
3
4
|
module Brcobranca
|
4
5
|
# Métodos auxiliares de cálculos
|
@@ -8,7 +9,7 @@ module Brcobranca
|
|
8
9
|
# @return [Integer]
|
9
10
|
# @raise [ArgumentError] Caso não seja um número inteiro.
|
10
11
|
def modulo10
|
11
|
-
|
12
|
+
raise ArgumentError, 'Número inválido' unless is_number?
|
12
13
|
|
13
14
|
total = 0
|
14
15
|
multiplicador = 2
|
@@ -43,7 +44,7 @@ module Brcobranca
|
|
43
44
|
#
|
44
45
|
# @return [Boolean]
|
45
46
|
def is_number?
|
46
|
-
to_s.empty? ? false : (to_s =~
|
47
|
+
to_s.empty? ? false : (to_s =~ /\D/).nil?
|
47
48
|
end
|
48
49
|
|
49
50
|
# Soma dígitos de números inteiros positivos com 2 dígitos ou mais.
|
@@ -72,8 +73,8 @@ module Brcobranca
|
|
72
73
|
# @return [Integer]
|
73
74
|
# @raise [ArgumentError] Caso não seja um número inteiro.
|
74
75
|
def multiplicador(options = {}, &_block)
|
75
|
-
|
76
|
-
|
76
|
+
raise ArgumentError, 'Número inválido' unless is_number?
|
77
|
+
raise ArgumentError, 'Fatores não podem estar em branco' unless options[:fatores]
|
77
78
|
|
78
79
|
total = 0
|
79
80
|
multiplicador_posicao = 0
|
@@ -83,7 +84,7 @@ module Brcobranca
|
|
83
84
|
numeros.each do |caracter|
|
84
85
|
fator = fatores[multiplicador_posicao]
|
85
86
|
total += block_given? ? yield(caracter, fator) : (caracter.to_i * fator)
|
86
|
-
multiplicador_posicao =
|
87
|
+
multiplicador_posicao = multiplicador_posicao < (fatores.size - 1) ? (multiplicador_posicao + 1) : 0
|
87
88
|
end
|
88
89
|
total
|
89
90
|
end
|
@@ -93,24 +94,22 @@ module Brcobranca
|
|
93
94
|
# @return [String]
|
94
95
|
# @raise [ArgumentError] Caso não seja um número inteiro.
|
95
96
|
def duplo_digito
|
96
|
-
|
97
|
+
raise ArgumentError, 'Número inválido' unless is_number?
|
97
98
|
|
98
|
-
digito_1 =
|
99
|
+
digito_1 = modulo10
|
99
100
|
digito_2 = "#{self}#{digito_1}".modulo11(multiplicador: [2, 3, 4, 5, 6, 7]) { |total| (total % 11) }
|
100
101
|
|
101
102
|
while digito_2 == 1
|
102
|
-
if digito_1 == 9
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
103
|
+
digito_1 = if digito_1 == 9
|
104
|
+
0
|
105
|
+
else
|
106
|
+
digito_1 + 1
|
107
|
+
end
|
107
108
|
|
108
109
|
digito_2 = "#{self}#{digito_1}".modulo11(multiplicador: [2, 3, 4, 5, 6, 7])
|
109
110
|
end
|
110
111
|
|
111
|
-
if digito_2 != 0
|
112
|
-
digito_2 = 11 - digito_2
|
113
|
-
end
|
112
|
+
digito_2 = 11 - digito_2 if digito_2 != 0
|
114
113
|
|
115
114
|
"#{digito_1}#{digito_2}"
|
116
115
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
# @author Kivanio Barbosa
|
3
4
|
module Brcobranca
|
4
5
|
# Métodos auxiliares de cálculos envolvendo Datas.
|
@@ -19,6 +20,7 @@ module Brcobranca
|
|
19
20
|
def to_s_br
|
20
21
|
strftime('%d/%m/%Y')
|
21
22
|
end
|
23
|
+
|
22
24
|
# Calcula número de dias julianos.
|
23
25
|
#
|
24
26
|
# O cálculo é feito subtraindo-se a data atual, pelo último dia válido do ano anterior,
|
data/lib/brcobranca/currency.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
|
3
4
|
# @author Fernando Vieira do http://simplesideias.com.br
|
4
5
|
module Brcobranca #:nodoc:[all]
|
5
6
|
module Currency #:nodoc:[all]
|
6
7
|
# Implementação feita por Fernando Vieira do http://simplesideias.com.br
|
7
8
|
# post http://simplesideias.com.br/usando-number_to_currency-em-modelos-no-rails
|
8
|
-
BRL = { delimiter: '.', separator: ',', unit: 'R$', precision: 2, position: 'before' }
|
9
|
-
USD = { delimiter: ',', separator: '.', unit: 'US$', precision: 2, position: 'before' }
|
9
|
+
BRL = { delimiter: '.', separator: ',', unit: 'R$', precision: 2, position: 'before' }.freeze
|
10
|
+
USD = { delimiter: ',', separator: '.', unit: 'US$', precision: 2, position: 'before' }.freeze
|
10
11
|
DEFAULT = BRL.merge(unit: '')
|
11
12
|
|
12
13
|
module String #:nodoc:[all]
|
13
14
|
def to_number(_options = {})
|
14
|
-
return
|
15
|
+
return tr(',', '.').to_f if numeric?
|
15
16
|
nil
|
16
17
|
end
|
17
18
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
# @author Kivanio Barbosa
|
3
4
|
module Brcobranca
|
4
5
|
# Métodos auxiliares de formatação
|
@@ -91,7 +92,7 @@ module Brcobranca
|
|
91
92
|
linha << Regexp.last_match[3]
|
92
93
|
linha.gsub(/^(.{5})(.{5})(.{5})(.{6})(.{5})(.{6})(.{1})(.{14})$/, '\1.\2 \3.\4 \5.\6 \7 \8')
|
93
94
|
else
|
94
|
-
|
95
|
+
raise ArgumentError, "#{self} Precisa conter 44 caracteres numéricos."
|
95
96
|
end
|
96
97
|
end
|
97
98
|
end
|
data/lib/brcobranca/limpeza.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
require 'unidecoder'
|
3
4
|
|
4
5
|
module Brcobranca
|
@@ -59,7 +60,7 @@ module Brcobranca
|
|
59
60
|
# Soma de todos os boletos
|
60
61
|
#
|
61
62
|
# @return [String]
|
62
|
-
def valor_total_titulos(tamanho=13)
|
63
|
+
def valor_total_titulos(tamanho = 13)
|
63
64
|
value = pagamentos.inject(0.0) { |sum, pagamento| sum += pagamento.valor }
|
64
65
|
sprintf('%.2f', value).delete('.').rjust(tamanho, '0')
|
65
66
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
2
3
|
module Brcobranca
|
3
4
|
module Remessa
|
4
5
|
module Cnab240
|
@@ -20,9 +21,9 @@ module Brcobranca
|
|
20
21
|
|
21
22
|
def initialize(campos = {})
|
22
23
|
campos = { emissao_boleto: '0',
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
distribuicao_boleto: '0',
|
25
|
+
especie_titulo: '02',
|
26
|
+
codigo_carteira: '7' }.merge!(campos)
|
26
27
|
super(campos)
|
27
28
|
end
|
28
29
|
|
@@ -64,7 +65,7 @@ module Brcobranca
|
|
64
65
|
"#{convenio.rjust(9, '0')}0014#{carteira}#{variacao} "
|
65
66
|
end
|
66
67
|
|
67
|
-
|
68
|
+
alias convenio_lote codigo_convenio
|
68
69
|
|
69
70
|
def info_conta
|
70
71
|
# CAMPO TAMANHO
|
@@ -109,7 +110,7 @@ module Brcobranca
|
|
109
110
|
when 7 then
|
110
111
|
10
|
111
112
|
else
|
112
|
-
|
113
|
+
raise Brcobranca::NaoImplementado, 'Tipo de convênio não implementado.'
|
113
114
|
end
|
114
115
|
nosso_numero = nosso_numero.to_s.rjust(quantidade, '0')
|
115
116
|
|
@@ -225,7 +226,7 @@ module Brcobranca
|
|
225
226
|
# No caso de carteira 31 ou carteira 11/17 modalidade Vinculada,
|
226
227
|
# se não informado nenhum código,
|
227
228
|
# o sistema assume automaticamente Protesto em 3 dias úteis.
|
228
|
-
segmento_p << '3'
|
229
|
+
segmento_p << '3' # cod. para protesto 1 *
|
229
230
|
# Preencher de acordo com o código informado na posição 221.
|
230
231
|
# Para código '1' – é possível, de 6 a 29 dias, 35o, 40o, dia corrido.
|
231
232
|
# Para código '2' – é possível, 3o, 4o ou 5o dia útil.
|