brcobranca 9.2.4 → 10.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +43 -9
- data/HISTORY.md +71 -0
- data/README.md +47 -54
- data/Rakefile +4 -4
- data/lib/brcobranca/arquivos/logos/ailos.eps +412 -0
- data/lib/brcobranca/arquivos/logos/ailos_carne.eps +412 -0
- data/lib/brcobranca/arquivos/logos/safra.eps +0 -0
- data/lib/brcobranca/arquivos/logos/safra_carne.eps +0 -0
- data/lib/brcobranca/boleto/{cecred.rb → ailos.rb} +7 -5
- data/lib/brcobranca/boleto/banco_brasil.rb +9 -5
- data/lib/brcobranca/boleto/banco_brasilia.rb +5 -5
- data/lib/brcobranca/boleto/banco_nordeste.rb +4 -3
- data/lib/brcobranca/boleto/banestes.rb +4 -3
- data/lib/brcobranca/boleto/banrisul.rb +4 -3
- data/lib/brcobranca/boleto/base.rb +12 -7
- data/lib/brcobranca/boleto/bradesco.rb +4 -3
- data/lib/brcobranca/boleto/caixa.rb +10 -8
- data/lib/brcobranca/boleto/citibank.rb +9 -8
- data/lib/brcobranca/boleto/credisis.rb +6 -4
- data/lib/brcobranca/boleto/hsbc.rb +8 -6
- data/lib/brcobranca/boleto/itau.rb +5 -5
- data/lib/brcobranca/boleto/safra.rb +4 -4
- data/lib/brcobranca/boleto/santander.rb +4 -2
- data/lib/brcobranca/boleto/sicoob.rb +4 -3
- data/lib/brcobranca/boleto/sicredi.rb +6 -3
- data/lib/brcobranca/boleto/template/base.rb +2 -3
- data/lib/brcobranca/boleto/template/rghost.rb +18 -13
- data/lib/brcobranca/boleto/template/rghost_carne.rb +18 -12
- data/lib/brcobranca/boleto/unicred.rb +61 -103
- data/lib/brcobranca/calculo.rb +14 -9
- data/lib/brcobranca/calculo_data.rb +6 -5
- data/lib/brcobranca/currency.rb +10 -10
- data/lib/brcobranca/formatacao.rb +2 -1
- data/lib/brcobranca/formatacao_string.rb +7 -6
- data/lib/brcobranca/limpeza.rb +3 -3
- data/lib/brcobranca/remessa/base.rb +7 -10
- data/lib/brcobranca/remessa/cnab240/{cecred.rb → ailos.rb} +18 -15
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +14 -11
- data/lib/brcobranca/remessa/cnab240/base.rb +56 -39
- data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +25 -17
- data/lib/brcobranca/remessa/cnab240/caixa.rb +21 -13
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +33 -30
- data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +14 -7
- data/lib/brcobranca/remessa/cnab240/sicredi.rb +28 -22
- data/lib/brcobranca/remessa/cnab240/unicred.rb +2 -1
- data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +9 -9
- data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +29 -28
- data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +11 -10
- data/lib/brcobranca/remessa/cnab400/banrisul.rb +13 -10
- data/lib/brcobranca/remessa/cnab400/base.rb +22 -9
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +30 -5
- data/lib/brcobranca/remessa/cnab400/citibank.rb +6 -5
- data/lib/brcobranca/remessa/cnab400/credisis.rb +7 -5
- data/lib/brcobranca/remessa/cnab400/itau.rb +9 -6
- data/lib/brcobranca/remessa/cnab400/santander.rb +17 -15
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +8 -11
- data/lib/brcobranca/remessa/cnab400/unicred.rb +185 -69
- data/lib/brcobranca/remessa/pagamento.rb +43 -11
- data/lib/brcobranca/retorno/base.rb +5 -43
- data/lib/brcobranca/retorno/cnab240/{cecred.rb → ailos.rb} +12 -10
- data/lib/brcobranca/retorno/cnab240/base.rb +8 -9
- data/lib/brcobranca/retorno/cnab240/caixa.rb +4 -5
- data/lib/brcobranca/retorno/cnab240/santander.rb +12 -8
- data/lib/brcobranca/retorno/cnab240/sicoob.rb +11 -9
- data/lib/brcobranca/retorno/cnab240/sicredi.rb +12 -9
- data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +3 -3
- data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +2 -1
- data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +2 -1
- data/lib/brcobranca/retorno/cnab400/banrisul.rb +1 -1
- data/lib/brcobranca/retorno/cnab400/base.rb +13 -12
- data/lib/brcobranca/retorno/cnab400/bradesco.rb +4 -4
- data/lib/brcobranca/retorno/cnab400/credisis.rb +2 -1
- data/lib/brcobranca/retorno/cnab400/itau.rb +6 -5
- data/lib/brcobranca/retorno/cnab400/santander.rb +8 -7
- data/lib/brcobranca/retorno/cnab400/unicred.rb +63 -58
- data/lib/brcobranca/retorno/retorno_cbr643.rb +1 -2
- data/lib/brcobranca/retorno/retorno_cnab240.rb +11 -9
- data/lib/brcobranca/retorno/retorno_cnab400.rb +6 -5
- data/lib/brcobranca/util/date.rb +2 -1
- data/lib/brcobranca/util/empresa.rb +2 -1
- data/lib/brcobranca/util/errors.rb +31 -31
- data/lib/brcobranca/validations.rb +127 -151
- data/lib/brcobranca/version.rb +2 -3
- data/lib/brcobranca.rb +5 -5
- data/spec/brcobranca/base_spec.rb +20 -11
- data/spec/brcobranca/boleto/{cecred_spec.rb → ailos_spec.rb} +13 -12
- data/spec/brcobranca/boleto/banco_brasil_spec.rb +14 -12
- data/spec/brcobranca/boleto/banco_brasilia_spec.rb +11 -10
- data/spec/brcobranca/boleto/banco_nordeste_spec.rb +2 -3
- data/spec/brcobranca/boleto/banestes_spec.rb +10 -11
- data/spec/brcobranca/boleto/banrisul_spec.rb +10 -12
- data/spec/brcobranca/boleto/bradesco_spec.rb +36 -33
- data/spec/brcobranca/boleto/caixa_spec.rb +11 -12
- data/spec/brcobranca/boleto/citibank_spec.rb +10 -11
- data/spec/brcobranca/boleto/credisis_spec.rb +18 -17
- data/spec/brcobranca/boleto/hsbc_spec.rb +9 -10
- data/spec/brcobranca/boleto/itau_spec.rb +11 -12
- data/spec/brcobranca/boleto/safra_spec.rb +10 -11
- data/spec/brcobranca/boleto/santander_spec.rb +9 -10
- data/spec/brcobranca/boleto/sicoob_spec.rb +10 -11
- data/spec/brcobranca/boleto/sicredi_spec.rb +14 -10
- data/spec/brcobranca/boleto/unicred_spec.rb +28 -38
- data/spec/brcobranca/boletos_em_lote_spec.rb +7 -7
- data/spec/brcobranca/calculo_data_spec.rb +2 -2
- data/spec/brcobranca/calculo_spec.rb +13 -11
- data/spec/brcobranca/currency_spec.rb +26 -26
- data/spec/brcobranca/formatacao_spec.rb +2 -2
- data/spec/brcobranca/formatacao_string_spec.rb +10 -4
- data/spec/brcobranca/limpeza_spec.rb +2 -2
- data/spec/brcobranca/remessa/base_spec.rb +1 -2
- data/spec/brcobranca/remessa/cnab240/{cecred_spec.rb → ailos_spec.rb} +48 -47
- data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +18 -13
- data/spec/brcobranca/remessa/cnab240/base_spec.rb +33 -10
- data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +19 -17
- data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +12 -8
- data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +28 -26
- data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +12 -10
- data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +11 -9
- data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +6 -3
- data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +24 -19
- data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +19 -14
- data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +17 -15
- data/spec/brcobranca/remessa/cnab400/base_spec.rb +23 -8
- data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +19 -17
- data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +14 -12
- data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +21 -19
- data/spec/brcobranca/remessa/cnab400/itau_spec.rb +18 -16
- data/spec/brcobranca/remessa/cnab400/santander_spec.rb +24 -22
- data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +20 -20
- data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +167 -166
- data/spec/brcobranca/remessa/pagamento_spec.rb +16 -15
- data/spec/brcobranca/retorno/cnab240/base_spec.rb +10 -9
- data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +4 -2
- data/spec/brcobranca/retorno/cnab240/santander_spec.rb +2 -0
- data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +2 -0
- data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +2 -0
- data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +2 -1
- data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +2 -1
- data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +2 -1
- data/spec/brcobranca/retorno/cnab400/base_spec.rb +25 -25
- data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +2 -1
- data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +5 -4
- data/spec/brcobranca/retorno/cnab400/itau_spec.rb +4 -2
- data/spec/brcobranca/retorno/cnab400/santander_spec.rb +2 -1
- data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +28 -32
- data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +2 -2
- data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +2 -1
- data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +2 -1
- data/spec/brcobranca/rghost_spec.rb +4 -4
- data/spec/brcobranca/util/empresa_spec.rb +1 -2
- data/spec/brcobranca_spec.rb +1 -2
- metadata +85 -162
- data/spec/arquivos/CBR64310.RET +0 -28
- data/spec/arquivos/CNAB240.RET +0 -74
- data/spec/arquivos/CNAB240CECRED.RET +0 -10
- data/spec/arquivos/CNAB240SANTANDER.RET +0 -8
- data/spec/arquivos/CNAB240SICOOB.RET +0 -10
- data/spec/arquivos/CNAB240SICREDI.CRT +0 -8
- data/spec/arquivos/CNAB400.RET +0 -54
- data/spec/arquivos/CNAB400BANCOBRASILIA.RET +0 -3
- data/spec/arquivos/CNAB400BANCONORDESTE.RET +0 -3
- data/spec/arquivos/CNAB400BANRISUL.RET +0 -3
- data/spec/arquivos/CNAB400BRADESCO.RET +0 -8
- data/spec/arquivos/CNAB400CREDISIS.RET +0 -3
- data/spec/arquivos/CNAB400ITAU.RET +0 -54
- data/spec/arquivos/CNAB400SANTANDER.RET +0 -54
- data/spec/arquivos/CNAB400UNICRED.RET +0 -3
- data/spec/fixtures/remessa/remessa-banco-brasil-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-banco-brasilia-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-banco-nordeste-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +0 -7
- data/spec/fixtures/remessa/remessa-bancoob-cnab240.rem +0 -7
- data/spec/fixtures/remessa/remessa-banrisul-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +0 -7
- data/spec/fixtures/remessa/remessa-cecred-cnab240.rem +0 -7
- data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-credisis-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-itau-cnab400.rem +0 -4
- data/spec/fixtures/remessa/remessa-santander-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-sicoob-cnab400.rem +0 -3
- data/spec/fixtures/remessa/remessa-sicoob-correspondente-bb-cnab240.rem +0 -4
- data/spec/fixtures/remessa/remessa-sicredi-cnab240.rem +0 -7
- data/spec/fixtures/remessa/remessa-unicred-cnab240.rem +0 -7
- data/spec/fixtures/remessa/remessa-unicred-cnab400.rem +0 -3
- data/spec/spec.opts +0 -8
- data/spec/spec_helper.rb +0 -38
- data/spec/support/remessa_helpers.rb +0 -13
- data/spec/support/shared_examples/busca_logotipo.rb +0 -15
- data/spec/support/shared_examples/cnab240.rb +0 -259
- data/spec/support/shared_examples/cnab400.rb +0 -180
- data/spec/support/shared_examples/formatos_validos.rb +0 -36
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
#
|
3
4
|
#
|
4
5
|
# A Caixa tem dois padrões para a geração de boleto: SIGCB e SICOB.
|
@@ -7,7 +8,8 @@
|
|
7
8
|
#
|
8
9
|
module Brcobranca
|
9
10
|
module Boleto
|
10
|
-
|
11
|
+
# Caixa
|
12
|
+
class Caixa < Base
|
11
13
|
# <b>REQUERIDO</b>: Emissão do boleto
|
12
14
|
attr_accessor :emissao
|
13
15
|
|
@@ -103,12 +105,12 @@ module Brcobranca
|
|
103
105
|
# @return [String]
|
104
106
|
def codigo_barras_segunda_parte
|
105
107
|
campo_livre = "#{convenio}" \
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
108
|
+
"#{convenio_dv}" \
|
109
|
+
"#{nosso_numero_boleto[2..4]}" \
|
110
|
+
"#{nosso_numero_boleto[0..0]}" \
|
111
|
+
"#{nosso_numero_boleto[5..7]}" \
|
112
|
+
"#{nosso_numero_boleto[1..1]}" \
|
113
|
+
"#{nosso_numero_boleto[8..16]}"
|
112
114
|
|
113
115
|
campo_livre.to_s +
|
114
116
|
campo_livre.modulo11(
|
@@ -1,20 +1,21 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
module Brcobranca
|
4
4
|
module Boleto
|
5
|
-
|
5
|
+
# Citibank
|
6
|
+
class Citibank < Base
|
6
7
|
# <b>REQUERIDO</b>: Portfolio
|
7
8
|
attr_accessor :portfolio
|
8
9
|
|
9
|
-
validates_length_of :convenio, is: 10, message: 'deve possuir 10 dígitos.' #Conta cosmos
|
10
|
+
validates_length_of :convenio, is: 10, message: 'deve possuir 10 dígitos.' # Conta cosmos
|
10
11
|
validates_length_of :nosso_numero, is: 11, message: 'deve possuir 11 dígitos.'
|
11
|
-
validates_length_of :portfolio, is: 3, message: 'deve possuir 3 dígitos.' #Portfolio
|
12
|
+
validates_length_of :portfolio, is: 3, message: 'deve possuir 3 dígitos.' # Portfolio
|
12
13
|
|
13
14
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
14
15
|
def initialize(campos = {})
|
15
16
|
campos = {
|
16
17
|
carteira: '3',
|
17
|
-
carteira_label: '3'
|
18
|
+
carteira_label: '3'
|
18
19
|
}.merge!(campos)
|
19
20
|
super(campos)
|
20
21
|
end
|
@@ -58,7 +59,7 @@ module Brcobranca
|
|
58
59
|
# Utiliza-se o [-1..-1] para retornar o último caracter
|
59
60
|
# @return [String]
|
60
61
|
def nosso_numero_dv
|
61
|
-
|
62
|
+
nosso_numero.to_s.modulo11(
|
62
63
|
multiplicador: (2..9).to_a,
|
63
64
|
mapeamento: { 10 => 0, 11 => 0 }
|
64
65
|
) { |total| 11 - (total % 11) }.to_s
|
@@ -86,7 +87,7 @@ module Brcobranca
|
|
86
87
|
# 123456 - Base (Posição 24 a 29)
|
87
88
|
# 78 - Sequência (Posição 30 a 31)
|
88
89
|
# 9 - Dígito Verificador (Posição 32
|
89
|
-
#
|
90
|
+
#
|
90
91
|
# @return [String]
|
91
92
|
def codigo_barras_segunda_parte
|
92
93
|
"#{carteira}#{portfolio}#{convenio[1..-1]}#{nosso_numero}#{nosso_numero_dv}"
|
@@ -1,7 +1,9 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Brcobranca
|
3
4
|
module Boleto
|
4
|
-
|
5
|
+
# CrediSIS
|
6
|
+
class Credisis < Base
|
5
7
|
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
6
8
|
validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
7
9
|
validates_length_of :carteira, is: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
@@ -84,7 +86,7 @@ module Brcobranca
|
|
84
86
|
"#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
|
85
87
|
end
|
86
88
|
|
87
|
-
#X – Módulo 11 do CPF/CNPJ (incluindo dígitos verificadores) do Beneficiário emissor
|
89
|
+
# X – Módulo 11 do CPF/CNPJ (incluindo dígitos verificadores) do Beneficiário emissor
|
88
90
|
# Obs.: Caso for CPF, utilizar 9 como limitador da multiplicação.
|
89
91
|
# Caso for CNPJ, utilizar 8 no limitador da multiplicação.
|
90
92
|
def documento_cedente_dv
|
@@ -95,7 +97,7 @@ module Brcobranca
|
|
95
97
|
|
96
98
|
# Segunda parte do código de barras.
|
97
99
|
# @return [String] 25 caracteres numéricos.
|
98
|
-
#1. - Número do Banco: “097”
|
100
|
+
# 1. - Número do Banco: “097”
|
99
101
|
# 2. - Moeda: “9”
|
100
102
|
# 3. - DV do Código de Barras, Baseado no Módulo 11 (Vide Anexo X).
|
101
103
|
# 4. - Fator de Vencimento do Boleto (Vide Anexo VII).
|
@@ -1,9 +1,10 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
module Brcobranca
|
4
4
|
module Boleto
|
5
|
-
|
6
|
-
|
5
|
+
# Banco HSBC
|
6
|
+
class Hsbc < Base
|
7
|
+
validates_inclusion_of :carteira, in: %w[CNR CSB], message: 'não existente para este banco.'
|
7
8
|
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
8
9
|
validates_length_of :nosso_numero, maximum: 13, message: 'deve ser menor ou igual a 13 dígitos.'
|
9
10
|
validates_length_of :conta_corrente, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
@@ -34,7 +35,7 @@ module Brcobranca
|
|
34
35
|
# boleto.nosso_numero_boleto #=> "0000000004042847"
|
35
36
|
def nosso_numero_boleto
|
36
37
|
case carteira
|
37
|
-
when 'CNR'
|
38
|
+
when 'CNR'
|
38
39
|
if data_vencimento.is_a?(Date)
|
39
40
|
self.codigo_servico = '4'
|
40
41
|
dia = data_vencimento.day.to_s.rjust(2, '0')
|
@@ -53,7 +54,7 @@ module Brcobranca
|
|
53
54
|
@nosso_numero
|
54
55
|
else
|
55
56
|
raise Brcobranca::NaoImplementado, 'Tipo de carteira não implementado.'
|
56
|
-
# TODO - Verificar outras carteiras.
|
57
|
+
# TODO: - Verificar outras carteiras.
|
57
58
|
# self.codigo_servico = "5"
|
58
59
|
# parte_1 = "#{self.nosso_numero}#{self.nosso_numero.modulo11(mapeamento: { 10 => 0 })}#{self.codigo_servico}"
|
59
60
|
# soma = parte_1.to_i + self.conta_corrente.to_i
|
@@ -84,6 +85,7 @@ module Brcobranca
|
|
84
85
|
"#{conta_corrente}#{nosso_numero}#{dias_julianos}2"
|
85
86
|
when 'CSB'
|
86
87
|
raise Brcobranca::NaoImplementado, 'Nosso número não definido.' unless @nosso_numero
|
88
|
+
|
87
89
|
"#{nosso_numero}#{agencia}#{conta_corrente}001"
|
88
90
|
else
|
89
91
|
raise Brcobranca::NaoImplementado, 'Tipo de carteira não implementado.'
|
@@ -1,9 +1,9 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
3
|
module Brcobranca
|
5
4
|
module Boleto
|
6
|
-
|
5
|
+
# Banco Itaú
|
6
|
+
class Itau < Base
|
7
7
|
# Usado somente em carteiras especiais com registro para complementar o número do cocumento
|
8
8
|
attr_reader :seu_numero
|
9
9
|
|
@@ -53,7 +53,7 @@ module Brcobranca
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def usa_seu_numero?
|
56
|
-
%w
|
56
|
+
%w[198 106 107 122 142 143 195 196].include?(carteira.to_s)
|
57
57
|
end
|
58
58
|
|
59
59
|
# Dígito verificador do nosso número.
|
@@ -65,7 +65,7 @@ module Brcobranca
|
|
65
65
|
#
|
66
66
|
# @return [String] 1 caracteres numéricos.
|
67
67
|
def nosso_numero_dv
|
68
|
-
if %w
|
68
|
+
if %w[112 126 131 146 150 168].include?(carteira)
|
69
69
|
"#{carteira}#{nosso_numero}".modulo10
|
70
70
|
else
|
71
71
|
"#{agencia}#{conta_corrente}#{carteira}#{nosso_numero}".modulo10
|
@@ -1,14 +1,14 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
3
|
module Brcobranca
|
5
4
|
module Boleto
|
6
|
-
|
5
|
+
# Banco Safra
|
6
|
+
class Safra < Base
|
7
7
|
# <b>REQUERIDO</b>: Dígito da Agência
|
8
8
|
attr_accessor :agencia_dv
|
9
9
|
# <b>REQUERIDO</b>: Dígito da conta
|
10
10
|
attr_accessor :conta_corrente_dv
|
11
|
-
|
11
|
+
|
12
12
|
validates_presence_of :agencia_dv, :conta_corrente_dv, message: 'não pode estar em branco.'
|
13
13
|
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
14
14
|
validates_length_of :nosso_numero, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
@@ -1,10 +1,12 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
#
|
3
4
|
# @author Kivanio Barbosa
|
4
5
|
# @author Ronaldo Araujo
|
5
6
|
module Brcobranca
|
6
7
|
module Boleto
|
7
|
-
|
8
|
+
# Banco Santander
|
9
|
+
class Santander < Base
|
8
10
|
validates_presence_of :convenio, message: 'não pode estar em branco.'
|
9
11
|
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
10
12
|
validates_length_of :convenio, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
@@ -1,8 +1,9 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
module Brcobranca
|
4
4
|
module Boleto
|
5
|
-
|
5
|
+
# Sicoob (Bancoob)
|
6
|
+
class Sicoob < Base
|
6
7
|
validates_length_of :agencia, maximum: 4, message: 'deve ser menor ou igual a 4 dígitos.'
|
7
8
|
validates_length_of :conta_corrente, maximum: 8, message: 'deve ser menor ou igual a 8 dígitos.'
|
8
9
|
validates_length_of :nosso_numero, maximum: 7, message: 'deve ser menor ou igual a 7 dígitos.'
|
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
#
|
3
4
|
#
|
4
5
|
# Sicredi
|
@@ -6,7 +7,8 @@
|
|
6
7
|
#
|
7
8
|
module Brcobranca
|
8
9
|
module Boleto
|
9
|
-
|
10
|
+
# Banco SICREDI
|
11
|
+
class Sicredi < Base
|
10
12
|
# <b>REQUERIDO</b>: Código do posto da cooperativa de crédito
|
11
13
|
attr_accessor :posto
|
12
14
|
|
@@ -22,7 +24,8 @@ module Brcobranca
|
|
22
24
|
# Obs.: O SICREDI não validará este campo.
|
23
25
|
validates_length_of :carteira, maximum: 1, message: 'deve ser menor ou igual a 1 dígitos.'
|
24
26
|
validates_length_of :posto, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
25
|
-
validates_length_of :byte_idt, is: 1,
|
27
|
+
validates_length_of :byte_idt, is: 1,
|
28
|
+
message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
|
26
29
|
validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
27
30
|
|
28
31
|
# Nova instancia do Bradesco
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
begin
|
4
4
|
require 'rghost'
|
@@ -24,6 +24,7 @@ module Brcobranca
|
|
24
24
|
extend self
|
25
25
|
include RGhost unless include?(RGhost)
|
26
26
|
RGhost::Config::GS[:external_encoding] = Brcobranca.configuration.external_encoding
|
27
|
+
RGhost::Config::GS[:default_params] << '-dNOSAFER'
|
27
28
|
|
28
29
|
# Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
29
30
|
#
|
@@ -79,7 +80,9 @@ module Brcobranca
|
|
79
80
|
modelo_generico_rodape(doc, boleto)
|
80
81
|
|
81
82
|
# Gerando codigo de barra com rghost_barcode
|
82
|
-
|
83
|
+
if boleto.codigo_barras
|
84
|
+
doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm", y: "#{@y - 1.67} cm")
|
85
|
+
end
|
83
86
|
|
84
87
|
# Gerando stream
|
85
88
|
formato = (options.delete(:formato) || Brcobranca.configuration.formato)
|
@@ -107,7 +110,9 @@ module Brcobranca
|
|
107
110
|
modelo_generico_rodape(doc, boleto)
|
108
111
|
|
109
112
|
# Gerando codigo de barra com rghost_barcode
|
110
|
-
|
113
|
+
if boleto.codigo_barras
|
114
|
+
doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.3 cm', x: "#{@x - 1.7} cm", y: "#{@y - 1.67} cm")
|
115
|
+
end
|
111
116
|
|
112
117
|
# Cria nova página se não for o último boleto
|
113
118
|
doc.next_page unless index == boletos.length - 1
|
@@ -134,6 +139,7 @@ module Brcobranca
|
|
134
139
|
@y += y
|
135
140
|
doc.moveto x: "#{@x} cm", y: "#{@y} cm"
|
136
141
|
end
|
142
|
+
|
137
143
|
# Monta o cabeçalho do layout do boleto
|
138
144
|
def modelo_generico_cabecalho(doc, boleto)
|
139
145
|
# INICIO Primeira parte do BOLETO
|
@@ -171,7 +177,7 @@ module Brcobranca
|
|
171
177
|
doc.show boleto.quantidade
|
172
178
|
|
173
179
|
move_more(doc, 2, 0)
|
174
|
-
doc.show
|
180
|
+
doc.show boleto.documento_cedente.formata_documento.to_s
|
175
181
|
|
176
182
|
move_more(doc, 3.8, 0)
|
177
183
|
doc.show boleto.data_vencimento.to_s_br
|
@@ -183,7 +189,7 @@ module Brcobranca
|
|
183
189
|
doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
|
184
190
|
|
185
191
|
move_more(doc, 0, -0.3)
|
186
|
-
doc.show
|
192
|
+
doc.show boleto.sacado_endereco.to_s
|
187
193
|
if boleto.demonstrativo
|
188
194
|
doc.text_area boleto.demonstrativo, width: '18.5 cm', text_align: :left, x: "#{@x - 0.8} cm", y: "#{@y - 0.9} cm", row_height: '0.4 cm'
|
189
195
|
end
|
@@ -224,7 +230,7 @@ module Brcobranca
|
|
224
230
|
move_more(doc, 15.8, 0)
|
225
231
|
doc.show boleto.agencia_conta_boleto
|
226
232
|
|
227
|
-
move_more(doc, -15.8
|
233
|
+
move_more(doc, -15.8, -0.9)
|
228
234
|
doc.show boleto.data_documento.to_s_br if boleto.data_documento
|
229
235
|
|
230
236
|
move_more(doc, 3.5, 0)
|
@@ -279,20 +285,19 @@ module Brcobranca
|
|
279
285
|
doc.show boleto.instrucao6
|
280
286
|
end
|
281
287
|
|
282
|
-
|
283
288
|
move_more(doc, 0.5, -1.9)
|
284
|
-
|
289
|
+
if boleto.sacado && boleto.sacado_documento
|
290
|
+
doc.show "#{boleto.sacado} - CPF/CNPJ: #{boleto.sacado_documento.formata_documento}"
|
291
|
+
end
|
285
292
|
|
286
293
|
move_more(doc, 0, -0.4)
|
287
|
-
doc.show
|
294
|
+
doc.show boleto.sacado_endereco.to_s
|
288
295
|
|
289
296
|
move_more(doc, 1.2, -0.93)
|
290
|
-
if boleto.avalista && boleto.avalista_documento
|
291
|
-
doc.show "#{boleto.avalista} - #{boleto.avalista_documento}"
|
292
|
-
end
|
297
|
+
doc.show "#{boleto.avalista} - #{boleto.avalista_documento}" if boleto.avalista && boleto.avalista_documento
|
293
298
|
# FIM Segunda parte do BOLETO
|
294
299
|
end
|
295
|
-
end
|
300
|
+
end
|
296
301
|
end
|
297
302
|
end
|
298
303
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
begin
|
4
4
|
require 'rghost'
|
@@ -24,6 +24,7 @@ module Brcobranca
|
|
24
24
|
extend self
|
25
25
|
include RGhost unless include?(RGhost)
|
26
26
|
RGhost::Config::GS[:external_encoding] = Brcobranca.configuration.external_encoding
|
27
|
+
RGhost::Config::GS[:default_params] << '-dNOSAFER'
|
27
28
|
|
28
29
|
# Gera o boleto em usando o formato desejado [:pdf, :jpg, :tif, :png, :ps, :laserjet, ... etc]
|
29
30
|
#
|
@@ -52,7 +53,7 @@ module Brcobranca
|
|
52
53
|
def method_missing(m, *args)
|
53
54
|
method = m.to_s
|
54
55
|
if method.start_with?('to_')
|
55
|
-
modelo_carne(self, (args.first || {}).merge!(formato: method[3
|
56
|
+
modelo_carne(self, (args.first || {}).merge!(formato: method[3..]))
|
56
57
|
else
|
57
58
|
super
|
58
59
|
end
|
@@ -116,12 +117,12 @@ 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
|
-
# Cria nova página se não for o último boleto
|
121
|
-
doc.next_page unless index == boletos.length - 1
|
120
|
+
next unless curr_page_position >= max_per_page # maximo 3 boletos por pagina
|
122
121
|
|
123
|
-
|
124
|
-
|
122
|
+
# Cria nova página se não for o último boleto
|
123
|
+
doc.next_page unless index == boletos.length - 1
|
124
|
+
|
125
|
+
curr_page_position = 0 # reinicia contador por página
|
125
126
|
end
|
126
127
|
|
127
128
|
# Gerando stream
|
@@ -202,7 +203,7 @@ module Brcobranca
|
|
202
203
|
|
203
204
|
# sacado
|
204
205
|
doc.moveto x: colunas[0], y: linhas[13]
|
205
|
-
doc.show
|
206
|
+
doc.show boleto.sacado.to_s
|
206
207
|
end
|
207
208
|
|
208
209
|
# aplica dados do lado direito
|
@@ -297,17 +298,22 @@ module Brcobranca
|
|
297
298
|
|
298
299
|
# Sacado
|
299
300
|
doc.moveto x: colunas[2], y: linhas[11]
|
300
|
-
|
301
|
+
if boleto.sacado && boleto.sacado_documento
|
302
|
+
doc.show "#{boleto.sacado} - #{boleto.sacado_documento.formata_documento}"
|
303
|
+
end
|
301
304
|
|
302
305
|
# Sacado endereço
|
303
306
|
doc.moveto x: colunas[2], y: linhas[12]
|
304
|
-
doc.show
|
307
|
+
doc.show boleto.sacado_endereco.to_s
|
305
308
|
|
306
309
|
# codigo de barras
|
307
310
|
# Gerando codigo de barra com rghost_barcode
|
308
|
-
|
311
|
+
if boleto.codigo_barras
|
312
|
+
doc.barcode_interleaved2of5(boleto.codigo_barras, width: '10.3 cm', height: '1.2 cm', x: colunas[2],
|
313
|
+
y: linhas[14])
|
314
|
+
end
|
309
315
|
end
|
310
|
-
end
|
316
|
+
end
|
311
317
|
end
|
312
318
|
end
|
313
319
|
end
|
@@ -1,140 +1,98 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
3
|
module Brcobranca
|
4
4
|
module Boleto
|
5
|
-
|
6
|
-
|
7
|
-
attr_accessor :
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
validates_length_of :
|
14
|
-
|
15
|
-
# Carteira
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
validates_length_of :posto, maximum: 2, message: 'deve ser menor ou igual a 2 dígitos.'
|
21
|
-
validates_length_of :byte_idt, is: 1, message: 'deve ser 1 se o numero foi gerado pela agencia ou 2-9 se foi gerado pelo beneficiário'
|
22
|
-
validates_length_of :convenio, maximum: 5, message: 'deve ser menor ou igual a 5 dígitos.'
|
5
|
+
# Banco Unicred
|
6
|
+
class Unicred < Base
|
7
|
+
attr_accessor :conta_corrente_dv
|
8
|
+
|
9
|
+
validates_length_of :agencia, maximum: 4, message:
|
10
|
+
'deve ser menor ou igual a 4 dígitos.'
|
11
|
+
validates_length_of :nosso_numero, maximum: 10, message:
|
12
|
+
'deve ser menor ou igual a 10 dígitos.'
|
13
|
+
validates_length_of :conta_corrente, maximum: 9, message:
|
14
|
+
'deve ser menor ou igual a 9 dígitos.'
|
15
|
+
# Carteira com 2(dois) caracteres ( SEMPRE 21 )
|
16
|
+
validates_length_of :carteira, maximum: 2, message:
|
17
|
+
'deve ser menor ou igual a 2 dígitos.'
|
18
|
+
validates_length_of :conta_corrente_dv, maximum: 1, message:
|
19
|
+
'deve ser menor ou igual a 1 dígitos.'
|
23
20
|
|
24
21
|
# Nova instancia do Unicred
|
25
22
|
# @param (see Brcobranca::Boleto::Base#initialize)
|
26
23
|
def initialize(campos = {})
|
27
|
-
campos = {
|
28
|
-
|
29
|
-
local_pagamento: 'PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED'
|
24
|
+
campos = {
|
25
|
+
carteira: '21',
|
26
|
+
local_pagamento: 'PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DA UNICRED',
|
27
|
+
aceite: 'N'
|
30
28
|
}.merge!(campos)
|
31
29
|
super(campos)
|
32
30
|
end
|
33
31
|
|
34
|
-
# Codigo do banco emissor
|
32
|
+
# Codigo do banco emissor 3 digitos sempre
|
35
33
|
#
|
36
|
-
# @return [String] 3 caracteres
|
34
|
+
# @return [String] 3 caracteres numericos.
|
37
35
|
def banco
|
38
|
-
'
|
39
|
-
end
|
40
|
-
|
41
|
-
# Carteira
|
42
|
-
#
|
43
|
-
# @return [String] 2 caracteres numéricos.
|
44
|
-
def carteira=(valor)
|
45
|
-
@carteira = valor.to_s.rjust(1, '0') if valor
|
36
|
+
'136'
|
46
37
|
end
|
47
38
|
|
48
|
-
#
|
49
|
-
#
|
50
|
-
|
51
|
-
|
52
|
-
@posto = valor.to_s.rjust(2, '0') if valor
|
39
|
+
# Agência do cliente junto ao banco.
|
40
|
+
# @return [String] 4 caracteres numéricos.
|
41
|
+
def agencia=(valor)
|
42
|
+
@agencia = valor.to_s.rjust(4, '0') if valor
|
53
43
|
end
|
54
44
|
|
55
|
-
#
|
56
|
-
# @return [String]
|
45
|
+
# Conta corrente
|
46
|
+
# @return [String] 9 caracteres numéricos.
|
57
47
|
def conta_corrente=(valor)
|
58
|
-
@conta_corrente = valor.to_s.rjust(
|
48
|
+
@conta_corrente = valor.to_s.rjust(9, '0') if valor
|
59
49
|
end
|
60
50
|
|
61
|
-
#
|
62
|
-
# @return [String]
|
63
|
-
def
|
64
|
-
@
|
51
|
+
# Número seqüencial utilizado para identificar o boleto.
|
52
|
+
# @return [String] 10 caracteres numéricos.
|
53
|
+
def nosso_numero=(valor)
|
54
|
+
@nosso_numero = valor.to_s.rjust(10, '0') if valor
|
65
55
|
end
|
66
56
|
|
67
|
-
# Dígito verificador do
|
68
|
-
#
|
69
|
-
|
70
|
-
|
57
|
+
# Dígito verificador do nosso número.
|
58
|
+
#
|
59
|
+
# @return [String] 1 caracteres numéricos.
|
60
|
+
def nosso_numero_dv
|
61
|
+
nosso_numero.to_s.modulo11(mapeamento: {
|
62
|
+
10 => 0,
|
63
|
+
11 => 0
|
64
|
+
})
|
71
65
|
end
|
72
66
|
|
73
67
|
# Nosso número para exibir no boleto.
|
74
|
-
# O campo Nosso Número deve ser apresentado no formato AA/BXXXXX-D, onde:
|
75
|
-
# AA = Ano atual
|
76
|
-
# B = Byte que pode ser de 2 a 9. Somente será 1 se forem boletos pré-impressos.
|
77
|
-
# XXXXX = número sequencial
|
78
|
-
# D = dígito verificador calculado
|
79
68
|
# @return [String]
|
80
69
|
# @example
|
81
|
-
# boleto.nosso_numero_boleto #=> "
|
70
|
+
# boleto.nosso_numero_boleto #=> "12345678-4"
|
82
71
|
def nosso_numero_boleto
|
83
|
-
"#{
|
84
|
-
end
|
85
|
-
|
86
|
-
def nosso_numero_codigo_barra
|
87
|
-
nosso_numero_boleto.gsub(/\D/, '')
|
88
|
-
end
|
89
|
-
|
90
|
-
def nosso_numero_with_byte_idt
|
91
|
-
"#{data_processamento.strftime('%y')}#{byte_idt}#{nosso_numero}"
|
92
|
-
end
|
93
|
-
|
94
|
-
# Número seqüencial utilizado para identificar o boleto.
|
95
|
-
# @return [String] 5 caracteres numéricos.
|
96
|
-
def nosso_numero=(valor)
|
97
|
-
@nosso_numero = valor.to_s.rjust(5, '0') if valor
|
98
|
-
end
|
99
|
-
|
100
|
-
# Dígito verificador do nosso número
|
101
|
-
# @return [Integer] 1 caracteres numéricos.
|
102
|
-
def nosso_numero_dv
|
103
|
-
"#{agencia_posto_conta}#{nosso_numero_with_byte_idt}"
|
104
|
-
.modulo11(mapeamento: mapeamento_para_modulo_11)
|
72
|
+
"#{nosso_numero}-#{nosso_numero_dv}"
|
105
73
|
end
|
106
74
|
|
75
|
+
# Agência + conta corrente do cliente para exibir no boleto.
|
76
|
+
# @return [String]
|
77
|
+
# @example
|
78
|
+
# boleto.agencia_conta_boleto #=> "08111 / 536788-8"
|
107
79
|
def agencia_conta_boleto
|
108
|
-
"#{agencia}
|
109
|
-
end
|
110
|
-
|
111
|
-
def agencia_posto_conta
|
112
|
-
"#{agencia}#{posto}#{convenio}"
|
80
|
+
"#{agencia} / #{conta_corrente}-#{conta_corrente_dv}"
|
113
81
|
end
|
114
82
|
|
115
83
|
# Segunda parte do código de barras.
|
116
|
-
# Posição
|
117
|
-
#
|
118
|
-
#
|
119
|
-
#
|
120
|
-
#
|
121
|
-
#
|
122
|
-
#
|
123
|
-
#
|
124
|
-
#
|
125
|
-
#
|
84
|
+
# Posição | Tamanho | Picture | Conteúdo
|
85
|
+
# 01-03 | 3 | 9(3) | Identificação da instituição financeira - 136
|
86
|
+
# 04-04 | 1 | 9 | Código moeda (9 – Real)
|
87
|
+
# 05-05 | 1 | 9 | Dígito verificador do código de barras (DV)
|
88
|
+
# 06-19 | 14 | 9(4) | Posições 06 a 09 – fator de vencimento
|
89
|
+
# | | 9(8)v99 | Posições 10 a 19 – valor nominal do título
|
90
|
+
# 20-23 | 4 | 4 | Agência BENEFICIÁRIO (Sem o dígito verificador)
|
91
|
+
# 24-33 | 10 | 10 | Conta do BENEFICIÁRIO (Com o dígito verificador)
|
92
|
+
# 34–44 | 11 | 11 | Nosso Número (Com o dígito verificador)
|
93
|
+
# @return [String] 25 caracteres numéricos.
|
126
94
|
def codigo_barras_segunda_parte
|
127
|
-
|
128
|
-
campo_livre + campo_livre.modulo11(mapeamento: mapeamento_para_modulo_11).to_s
|
129
|
-
end
|
130
|
-
|
131
|
-
private
|
132
|
-
|
133
|
-
def mapeamento_para_modulo_11
|
134
|
-
{
|
135
|
-
10 => 0,
|
136
|
-
11 => 0
|
137
|
-
}
|
95
|
+
"#{agencia}#{conta_corrente}#{conta_corrente_dv}#{nosso_numero}#{nosso_numero_dv}"
|
138
96
|
end
|
139
97
|
end
|
140
98
|
end
|