br_boleto 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +1 -1
- data/Gemfile.lock +2 -2
- data/br_boleto.gemspec +2 -3
- data/lib/br_boleto/association/have_conta.rb +27 -25
- data/lib/br_boleto/association/have_pagador.rb +2 -0
- data/lib/br_boleto/boleto/base.rb +0 -4
- data/lib/br_boleto/boleto/bradesco.rb +80 -0
- data/lib/br_boleto/boleto/caixa.rb +10 -12
- data/lib/br_boleto/boleto/cecred.rb +76 -0
- data/lib/br_boleto/boleto/itau.rb +114 -0
- data/lib/br_boleto/boleto/sicredi.rb +101 -0
- data/lib/br_boleto/boleto/unicred.rb +21 -0
- data/lib/br_boleto/conta/base.rb +28 -3
- data/lib/br_boleto/conta/bradesco.rb +120 -0
- data/lib/br_boleto/conta/caixa.rb +22 -12
- data/lib/br_boleto/conta/cecred.rb +67 -0
- data/lib/br_boleto/conta/itau.rb +199 -0
- data/lib/br_boleto/conta/sicoob.rb +40 -11
- data/lib/br_boleto/conta/sicredi.rb +171 -0
- data/lib/br_boleto/conta/unicred.rb +38 -0
- data/lib/br_boleto/helper/default_codes.rb +535 -26
- data/lib/br_boleto/pagador.rb +4 -0
- data/lib/br_boleto/remessa/base.rb +2 -0
- data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
- data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
- data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
- data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
- data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
- data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
- data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
- data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
- data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
- data/lib/br_boleto/remessa/pagamento.rb +93 -43
- data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
- data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
- data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
- data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
- data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
- data/lib/br_boleto/retorno/pagamento.rb +18 -4
- data/lib/br_boleto/version.rb +2 -2
- data/lib/br_boleto.rb +28 -0
- data/lib/config/locales/br-boleto-en.yml +1 -0
- data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
- data/test/br_boleto/association/have_pagador_test.rb +24 -0
- data/test/br_boleto/boleto/bradesco_test.rb +125 -0
- data/test/br_boleto/boleto/caixa_test.rb +18 -18
- data/test/br_boleto/boleto/cecred_test.rb +115 -0
- data/test/br_boleto/boleto/itau_test.rb +160 -0
- data/test/br_boleto/boleto/sicredi_test.rb +136 -0
- data/test/br_boleto/boleto/unicred_test.rb +128 -0
- data/test/br_boleto/conta/base_test.rb +298 -3
- data/test/br_boleto/conta/bradesco_test.rb +142 -0
- data/test/br_boleto/conta/caixa_test.rb +7 -6
- data/test/br_boleto/conta/cecred_test.rb +119 -0
- data/test/br_boleto/conta/itau_test.rb +189 -0
- data/test/br_boleto/conta/sicoob_test.rb +32 -2
- data/test/br_boleto/conta/sicredi_test.rb +180 -0
- data/test/br_boleto/conta/unicred_test.rb +154 -0
- data/test/br_boleto/pagador_test.rb +22 -2
- data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
- data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
- data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
- data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
- data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
- data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
- data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
- data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
- data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
- data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
- data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
- data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
- data/test/br_boleto/retorno/pagamento_test.rb +7 -0
- data/test/factories/boleto/boleto_bradesco.rb +18 -0
- data/test/factories/boleto/boleto_cecred.rb +18 -0
- data/test/factories/boleto/boleto_itau.rb +18 -0
- data/test/factories/boleto/boleto_sicredi.rb +18 -0
- data/test/factories/boleto/boleto_unicred.rb +18 -0
- data/test/factories/conta/bradesco.rb +16 -0
- data/test/factories/conta/caixa.rb +2 -1
- data/test/factories/conta/cecred.rb +15 -0
- data/test/factories/conta/itau.rb +15 -0
- data/test/factories/conta/sicoob.rb +2 -1
- data/test/factories/conta/sicredi.rb +15 -0
- data/test/factories/conta/unicred.rb +15 -0
- data/test/factories/remessa/cnab240/bradesco.rb +9 -0
- data/test/factories/remessa/cnab240/cecred.rb +9 -0
- data/test/factories/remessa/cnab240/itau.rb +9 -0
- data/test/factories/remessa/cnab240/sicredi.rb +9 -0
- data/test/factories/remessa/cnab240/unicred.rb +9 -0
- data/test/factories/remessa/cnab400/bradesco.rb +8 -0
- data/test/factories/remessa/cnab400/itau.rb +8 -0
- data/test/factories/remessa/cnab400/sicredi.rb +8 -0
- data/test/factories/remessa/cnab400/unicred.rb +8 -0
- data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
- data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
- data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
- data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
- data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
- data/test/fixtures/retorno/cnab400/itau.ret +54 -0
- metadata +138 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 020fd56f017584d8546fcf0cca4b7c5303fa9a3e
|
4
|
+
data.tar.gz: 2c646b4f9b5e04dddd16a3887e35e0a0c01e4324
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c2d14b4e5d366fb891681d90d841cf91e2b03101da60faad9932b1b39ee5384d79cd79a125a96f5511f88ca845c25ff9e719bc4e950aef443fd5a6cd4e832e1
|
7
|
+
data.tar.gz: e574dbdf4449c629f57248932a082199c03cc30bf4de4bd59452c86f08987fa9e5252574978c39405ecb07e7e4b6e3272d73b30c83eff364e8d5048e60a77e24
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
data/br_boleto.gemspec
CHANGED
@@ -4,7 +4,7 @@ require File.expand_path('../lib/br_boleto/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.name = "br_boleto"
|
6
6
|
gem.version = BrBoleto::Version::CURRENT
|
7
|
-
gem.licenses =
|
7
|
+
gem.licenses = 'MIT'
|
8
8
|
gem.summary = %q{Emissão de Boletos Bancários em Ruby}
|
9
9
|
gem.description = %q{Emissão de Boletos Bancários em Ruby}
|
10
10
|
gem.authors = ["Bruno M. Mergen"]
|
@@ -19,12 +19,11 @@ Gem::Specification.new do |gem|
|
|
19
19
|
# gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
20
20
|
gem.require_paths = ["lib"]
|
21
21
|
|
22
|
-
gem.required_ruby_version = '~> 2.
|
22
|
+
gem.required_ruby_version = ['~> 2.2', '~> 2.3']
|
23
23
|
|
24
24
|
|
25
25
|
gem.add_dependency "rake", '>= 0.8.7'
|
26
26
|
gem.add_dependency "activesupport", '~> 4.2'
|
27
27
|
gem.add_dependency "activemodel", '~> 4.2'
|
28
28
|
gem.add_dependency 'unidecoder', '~> 1.1'
|
29
|
-
|
30
29
|
end
|
@@ -33,33 +33,34 @@ module BrBoleto
|
|
33
33
|
|
34
34
|
####################### VALIDAÇÔES DA CONTA #######################
|
35
35
|
# Devem ser sobrescrita a cada classe que utilizar, pois pode variar
|
36
|
-
def valid_conta_corrente_length;
|
37
|
-
def valid_conta_corrente_minimum;
|
38
|
-
def valid_conta_corrente_maximum;
|
39
|
-
def valid_conta_corrente_required;
|
40
|
-
def valid_modalidade_length;
|
41
|
-
def valid_modalidade_minimum;
|
42
|
-
def valid_modalidade_maximum;
|
43
|
-
def valid_modalidade_required;
|
44
|
-
def valid_codigo_cedente_length;
|
45
|
-
def valid_codigo_cedente_minimum;
|
46
|
-
def valid_codigo_cedente_maximum;
|
47
|
-
def valid_codigo_cedente_required;
|
48
|
-
def valid_codigo_cedente_inclusion;
|
49
|
-
def valid_endereco_required;
|
50
|
-
def valid_carteira_length;
|
51
|
-
def valid_carteira_minimum;
|
52
|
-
def valid_carteira_maximum;
|
53
|
-
def valid_carteira_required;
|
54
|
-
def valid_convenio_length;
|
55
|
-
def valid_convenio_minimum;
|
56
|
-
def valid_convenio_maximum;
|
57
|
-
def valid_convenio_required;
|
58
|
-
def valid_modalidade_inclusion;
|
59
|
-
def valid_carteira_inclusion;
|
60
|
-
def valid_convenio_inclusion;
|
36
|
+
def valid_conta_corrente_length; end
|
37
|
+
def valid_conta_corrente_minimum; end
|
38
|
+
def valid_conta_corrente_maximum; end
|
39
|
+
def valid_conta_corrente_required; end
|
40
|
+
def valid_modalidade_length; end
|
41
|
+
def valid_modalidade_minimum; end
|
42
|
+
def valid_modalidade_maximum; end
|
43
|
+
def valid_modalidade_required; end
|
44
|
+
def valid_codigo_cedente_length; end
|
45
|
+
def valid_codigo_cedente_minimum; end
|
46
|
+
def valid_codigo_cedente_maximum; end
|
47
|
+
def valid_codigo_cedente_required; end
|
48
|
+
def valid_codigo_cedente_inclusion; end
|
49
|
+
def valid_endereco_required; end
|
50
|
+
def valid_carteira_length; end
|
51
|
+
def valid_carteira_minimum; end
|
52
|
+
def valid_carteira_maximum; end
|
53
|
+
def valid_carteira_required; end
|
54
|
+
def valid_convenio_length; end
|
55
|
+
def valid_convenio_minimum; end
|
56
|
+
def valid_convenio_maximum; end
|
57
|
+
def valid_convenio_required; end
|
58
|
+
def valid_modalidade_inclusion; end
|
59
|
+
def valid_carteira_inclusion; end
|
60
|
+
def valid_convenio_inclusion; end
|
61
61
|
def valid_versao_aplicativo_required; end # Banco da Caixa
|
62
62
|
|
63
|
+
|
63
64
|
def set_regras_tamanho_e_validations!
|
64
65
|
@conta ||= conta_class.new()
|
65
66
|
@conta.valid_conta_corrente_length = valid_conta_corrente_length if "#{valid_conta_corrente_length}".present?
|
@@ -95,6 +96,7 @@ module BrBoleto
|
|
95
96
|
@conta.valid_convenio_inclusion = valid_convenio_inclusion if "#{valid_convenio_inclusion}".present?
|
96
97
|
|
97
98
|
@conta.valid_versao_aplicativo_required = valid_versao_aplicativo_required if "#{valid_versao_aplicativo_required}".present?
|
99
|
+
|
98
100
|
end
|
99
101
|
|
100
102
|
def conta_validations
|
@@ -25,8 +25,10 @@ module BrBoleto
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def valid_endereco_required; end
|
28
|
+
def valid_avalista_required; end
|
28
29
|
|
29
30
|
def pagador_validations
|
31
|
+
pagador.valid_avalista_required = valid_avalista_required if "#{valid_avalista_required}".present?
|
30
32
|
pagador.valid_endereco_required = valid_endereco_required if "#{valid_endereco_required}".present?
|
31
33
|
if pagador.invalid?
|
32
34
|
pagador.errors.full_messages.each do |msg|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module BrBoleto
|
3
|
+
module Boleto
|
4
|
+
# Implementação de emissão de boleto bancário pelo Banco Bradesco.
|
5
|
+
#
|
6
|
+
# === Documentação Implementada
|
7
|
+
#
|
8
|
+
# A documentação na qual essa implementação foi baseada está localizada na pasta
|
9
|
+
# 'documentacoes_dos_boletos/bradesco' dentro dessa biblioteca.
|
10
|
+
class Bradesco < Base
|
11
|
+
def conta_class
|
12
|
+
BrBoleto::Conta::Bradesco
|
13
|
+
end
|
14
|
+
|
15
|
+
################# VALIDAÇÕES DINÂMICAS #################
|
16
|
+
def valid_numero_documento_maximum
|
17
|
+
11
|
18
|
+
end
|
19
|
+
|
20
|
+
def valid_carteira_inclusion
|
21
|
+
%w[06 09 19 21 22]
|
22
|
+
end
|
23
|
+
|
24
|
+
# Tamanho máximo para o codigo_cedente/Convênio
|
25
|
+
def valid_convenio_maximum
|
26
|
+
7
|
27
|
+
end
|
28
|
+
|
29
|
+
# Tamanho máximo de uma conta corrente no Banco Bradesco
|
30
|
+
def valid_conta_corrente_maximum
|
31
|
+
7
|
32
|
+
end
|
33
|
+
|
34
|
+
# codigo_cedente/Convênio deve ser obrigatório
|
35
|
+
def valid_convenio_required
|
36
|
+
true
|
37
|
+
end
|
38
|
+
##########################################################
|
39
|
+
|
40
|
+
# Conforme descrito na documentação, o valor que deve constar em local do pagamento é
|
41
|
+
# "PAGÁVEL PREFERENCIALMENTE NA REDE BRADESCO OU NO BRADESCO EXPRESSO"
|
42
|
+
def default_values
|
43
|
+
super.merge({
|
44
|
+
:local_pagamento => 'PAGÁVEL PREFERENCIALMENTE NA REDE BRADESCO OU NO BRADESCO EXPRESSO'
|
45
|
+
})
|
46
|
+
end
|
47
|
+
|
48
|
+
# Nosso Número descrito na documentação (Pag. 36).
|
49
|
+
# Carteira com 2 (dois) caracteres / N.Número com 11 (onze) caracteres + digito.
|
50
|
+
# Exemplo: 99 / 99999999999-D
|
51
|
+
def nosso_numero
|
52
|
+
"#{conta.carteira}/#{numero_documento}-#{digito_verificador_nosso_numero}"
|
53
|
+
end
|
54
|
+
|
55
|
+
# Para o cálculo do dígito, será necessário acrescentar o número da carteira à esquerda
|
56
|
+
# antes do Nosso Número (número do documento), e aplicar o módulo 11, com fatores de 2 a 7.
|
57
|
+
# @return [String] Retorno do cálculo do módulo 11 na base 7 (2,3,4,5,6,7)
|
58
|
+
def digito_verificador_nosso_numero
|
59
|
+
BrBoleto::Calculos::Modulo11FatorDe2a7.new("#{conta.carteira}#{numero_documento}")
|
60
|
+
end
|
61
|
+
|
62
|
+
# === Código de barras do banco
|
63
|
+
#
|
64
|
+
# ___________________________________________________________________________________________________
|
65
|
+
# | Posição | Tamanho | Descrição |
|
66
|
+
# |----------|---------|-----------------------------------------------------------------------------|
|
67
|
+
# | 20-23 | 04 | Agência (Sem o digito, completar com zeros a esquerda se necessário) |
|
68
|
+
# | 24-25 | 02 | Carteira |
|
69
|
+
# | 26-36 | 11 | Número do Documento - Número do Nosso Número (Sem o digito verificador) |
|
70
|
+
# | 37-43 | 07 | Conta Corrente (Sem o digito, completar com zeros a esquerda se necessário) |
|
71
|
+
# | 44 | 01 | Zero |
|
72
|
+
# ----------------------------------------------------------------------------------------------------
|
73
|
+
#
|
74
|
+
def codigo_de_barras_do_banco
|
75
|
+
conta_corrente = "#{conta.conta_corrente}".adjust_size_to(7, '0', :right)
|
76
|
+
"#{conta.agencia}#{conta.carteira}#{numero_documento}#{conta_corrente}0"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -29,8 +29,12 @@ module BrBoleto
|
|
29
29
|
end
|
30
30
|
|
31
31
|
################# VALIDAÇÕES DINÂMICAS #################
|
32
|
+
|
33
|
+
# O valor do numero do documento esta diferente em alguns lugares
|
34
|
+
# da documentação da CAIXA (11 e 15), foi deixado o valor 11 e
|
35
|
+
# preechido 4 posições com '0' onde usava o valor 15
|
32
36
|
def valid_numero_documento_maximum
|
33
|
-
|
37
|
+
11
|
34
38
|
end
|
35
39
|
|
36
40
|
# Tamanho máximo para o codigo_cedente/Convênio
|
@@ -49,7 +53,8 @@ module BrBoleto
|
|
49
53
|
end
|
50
54
|
def valid_carteira_inclusion
|
51
55
|
%w{14 24}
|
52
|
-
end
|
56
|
+
end
|
57
|
+
|
53
58
|
##########################################################
|
54
59
|
|
55
60
|
# Conforme descrito na documentação, o valor que deve constar em local do pagamento é
|
@@ -62,7 +67,7 @@ module BrBoleto
|
|
62
67
|
end
|
63
68
|
|
64
69
|
def digito_verificador_nosso_numero
|
65
|
-
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new("#{conta.carteira}#{numero_documento}")
|
70
|
+
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new("#{conta.carteira}0000#{numero_documento}")
|
66
71
|
end
|
67
72
|
|
68
73
|
# Mostra o campo nosso número calculando o dígito verificador do nosso número.
|
@@ -70,7 +75,7 @@ module BrBoleto
|
|
70
75
|
# @return [String]
|
71
76
|
#
|
72
77
|
def nosso_numero
|
73
|
-
"#{conta.carteira}#{numero_documento}-#{digito_verificador_nosso_numero}"
|
78
|
+
"#{conta.carteira}0000#{numero_documento}-#{digito_verificador_nosso_numero}"
|
74
79
|
end
|
75
80
|
|
76
81
|
|
@@ -86,13 +91,6 @@ module BrBoleto
|
|
86
91
|
nosso_numero[8..16]
|
87
92
|
end
|
88
93
|
|
89
|
-
# O Tipo de cobrança é o 1° caracter da carteira
|
90
|
-
#
|
91
|
-
# @return [String]
|
92
|
-
#
|
93
|
-
def tipo_cobranca
|
94
|
-
conta.carteira[0] if conta.carteira.present?
|
95
|
-
end
|
96
94
|
|
97
95
|
# O Identificado de Emissão é o 2° e ultimo caracter da carteira
|
98
96
|
# Normalmente é 4 onde significa que o Beneficiário emitiu o boleto.
|
@@ -131,7 +129,7 @@ module BrBoleto
|
|
131
129
|
@composicao_codigo_barras = "#{conta.codigo_cedente}"
|
132
130
|
@composicao_codigo_barras << "#{conta.codigo_cedente_dv}"
|
133
131
|
@composicao_codigo_barras << "#{nosso_numero_de_3_a_5}"
|
134
|
-
@composicao_codigo_barras << "#{
|
132
|
+
@composicao_codigo_barras << "#{conta.get_tipo_cobranca(conta.codigo_carteira, 240)}"
|
135
133
|
@composicao_codigo_barras << "#{nosso_numero_de_6_a_8}"
|
136
134
|
@composicao_codigo_barras << "#{identificador_de_emissao}"
|
137
135
|
@composicao_codigo_barras << "#{nosso_numero_de_9_a_17}"
|
@@ -0,0 +1,76 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module BrBoleto
|
3
|
+
module Boleto
|
4
|
+
# Implementação de emissão de boleto bancário pelo Banco Cecred.
|
5
|
+
#
|
6
|
+
# === Documentação Implementada
|
7
|
+
#
|
8
|
+
# A documentação na qual essa implementação foi baseada está localizada na pasta
|
9
|
+
# 'documentacoes_dos_boletos/cecred' dentro dessa biblioteca.
|
10
|
+
class Cecred < Base
|
11
|
+
def conta_class
|
12
|
+
BrBoleto::Conta::Cecred
|
13
|
+
end
|
14
|
+
|
15
|
+
################# VALIDAÇÕES DINÂMICAS #################
|
16
|
+
def valid_numero_documento_maximum
|
17
|
+
9
|
18
|
+
end
|
19
|
+
|
20
|
+
def valid_carteira_inclusion
|
21
|
+
%w[1]
|
22
|
+
end
|
23
|
+
|
24
|
+
# Tamanho máximo para o codigo_cedente/Convênio
|
25
|
+
def valid_convenio_maximum
|
26
|
+
6
|
27
|
+
end
|
28
|
+
|
29
|
+
# Tamanho máximo de uma conta corrente no Banco Cecred
|
30
|
+
def valid_conta_corrente_maximum
|
31
|
+
7
|
32
|
+
end
|
33
|
+
|
34
|
+
# codigo_cedente/Convênio deve ser obrigatório
|
35
|
+
def valid_convenio_required
|
36
|
+
true
|
37
|
+
end
|
38
|
+
##########################################################
|
39
|
+
|
40
|
+
# Conforme descrito na documentação, o valor que deve constar em local do pagamento é
|
41
|
+
# "PAGAVEL PREFERENCIALMENTE NAS COOPERATIVAS DO SISTEMA CECRED."
|
42
|
+
def default_values
|
43
|
+
super.merge({
|
44
|
+
:local_pagamento => 'PAGAVEL PREFERENCIALMENTE NAS COOPERATIVAS DO SISTEMA CECRED.'
|
45
|
+
})
|
46
|
+
end
|
47
|
+
|
48
|
+
# Nosso Número descrito na documentação (Pag. 9).
|
49
|
+
# 17 Dígitos: 8 primeiros dígitos = Conta corrente + dv, 9 dígitos restantes = Número do boleto (Sequencial)
|
50
|
+
# Exemplo: 99999998000000001
|
51
|
+
def nosso_numero
|
52
|
+
"#{conta.conta_corrente}#{conta.conta_corrente_dv}#{numero_documento}".adjust_size_to(17, '0', :right)
|
53
|
+
end
|
54
|
+
|
55
|
+
# === Código de barras do banco
|
56
|
+
#
|
57
|
+
# ___________________________________________________________________________________________________
|
58
|
+
# | Posição | Tamanho | Descrição |
|
59
|
+
# |----------|---------|-----------------------------------------------------------------------------|
|
60
|
+
# | 20-25 | 06 | N° convênio da Cooperativa |
|
61
|
+
# | 26-33 | 08 | N° conta corrente |
|
62
|
+
# | 34-42 | 09 | Número do Boleto |
|
63
|
+
# | 43-44 | 02 | Código da carteira |
|
64
|
+
# ----------------------------------------------------------------------------------------------------
|
65
|
+
#
|
66
|
+
def codigo_de_barras_do_banco
|
67
|
+
convenio = "#{conta.convenio}".adjust_size_to(6, '0', :right)
|
68
|
+
conta_corrente = "#{conta.conta_corrente}#{conta.conta_corrente_dv}".adjust_size_to(8, '0', :right)
|
69
|
+
numero_boleto = "#{numero_documento}".adjust_size_to(9, '0', :right)
|
70
|
+
carteira = "#{conta.carteira}".adjust_size_to(2, '0', :right)
|
71
|
+
|
72
|
+
"#{convenio}#{conta_corrente}#{numero_boleto}#{carteira}"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module BrBoleto
|
3
|
+
module Boleto
|
4
|
+
# Implementação de emissão de boleto bancário pelo Banco Itau.
|
5
|
+
#
|
6
|
+
# === Documentação Implementada
|
7
|
+
#
|
8
|
+
# A documentação na qual essa implementação foi baseada está localizada na pasta
|
9
|
+
# 'documentacoes_dos_boletos/itau' dentro dessa biblioteca.
|
10
|
+
class Itau < Base
|
11
|
+
def conta_class
|
12
|
+
BrBoleto::Conta::Itau
|
13
|
+
end
|
14
|
+
|
15
|
+
################# VALIDAÇÕES DINÂMICAS #################
|
16
|
+
def valid_numero_documento_maximum
|
17
|
+
8
|
18
|
+
end
|
19
|
+
|
20
|
+
def valid_carteira_inclusion
|
21
|
+
%w[104 105 107 108 109 112 113 116 117 119 121 122 126 131 134 135 136 142 143 146 147 150 168 169 174 175 180 191 196 198]
|
22
|
+
end
|
23
|
+
|
24
|
+
# Tamanho máximo para o codigo_cedente/Convênio
|
25
|
+
def valid_convenio_maximum
|
26
|
+
5
|
27
|
+
end
|
28
|
+
|
29
|
+
# Tamanho máximo de uma conta corrente no Banco Itau
|
30
|
+
def valid_conta_corrente_maximum
|
31
|
+
5
|
32
|
+
end
|
33
|
+
|
34
|
+
# codigo_cedente/Convênio deve ser obrigatório
|
35
|
+
def valid_convenio_required
|
36
|
+
true
|
37
|
+
end
|
38
|
+
##########################################################
|
39
|
+
|
40
|
+
# Conforme descrito na documentação, o valor que deve constar em local do pagamento é
|
41
|
+
# "PAGÁVEL EM QUALQUER BANCO OU CORRESPONDENTE ATÉ O VENCIMENTO."
|
42
|
+
def default_values
|
43
|
+
super.merge({
|
44
|
+
:local_pagamento => "PAGÁVEL EM QUALQUER BANCO OU CORRESPONDENTE ATÉ O VENCIMENTO."
|
45
|
+
})
|
46
|
+
end
|
47
|
+
|
48
|
+
# Nosso Número descrito na documentação (Pag. 50).
|
49
|
+
# Carteira com 3 caracteres / N.Número com 8 caracteres + digito.
|
50
|
+
# Exemplo: 999 / 99999999-D
|
51
|
+
def nosso_numero
|
52
|
+
"#{conta.carteira}/#{numero_documento}-#{digito_verificador_nosso_numero}"
|
53
|
+
end
|
54
|
+
|
55
|
+
# Para a grande maioria das carteiras, são considerados para a obtenção do dígito do nosso número,
|
56
|
+
# os dados “AGÊNCIA / CONTA (sem dígito) / CARTEIRA / NOSSO NÚMERO”, calculado pelo critério do Módulo 10.
|
57
|
+
#
|
58
|
+
# À exceção, estão as carteiras 126 - 131 - 146 - 150 e 168 cuja obtenção
|
59
|
+
# está baseada apenas nos dados “CARTEIRA/NOSSO NÚMERO” da operação.
|
60
|
+
def digito_verificador_nosso_numero
|
61
|
+
if conta.carteira.in?(conta.carteiras_especiais_nosso_numero_dv)
|
62
|
+
BrBoleto::Calculos::Modulo10.new("#{conta.carteira}#{numero_documento}")
|
63
|
+
else
|
64
|
+
BrBoleto::Calculos::Modulo10.new("#{conta.agencia}#{conta.conta_corrente}#{conta.carteira}#{numero_documento}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
# As carteiras de cobrança 107, 122, 142, 143, 196 e 198 são carteiras especiais, sem registro, na qual são utilizadas 15 posições
|
70
|
+
# numéricas para identificação do título liquidado (8 do Nosso Número e 7 do Seu Número).
|
71
|
+
#
|
72
|
+
# === Código de barras do banco (Carteiras 107, 122, 142, 143, 196 e 198)
|
73
|
+
#
|
74
|
+
# Para essas carteiras o formato do código de barras é o seguinte:
|
75
|
+
# ___________________________________________________________________________________________________
|
76
|
+
# | Posição | Tamanho | Descrição |
|
77
|
+
# |----------|---------|-----------------------------------------------------------------------------|
|
78
|
+
# | 20-22 | 03 | Carteira |
|
79
|
+
# | 23-30 | 08 | Nosso Número (Sem o digito verificador) |
|
80
|
+
# | 31-37 | 07 | Seu Número (Número do Documento) |
|
81
|
+
# | 38-42 | 05 | Códgigo Cedente (Convênio) |
|
82
|
+
# | 43-43 | 01 | DAC dos campos acima (posições 20 a 42) MOD 10 |
|
83
|
+
# | 44-44 | 01 | Zero |
|
84
|
+
# ----------------------------------------------------------------------------------------------------
|
85
|
+
#
|
86
|
+
# === Demais Carteiras
|
87
|
+
#
|
88
|
+
# Para as demais carteiras o formato do código de barras é o seguinte:
|
89
|
+
# _________________________________________________________________________________________
|
90
|
+
# | Posição | Tamanho | Descrição |
|
91
|
+
# |----------|---------|-------------------------------------------------------------------|
|
92
|
+
# | 20-22 | 03 | Carteira |
|
93
|
+
# | 23-30 | 08 | Número do documento |
|
94
|
+
# | 31-31 | 01 | Digito verificador nosso numero |
|
95
|
+
# | 32-35 | 04 | Agência |
|
96
|
+
# | 36-40 | 05 | Número da conta corrente |
|
97
|
+
# | 41-41 | 01 | Digito verificador conta corrente |
|
98
|
+
# | 42-44 | 03 | Zeros |
|
99
|
+
# ------------------------------------------------------------------------------------------
|
100
|
+
#
|
101
|
+
#
|
102
|
+
def codigo_de_barras_do_banco
|
103
|
+
if conta.carteira.in?(conta.carteiras_especiais_codigo_barras)
|
104
|
+
seu_numero = numero_documento.adjust_size_to(7)
|
105
|
+
codigo = "#{conta.carteira}#{numero_documento}#{seu_numero}#{conta.codigo_cedente}"
|
106
|
+
mod_10 = BrBoleto::Calculos::Modulo10.new(codigo)
|
107
|
+
"#{codigo}#{mod_10}0"
|
108
|
+
else
|
109
|
+
"#{conta.carteira}#{numero_documento}#{digito_verificador_nosso_numero}#{conta.agencia}#{conta.conta_corrente}#{conta.conta_corrente_dv}000"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module BrBoleto
|
3
|
+
module Boleto
|
4
|
+
|
5
|
+
class Sicredi < Base
|
6
|
+
|
7
|
+
def conta_class
|
8
|
+
BrBoleto::Conta::Sicredi
|
9
|
+
end
|
10
|
+
|
11
|
+
################# VALIDAÇÕES DINÂMICAS #################
|
12
|
+
def valid_numero_documento_maximum
|
13
|
+
5
|
14
|
+
end
|
15
|
+
|
16
|
+
def valid_carteira_inclusion
|
17
|
+
%w[1 3]
|
18
|
+
end
|
19
|
+
|
20
|
+
# Tamanho máximo para o codigo_cedente/Convênio
|
21
|
+
def valid_convenio_maximum
|
22
|
+
5
|
23
|
+
end
|
24
|
+
|
25
|
+
# Tamanho máximo de uma conta corrente no Banco Sicredi
|
26
|
+
def valid_conta_corrente_maximum
|
27
|
+
5
|
28
|
+
end
|
29
|
+
|
30
|
+
# codigo_cedente/Convênio deve ser obrigatório
|
31
|
+
def valid_convenio_required
|
32
|
+
true
|
33
|
+
end
|
34
|
+
##########################################################
|
35
|
+
|
36
|
+
# Conforme descrito na documentação, o valor que deve constar em local do pagamento é
|
37
|
+
# "PAGÁVEL PREFERENCIALMENTE NAS COOPERATIVAS DE CRÉDITO DO SICREDI"
|
38
|
+
def default_values
|
39
|
+
super.merge({
|
40
|
+
:local_pagamento => 'PAGÁVEL PREFERENCIALMENTE NAS COOPERATIVAS DE CRÉDITO DO SICREDI'
|
41
|
+
})
|
42
|
+
end
|
43
|
+
|
44
|
+
# Nosso Número descrito na documentação (Pag. 84).
|
45
|
+
# O campo Nosso Número deve ser apresentado no formato AA/BXXXXX-D, onde:
|
46
|
+
# AA = Ano atual
|
47
|
+
# B = Byte que pode ser de 2 a 9. Somente será 1 se forem boletos pré-impressos.
|
48
|
+
# XXXXX = número sequencial
|
49
|
+
# D = dígito verificador calculado
|
50
|
+
# Exemplo: "14/200022-5"
|
51
|
+
def nosso_numero
|
52
|
+
"#{ano}/#{conta.byte_id}#{numero_documento}-#{digito_verificador_nosso_numero}"
|
53
|
+
end
|
54
|
+
def digito_verificador_nosso_numero
|
55
|
+
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new("#{conta.agencia}#{conta.posto}#{conta.conta_corrente}#{ano}#{conta.byte_id}#{numero_documento}")
|
56
|
+
end
|
57
|
+
def ano
|
58
|
+
data_documento.strftime('%y')
|
59
|
+
end
|
60
|
+
|
61
|
+
# === Código de barras do banco
|
62
|
+
#
|
63
|
+
# ___________________________________________________________________________________________________
|
64
|
+
# | Posição | Tamanho | Descrição |
|
65
|
+
# |---------|---------|---------------------------------------------------------------------|
|
66
|
+
# | 20 – 20 | 01 | Carteira (1 - Com Registro, 3 - Sem Registro) |
|
67
|
+
# | 21 – 21 | 01 | Código da Carteira (1 - Carteira Simples) |
|
68
|
+
# | 22 – 30 | 09 | Nosso número com o digito identificador |
|
69
|
+
# | 31 – 34 | 04 | Cooperativa de crédito/agência beneficiária |
|
70
|
+
# | 35 – 36 | 02 | Posto da cooperativa de crédito/agência beneficiária |
|
71
|
+
# | 37 – 41 | 05 | Código do beneficiário |
|
72
|
+
# | 42 – 42 | 01 | Será 1 quando houver valor expresso no campo “valor do documento” |
|
73
|
+
# | 43 – 43 | 01 | Fixo 0 |
|
74
|
+
# | 44 – 44 | 01 | DV do campo livre |
|
75
|
+
# |_________________________________________________________________________________________|
|
76
|
+
#
|
77
|
+
def codigo_de_barras_do_banco
|
78
|
+
campo_livre = "#{conta.carteira}"
|
79
|
+
campo_livre << "#{conta.codigo_carteira}"
|
80
|
+
campo_livre << "#{nosso_numero_codigo_de_barras}"
|
81
|
+
campo_livre << "#{conta.agencia}"
|
82
|
+
campo_livre << "#{conta.posto}"
|
83
|
+
campo_livre << "#{conta.conta_corrente}"
|
84
|
+
campo_livre << "#{valor_expresso}"
|
85
|
+
campo_livre << "0"
|
86
|
+
campo_livre << "#{codigo_dv(campo_livre)}"
|
87
|
+
campo_livre
|
88
|
+
end
|
89
|
+
def codigo_dv(codigo)
|
90
|
+
Modulo11FatorDe2a9RestoZero.new(codigo)
|
91
|
+
end
|
92
|
+
def nosso_numero_codigo_de_barras
|
93
|
+
"#{ano}#{conta.byte_id}#{numero_documento}#{digito_verificador_nosso_numero}"
|
94
|
+
end
|
95
|
+
def valor_expresso
|
96
|
+
@valor_documento.present? ? '1' : '0'
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module BrBoleto
|
3
|
+
module Boleto
|
4
|
+
# Implementação de emissão de boleto bancário pelo Banco Unicred.
|
5
|
+
#
|
6
|
+
# === Documentação Implementada
|
7
|
+
#
|
8
|
+
# A documentação na qual essa implementação foi baseada está localizada na pasta
|
9
|
+
# 'documentacoes_dos_boletos/unicred' dentro dessa biblioteca.
|
10
|
+
#
|
11
|
+
# A Unicred (através do CobExpress) utiliza e o layout de boleto os arquivos de remessa/retorno disponibilizados pelo Banco Bradesco.
|
12
|
+
class Unicred < Bradesco
|
13
|
+
def conta_class
|
14
|
+
BrBoleto::Conta::Unicred
|
15
|
+
end
|
16
|
+
|
17
|
+
def valid_avalista_required; true end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|