Factura Electrónica con Software Libre – Reutilización de Ticket de Acceso


Para los que han implementado el uso de factura electrónica con software libre a través del desarrollo en python realizado por la gente de Sistemas Agiles, como comentábamos en este artículo, seguramente se han encontrado últimamente (nov/2011) con un problema ajeno a esta implementación, pero que trae grandes dolores de cabeza.

Resulta que ultimamente hemos tenido grandes problemas de comunicación con los servidores de AFIP a la hora de actualizar facturas electrónicas utilizando WSFEv1.

Uno de los errores mas comunes es: “600: ValidacionDeToken: Error al verificar hash: VerificaciónDeHash: Error al convertir de Bas64 al token:”

Este es uno de los varios errores que se producen por un corte o timeout en la comunicación con el servidor.

Gracias a nuestro gran amigo Reinghart, hemos descubierto que reutilizando el ticket de acceso, se puede bajar un poco la taza de comprobantes rechazados.

Sumado a esto, notamos que nuestros sitemas, están generando facturas electrónicas con una frecuencia muy alta (2 o  3 facturas por minuto), lo que para un sistema ocn problemas de ancho de banda y concurrencia es bastante dificil de manejar, así que tambien hemos descubierto que si se graban comprobantes cada 3 minutos, prácticamente no hay rechazos.

Espero que esta información sea útil para muchos que se estén rompiendo la cabeza con este tema en estos días.

Pueden encontrar mas info de este y otros problemas en el foro de google pyafipws.

Implementación de Factura Electrónica utilizando Software Libre


La implementación Factura Electrónica para Mercado Interno o Exportación en Argentina puede  realizarse utilizando SL.
El código fuente desarrollado en Python se encuentra disponible en Google Code.
Este es un desarrollo de la gente de Sistemas Agiles que ha liberado su codigo fuente a la comunidad bajo licencia GPL v3.
Dado que he tenido que implementar esta funcionalidad para algunas empresas dejo estas notas sobre su utilización para WSFEv1 para cualquiera que esté en el mismo baile…
 
 
Servicio Web de Autenticación y Autorización (WSAA)
Este servicio es necesario para acceder al resto de los servicios de negocios (ej. Factura Electrónica) ofrecidos por la AFIP.
Se debe generar un Ticket de Requerimiento de Acceso (TRA), firmarlo criptográficamente (generando un mensaje CMS) que es envía al servicio web para obtener un Ticket de Acceso (TA).
Esta interfase crea el mensaje en XML, lo firma criptográficamente y lo codifica en base-64 como lo requiere la AFIP, por lo que en general no es necesario realizar ninguno de estos pasos.
 
 
 
 
Generar Certificados:
Para poder utilizar la interfase se deben tramitar y asociar los certificados de homologación/producción en la AFIP. 
Pasos para crear el certificado:
  • Generar la clave privada:
    openssl genrsa -out empresa.key 1024
  • Generar el pedido (CSR: certificate signing request) por línea de comando:
    openssl req -new -key empresa.key -out empresa.csr -config afip-openssl.cnf
    • Country Name (2 letter code) [AR]:AR
    • Organization Name (por ej., empresa) [EMPRESA SA]:ingresar nombre de la empresa tal cual figura en la consulta de inscripción, ej.:Empresa S A
    • Common Name (por ej., su nombre) []:ingresar el nombre del servicio, aplicación u unidad operativa, ej:Sistema Facturas
    • Ingrese: CUIT XXXXXXXXXXX (XXXXXXXXXXX es la CUIT sin guiones)ingresarCUIT xxxxxxxxxxx
  • Enviar el empresa.csr a la AFIP para que lo firmen y devuelvan el certificado empresa.crt. Para asociar el certificado de homologación, enviarlo por email a la AFIP (webservices@afip.gov.ar). Para producción, enviarlo por clave fiscal, y descargar el certificado CRT.
 
El archivo afip-openssl.cnf debe configurarse y puede bajarse desde aca.
 
 
 
Paquete de Librerías:
Descargar e instalar en C:\PyAfipWsd el último paquete completo de librerías desde el sitio de descargas por ejemplo http://pyafipws.googlecode.com/files/instalador-PyAfipWs-1.25c-homo.exe
 
 
 
 
 
Uso en Producción
Por diseño, la interfaz COM (pyafipws.py, wsaa.py) y herramientas (rece.py, recex.py y receb.py) funcionan en modo homologación, para habilitar modo producción, por ej. editar la linea #28:
HOMO = True
y cambiarla a:
HOMO = False
De lo contrario, la interfaz no tendrá en cuenta las URLs de los servidores de Producción, aunque sean informadas en CallWSAA y Conectar.
Nota: Esto no aplica a los módulos para Python (wsfe.py, wsfex.py, etc.), pero también por defecto funcionan con URL de homologación.
Lo mismo aplica para WSFEv1 y WSMTXCA.
 
 
Comentarios:
– Poner “False” con mayúsculas.
 
Proyecto PyPDF utilizado para la creación de facturas digitales en formato PDF.