ERP para una importadora
Inventario, ventas, clientes y usuarios para una importadora de repuestos. Backend en Spring Boot, vistas en Thymeleaf y comprobantes electrónicos vía Nubefact.
- Spring Boot
- Java
- Thymeleaf
- MySQL
- Nubefact
El problema
Una importadora necesitaba un sistema propio para su inventario, sus ventas y sus clientes. Además facturaba a mano: cada comprobante era alguien copiando datos en el portal de SUNAT, sin ninguna relación entre la factura emitida y la venta que la originó.
Lo que construí
El sistema completo: backend en Spring Boot con Spring Security, JPA y APIs REST, y las vistas de la aplicación en Thymeleaf con Tailwind CSS. Los módulos de inventario, ventas, clientes y usuarios trabajan sobre una base de datos relacional en MySQL que diseñé para el proyecto.
Las ventas emiten su comprobante electrónico ante SUNAT a través de Nubefact.
Por qué el diagrama y no una captura
Es un sistema interno de una empresa. Sus datos son facturación real de un tercero y no se publican: ni capturas de la aplicación en uso, ni nombres de clientes, ni importes. Lo que sí se puede enseñar es cómo está resuelto.
Lo que el diagrama cuenta
Tres capas: las vistas se renderizan en el servidor con Thymeleaf; el backend en Spring Boot protege las rutas con Spring Security, valida lo que entra en los controladores y reparte la lógica en un servicio por área; y Spring Data JPA lleva los datos a MySQL.
La emisión de comprobantes es una integración más, pero con un cuidado propio: un comprobante a medio emitir puede dejar una venta sin factura o una factura duplicada. Por eso la venta se persiste antes de llamar a Nubefact, y el estado del comprobante vive aparte del estado de la venta. Las tres respuestas posibles se manejan sin perder nada:
- Aceptado: se guardan el número y el estado junto a la venta.
- Rechazado por validación: se registra el motivo que devuelve SUNAT, y la venta sigue registrada.
- El proveedor no responde: el comprobante queda pendiente y la operación puede reintentarse sin volver a cobrar.
Además
Integré agentes de IA (OpenAI Codex, Claude Code) en el flujo de trabajo para planificación, revisión de código, documentación y QA, y participé en el análisis de requerimientos y las pruebas funcionales.