Veronica
es una API Rest de código abierto utilizada para la emisión y autorización de comprobantes electrónicos según la normativa vigente del Sistema de Rentas Internas del Ecuador. El proyecto ha sido desarrollado a través de una aplicación Spring-Boot 1.5.9.RELEASE. Adicionalmente, Veronica
almacena los comprobantes en una base de datos PostgreSQL lo cual le permite realizar posteriores consultas más allá de las comunes como por ejemplo, consultar detalles de facturas, consultar totales o listar comprobantes por emisor o receptor.
Todo comprobante electrónico gestionado a través de Veronica
manejará un ciclo de vida basado en 4 fases:
- Software requerido
- Pasos previos
- Instalación
- Seguridad
- Documentación
- Bitácora
- Autor
- Colaboradores
- Patrocinadores
- Prueba Veronica Enterprise
- Try Veronica Enterprise
- JDK 1.8.0_121
- Apache Maven 3.5.3
- PostgreSQL 11.1-1
Veronica
posee una lista de dependencias que no se encuentran disponibles en el repositorio remoto de Maven por lo que se tendrá que hacer la instalación de forma manual. Para esto, ejecutar los comandos listados a continuación.
cd /veronica-open-api/additional_libs
mvn install:install-file -Dfile=jss-4.2.5.jar -DgroupId=org.mozilla -DartifactId=jss -Dversion=4.2.5 -Dpackaging=jar
mvn install:install-file -Dfile=MITyCLibAPI-1.0.4.jar -DgroupId=es.mityc.javasign -DartifactId=api -Dversion=1.0.4 -Dpackaging=jar
mvn install:install-file -Dfile=MITyCLibCert-1.0.4.jar -DgroupId=es.mityc.javasign -DartifactId=cert -Dversion=1.0.4 -Dpackaging=jar
mvn install:install-file -Dfile=MITyCLibOCSP-1.0.4.jar -DgroupId=es.mityc.javasign -DartifactId=ocsp -Dversion=1.0.4 -Dpackaging=jar
mvn install:install-file -Dfile=MITyCLibPolicy-1.0.4.jar -DgroupId=es.mityc.javasign -DartifactId=policy -Dversion=1.0.4 -Dpackaging=jar
mvn install:install-file -Dfile=MITyCLibTrust-1.0.4.jar -DgroupId=es.mityc.javasign -DartifactId=trust -Dversion=1.0.4 -Dpackaging=jar
mvn install:install-file -Dfile=MITyCLibTSA-1.0.4.jar -DgroupId=es.mityc.javasign -DartifactId=tsa -Dversion=1.0.4 -Dpackaging=jar
mvn install:install-file -Dfile=MITyCLibXADES-1.0.4.jar -DgroupId=es.mityc.javasign -DartifactId=xades -Dversion=1.0.4 -Dpackaging=jar
mvn install:install-file -Dfile=xmlsec-1.4.2-ADSI-1.0.jar -DgroupId=org.apache.xmlsec-adsi -DartifactId=xmlsec-adsi -Dversion=1.4.2 -Dpackaging=jar
Veronica
puede ser ejecutado como una aplicación Spring-Boot la cual requiere la instalación previa de PostgreSQL.
- Abrir una consola o shell y crear la base de datos.
$ psql -U postgres
# CREATE DATABASE "veronica";
# \q
- Crear la estructura de tablas ejecutando el script veronica.sql.
$ cd veronica-open-api/src/sql
$ psql -U postgres veronica < veronica.sql
- Agregar la siguiente entrada al final del archivo postgresql.conf y reiniciar el servidor de base de datos.
encrypt.key = 8qxBjzCdQkwdpu
Recordar cambiar la clave de conexión de la base de datos en la carpeta
/veronica-open-api/src/filters
- Instalar
Veronica
.
$ cd veronica-open-api
$ mvn clean package install
Veronica
proporciona dos perfiles de despliegue: Desarrollo y Producción. Cada uno de estos perfiles posee un archivo de configuración situado en /veronica-open-api/src/filters. Para desplegar el proyecto con el perfil adecuado, indicar el ambiente como argumento de ejecución.
Desarrollo
$ cd veronica-open-api/app
$ mvn spring-boot:run -Pdevelopment
Producción
$ cd veronica-open-api/app
$ mvn spring-boot:run -Pproduction
Al instalar la base de datos de Veronica
, automáticamente se crearán dos usuarios con sus respectivas contraseñas y roles.
Usuario | Contraseña | Rol |
---|---|---|
admin | veronica | ROLE_ADMIN |
user | veronica | ROLE_USER |
Para generar un token para el usuario admin, por ejemplo, podermos ejecutar el siguiente comando curl:
curl -u veronica:veronica -X POST http://localhost:8080/veronica/oauth/token -H "Accept:application/json" -d "username=admin&password=veronica&grant_type=password"
También en el archivo /veronica-open-api/src/postman/Verónica API Reference.postman_collection.json de postman podemos encontrar un ejemplo de llamada a este endpoint.
Con el token generado podemos hacer uso de cualquier de los endpoints que ofrece Veronica
a través de su API Rest. Para esto, debemos utilizar el token generado a través de una llamada con autenticación Bearer, tal como se muestra a continuación:
curl http://localhost:8080/veronica/api/v1.0/facturas/2204201901109170199100120010010001467560014675614/archivos/xml -H "Authorization: Bearer 77ed953e-b3b6-4ea1-820e-2e9acc702293"
Para acceder, debemos utilizar los usuarios indicados en la sección anterior.
http://localhost:8080/veronica/swagger-ui.html
Veronica
también pone a disposición de los usuarios una colección de llamadas y ejemplos que se encuentra en la ruta /src/postman/Verónica API Reference.postman_collection.json.
- V1: 2018-04-12, Primera versión.
- V2: 2018-04-27, Perfiles de Maven.
- V3: 2018-04-28, Habilitar Swagger2.
- V4: 2018-11-10, Generación de RIDEs.
- V5: 2018-11-19, Integración con Postman.
- V6: 2019-01-09, Integración con PostgreSQL.
- V7: 2019-02-21, Soporte para Retenciones y Guías de remisión.
- V8: 2019-05-18, Soporte para Notas de débito.
V9: 2019-05-22, Soporte para Docker con Fabric8.- V10: 2019-05-28, Seguridad con OAuth2.0.
- V11: 2019-12-27, Mover dependencias genéricas de Verónica a Sonatype
@RolandoPalermo | @XaviMontero | @Israel |
@Japstones | @vperilla | @andresluzu |
Conviértete en un patrocinador
- Veronica Enterprise Swagger UI
- Soporte para todos los tipos de documentos electrónicos incluyendo Liquidaciones de compras
- Soporte para notificaciones por email con plantillas personalizadas
- Soporte para plantillas personalizadas de RIDEs
- Soporte para GraphQL
- Soporte para QueryDSL y REST Query Language
- Contáctanos en rolando.roc@gmail.com para más información
- Veronica Enterprise Swagger UI
- Best support for all electronic documents including Purchase clearance
- Support for email notifications with custom templates
- Support for custom RIDEs templates
- GraphQL support
- QueryDSL & REST Query Language support
- Contact us at rolando.roc@gmail.com for further information