br_boleto 2.0.1 → 2.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 +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
|