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
@@ -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
|