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
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Remessa
|
|
4
|
+
module Cnab400
|
|
5
|
+
class Bradesco < BrBoleto::Remessa::Cnab400::Base
|
|
6
|
+
def conta_class
|
|
7
|
+
BrBoleto::Conta::Bradesco
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
validate :validation_codigo_empresa_is_required
|
|
11
|
+
|
|
12
|
+
############################## HEADER #########################################################
|
|
13
|
+
|
|
14
|
+
# Código da remessa
|
|
15
|
+
# Tipo: Numérico
|
|
16
|
+
# Tamanho: 001
|
|
17
|
+
def header_posicao_002_a_002
|
|
18
|
+
'1'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Complemento do registro
|
|
22
|
+
# Posição: 101 até 394
|
|
23
|
+
# POSIÇÂO TAM. Descrição
|
|
24
|
+
# 101 a 108 008 Branco
|
|
25
|
+
# 109 a 110 002 Identificação do sistema (MX)
|
|
26
|
+
# 111 a 117 007 No Seqüencial de Remessa (deve iniciar de 0000001 e incrementado de + 1 a cada NOVO Arquivo Remessa)
|
|
27
|
+
# 118 a 394 277 Branco
|
|
28
|
+
# Tamanho total: 294
|
|
29
|
+
def complemento_registro
|
|
30
|
+
info = ''.adjust_size_to(8)
|
|
31
|
+
info << 'MX'
|
|
32
|
+
info << "#{sequencial_remessa}".adjust_size_to(7, '0', :right)
|
|
33
|
+
info << ''.adjust_size_to(277)
|
|
34
|
+
info
|
|
35
|
+
end
|
|
36
|
+
###############################################################################################
|
|
37
|
+
|
|
38
|
+
############################## DETALHE #########################################################
|
|
39
|
+
|
|
40
|
+
# Informações Opcionais no Bradesco.
|
|
41
|
+
# Somente deverão ser preenchidos, caso o cliente Beneficiário esteja previamente
|
|
42
|
+
# cadastrado para operar com a modalidade de cobrança com débito automático
|
|
43
|
+
def detalhe_posicao_002_003
|
|
44
|
+
''.adjust_size_to(2)
|
|
45
|
+
end
|
|
46
|
+
def detalhe_posicao_004_017
|
|
47
|
+
''.adjust_size_to(14)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Informações da conta <- Específico para cada banco
|
|
51
|
+
# Posição: 018 até 037
|
|
52
|
+
# Tipo: Numérico
|
|
53
|
+
# Tamanho: 020
|
|
54
|
+
def informacoes_da_conta(local)
|
|
55
|
+
|
|
56
|
+
# POSIÇÂO TAM. Descrição
|
|
57
|
+
# 018 a 020 003 Branco
|
|
58
|
+
# 021 a 021 001 Zero
|
|
59
|
+
# 022 a 024 003 Códigos da carteira
|
|
60
|
+
# 025 a 029 005 Códigos da Agência Beneficiários (sem o dígito)
|
|
61
|
+
# 030 a 036 007 Contas Corrente
|
|
62
|
+
# 037 a 037 001 Dígito da Conta
|
|
63
|
+
if local == :detalhe
|
|
64
|
+
info = ''.adjust_size_to(3)
|
|
65
|
+
info << '0'
|
|
66
|
+
info << "#{conta.carteira}".adjust_size_to(3, '0', :right)
|
|
67
|
+
info << "#{conta.agencia}".adjust_size_to(5, '0', :right)
|
|
68
|
+
info << "#{conta.conta_corrente}".adjust_size_to(7, '0', :right)
|
|
69
|
+
info << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)
|
|
70
|
+
info
|
|
71
|
+
|
|
72
|
+
# POSIÇÂO TAM. Descrição
|
|
73
|
+
# 027 a 046 020 Codigo da Empresa
|
|
74
|
+
elsif local == :header
|
|
75
|
+
info = "#{conta.codigo_empresa}".adjust_size_to(20, '0', :right) # Será informado pelo Bradesco, quando do cadastramento da Conta beneficiário na sua Agência.
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Nosso numero do pagamento e outras informações
|
|
80
|
+
# Posição: 063 até 108
|
|
81
|
+
# POSIÇÂO TAM. Descrição
|
|
82
|
+
# 063 a 065 003 Códigos do Banco para Débito - preencher com Zeros (Se for débito automatico adicionar 237)
|
|
83
|
+
# 066 a 066 001 Identificativos de Multa
|
|
84
|
+
# 067 a 070 004 Percentual de Multa por Atraso
|
|
85
|
+
# 071 a 081 011 Identificação do Título no Banco
|
|
86
|
+
# 082 a 082 001 Digito de Auto Conferencia do Número Bancário
|
|
87
|
+
# 083 a 092 010 Desconto Bonificação por dia
|
|
88
|
+
# 093 a 093 001 Condição para Emissão da Papeleta de Cobrança
|
|
89
|
+
# 094 a 094 001 Ident. se emite Boleto Automático
|
|
90
|
+
# 095 a 104 010 Identificação da Operação do Banco (Preencher com Branco)
|
|
91
|
+
# 105 a 105 001 Indicador Rateio Crédito (Opcional)
|
|
92
|
+
# 106 a 106 001 Endereçamento para Aviso do Débito Automático em C.C. (opcional)
|
|
93
|
+
# 107 a 108 002 Branco
|
|
94
|
+
# Tamanho: 46
|
|
95
|
+
def detalhe_posicao_063_076(pagamento, sequencial)
|
|
96
|
+
detalhe_posicao_063_108(pagamento)
|
|
97
|
+
end
|
|
98
|
+
def detalhe_posicao_077_108(pagamento, sequencial)
|
|
99
|
+
''
|
|
100
|
+
end
|
|
101
|
+
def detalhe_posicao_063_108(pagamento)
|
|
102
|
+
info = ''.adjust_size_to(3, '0')
|
|
103
|
+
if (pagamento.codigo_multa == 1 or pagamento.codigo_multa == 2)
|
|
104
|
+
info << '2'
|
|
105
|
+
info << (pagamento.percentual_multa_formatado(2)).adjust_size_to(4, '0') # tem multa: preencher com percentual da multa com 2 decimais
|
|
106
|
+
else
|
|
107
|
+
info << '0'
|
|
108
|
+
info << ''.adjust_size_to(4, '0', :right) # sem multa: preencher com zeros.
|
|
109
|
+
end
|
|
110
|
+
info << "#{pagamento.numero_documento}".adjust_size_to(11, '0', :right)
|
|
111
|
+
info << "#{pagamento.nosso_numero}".split('').last
|
|
112
|
+
info << "#{pagamento.valor_desconto_formatado}".adjust_size_to(10,'0', :right) # Valor do desconto bonif./dia
|
|
113
|
+
info << "#{conta.get_identificacao_emissao(pagamento.tipo_emissao, 400)}".adjust_size_to(1, '2') # '2' : o Cliente emitiu o Boleto e o Banco somente processa o registro
|
|
114
|
+
info << ' ' # Espaço em branco ou 'N' caso o boleto possui Condições de Registro para Débito Automático
|
|
115
|
+
info << ''.adjust_size_to(10)
|
|
116
|
+
info << ' ' # Somente deverá ser preenchido com a Letra “R”, se a Empresa contratou o serviço de rateio de crédito, caso não, informar Branco
|
|
117
|
+
info << ' ' # Espaço em branco ou '1' se possui Débito Automático (emite aviso e assume o endereço do Pagador constante do Arquivo-Remessa)
|
|
118
|
+
info << ''.adjust_size_to(2)
|
|
119
|
+
info
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
# Informações referente ao pagamento
|
|
124
|
+
# Posição 121 até 160
|
|
125
|
+
# POSIÇÂO TAM. Descrição
|
|
126
|
+
# 121 a 126 006 Data do Vencimento do Título
|
|
127
|
+
# 127 a 139 013 Valor do Título
|
|
128
|
+
# 140 a 142 003 Banco Encarregado da Cobrança (Preencher com zeros)
|
|
129
|
+
# 143 a 147 005 Agência Depositária (Preencher com zeros)
|
|
130
|
+
# 148 a 149 002 Espécie de Título
|
|
131
|
+
# 150 a 150 001 Identificação (Sempre 'N')
|
|
132
|
+
# 151 a 156 006 Data da emissão do Título
|
|
133
|
+
# 157 a 158 002 1a instrução
|
|
134
|
+
# 159 a 160 002 2a instrução
|
|
135
|
+
# Tamanho: 40
|
|
136
|
+
def informacoes_do_pagamento(pagamento, sequencial)
|
|
137
|
+
dados = ''
|
|
138
|
+
dados << pagamento.data_vencimento_formatado('%d%m%y')
|
|
139
|
+
dados << pagamento.valor_documento_formatado(13)
|
|
140
|
+
dados << ''.adjust_size_to(3,'0', :right)
|
|
141
|
+
dados << ''.adjust_size_to(5,'0', :right)
|
|
142
|
+
dados << "#{conta.get_especie_titulo(pagamento.especie_titulo, 400)}".adjust_size_to(2, '0', :right)
|
|
143
|
+
dados << 'N'
|
|
144
|
+
dados << pagamento.data_emissao_formatado('%d%m%y')
|
|
145
|
+
# 1a / 2a Instrução:
|
|
146
|
+
# Campo destinado para pré-determinar o protesto do Título ou a baixa por decurso de prazo, quandodo registro.
|
|
147
|
+
# Não havendo interesse, preencher com Zeros.
|
|
148
|
+
# Porém, caso a Empresa deseje se utilizar da instrução automática de protesto ou da baixa pordecurso de prazo, abaixo os procedimentos:
|
|
149
|
+
|
|
150
|
+
# Protesto/Negativação:
|
|
151
|
+
# - posição 157 a 158 = Indicar o código “06” - (Protestar).
|
|
152
|
+
# - posição 157 a 158 = Indicar o código “07” - (Negativar) (NOVO)
|
|
153
|
+
# - posição 159 a 160 = Indicar o número de dias a protestar (mínimo 5 dias).
|
|
154
|
+
# Protesto Falimentar:
|
|
155
|
+
# - posição 157 a 158 = Indicar o código “05” – (Protesto Falimentar)
|
|
156
|
+
# - posição 159 a 160 = Indicar o número de dias a protestar (mínimo 5 dias).
|
|
157
|
+
# Decurso de Prazo:
|
|
158
|
+
# - posição 157 a 158 = Indicar o código “18” – (Decurso de prazo).
|
|
159
|
+
# - posição 159 a 160 = Indicar o número de dias para baixa por decurso de prazo.
|
|
160
|
+
|
|
161
|
+
# Nota: A posição 157 a 158, também poderá ser utilizada para definir as seguintes mensagens, a serem impressas nos Boletos de cobrança, emitidas pelo Banco:
|
|
162
|
+
# 08 Não cobrar juros de mora
|
|
163
|
+
# 09 Não receber após o vencimento
|
|
164
|
+
# 20/5710 Multas de 10% após o 4o dia do Vencimento.
|
|
165
|
+
# 11 Não receber após o 8o dia do vencimento.
|
|
166
|
+
# 12 Cobrar encargos após o 5o dia do vencimento.
|
|
167
|
+
# 13 Cobrar encargos após o 10o dia do vencimento.
|
|
168
|
+
# 14 Cobrar encargos após o 15o dia do vencimento
|
|
169
|
+
# 15 Conceder desconto mesmo se pago após o vencimento.
|
|
170
|
+
dados << ''.adjust_size_to(2,'0', :right) # 1a Instrução
|
|
171
|
+
dados << ''.adjust_size_to(2,'0', :right) # 2a Instrução
|
|
172
|
+
dados
|
|
173
|
+
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Informações referente aos juros e multas do pagamento
|
|
177
|
+
# Posição: 161 a 218
|
|
178
|
+
# POSIÇÂO TAM. Descrição
|
|
179
|
+
# 161 a 173 013 Valor a ser cobrado por Dia de Atraso
|
|
180
|
+
# 174 a 179 006 Data Limite P/Concessão de Desconto
|
|
181
|
+
# 180 a 192 013 Valor do Desconto
|
|
182
|
+
# 193 a 205 013 Valor do IOF
|
|
183
|
+
# 206 a 218 013 Valor do Abatimento a ser concedido ou cancelado
|
|
184
|
+
# Tamanho: 58
|
|
185
|
+
def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
|
|
186
|
+
detalhe = ''
|
|
187
|
+
detalhe << "#{pagamento.valor_mora_formatado}".adjust_size_to(13,'0', :right )
|
|
188
|
+
detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
|
|
189
|
+
detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
|
|
190
|
+
detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
|
|
191
|
+
detalhe << "#{pagamento.valor_abatimento_formatado}".adjust_size_to(13,'0', :right )
|
|
192
|
+
detalhe
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# Informações referente aos dados do sacado/pagador
|
|
196
|
+
# Posição: 219 a 394
|
|
197
|
+
# POSIÇÂO TAM. Descrição
|
|
198
|
+
# 219 a 220 002 Identificação do Tipo de Inscrição do Pagador
|
|
199
|
+
# 221 a 234 014 No Inscrição do Pagador
|
|
200
|
+
# 235 a 274 040 Nome do Pagador
|
|
201
|
+
# 275 a 314 040 Endereço Completo
|
|
202
|
+
# 315 a 326 012 1a Mensagem
|
|
203
|
+
# 327 a 331 005 CEP
|
|
204
|
+
# 332 a 334 003 Sufixo do CEP
|
|
205
|
+
# 335 a 394 060 Sacador/Avalista ou 2a Mensagem
|
|
206
|
+
# Tamanho: 176
|
|
207
|
+
def informacoes_do_sacado(pagamento, sequencial)
|
|
208
|
+
info = ''
|
|
209
|
+
# Tipo de Inscrição do Pagador: "01" = CPF , "02" = CNPJ , "03" = PIS/PASEP , "98" = Não tem , "99" = Outros
|
|
210
|
+
info << "#{pagamento.pagador.tipo_cpf_cnpj}".adjust_size_to(2, '0', :right)
|
|
211
|
+
info << "#{pagamento.pagador.cpf_cnpj}".adjust_size_to(14, '0', :right)
|
|
212
|
+
info << "#{pagamento.pagador.nome}".adjust_size_to(40)
|
|
213
|
+
|
|
214
|
+
info << "#{pagamento.pagador.endereco}".adjust_size_to(18) # Endereço Completo
|
|
215
|
+
info << "#{pagamento.pagador.bairro}".adjust_size_to(10) # Endereço Completo
|
|
216
|
+
info << "#{pagamento.pagador.cidade}".adjust_size_to(10) # Endereço Completo
|
|
217
|
+
info << "#{pagamento.pagador.uf}".adjust_size_to(2) # Endereço Completo
|
|
218
|
+
info << ''.adjust_size_to(12) # 1a Mensagem
|
|
219
|
+
info << "#{pagamento.pagador.cep}".adjust_size_to(8, '0', :right) # CEP + Sufixo do CEP
|
|
220
|
+
info << "#{pagamento.pagador.documento_avalista}".adjust_size_to(14) # Sacador/Avalista (CPF/CNPJ)
|
|
221
|
+
info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(46) # Sacador/Avalista (Nome)
|
|
222
|
+
info
|
|
223
|
+
end
|
|
224
|
+
################################################################################################
|
|
225
|
+
|
|
226
|
+
private
|
|
227
|
+
|
|
228
|
+
def validation_codigo_empresa_is_required
|
|
229
|
+
errors.add(:base, :column_is_required, column: conta_class.human_attribute_name(:codigo_empresa)) if conta.codigo_empresa.blank?
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
end
|
|
@@ -20,10 +20,10 @@ module BrBoleto
|
|
|
20
20
|
detalhe = ''
|
|
21
21
|
|
|
22
22
|
detalhe << detalhe_posicao_001_001 # Identificação do Registro Detalhe
|
|
23
|
-
detalhe << detalhe_posicao_002_003
|
|
23
|
+
detalhe << detalhe_posicao_002_003(pagamento) # Tipo de inscrição do beneficiario
|
|
24
24
|
detalhe << detalhe_posicao_004_017 # CNPJ do beneficiario
|
|
25
25
|
detalhe << detalhe_posicao_018_037 # Informações da conta
|
|
26
|
-
detalhe << detalhe_posicao_038_062
|
|
26
|
+
detalhe << detalhe_posicao_038_062(pagamento) # Numero de controle do participante
|
|
27
27
|
detalhe << detalhe_posicao_063_076(pagamento, sequencial) # Nosso número com DV
|
|
28
28
|
detalhe << detalhe_posicao_077_108(pagamento, sequencial) # Diferente para cada banco
|
|
29
29
|
detalhe << detalhe_posicao_109_110(pagamento, sequencial) # Comando/Movimento
|
|
@@ -48,7 +48,7 @@ module BrBoleto
|
|
|
48
48
|
# 02 = CNPJ
|
|
49
49
|
# Tipo: Numero
|
|
50
50
|
# Tamanho: 002
|
|
51
|
-
def detalhe_posicao_002_003
|
|
51
|
+
def detalhe_posicao_002_003(pagamento)
|
|
52
52
|
conta.tipo_cpf_cnpj
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -70,7 +70,7 @@ module BrBoleto
|
|
|
70
70
|
# Padrão: " " Brancos
|
|
71
71
|
# Tipo: String
|
|
72
72
|
# Tamanho: 25
|
|
73
|
-
def detalhe_posicao_038_062
|
|
73
|
+
def detalhe_posicao_038_062(pagamento)
|
|
74
74
|
''.adjust_size_to(25)
|
|
75
75
|
end
|
|
76
76
|
|
|
@@ -92,7 +92,8 @@ module BrBoleto
|
|
|
92
92
|
# Padrão: '01' = Registro de títulos
|
|
93
93
|
# Tamanho: 2
|
|
94
94
|
def detalhe_posicao_109_110(pagamento, sequencial)
|
|
95
|
-
"#{pagamento.identificacao_ocorrencia}".
|
|
95
|
+
code = "#{pagamento.identificacao_ocorrencia}".rjust(2, '0')
|
|
96
|
+
"#{conta.get_codigo_movimento_remessa(code, 400)}".adjust_size_to(2, '0')
|
|
96
97
|
end
|
|
97
98
|
|
|
98
99
|
# Seu número
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
module BrBoleto
|
|
3
|
+
module Remessa
|
|
4
|
+
module Cnab400
|
|
5
|
+
class Itau < BrBoleto::Remessa::Cnab400::Base
|
|
6
|
+
def conta_class
|
|
7
|
+
BrBoleto::Conta::Itau
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
############################## HEADER ######################################
|
|
11
|
+
|
|
12
|
+
# Código da remessa
|
|
13
|
+
# Tipo: Numérico
|
|
14
|
+
# Tamanho: 001
|
|
15
|
+
def header_posicao_002_a_002
|
|
16
|
+
'1'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Complemento do registro
|
|
20
|
+
# POSIÇÂO TAM. Descrição
|
|
21
|
+
#--------------------------------
|
|
22
|
+
# 101 a 394 294 Brancos
|
|
23
|
+
# Tamanho total: 294
|
|
24
|
+
def complemento_registro
|
|
25
|
+
''.adjust_size_to(294)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
############################# DETALHE #################################
|
|
29
|
+
|
|
30
|
+
# Informações da conta <- Específico para cada banco
|
|
31
|
+
# Posição: 018 até 037 (Detalhe)
|
|
32
|
+
# Posição: 027 até 046 (Header)
|
|
33
|
+
# Tamanho: 020
|
|
34
|
+
def informacoes_da_conta(local)
|
|
35
|
+
|
|
36
|
+
# POSIÇÂO:
|
|
37
|
+
# Detalhe | Header TAM. Descrição
|
|
38
|
+
# 18 a 21 27 a 30 004 Agência
|
|
39
|
+
# 22 a 23 31 a 32 002 Zeros
|
|
40
|
+
# 24 a 28 33 a 37 005 Conta Corrente
|
|
41
|
+
# 29 a 29 38 a 38 001 Conta Corrente DV
|
|
42
|
+
|
|
43
|
+
info = "#{conta.agencia}".adjust_size_to(4, '0', :right)
|
|
44
|
+
info << '00'
|
|
45
|
+
info << "#{conta.conta_corrente}".adjust_size_to(5, '0', :right)
|
|
46
|
+
info << "#{conta.conta_corrente_dv}".adjust_size_to(1, '0', :right)
|
|
47
|
+
|
|
48
|
+
if local == :detalhe
|
|
49
|
+
# POSIÇÂO TAM. Descrição
|
|
50
|
+
# -------------------------------
|
|
51
|
+
# 030 a 033 004 Brancos
|
|
52
|
+
# 034 a 037 004 Cod. Instrução
|
|
53
|
+
|
|
54
|
+
info << ''.adjust_size_to(4)
|
|
55
|
+
info << ''.adjust_size_to(4, "0")
|
|
56
|
+
|
|
57
|
+
elsif local == :header
|
|
58
|
+
# POSIÇÂO TAM. Descrição
|
|
59
|
+
# -------------------------------
|
|
60
|
+
# 039 a 046 008 Brancos
|
|
61
|
+
|
|
62
|
+
info << ''.adjust_size_to(8)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
info
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Nosso numero do pagamento e outras informações
|
|
69
|
+
# Posição: 063 até 108
|
|
70
|
+
# POSIÇÂO TAM. Descrição
|
|
71
|
+
# -----------------------------------------------------
|
|
72
|
+
# 063 a 070 008 Numero Documento
|
|
73
|
+
# 071 a 083 013 QUANTIDADE DE MOEDA VARIÁVEL
|
|
74
|
+
# 084 a 086 003 Carteira
|
|
75
|
+
# 087 a 107 021 Uso do banco
|
|
76
|
+
# 108 a 108 001 Cod. Carteira
|
|
77
|
+
#
|
|
78
|
+
# Tamanho: 46
|
|
79
|
+
def detalhe_posicao_063_076(pagamento, sequencial)
|
|
80
|
+
detalhe_posicao_063_108(pagamento)
|
|
81
|
+
end
|
|
82
|
+
def detalhe_posicao_077_108(pagamento, sequencial)
|
|
83
|
+
''
|
|
84
|
+
end
|
|
85
|
+
def detalhe_posicao_063_108(pagamento)
|
|
86
|
+
info = ''
|
|
87
|
+
info << "#{pagamento.numero_documento}".adjust_size_to(8, '0', :right)
|
|
88
|
+
info << ''.adjust_size_to(13, '0', :right) # Este campo deverá ser preenchido com zeros caso a moeda seja o Real
|
|
89
|
+
info << "#{conta.carteira}".adjust_size_to(3, '0', :right)
|
|
90
|
+
info << ''.adjust_size_to(21)
|
|
91
|
+
info << "#{conta.get_codigo_carteira}".adjust_size_to(1, 'I')
|
|
92
|
+
info
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
# Informações referente ao pagamento
|
|
97
|
+
# Posição 121 até 160
|
|
98
|
+
# POSIÇÂO TAM. Descrição
|
|
99
|
+
# 121 a 126 006 Data do Vencimento do Título
|
|
100
|
+
# 127 a 139 013 Valor do Título
|
|
101
|
+
# 140 a 142 003 Banco Encarregado da Cobrança
|
|
102
|
+
# 143 a 147 005 Agência Depositária (preencher com zeros)
|
|
103
|
+
# 148 a 149 002 Espécie de Título
|
|
104
|
+
# 150 a 150 001 Identificação (Sempre 'N')
|
|
105
|
+
# 151 a 156 006 Data da emissão do Título
|
|
106
|
+
# 157 a 158 002 1a instrução
|
|
107
|
+
# 159 a 160 002 2a instrução
|
|
108
|
+
# Tamanho: 40
|
|
109
|
+
def informacoes_do_pagamento(pagamento, sequencial)
|
|
110
|
+
dados = ''
|
|
111
|
+
dados << pagamento.data_vencimento_formatado('%d%m%y')
|
|
112
|
+
dados << pagamento.valor_documento_formatado(13)
|
|
113
|
+
dados << "#{conta.codigo_banco}".adjust_size_to(3,'0', :right)
|
|
114
|
+
dados << ''.adjust_size_to(5,'0', :right)
|
|
115
|
+
dados << "#{conta.get_especie_titulo(pagamento.especie_titulo, 400)}".adjust_size_to(2, '0', :right)
|
|
116
|
+
dados << 'N'
|
|
117
|
+
dados << pagamento.data_emissao_formatado('%d%m%y')
|
|
118
|
+
|
|
119
|
+
# 1a / 2a Instrução, conforme documentação (pag. 20, Nota 11):
|
|
120
|
+
dados << ''.adjust_size_to(2,'0', :right) # 1a Instrução
|
|
121
|
+
dados << ''.adjust_size_to(2,'0', :right) # 2a Instrução
|
|
122
|
+
dados
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Informações referente aos juros e multas do pagamento
|
|
127
|
+
# Posição: 161 a 218
|
|
128
|
+
# POSIÇÂO TAM. Descrição
|
|
129
|
+
# 161 a 173 013 Valor a ser cobrado por Dia de Atraso
|
|
130
|
+
# 174 a 179 006 Data Limite P/Concessão de Desconto
|
|
131
|
+
# 180 a 192 013 Valor do Desconto
|
|
132
|
+
# 193 a 205 013 Valor do IOF
|
|
133
|
+
# 206 a 218 013 Valor do Abatimento a ser concedido ou cancelado
|
|
134
|
+
# Tamanho: 58
|
|
135
|
+
def detalhe_multas_e_juros_do_pagamento(pagamento, sequencial)
|
|
136
|
+
detalhe = ''
|
|
137
|
+
detalhe << "#{pagamento.valor_mora_formatado}".adjust_size_to(13,'0', :right )
|
|
138
|
+
detalhe << "#{pagamento.data_desconto_formatado('%d%m%y')}".adjust_size_to(6,'0', :right )
|
|
139
|
+
detalhe << "#{pagamento.valor_desconto_formatado}".adjust_size_to(13,'0', :right )
|
|
140
|
+
detalhe << "#{pagamento.valor_iof_formatado}".adjust_size_to(13,'0', :right )
|
|
141
|
+
detalhe << "#{pagamento.valor_abatimento_formatado}".adjust_size_to(13,'0', :right )
|
|
142
|
+
detalhe
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Informações referente aos dados do sacado/pagador
|
|
146
|
+
# Posição: 219 a 394
|
|
147
|
+
# POSIÇÂO TAM. Descrição
|
|
148
|
+
# 219 a 220 002 Identificação do Tipo de Inscrição do Pagador
|
|
149
|
+
# 221 a 234 014 No Inscrição do Pagador
|
|
150
|
+
# 235 a 264 030 Nome do Pagador
|
|
151
|
+
# 265 a 274 010 Complemento Registro (Brancos)
|
|
152
|
+
# 275 a 314 040 Endereço Pagador
|
|
153
|
+
# 315 a 326 012 Bairro Pagador
|
|
154
|
+
# 327 a 331 005 CEP
|
|
155
|
+
# 332 a 334 003 Sufixo do CEP
|
|
156
|
+
# 335 a 349 015 Cidade Pagador
|
|
157
|
+
# 350 a 351 002 UF Pagador
|
|
158
|
+
# 352 a 381 030 Nome Sacador/Avalista
|
|
159
|
+
|
|
160
|
+
# 282 a 285 004 Complemento Registro (Brancos)
|
|
161
|
+
# 286 a 291 006 Data de mora
|
|
162
|
+
# 292 a 293 002 Quantidade de dias
|
|
163
|
+
# 294 a 294 001 Complemento Registro (Branco)
|
|
164
|
+
|
|
165
|
+
# Tamanho: 176
|
|
166
|
+
def informacoes_do_sacado(pagamento, sequencial)
|
|
167
|
+
info = ''
|
|
168
|
+
# Tipo de Inscrição do Pagador: "01" = CPF , "02" = CNPJ , "03" = PIS/PASEP , "98" = Não tem , "99" = Outros
|
|
169
|
+
info << "#{pagamento.pagador.tipo_cpf_cnpj}".adjust_size_to(2, '0', :right)
|
|
170
|
+
info << "#{pagamento.pagador.cpf_cnpj}".adjust_size_to(14, '0', :right)
|
|
171
|
+
info << "#{pagamento.pagador.nome}".adjust_size_to(30)
|
|
172
|
+
info << ''.adjust_size_to(10) # Complemento Registro (Brancos)
|
|
173
|
+
info << "#{pagamento.pagador.endereco}".adjust_size_to(40)
|
|
174
|
+
info << "#{pagamento.pagador.bairro}".adjust_size_to(12)
|
|
175
|
+
info << "#{pagamento.pagador.cep}".adjust_size_to(8, '0', :right) # CEP + Sufixo do CEP
|
|
176
|
+
info << "#{pagamento.pagador.cidade}".adjust_size_to(15)
|
|
177
|
+
info << "#{pagamento.pagador.uf}".adjust_size_to(2)
|
|
178
|
+
info << "#{pagamento.pagador.nome_avalista}".adjust_size_to(30) # Sacador/Avalista (Nome)
|
|
179
|
+
info << ''.adjust_size_to(4) # Complemento Registro (Brancos)
|
|
180
|
+
|
|
181
|
+
info << ''.adjust_size_to(6, '0') # Data de mora
|
|
182
|
+
info << '03' # Quantidade de dias
|
|
183
|
+
info << ''.adjust_size_to(1) # Complemento Registro (Brancos)
|
|
184
|
+
info
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|
|
@@ -80,7 +80,7 @@ module BrBoleto
|
|
|
80
80
|
dados << ''.rjust(6, '0') # 096 101 006 9(06) Numero do borderô: preencher em caso de carteira 3
|
|
81
81
|
dados << ''.rjust(4, ' ') # 102 105 004 X(04) Complemento do Registro: Brancos
|
|
82
82
|
|
|
83
|
-
dados << "#{pagamento.tipo_emissao}".adjust_size_to(1) # 106 106 001 9(01) "Tipo de Emissão: 1-Cooperativa 2-Cliente"
|
|
83
|
+
dados << "#{conta.get_identificacao_emissao(pagamento.tipo_emissao, 400)}".adjust_size_to(1, '2') # 106 106 001 9(01) "Tipo de Emissão: 1-Cooperativa 2-Cliente"
|
|
84
84
|
dados << "#{conta.modalidade}".adjust_size_to(2, '0', :right) # 107 108 002 9(02) "Carteira/Modalidade: 01 = Simples Com Registro 02 = Simples Sem Registro 03 = Garantida Caucionada "
|
|
85
85
|
dados
|
|
86
86
|
end
|
|
@@ -125,7 +125,7 @@ module BrBoleto
|
|
|
125
125
|
# 21 = Mensalidade Escolar
|
|
126
126
|
# 22 = Parcela de Consórcio
|
|
127
127
|
# 99 = Outros"
|
|
128
|
-
dados << "#{pagamento.especie_titulo}".adjust_size_to(2, '0', :right)
|
|
128
|
+
dados << "#{conta.get_especie_titulo(pagamento.especie_titulo, 400)}".adjust_size_to(2, '0', :right)
|
|
129
129
|
|
|
130
130
|
# 150 150 001 X(01) "Aceite do Título: "0" = Sem aceite "1" = Com aceite"
|
|
131
131
|
dados << "#{pagamento.aceite ? '1' : '0'}".adjust_size_to(1, '0')
|
|
@@ -171,7 +171,7 @@ module BrBoleto
|
|
|
171
171
|
detalhe << pagamento.percentual_multa_formatado(6)
|
|
172
172
|
|
|
173
173
|
# 173 173 001 9(01) "Tipo Distribuição: 1 – Cooperativa 2 - Cliente"
|
|
174
|
-
detalhe << "#{pagamento.tipo_emissao}".adjust_size_to(1)
|
|
174
|
+
detalhe << "#{conta.get_identificacao_emissao(pagamento.tipo_emissao, 400)}".adjust_size_to(1, '2')
|
|
175
175
|
|
|
176
176
|
# 174 179 006 9(06) "Data primeiro desconto:
|
|
177
177
|
# Informar a data limite a ser observada pelo cliente para o pagamento
|