forked from reingart/pyafipws
-
Notifications
You must be signed in to change notification settings - Fork 0
/
formato_cot.py
110 lines (100 loc) · 3.16 KB
/
formato_cot.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
#!/usr/bin/python
# -*- coding: latin-1 -*-
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 3, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
# Based on MultipartPostHandler.py (C) 02/2006 Will Holcomb <wholcomb@gmail.com>
# Ejemplos iniciales gracias a "Matias Gieco matigro@gmail.com"
"Módulo para analizar el formato de un remito electrónico (COT)"
__author__ = "Mariano Reingart (reingart@gmail.com)"
__copyright__ = "Copyright (C) 2010 Mariano Reingart"
__license__ = "LGPL 3.0"
import sys
registros = {
'01': 'HEADER',
'02': 'REMITO',
'03': 'PRODUCTOS',
'04': 'FOOTER',
}
formato = {
'01': [
'TIPO_REGISTRO',
'CUIT_EMPRESA'
],
'02': [
'TIPO_REGISTRO',
'FECHA_EMISION',
'CODIGO_UNICO',
'FECHA_SALIDA_TRANSPORTE',
'HORA_SALIDA_TRANSPORTE',
'SUJETO_GENERADOR',
'DESTINATARIO_CONSUMIDOR_FINAL',
'DESTINATARIO_TIPO_DOCUMENTO',
'DESTINATARIO_DOCUEMNTO',
'DESTIANTARIO_CUIT',
'DESTINATARIO_RAZON_SOCIAL',
'DESTINATARIO_TENEDOR',
'DESTINO_DOMICILIO_CALLE',
'DESTINO_DOMICILIO_NUMERO',
'DESTINO_DOMICILIO_COMPLE',
'DESTINO_DOMICILIO_PISO',
'DESTINO_DOMICILIO_DTO',
'DESTINO_DOMICILIO_BARRIO',
'DESTINO_DOMICILIO_CODIGOP',
'DESTINO_DOMICILIO_LOCALIDAD',
'DESTINO_DOMICILIO_PROVINCIA',
'PROPIO_DESTINO_DOMICILIO_CODIGO',
'ENTREGA_DOMICILIO_ORIGEN',
'ORIGEN_CUIT',
'ORIGEN_RAZON_SOCIAL',
'EMISOR_TENEDOR',
'ORIGEN_DOMICILIO_CALLE',
'ORIGEN DOMICILIO_NUMBERO',
'ORIGEN_DOMICILIO_COMPLE',
'ORIGEN_DOMICILIO_PISO',
'ORIGEN_DOMICILIO_DTO',
'ORIGEN_DOMICILIO_BARRIO',
'ORIGEN_DOMICILIO_CODIGOP',
'ORIGEN_DOMICILIO_LOCALIDAD',
'ORIGEN_DOMICILIO_PROVINCIA',
'TRANSPORTISTA_CUIT',
'TIPO_RECORRIDO',
'RECORRIDO_LOCALIDAD',
'RECORRIDO_CALLE',
'RECORRIDO_RUTA',
'PATENTE_VEHICULO',
'PATENTE_ACOPLADO',
'PRODUCTO_NO_TERM_DEV',
'IMPORTE',
],
'03': [
'TIPO_REGISTRO',
'CODIGO_UNICO_PRODUCTO',
'RENTAS_CODIGO_UNIDAD_MEDIDA',
'CANTIDAD',
'PROPIO_CODIGO_PRODUCTO',
'PROPIO_DESCRIPCION_PRODUCTO',
'PROPIO_DESCRIPCION_UNIDAD_MEDIDA',
'CANTIDAD_AJUSTADA',
],
'04': [
'TIPO_REGISTRO',
'CANTIDAD_TOTAL_REMITOS',
]
}
f = open(sys.argv[1])
for l in f:
reg = l[0:2]
if reg in registros:
print "Registro: ", registros[reg]
campos = l.strip("\r").strip("\n").split("|")
for i, campo in enumerate(campos):
print " * %s: |%s|" % (formato[reg][i], campo, )
else:
print "registro incorrecto:", l