br_boleto 2.1.0 → 2.2.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/.travis.yml +1 -0
- data/Gemfile.lock +1 -1
- data/README.markdown +157 -8
- data/br_boleto.gemspec +1 -1
- data/lib/br_boleto.rb +12 -1
- data/lib/br_boleto/association/have_conta.rb +31 -27
- data/lib/br_boleto/boleto/banco_brasil.rb +130 -0
- data/lib/br_boleto/boleto/santander.rb +77 -0
- data/lib/br_boleto/conta/banco_brasil.rb +156 -0
- data/lib/br_boleto/conta/itau.rb +8 -3
- data/lib/br_boleto/conta/santander.rb +208 -0
- data/lib/br_boleto/remessa/cnab240/banco_brasil.rb +132 -0
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +1 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +0 -6
- data/lib/br_boleto/remessa/cnab240/santander.rb +266 -0
- data/lib/br_boleto/remessa/cnab400/banco_brasil.rb +264 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +1 -1
- data/lib/br_boleto/remessa/cnab400/santander.rb +215 -0
- data/lib/br_boleto/retorno/cnab240/banco_brasil.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/base.rb +3 -2
- data/lib/br_boleto/retorno/cnab240/caixa.rb +3 -2
- data/lib/br_boleto/retorno/cnab240/itau.rb +1 -2
- data/lib/br_boleto/retorno/cnab240/santander.rb +38 -0
- data/lib/br_boleto/retorno/cnab240/sicoob.rb +3 -2
- data/lib/br_boleto/retorno/cnab400/banco_brasil.rb +46 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +4 -3
- data/lib/br_boleto/retorno/cnab400/itau.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/santander.rb +44 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +3 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +20 -6
- data/lib/br_boleto/retorno/pagamento.rb +28 -7
- data/lib/br_boleto/version.rb +1 -1
- data/test/br_boleto/boleto/banco_brasil_test.rb +183 -0
- data/test/br_boleto/boleto/santander_test.rb +122 -0
- data/test/br_boleto/conta/banco_brasil_test.rb +209 -0
- data/test/br_boleto/conta/santantader_test.rb +222 -0
- data/test/br_boleto/remessa/cnab240/banco_brasil_test.rb +187 -0
- data/test/br_boleto/remessa/cnab240/itau_test.rb +4 -0
- data/test/br_boleto/remessa/cnab240/santander_test.rb +144 -0
- data/test/br_boleto/remessa/cnab400/banco_brasil_test.rb +285 -0
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +7 -0
- data/test/br_boleto/remessa/cnab400/santander_test.rb +174 -0
- data/test/br_boleto/retorno/cnab240/banco_brasil_test.rb +271 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +10 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +55 -138
- data/test/br_boleto/retorno/cnab240/itau_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/santander_test.rb +282 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +25 -15
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +15 -15
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +15 -15
- data/test/br_boleto/retorno/cnab400/banco_brasil_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +24 -12
- data/test/br_boleto/retorno/cnab400/itau_test.rb +6 -4
- data/test/br_boleto/retorno/cnab400/santander_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +97 -1
- data/test/br_boleto/retorno/cnab400/unicred.rb +18 -18
- data/test/br_boleto/retorno/pagamento_test.rb +2 -2
- data/test/factories/boleto/boleto_banco_brasil.rb +18 -0
- data/test/factories/boleto/boleto_santander.rb +18 -0
- data/test/factories/conta/banco_brasil.rb +16 -0
- data/test/factories/conta/santander.rb +15 -0
- data/test/factories/remessa/cnab240/banco_brasil.rb +9 -0
- data/test/factories/remessa/cnab240/santander.rb +9 -0
- data/test/factories/remessa/cnab400/banco_brasil.rb +8 -0
- data/test/factories/remessa/cnab400/santander.rb +8 -0
- data/test/fixtures/retorno/cnab240/banco_brasil.ret +74 -0
- data/test/fixtures/retorno/cnab240/cecred.ret +10 -0
- data/test/fixtures/retorno/cnab240/santander.ret +16 -0
- data/test/fixtures/retorno/cnab400/sicredi.ret +4 -0
- metadata +64 -7
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Boleto
|
|
4
|
+
# Implementação de emissão de boleto bancário pelo Banco Santander.
|
|
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 Santander < Base
|
|
11
|
+
def conta_class
|
|
12
|
+
BrBoleto::Conta::Santander
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
################# VALIDAÇÕES DINÂMICAS #################
|
|
16
|
+
def valid_numero_documento_maximum
|
|
17
|
+
12
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def valid_carteira_inclusion
|
|
21
|
+
%w[101 102 121]
|
|
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 Santander
|
|
30
|
+
def valid_conta_corrente_maximum
|
|
31
|
+
9
|
|
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 NAS AGÊNCIAS DO BANCO SANTANDER"
|
|
42
|
+
def default_values
|
|
43
|
+
super.merge({
|
|
44
|
+
:local_pagamento => 'PAGÁVEL PREFERENCIALMENTE NAS AGÊNCIAS DO BANCO SANTANDER'
|
|
45
|
+
})
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Nosso Número descrito na documentação (Pag. 36).
|
|
49
|
+
# Número do Documento com 12 (onze) caracteres + digito.
|
|
50
|
+
# Exemplo: 999999999999-D
|
|
51
|
+
def nosso_numero
|
|
52
|
+
"#{numero_documento}-#{digito_verificador_nosso_numero}"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Para o cálculo do dígito, será necessário acrescentar o Nosso Número (número do documento),
|
|
56
|
+
# e aplicar o módulo 11, com fatores de 2 a 9 com resto 0.
|
|
57
|
+
def digito_verificador_nosso_numero
|
|
58
|
+
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new("#{numero_documento}")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# === Código de barras do banco
|
|
62
|
+
# __________________________________________________________________
|
|
63
|
+
# | Posição | Tamanho | Descrição |
|
|
64
|
+
# |----------|---------|---------------------------------------------|
|
|
65
|
+
# | 20 | 01 | Fixo 9 |
|
|
66
|
+
# | 21-27 | 07 | Código do cedente padrão Santander |
|
|
67
|
+
# | 28-40 | 13 | Nosso Número (Num. Documeto + DV) |
|
|
68
|
+
# | 41 | 01 | IOF (somente para seguradoras) |
|
|
69
|
+
# | 42-44 | 03 | Carteira de cobrança |
|
|
70
|
+
# -------------------------------------------------------------------
|
|
71
|
+
#
|
|
72
|
+
def codigo_de_barras_do_banco
|
|
73
|
+
"9#{conta.convenio}#{numero_documento}#{digito_verificador_nosso_numero}0#{conta.carteira}"
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Conta
|
|
4
|
+
class BancoBrasil < BrBoleto::Conta::Base
|
|
5
|
+
|
|
6
|
+
# MODALIDADE CARTEIRA:
|
|
7
|
+
# _________________________________________________________________
|
|
8
|
+
# | Carteira | Descrição |
|
|
9
|
+
# | 11 | Cobrança Simples - Com Registro |
|
|
10
|
+
# | 12 | Cobrança Indexada - Com Registro |
|
|
11
|
+
# | 15 | Cobrança de Prêmios de Seguro - Com Registro |
|
|
12
|
+
# | 16 | Cobranca Simples |
|
|
13
|
+
# | 17 | Cobranca Direta Especial - Com Registro |
|
|
14
|
+
# | 18 | Cobranca Simples (Nosso Número 11 Dígitos) |
|
|
15
|
+
# | 31 | Cobrança Caucionada/Vinculada - Com Registro |
|
|
16
|
+
# | 51 | Cobrança Descontada - Com Registro |
|
|
17
|
+
# -----------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
# VARIAÇÃO DA CARTEIRA
|
|
20
|
+
# O Banco do Brasil utiliza carteiras de cobrança com variações iniciando em 01 até 99 + dígito verificador, exceto aquelas em que o DV seja igual a X.
|
|
21
|
+
# Normalmente as empresas utilizam uma única variação (019), porém podem ter outras variações, dependendo da necessidade.
|
|
22
|
+
# Consultar a agência quando necessitar dessa informação para fins de configuração do sistema, pois o cadastramento é a a cargo da agência.
|
|
23
|
+
attr_accessor :variacao_carteira
|
|
24
|
+
|
|
25
|
+
############################### VALIDAÇÕES DINÂMICAS ###############################
|
|
26
|
+
# Variação da Carteira
|
|
27
|
+
attr_accessor :valid_variacao_carteira_required
|
|
28
|
+
|
|
29
|
+
validates :variacao_carteira, custom_length: { maximum: 3 }
|
|
30
|
+
validates :variacao_carteira, presence: true, if: :valid_variacao_carteira_required
|
|
31
|
+
#####################################################################################
|
|
32
|
+
|
|
33
|
+
def default_values
|
|
34
|
+
super.merge({
|
|
35
|
+
carteira: '18',
|
|
36
|
+
variacao_carteira: '019',
|
|
37
|
+
valid_carteira_required: true, # <- Validação dinâmica que a modalidade é obrigatória
|
|
38
|
+
valid_carteira_length: 2, # <- Validação dinâmica que a modalidade deve ter 2 digitos
|
|
39
|
+
valid_carteira_inclusion: carteiras_suportadas, # <- Validação dinâmica de valores aceitos para a modalidade
|
|
40
|
+
codigo_carteira: '1', # Cobrança Simples
|
|
41
|
+
valid_codigo_carteira_length: 1, # <- Validação dinâmica que a modalidade deve ter 1 digito
|
|
42
|
+
valid_conta_corrente_required: true, # <- Validação dinâmica que a conta_corrente é obrigatória
|
|
43
|
+
valid_conta_corrente_maximum: 8, # <- Validação que a conta_corrente deve ter no máximo 8 digitos
|
|
44
|
+
valid_convenio_required: true, # <- Validação que a convenio deve ter obrigatório
|
|
45
|
+
# valid_convenio_maximum: 8, # <- Validação que a convenio deve ter no máximo 8 digitos
|
|
46
|
+
})
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def codigo_banco
|
|
50
|
+
'001'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Dígito do código do banco descrito na documentação
|
|
54
|
+
def codigo_banco_dv
|
|
55
|
+
'9'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def nome_banco
|
|
59
|
+
@nome_banco ||= 'BANCO DO BRASIL S.A.'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def versao_layout_arquivo_cnab_240
|
|
63
|
+
'083'
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def versao_layout_lote_cnab_240
|
|
67
|
+
'042'
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Carteiras suportadas
|
|
71
|
+
def carteiras_suportadas
|
|
72
|
+
%w[11 12 15 16 17 18 31 51]
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def variacao_carteira
|
|
76
|
+
"#{@variacao_carteira}".rjust(3, '0') if @variacao_carteira.present?
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def agencia_dv
|
|
80
|
+
# utilizando a agencia com 4 digitos
|
|
81
|
+
# para calcular o digito
|
|
82
|
+
@agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe9a2RestoX.new(agencia).to_s
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def conta_corrente_dv
|
|
86
|
+
@conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe9a2RestoX.new(conta_corrente).to_s
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Campo Agência / Código do Cedente
|
|
90
|
+
# @return [String] Agência com 4 caracteres - digito da agência / Conta de Cobrança com 8 caracteres - Digito da Conta
|
|
91
|
+
# Exemplo: 9999-D / 99999999-D
|
|
92
|
+
def agencia_codigo_cedente
|
|
93
|
+
"#{agencia}-#{agencia_dv} / #{conta_corrente}-#{conta_corrente_dv}"
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Código da Carteira
|
|
97
|
+
def equivalent_tipo_cobranca_400
|
|
98
|
+
{
|
|
99
|
+
'5' => '8', # Cobrança BBVendor
|
|
100
|
+
'7' => '7', # Cobrança Direta Especial
|
|
101
|
+
}
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Código Movimento da Remessa CNAB400
|
|
105
|
+
def equivalent_codigo_movimento_remessa_400
|
|
106
|
+
# Padrão Código para Descrição
|
|
107
|
+
{# da GEM o Banco
|
|
108
|
+
'01' => '01' , # Registro de títulos
|
|
109
|
+
'02' => '02' , # Solicitação de baixa
|
|
110
|
+
'03' => '03' , # Pedido de débito em conta
|
|
111
|
+
'04' => '04' , # Concessão de abatimento
|
|
112
|
+
'05' => '05' , # Cancelamento de abatimento
|
|
113
|
+
'06' => '06' , # Alteração de vencimento de título
|
|
114
|
+
'22' => '07' , # Alteração do número de controle do participante
|
|
115
|
+
'21' => '08' , # Alteração do número do titulo dado pelo cedente
|
|
116
|
+
'09' => '09' , # Instrução para protestar
|
|
117
|
+
'10' => '10' , # Instrução para sustar protesto
|
|
118
|
+
'11' => '11' , # Instrução para dispensar juros
|
|
119
|
+
'24' => '12' , # Alteração de nome e endereço do Sacado
|
|
120
|
+
'12' => '16' , # Alterar Juros de Mora
|
|
121
|
+
'31' => '31' , # Conceder desconto
|
|
122
|
+
'32' => '32' , # Não conceder desconto
|
|
123
|
+
'33' => '33' , # Retificar dados da concessão de desconto
|
|
124
|
+
'34' => '34' , # Alterar data para concessão de desconto
|
|
125
|
+
'35' => '35' , # Cobrar multa
|
|
126
|
+
'36' => '36' , # Dispensar multa
|
|
127
|
+
'37' => '37' , # Dispensar indexador
|
|
128
|
+
'38' => '38' , # Dispensar prazo limite de recebimento
|
|
129
|
+
'39' => '39' , # Alterar prazo limite de recebimento
|
|
130
|
+
'40' => '40' , # Alterar carteira/modalidade
|
|
131
|
+
}
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Espécie do Título
|
|
135
|
+
def equivalent_especie_titulo_400
|
|
136
|
+
# Padrão Código para
|
|
137
|
+
{# da GEM o Banco
|
|
138
|
+
'01' => '10' , # Cheque
|
|
139
|
+
'02' => '01' , # Duplicata Mercantil
|
|
140
|
+
'04' => '12' , # Duplicata de Serviço
|
|
141
|
+
'07' => '08' , # Letra de Câmbio
|
|
142
|
+
'12' => '02' , # Nota Promissória
|
|
143
|
+
'16' => '03' , # Nota de Seguro
|
|
144
|
+
'17' => '05' , # Recibo
|
|
145
|
+
'19' => '13' , # Nota de Débito
|
|
146
|
+
'20' => '15' , # Apólice de Seguro
|
|
147
|
+
'26' => '09' , # Warrant
|
|
148
|
+
'27' => '26' , # Dívida Ativa de Estado
|
|
149
|
+
'28' => '27' , # Dívida Ativa de Município
|
|
150
|
+
'29' => '25' , # Dívida Ativa da União
|
|
151
|
+
'99' => '99' , # Outros
|
|
152
|
+
}
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
data/lib/br_boleto/conta/itau.rb
CHANGED
|
@@ -87,7 +87,7 @@ module BrBoleto
|
|
|
87
87
|
# @return [String] Agência com 4 caracteres / Conta de Cobrança com 5 caracteres - Digito da Conta
|
|
88
88
|
# Exemplo: 9999 / 99999-D
|
|
89
89
|
def agencia_codigo_cedente
|
|
90
|
-
"#{agencia}
|
|
90
|
+
"#{agencia}/#{conta_corrente}-#{conta_corrente_dv}"
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
# Carteiras suportadas
|
|
@@ -175,9 +175,14 @@ module BrBoleto
|
|
|
175
175
|
})
|
|
176
176
|
end
|
|
177
177
|
|
|
178
|
-
# Código para Multa
|
|
178
|
+
# Código para Multa, que representa a isenção de juros e multa deve ser '0'
|
|
179
|
+
# Diferentemente do padrão da FEBRABAN que é '3'
|
|
180
|
+
# Ou seja, se passar o código 3 deve considerar '0'
|
|
179
181
|
def equivalent_codigo_multa
|
|
180
|
-
super.merge({ '0' => '0' }) # NÃO REGISTRA A MULTA
|
|
182
|
+
super.merge({ '3' => '0','0' => '0' }) # NÃO REGISTRA A MULTA
|
|
183
|
+
end
|
|
184
|
+
def default_codigo_multa
|
|
185
|
+
'0'
|
|
181
186
|
end
|
|
182
187
|
|
|
183
188
|
# Codigo da carteira de acordo com a documentacao o Itau (Pag. 18, Nota 5)
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Conta
|
|
4
|
+
class Santander < BrBoleto::Conta::Base
|
|
5
|
+
|
|
6
|
+
# MODALIDADE CARTEIRA:
|
|
7
|
+
# ___________________________________________
|
|
8
|
+
# | Carteira | Descrição |
|
|
9
|
+
# | 101 | Cobrança Simples com registro |
|
|
10
|
+
# | 102 | Cobrança Simples sem registro |
|
|
11
|
+
# | 121 | Penhor Rápida com registro |
|
|
12
|
+
# --------------------------------------------
|
|
13
|
+
|
|
14
|
+
# Código de Transmissão
|
|
15
|
+
# Consultar seu gerente para pegar esse código. Geralmente está no e-mail enviado pelo banco.
|
|
16
|
+
attr_accessor :codigo_transmissao
|
|
17
|
+
|
|
18
|
+
############################### VALIDAÇÕES DINÂMICAS ###############################
|
|
19
|
+
# Código de Transmissão
|
|
20
|
+
attr_accessor :valid_codigo_transmissao_required
|
|
21
|
+
|
|
22
|
+
validates :codigo_transmissao, custom_length: { maximum: 20 }
|
|
23
|
+
# validates :codigo_transmissao, presence: true, if: :valid_codigo_transmissao_required
|
|
24
|
+
#####################################################################################
|
|
25
|
+
|
|
26
|
+
def default_values
|
|
27
|
+
super.merge({
|
|
28
|
+
carteira: '101',
|
|
29
|
+
valid_carteira_required: true, # <- Validação dinâmica que a modalidade é obrigatória
|
|
30
|
+
valid_carteira_length: 3, # <- Validação dinâmica que a modalidade deve ter 3 digitos
|
|
31
|
+
valid_carteira_inclusion: %w[101 102 121], # <- Validação dinâmica de valores aceitos para a modalidade
|
|
32
|
+
codigo_carteira: '1', # Cobrança Simples
|
|
33
|
+
valid_codigo_carteira_length: 1, # <- Validação dinâmica que a modalidade deve ter 1 digito
|
|
34
|
+
valid_conta_corrente_required: true, # <- Validação dinâmica que a conta_corrente é obrigatória
|
|
35
|
+
valid_conta_corrente_maximum: 9, # <- Validação que a conta_corrente deve ter no máximo 9 digitos
|
|
36
|
+
valid_convenio_required: true, # <- Validação que a convenio deve ter obrigatório
|
|
37
|
+
valid_convenio_maximum: 7, # <- Validação que a convenio deve ter no máximo 7 digitos
|
|
38
|
+
})
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def codigo_banco
|
|
42
|
+
'033'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Dígito do código do banco descrito na documentação
|
|
46
|
+
def codigo_banco_dv
|
|
47
|
+
'7'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def nome_banco
|
|
51
|
+
@nome_banco ||= 'SANTANDER'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def versao_layout_arquivo_cnab_240
|
|
55
|
+
'040'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def versao_layout_lote_cnab_240
|
|
59
|
+
'030'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def agencia_dv
|
|
63
|
+
# utilizando a agencia com 4 digitos
|
|
64
|
+
# para calcular o digito
|
|
65
|
+
@agencia_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(agencia).to_s
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def conta_corrente_dv
|
|
69
|
+
@conta_corrente_dv ||= BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.new(conta_corrente).to_s
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def codigo_transmissao
|
|
73
|
+
"#{@codigo_transmissao}".rjust(20, '0') if @codigo_transmissao.present?
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Campo Agência / Código do Cedente
|
|
77
|
+
# @return [String] Agência com 4 caracteres / Convênio com 7 caracteres
|
|
78
|
+
# Exemplo: 9999 / 9999999
|
|
79
|
+
def agencia_codigo_cedente
|
|
80
|
+
"#{agencia} / #{convenio}"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Formata a carteira dependendo se ela é registrada ou não.
|
|
84
|
+
# Para cobrança COM registro usar: COBRANCA SIMPLES ECR
|
|
85
|
+
# Para Cobrança SEM registro usar: COBRANCA SIMPLES CSR
|
|
86
|
+
def carteira_formatada
|
|
87
|
+
if @carteira.to_s.in?(carteiras_com_registro)
|
|
88
|
+
"COBRANÇA SIMPLES ECR"
|
|
89
|
+
else
|
|
90
|
+
'COBRANÇA SIMPLES CSR'
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Retorna as carteiras com registro do banco Santander.
|
|
95
|
+
# Você pode sobrescrever esse método na subclasse caso exista mais
|
|
96
|
+
# carteiras com registro no Santander.
|
|
97
|
+
def carteiras_com_registro
|
|
98
|
+
%w(101 121)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
# Espécie do Título :
|
|
102
|
+
def equivalent_especie_titulo_240
|
|
103
|
+
# Padrão Código para Descrição
|
|
104
|
+
{# da GEM o Banco
|
|
105
|
+
'02' => '02' , # DM - DUPLICATA MERCANTIL
|
|
106
|
+
'04' => '04' , # DS - DUPLICATA DE SERVICO
|
|
107
|
+
'07' => '07' , # LC - LETRA DE CÂMBIO
|
|
108
|
+
'12' => '12' , # NP - NOTA PROMISSORIA
|
|
109
|
+
'13' => '13' , # NR - NOTA PROMISSORIA RURAL
|
|
110
|
+
'17' => '17' , # RC - RECIBO
|
|
111
|
+
'20' => '20' , # AP - APOLICE DE SEGURO
|
|
112
|
+
'01' => '97' , # CH - CHEQUE
|
|
113
|
+
'98' => '98' , # NPD - NOTA PROMISSORIA DIRETA
|
|
114
|
+
}
|
|
115
|
+
end
|
|
116
|
+
def equivalent_especie_titulo_400
|
|
117
|
+
# Padrão Código para Descrição
|
|
118
|
+
{# da GEM o Banco
|
|
119
|
+
'02' => '01' , # DM - DUPLICATA MERCANTIL
|
|
120
|
+
'04' => '06' , # DS - DUPLICATA DE SERVICO
|
|
121
|
+
'07' => '07' , # LC - LETRA DE CÂMBIO
|
|
122
|
+
'12' => '02' , # NP - NOTA PROMISSORIA
|
|
123
|
+
'17' => '05' , # RC - RECIBO
|
|
124
|
+
'20' => '03' , # AP - APOLICE DE SEGURO
|
|
125
|
+
}
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Código Movimento da Remessa CNAB240
|
|
129
|
+
def equivalent_codigo_movimento_remessa_240
|
|
130
|
+
# Padrão Código para Descrição
|
|
131
|
+
{# da GEM o Banco
|
|
132
|
+
'01' => '01' , # Entrada de título
|
|
133
|
+
'02' => '02' , # Pedido de baixa
|
|
134
|
+
'04' => '04' , # Concessão de abatimento
|
|
135
|
+
'05' => '05' , # Cancelamento de abatimento
|
|
136
|
+
'06' => '06' , # Alteração de vencimento
|
|
137
|
+
'07' => '10' , # Concessão de Desconto
|
|
138
|
+
'08' => '11' , # Cancelamento de desconto
|
|
139
|
+
'09' => '09' , # Pedido de Protesto
|
|
140
|
+
'10' => '18' , # Pedido de Sustação de Protesto
|
|
141
|
+
'21' => '07' , # Alteração da identificação do título na empresa
|
|
142
|
+
'22' => '08' , # Alteração seu número
|
|
143
|
+
'31' => '31' , # Alteração de outros dados
|
|
144
|
+
'41' => '98' , # Não Protestar
|
|
145
|
+
}
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Código Movimento da Remessa CNAB400
|
|
149
|
+
def equivalent_codigo_movimento_remessa_400
|
|
150
|
+
# Padrão Código para Descrição
|
|
151
|
+
{# da GEM o Banco
|
|
152
|
+
'01' => '01' , # Entrada de título
|
|
153
|
+
'02' => '02' , # Pedido de baixa
|
|
154
|
+
'04' => '04' , # Concessão de abatimento
|
|
155
|
+
'05' => '05' , # Cancelamento de abatimento
|
|
156
|
+
'06' => '06' , # Alteração de vencimento
|
|
157
|
+
'21' => '07' , # Alteração da identificação do título na empresa
|
|
158
|
+
'22' => '08' , # Alteração seu número
|
|
159
|
+
'09' => '09' , # Pedido de Protesto
|
|
160
|
+
'10' => '18' , # Sustar Protesto e Baixar Título
|
|
161
|
+
'11' => '18' , # Sustar Protesto e Manter em Carteira
|
|
162
|
+
}
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Código de Multa
|
|
166
|
+
def equivalent_codigo_multa
|
|
167
|
+
# Padrão Código para Descrição
|
|
168
|
+
{# da GEM o Banco
|
|
169
|
+
'1' => '4', # Com Multa
|
|
170
|
+
'2' => '4', # Com Multa
|
|
171
|
+
'3' => '0', # Sem Multa (Isento)
|
|
172
|
+
}
|
|
173
|
+
end
|
|
174
|
+
def default_codigo_multa
|
|
175
|
+
'0'
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# Código da Carteira CNAB400
|
|
179
|
+
def equivalent_tipo_cobranca_400
|
|
180
|
+
# Padrão Código para Descrição
|
|
181
|
+
{# da GEM o Banco
|
|
182
|
+
'1' => '5', # RÁPIDA COM REGISTRO
|
|
183
|
+
'2' => '2', # ELETRÔNICA COM REGISTRO
|
|
184
|
+
'3' => '3', # CAUCIONADA ELETRÔNICA
|
|
185
|
+
'4' => '7', # DESCONTADA ELETRÔNICA
|
|
186
|
+
'5' => '4', # COBRANÇA SEM REGISTRO
|
|
187
|
+
'6' => '6', # CAUCIONADA RAPIDA
|
|
188
|
+
}
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Código da Carteira CNAB240
|
|
192
|
+
def equivalent_tipo_cobranca_240
|
|
193
|
+
super.merge({'6' => '6' }) # 6 = Cobrança Caucionada (Rápida com Registro)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# Código para Protesto
|
|
197
|
+
def equivalent_codigo_protesto
|
|
198
|
+
super.merge({'0' => '0' }) # 0 = Não Protestar
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
# Código da Moeda CNAB240
|
|
202
|
+
def equivalent_codigo_moeda_240
|
|
203
|
+
super.merge({'09' => '00' }) # 00 = Real
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|