forked from kmee/cnab240
-
Notifications
You must be signed in to change notification settings - Fork 2
/
leitura_retorno_bradesco400.py
287 lines (268 loc) · 13.8 KB
/
leitura_retorno_bradesco400.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
# coding: utf-8
import os
import tempfile
import cnab240
from cnab240.tipos import ArquivoCobranca400
from cnab240.tipos import Lote, Evento
import codecs
from cnab240.bancos import bradesco_cobranca_retorno_400
CODIGO_MOTIVOS_OCORRENCIA = {
'02': {
'texto': 'entrada confirmada',
'00': 'Ocorrência aceita',
'01': 'Código do Banco inválido',
'04': 'Código do movimento não permitido para a carteira (NOVO)',
'15': 'Características da cobrança incompatíveis (NOVO)',
'17': 'Data de vencimento anterior a data de emissão',
'21': 'Espécie do Título inválido',
'24': 'Data da emissão inválida',
'27': 'Valor/taxa de juros mora inválido (NOVO)',
'38': 'Prazo para protesto/ Negativação inválido (ALTERADO)',
'39': 'Pedido para protesto/ Negativação não permitido para o título (ALTERADO)',
'43': 'Prazo para baixa e devolução inválido',
'45': 'Nome do Pagador inválido',
'46': 'Tipo/num. de inscrição do Pagador inválidos',
'47': 'Endereço do Pagador não informado',
'48': 'CEP Inválido',
'50': 'CEP referente a Banco correspondente',
'53': 'No de inscrição do Pagador/avalista inválidos (CPF/CNPJ)',
'54': 'Pagadorr/avalista não informado',
'67': 'Débito automático agendado',
'68': 'Débito não agendado - erro nos dados de remessa',
'69': 'Débito não agendado - Pagador não consta no cadastro de autorizante',
'70': 'Débito não agendado - Beneficiário não autorizado pelo Pagador',
'71': 'Débito não agendado - Beneficiário não participa da modalidade de déb.automático',
'72': 'Débito não agendado - Código de moeda diferente de R$',
'73': 'Débito não agendado - Data de vencimento inválida/vencida',
'75': 'Débito não agendado - Tipo do número de inscrição do pagador debitado inválido',
'76': 'Pagador Eletrônico DDA (NOVO)- Esse motivo somente será disponibilizado no arquivo retorno para as empresas cadastradas nessa condição.',
'86': 'Seu número do documento inválido',
'89': 'Email Pagador não enviado – título com débito automático (NOVO)',
'90': 'Email pagador não enviado – título de cobrança sem registro (NOVO)',
},
'03': {
'texto': 'entrada rejeitada',
'02': 'Código do registro detalhe inválido',
'03': 'Código da ocorrência inválida',
'04': 'Código de ocorrência não permitida para a carteira',
'05': 'Código de ocorrência não numérico',
'07': 'Agência/conta/Digito - |Inválido',
'08': 'Nosso número inválido',
'09': 'Nosso número duplicado',
'10': 'Carteira inválida',
'13': 'Identificação da emissão do bloqueto inválida (NOVO)',
'16': 'Data de vencimento inválida',
'18': 'Vencimento fora do prazo de operação',
'20': 'Valor do Título inválido',
'21': 'Espécie do Título inválida',
'22': 'Espécie não permitida para a carteira',
'24': 'Data de emissão inválida',
'28': 'Código do desconto inválido (NOVO)',
'38': 'Prazo para protesto/ Negativação inválido (ALTERADO)',
'44': 'Agência Beneficiário não prevista',
'45': 'Nome do pagador não informado (NOVO)',
'46': 'Tipo/número de inscrição do pagador inválidos (NOVO)',
'47': 'Endereço do pagador não informado (NOVO)',
'48': 'CEP Inválido (NOVO)',
'50': 'CEP irregular - Banco Correspondente',
'63': 'Entrada para Título já cadastrado',
'65': 'Limite excedido (NOVO)',
'66': 'Número autorização inexistente (NOVO)',
'68': 'Débito não agendado - erro nos dados de remessa',
'69': 'Débito não agendado - Pagador não consta no cadastro de autorizante',
'70': 'Débito não agendado - Beneficiário não autorizado pelo Pagador',
'71': 'Débito não agendado - Beneficiário não participa do débito Automático',
'72': 'Débito não agendado - Código de moeda diferente de R$',
'73': 'Débito não agendado - Data de vencimento inválida',
'74': 'Débito não agendado - Conforme seu pedido, Título não registrado',
'75': 'Débito não agendado – Tipo de número de inscrição do debitado inválido',
},
'06': {
'texto': 'Liquidação normal',
'00': 'Título pago com dinheiro',
'15': 'Título pago com cheque',
'42': 'Rateio não efetuado, cód. Calculo 2 (VLR. Registro) e v (NOVO)'
},
'10': {
'texto': 'Baixado conforme instruções da Agência',
'00': 'Baixado Conforme Instruções da Agência',
'14': 'Título Protestado',
'15': 'Título excluído',
'16': 'Título Baixado pelo Banco por decurso Prazo',
'17': 'Titulo Baixado Transferido Carteira',
'20': 'Titulo Baixado e Transferido para Desconto',
},
'19': {
'texto': 'Confirmação Receb. Inst. de Protesto',
'00': 'N/A',
},
'23': {
'texto': 'Entrada do Título em Cartório',
'00': 'N/A',
},
'28': {
'texto': 'Débito de tarifas/custas',
'02': 'Tarifa de permanência título cadastrado (NOVO)',
'03': 'Tarifa de sustação/Excl Negativação (ALTERADO)',
'04': 'Tarifa de protesto/Incl Negativação (ALTERADO)',
'05': 'Tarifa de outras instruções (NOVO)',
'06': 'Tarifa de outras ocorrências (NOVO)',
'08': 'Custas de protesto',
'12': 'Tarifa de registro (NOVO)',
'13': 'Tarifa título pago no Bradesco (NOVO)',
'14': 'Tarifa título pago compensação (NOVO)',
'15': 'Tarifa título baixado não pago (NOVO)',
'16': 'Tarifa alteração de vencimento (NOVO)',
'17': 'Tarifa concessão abatimento (NOVO)',
'18': 'Tarifa cancelamento de abatimento (NOVO)',
'19': 'Tarifa concessão desconto (NOVO)',
'20': 'Tarifa cancelamento desconto (NOVO)',
'21': 'Tarifa título pago cics (NOVO)',
'22': 'Tarifa título pago Internet (NOVO)',
'23': 'Tarifa título pago term. gerencial serviços (NOVO)',
'24': 'Tarifa título pago Pág-Contas (NOVO)',
'25': 'Tarifa título pago Fone Fácil (NOVO)',
'26': 'Tarifa título Déb. Postagem (NOVO)',
'27': 'Tarifa impressão de títulos pendentes (NOVO)',
'28': 'Tarifa título pago BDN (NOVO)',
'29': 'Tarifa título pago Term. Multi Função (NOVO)',
'30': 'Impressão de títulos baixados (NOVO)',
'31': 'Impressão de títulos pagos (NOVO)',
'32': 'Tarifa título pago Pagfor (NOVO)',
'33': 'Tarifa reg/pgto – guichê caixa (NOVO)',
'34': 'Tarifa título pago retaguarda (NOVO)',
'35': 'Tarifa título pago Subcentro (NOVO)',
'36': 'Tarifa título pago Cartão de Crédito (NOVO)',
'37': 'Tarifa título pago Comp Eletrônica (NOVO)',
'38': 'Tarifa título Baix. Pg. Cartório (NOVO)',
'39': 'Tarifa título baixado acerto BCO (NOVO)',
'40': 'Baixa registro em duplicidade (NOVO)',
'41': 'Tarifa título baixado decurso prazo (NOVO)',
'42': 'Tarifa título baixado Judicialmente (NOVO)',
'43': 'Tarifa título baixado via remessa (NOVO)',
'44': 'Tarifa título baixado rastreamento (NOVO)',
'45': 'Tarifa título baixado conf. Pedido (NOVO)',
'46': 'Tarifa título baixado protestado (NOVO)',
'47': 'Tarifa título baixado p/ devolução (NOVO)',
'48': 'Tarifa título baixado franco pagto (NOVO)',
'49': 'Tarifa título baixado SUST/RET/CARTÓRIO (NOVO)',
'50': 'Tarifa título baixado SUS/SEM/REM/CARTÓRIO (NOVO)',
'51': 'Tarifa título transferido desconto (NOVO)',
'52': 'Cobrado baixa manual (NOVO)',
'53': 'Baixa por acerto cliente (NOVO)',
'54': 'Tarifa baixa por contabilidade (NOVO)',
'55': 'Tr. tentativa cons deb aut',
'56': 'Tr. credito online',
'57': 'Tarifa reg/pagto Bradesco Expresso',
'58': 'Tarifa emissão Papeleta (NOVO)',
'59': 'Tarifa fornec papeleta semi preenchida (NOVO)',
'60': 'Acondicionador de papeletas (RPB)S (NOVO)',
'61': 'Acond. De papelatas (RPB)s PERSONAL (NOVO)',
'62': 'Papeleta formulário branco (NOVO)',
'63': 'Formulário A4 serrilhado (NOVO)',
'64': 'Fornecimento de softwares transmiss (NOVO)',
'65': 'Fornecimento de softwares consulta (NOVO)',
'66': 'Fornecimento Micro Completo (NOVO)',
'67': 'Fornecimento MODEN (NOVO)',
'68': 'Fornecimento de máquina FAX (NOVO)',
'69': 'Fornecimento de máquinas óticas (NOVO)',
'70': 'Fornecimento de Impressoras (NOVO)',
'71': 'Reativação de título (NOVO)',
'72': 'Alteração de produto negociado (NOVO)',
'73': 'Tarifa emissão de contra recibo (NOVO)',
'74': 'Tarifa emissão 2a via papeleta (NOVO)',
'75': 'Tarifa regravação arquivo retorno (NOVO)',
'76': 'Arq. Títulos a vencer mensal (NOVO)',
'77': 'Listagem auxiliar de crédito (NOVO)',
'78': 'Tarifa cadastro cartela instrução permanente (NOVO)',
'79': 'Canalização de Crédito (NOVO)',
'80': 'Cadastro de Mensagem Fixa (NOVO)',
'81': 'Tarifa reapresentação automática título (NOVO)',
'82': 'Tarifa registro título déb. Automático (NOVO)',
'83': 'Tarifa Rateio de Crédito (NOVO)',
'84': 'Emissão papeleta sem valor (NOVO)',
'85': 'Sem uso (NOVO)',
'86': 'Cadastro de reembolso de diferença (NOVO)',
'87': 'Relatório fluxo de pagto (NOVO)',
'88': 'Emissão Extrato mov. Carteira (NOVO)',
'89': 'Mensagem campo local de pagto (NOVO)',
'90': 'Cadastro Concessionária serv. Publ. (NOVO)',
'91': 'Classif. Extrato Conta Corrente (NOVO)',
'92': 'Contabilidade especial (NOVO)',
'93': 'Realimentação pagto (NOVO)',
'94': 'Repasse de Créditos (NOVO)',
'96': 'Tarifa reg. Pagto outras mídias (NOVO)',
'97': 'Tarifa Reg/Pagto – Net Empresa (NOVO)',
'98': 'Tarifa título pago vencido (NOVO)',
'99': 'TR Tít. Baixado por decurso prazo (NOVO)',
# '100': 'Arquivo Retorno Antecipado (NOVO)',
# '101': 'Arq retorno Hora/Hora (NOVO)',
# '102': 'TR. Agendamento Déb Aut (NOVO)',
# '105': 'TR. Agendamento rat. Crédito (NOVO)',
# '106': 'TR Emissão aviso rateio (NOVO)',
# '107': 'Extrato de protesto (NOVO)',
},
'32': {
'texto': 'Instrução Rejeitada',
'01': 'Código do Banco inválido',
'02': 'Código do registro detalhe inválido',
'04': 'Código de ocorrência não permitido para a carteira',
'05': 'Código de ocorrência não numérico',
'07': 'Agência/Conta/dígito inválidos',
'08': 'Nosso número inválido',
'10': 'Carteira inválida',
'15': 'Características da cobrança incompatíveis',
'16': 'Data de vencimento inválida',
'17': 'Data de vencimento anterior a data de emissão',
'18': 'Vencimento fora do prazo de operação',
'20': 'Valor do título inválido',
'21': 'Espécie do Título inválida',
'22': 'Espécie não permitida para a carteira',
'24': 'Data de emissão inválida',
'28': 'Código de desconto via Telebradesco inválido',
'29': 'Valor do desconto maior/igual ao valor do Título',
'30': 'Desconto a conceder não confere',
'31': 'Concessão de desconto - Já existe desconto anterior',
'33': 'Valor do abatimento inválido',
'34': 'Valor do abatimento maior/igual ao valor do Título',
'36': 'Concessão abatimento - Já existe abatimento anterior',
'38': 'Prazo para protesto/ Negativação inválido (ALTERADO)',
'39': 'Pedido para protesto/ Negativação não permitido para o título (ALTERADO)',
'40': 'Título com ordem/pedido de protesto/Negativação emitido (ALTERADO)',
'41': 'Pedido de sustação/excl p/ Título sem instrução de protesto/Negativação (ALTERADO)',
'42': 'Código para baixa/devolução inválido',
'45': 'Nome do Pagador não informado',
'46': 'Tipo/número de inscrição do Pagador inválidos',
'47': 'Endereço do Pagador não informado',
'48': 'CEP Inválido',
'50': 'CEP referente a um Banco correspondente',
'53': 'Tipo de inscrição do pagador avalista inválidos',
'60': 'Movimento para Título não cadastrado',
'85': 'Título com pagamento vinculado',
'86': 'Seu número inválido',
'94': 'Título Penhorado – Instrução Não Liberada pela Agência (NOVO)',
'97': ' Instrução não permitida título negativado (NOVO)',
'98': ' Inclusão Bloqueada face a determinação Judicial (NOVO)',
'99': ' Telefone beneficiário não informado / inconsistente (NOVO)',
},
'33': {
'texto': 'Confirmação Pedido Alteração Outros Dados',
'00': 'N/A',
},
}
file_path = 'your_file_goes_here'
# return_file_path = os.path.join(file_path)
# ret_file = codecs.open(return_file_path, encoding='ascii')
# arquivo = ArquivoCobranca400(bradesco_cobranca_retorno_400, arquivo=ret_file)
codigo = CODIGO_MOTIVOS_OCORRENCIA
with open(file_path, 'r') as f:
next(f)
for line in f:
if line[108:110] == '00':
continue
if line[318:320] == '':
continue
print ('Titulo: ' + line[116:126])
print ('\tOcorrencia: ' + str(codigo[line[108:110]]['texto']) + '\t Motivo: ' + str(codigo[line[108:110]][line[318:320]]))
# print ('\t\tMotivo: ' + str(codigo[line[108:110]][line[318:320]]))
f.closed