En los países de Latinoamérica se está produciendo una migración hacia la facturación electrónica (dejando de lado las viejas facturas de papel).
Más allá de aspectos políticos, es una muy buena noticia por, al menos, los siguientes motivos:
- Las operaciones comerciales se realizarán mucho más eficientemente
- Se limitará muchísimo la economía informal y todos los problemas que de ella se derivan
- Dará mucho trabajo a muchos programadores 🙂
Sobre este último punto, veo que a muchos colegas se les complica un poco el tema de integrar sus sistemas con aquellos de la autoridad central de su país, así que decidí hacer este pequeño compendio de las librerías que hay disponibles como para acortar un poco el camino.
Cómo generar facturas electrónicas para Argentina
En el caso de Argentina, la autoridad central es la AFIP.
La generación de facturas electrónicas se realiza mediante un WebService de tipo SOAP (La documentación oficial se puede consultar acá).
Una clase que ya está implementada para hacer esto es la que desarrolló Ivan Muñoz.
El código completo se encuentra en GitHub y mirando un poco, también hay un SDK para PHP que contiene esta librería y otras.
Disclaimer: no probé su funcionamiento con lo cual no puedo dar garantías (¡Si tenés alguna experiencia y querés compartirla en los comments te lo agradezco!).
Algunas observaciones de mirar el código nomás:
- Está preparada para operar con composer
- Podría tener mejores ejemplos
- El código podría emprolijarse un poco (Usa notación de PHP 4, accede al php.ini desde la clase, etc…)
La gente de BitIngenieria ha desarrollado también librerías para conectarse a diferentes organismos públicos (Entre ellos AFIP). Ahí podés encontrar mucho código listo para usar… sólo que es pago.
Cómo generar facturas electrónicas para México
En el caso de México, se puede usar el código publicado en http://www.lacorona.com.mx/fortiz/sat/codigo.php#intro por Fernando Ortiz.
Es interesante cómo está presentado, no sólo el código fuente si no también el esquema de requests que deben hacerse para lograr el objetivo.
Mirando el código simplemente veo:
- Está escrito en modo procedural (En lugar de Orientado a Objetos)
- El código podría estar mejor estructurado (Usa variables globales, incluye archivos dentro de funciones, etc…)
- Usa SimpleXMLElement para procesar el XML
- Tiene muy buena documentación
- Es muy completo (Cubre una gran cantidad de casos)
Tal vez no sería el que yo elegiría para implementar en forma directa, pero ciertamente es un excelente punto de partida.
Cómo generar facturas electrónicas para Perú
Aquí hay un tutorial interesante que explica paso a paso cómo hacer facturas electrónicas para Perú utilizando el webservice del SUNAT.
No es exactamente lo que buscaba (Un SDK escrito en PHP), pero es un buen comienzo.
La gente de NubeFact tiene una oferta para desarrolladores PHP (O para cualquiera bah) basada en un WebService REST propio (Que internamente se comunica con el WebService SOAP de SUNAT).
Queda simplemente consumir el WebService REST de ellos (Y pagar por el servicio, claro… ojo que hasta 50 facturas diarias es gratis… para pensarlo).
Cómo generar facturas electrónicas para Costa Rica
Para el caso de Costa Rica tenemos esta API desarrollada por la comunidad CRLibre que permite comunicarse de forma simple con el Ministerio de Hacienda de Costa Rica.
Su objetivo es ser un middleware que haga menos engorroso el desarrollo de este tipo de sistemas (Mostrando al desarrollador una cara más amigable).
Por lo que parece no tiene aún un cliente de PHP (¡Vaya ironía!) pero parece un proyecto muy interesante y bien armado.
Mirando un poco el código veo que también podría emprolijarse un poco (Hacerlo más acorde al paradigma de objetos, sacando referencias a variabels globales, etc…).
Otro proyecto interesante que está disponible es Faktur-PHP-SDK desarrollado por una persona (o personas) llamada OpenCode506.
No lo he probado funcionando, pero ya de ver el código me gusta bastante más que los otros que he comentado.
Los puntos interesantes que le veo:
- Pide PHP 5.6 o superior (Ya implementa Namespaces por ejemplo)
- Viene con tests unitarios incorporados
- Está preparado para usarse vía composer
Lo que podría ser un poco mejor es la documentación.
Cómo generar facturas electrónicas para Uruguay
Para el caso de Uruguay no encontré una implementación libre de facturas electrónicas… lo que vi es la documentación oficial y a través de una sesión de consulta conocí de la existencia de la empresa Sisnet que ofrece un middleware, sólo que hay que pagar por el servicio (y luego usar su webservice).
Cómo generar facturas electrónicas para Chile
Si tenés que generar facturas electrónicas para Chile podés usar la librería LibreDTE que desarrolló la gente de Sasco.
A simple vista el proyecto parece sólido.
Cumple con las caraterísticas básicas que tanto me gustan:
- Se puede instalar usando Composer
- Está muy bien documentada
- El código es moderno (Usa namespaces al menos)
- Tiene sus tests unitarios incorporados
Cómo generar facturas electrónicas para España
Por último, aunque estaba buscando sólo para LatinoAmérica, me crucé con una implementación de FacturaE para PHP desarrollada por José Miguel Moreno (Acá se puede ver el código).
En resumen
Habrás notado que, si bien cada país implementa su propia forma de Factura electrónica y por lo tanto se requiere una librería en particular, todas se basan en el mismo principio:
- Una entidad gubernamental expone un servicio web (Usualmente SOAP)
- La librería consume dicho servicio mostrando una API mucho más sencilla y amigable a los desarrolladores de a pié
Con lo cual: si te encuentras en la situación de tener a mano una librería desarrollada para la facturación electrónica de tu país ¡úsala! En caso contrario (O que no te satisfaga completamente) para implementarla necesitará conocer cómo interactuar con WebServices en PHP.
Si buscas ayuda sobre esto este curso puede serte útil.
- Cómo agregar una página de error 500 en un proyecto PHP - 31/10/2024
- ¿Cuántos contenedoresnecesita tu php? - 28/10/2024
- Cuál es el mejor framework PHP para hacer APIs REST - 25/10/2024
Para Colombia??
Que piensas de la Api de Alegra https://developer.alegra.com/ ¿La haz provado? vi que tienen versiones para varios paises y quiero hacer algo multi país más escalable
Hola Samuel:
Gracias por la pregunta :).
No he usado la API de alegra pero puede funcionar bien… ¿la has probado?