IRPF 2001 en python (España) (programita tonto)

fernand0 en hotpop.com fernand0 en hotpop.com
Mar Mayo 14 18:42:16 CEST 2002


Hola,

para los que hayais presentado la declaración de la renta o la vayais a
presentar y querais comprobar el estado de la devolución sin tener que
lanzar el navegador, introducir los datos y todo eso, aquí está este
programita que lo hace por nosotros: basta con ponerle el NIF, la cantidad
de EUROS solicitados y los CENTS.
(Como curiosidad: es gracioso que en el formulario separen céntimos y
euros, pero no dividan el NIF en parte numérica y la letra).

También puede enviar por correo los resultados a la dirección que digais
si configurais las variables TO y SERVIDORSMTP.

Está probado en Linux, y con la Debian woody y el python2.2 hay problemas
con la lectura de la página (que es https), por eso puse
#!/usr/bin/env python2.1
y no pude utilizar el módulo email que viene con la 2.2 de python.
Quedaría más cortito.

Por supuesto, si le haceis mejoras o encontrais fallos, no dudeis en
comunicarlo.

Saludos,

-- 
Fernando
------------ próxima parte ------------
#!/usr/bin/env python2.1
""" Programa para comprobar el estado de la devolución del irpf'2002

Hay que configurar, al menos, las variables: NIF, EUROS y CENTS para que
funcione. Además, opcionalmente, configurar FROM, SERVIDORSMTP, si
deseamos que el resultado devuelto por el servidor se nos envíe por correo
electrónico a donde queramos. También podemos cambiar el FROM a algún valor
con significado, si así lo deseamos. Si dejamos estas variables sin
configurar, se guardará el resultado devuelto por el servidor en un fichero
llamado irpf.html

Este programa se proporciona como está, sin garantía de ninguna clase y en
la esperanza de que sea útil. Comentarios, sugerencias, ideas a:
fernand0(en)hotpop.com
"""

import urllib2

# Datos para identificar la declaración. Obligatorio ponerlos.
# Cuidado, en la página web han decidido separar euros y céntimos.
NIF='12345578Z'
EUROS='0000'
CENTS='00'

# Datos para configurar el envío del mensaje de correo. Opcionales.
# Si se deja alguno de los datos vacío (sin configurar), no se enviará por
# correo, sino que se se guardará el fichero irpf.html devuelto por el
# servidor
FROM = 'Que viene hacienda <aeat en aeat.es>'
TO = ''
SERVIDORSMTP = ''

# A partir de aquí no modificar sin conocimiento de lo que se hace
##########################################################################

# La URL del POST
URL='https://aeat.es/PROGCONV/CWBA/PROGLOGI/'

# Los parámetros.
parametros='HID=DEVOLUGE&NIF='+NIF+'&IMP='+EUROS+'&IMD='+CENTS

# Solicitamos los datos al servidor.
f = urllib2.urlopen(URL, parametros)


if ((FROM != '') and (TO != '') and (SERVIDORSMTP != '')):
		# Ahora construimos el mensaje de correo electrónico
		# Lamentablemente el https no funciona con mi python2.2 así que hay
		# que construirse el mensaje a mano, sin poder usar email, que es
		# nuevo en python2.2.

		import smtplib
		import MimeWriter
		import mimetools
		import time
		import StringIO
		import cStringIO

		fecha = time.asctime(time.localtime(time.time()))
		# Construcción del mensaje
		textoMensaje = cStringIO.StringIO(f.read())

		mensaje = StringIO.StringIO()
		generador=MimeWriter.MimeWriter(mensaje)
		generador.addheader('From',FROM)
		generador.addheader('Subject',"Estado de la devolución")
		generador.addheader('Date',fecha)
		generador.addheader('MIME-Version:',' 1.0\n')
		generador.startmultipartbody("mixed")

		parte = generador.nextpart()
		tipo="text/html"
		codificacion = "none"
		parte.addheader("Content-transfer-encoding","base64")
		pout = parte.startbody(tipo, [(URL,'')])
		mimetools.encode(textoMensaje,pout,'base64')

		generador.lastpart()

		fromaddr = FROM
		toaddrs = TO

		server = smtplib.SMTP()
		server.connect(SERVIDORSMTP)
		server.sendmail(fromaddr, toaddrs, mensaje.getvalue())
		server.quit()
else:
		fSal = open ('irpf.html', 'w')
		fSal.write(f.read())


Más información sobre la lista de distribución Python-es