|
| 1 | +# XHandler Java |
| 2 | + |
1 | 3 | [](https://www.apache.org/licenses/LICENSE-2.0) |
2 | 4 | [](https://github.com/project-openubl/xhandler/actions/workflows/ci.yml) |
3 | 5 |
|
4 | 6 | [](https://projectopenubl.zulipchat.com/) |
5 | 7 | [](https://github.com/project-openubl/xhandler/actions/) |
6 | 8 |
|
7 | | -| Artifact | Version | |
8 | | -|-------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
9 | | -| XBuilder | [](https://search.maven.org/artifact/io.github.project-openubl/xbuilder/) | |
10 | | -| XBuilder Quarkus extension | [](https://search.maven.org/artifact/io.github.project-openubl/quarkus-xbuilder/) | |
11 | | -| XSender | [](https://search.maven.org/artifact/io.github.project-openubl/xsender/) | |
12 | | -| XSender Quarkus extension | [](https://search.maven.org/artifact/io.github.project-openubl/quarkus-xsender/) | |
13 | | -| XSender Spring Boot extension | [](https://search.maven.org/artifact/io.github.project-openubl/spring-boot-xsender/) | |
| 9 | +**XHandler Java** es una suite de herramientas diseñada para facilitar la integración de **Facturación Electrónica en Perú (SUNAT)** en aplicaciones Java. Este repositorio es un "monorepo" que alberga las librerías `XBuilder` y `XSender`, proporcionando una solución integral para crear, firmar y enviar comprobantes de pago electrónicos. |
| 10 | + |
| 11 | +> [!TIP] |
| 12 | +> Si buscas integrar facturación electrónica de manera rápida y estándar, estás en el lugar correcto. |
| 13 | +
|
| 14 | +--- |
| 15 | + |
| 16 | +## 📦 Ecosistema |
14 | 17 |
|
15 | | -# XBuilder |
| 18 | +El proyecto se divide en módulos principales y extensiones para frameworks populares: |
16 | 19 |
|
17 | | -Librería Java para crear XMLs basados en UBL y los estándares de la SUNAT respecto a la facturación electrónica. |
| 20 | +| Componente | Descripción | Maven Central | |
| 21 | +|------------|-------------|---------------| |
| 22 | +| **XBuilder** | Creación y firma de XMLs (UBL 2.1) | [](https://search.maven.org/artifact/io.github.project-openubl/xbuilder/) | |
| 23 | +| **XSender** | Envío de comprobantes a SUNAT/OSE | [](https://search.maven.org/artifact/io.github.project-openubl/xsender/) | |
| 24 | +| **Quarkus XBuilder** | Extensión XBuilder para Quarkus | [](https://search.maven.org/artifact/io.github.project-openubl/quarkus-xbuilder/) | |
| 25 | +| **Quarkus XSender** | Extensión XSender para Quarkus | [](https://search.maven.org/artifact/io.github.project-openubl/quarkus-xsender/) | |
| 26 | +| **Spring Boot XSender** | Starter XSender para Spring Boot | [](https://search.maven.org/artifact/io.github.project-openubl/spring-boot-xsender/) | |
18 | 27 |
|
19 | | -XBuilder esta diseñado para que puedas crear XMLs fácilmente. |
| 28 | +--- |
20 | 29 |
|
21 | | -- Crea XMLs sin que necesites conocer nada sobre manejo de archivos XMLs. |
22 | | -- Hace cálculos internos por ti. |
23 | | -- Requiere solamente datos mínimos. |
| 30 | +## 🛠️ XBuilder |
24 | 31 |
|
25 | | -## ¿Qué puedes hacer con XBuilder? |
| 32 | +XBuilder abstrae la complejidad de los estándares UBL y XML, permitiéndote construir documentos tributarios válidos escribiendo código Java simple. |
26 | 33 |
|
27 | | -- Crear XMLs |
28 | | -- Firmar XMLs |
| 34 | +### Características |
| 35 | +- **Simple**: No necesitas manipular XML directamente ni conciliar namespaces complejos. |
| 36 | +- **Completo**: Soporte para Facturas, Boletas, Notas de Crédito/Débito, Guías de Remisión y Percepciones/Retenciones. |
| 37 | +- **Validado**: Realiza cálculos automáticos y validaciones básicas según normativa SUNAT. |
29 | 38 |
|
30 | | -### Update snapshots |
| 39 | +### Ejemplo de Uso |
31 | 40 |
|
32 | | -```shell |
33 | | -mvn clean test -Dxbuilder.snapshot.update |
| 41 | +```java |
| 42 | +// Ejemplo simplificado de creación de factura |
| 43 | +Invoice invoice = Invoice.builder() |
| 44 | + .serie("F001") |
| 45 | + .numero(1) |
| 46 | + .proveedor(proveedor) |
| 47 | + .cliente(cliente) |
| 48 | + .detalle(detalle) |
| 49 | + .build(); |
| 50 | + |
| 51 | +XMLInvoice xml = new InvoiceXMLBuilder().build(invoice); |
34 | 52 | ``` |
35 | 53 |
|
36 | | -# XSender |
| 54 | +> [!NOTE] |
| 55 | +> Para actualizar los snapshots de prueba en desarrollo local, ejecuta: |
| 56 | +> `mvn clean test -Dxbuilder.snapshot.update` |
| 57 | +
|
| 58 | +--- |
| 59 | + |
| 60 | +## 🚀 XSender |
| 61 | + |
| 62 | +XSender se encarga de la comunicación con los servicios SOAP de la SUNAT o de los Operadores de Servicios Electrónicos (OSE). |
| 63 | + |
| 64 | +### Características |
| 65 | +- **Compatible**: Soporta los diversos endpoints de SUNAT (Beta/Producción) y OSEs. |
| 66 | +- **Resiliente**: Gestiona el envío de archivos ZIP y el procesamiento de respuestas (CDR, Tickets). |
| 67 | +- **Flexible**: Fácil integración con frameworks modernos como Quarkus y Spring Boot. |
| 68 | + |
| 69 | +--- |
| 70 | + |
| 71 | +## 💻 Ejemplos |
| 72 | + |
| 73 | +Explora la carpeta `examples/` para ver implementaciones de referencia: |
| 74 | + |
| 75 | +- [**Spring Boot**](./examples/springbot): Ejemplo de integración completa usando Spring Boot. |
| 76 | +- [**Wildfly**](./examples/wildfly): Ejemplo para servidores de aplicaciones Jakarta EE. |
| 77 | +- [**Tomcat**](./examples/tomcat): Ejemplo ligero desplegable en Tomcat. |
| 78 | +- [**XBuilder/XSender**](./examples): Ejemplos "standalone" de uso de las librerías. |
| 79 | + |
| 80 | +--- |
| 81 | + |
| 82 | +## 📚 Documentación |
| 83 | + |
| 84 | +Para guías detalladas, referencia de API y tutoriales, consulta nuestra documentación oficial. |
37 | 85 |
|
38 | | -Libreria para realizar envíos de comprobantes electrónicos a los servicios web de la SUNAT y/o OSCE de acuerdo a lo |
39 | | -especificado por la SUNAT. |
| 86 | +- 📖 **Sitio Web**: [project-openubl.github.io](https://project-openubl.github.io) |
| 87 | +- 💬 **Comunidad**: [Únete al chat en Zulip](https://projectopenubl.zulipchat.com/) |
| 88 | +- 🐛 **Soporte**: [Reportar un problema o discutir mejoras](https://github.com/project-openubl/xsender/discussions) |
40 | 89 |
|
41 | | -# Getting started |
| 90 | +--- |
42 | 91 |
|
43 | | -- [Documentación](https://project-openubl.github.io) |
44 | | -- [Discusiones](https://github.com/project-openubl/xsender/discussions) |
| 92 | +## 📄 Licencia |
45 | 93 |
|
46 | | -## License |
| 94 | +Este proyecto se distribuye bajo la licencia **Apache 2.0**. Consulta el archivo [LICENSE](LICENSE) para más detalles. |
47 | 95 |
|
48 | | -- [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) |
| 96 | +Copyright © Project OpenUBL. |
0 commit comments