diff --git a/quarkus-extension/integration-tests/pom.xml b/quarkus-extension/integration-tests/pom.xml
index 5727a8bd..6a656623 100644
--- a/quarkus-extension/integration-tests/pom.xml
+++ b/quarkus-extension/integration-tests/pom.xml
@@ -37,6 +37,10 @@
io.quarkus
quarkus-resteasy-qute
+
+ io.quarkus
+ quarkus-jackson
+
io.github.project-openubl
quarkus-xbuilder
diff --git a/quarkus-extension/integration-tests/src/main/java/io/github/project/openubl/quarkus/xbuilder/it/QuarkusXbuilderResource.java b/quarkus-extension/integration-tests/src/main/java/io/github/project/openubl/quarkus/xbuilder/it/QuarkusXbuilderResource.java
index 83cc194c..0e5f7a5e 100644
--- a/quarkus-extension/integration-tests/src/main/java/io/github/project/openubl/quarkus/xbuilder/it/QuarkusXbuilderResource.java
+++ b/quarkus-extension/integration-tests/src/main/java/io/github/project/openubl/quarkus/xbuilder/it/QuarkusXbuilderResource.java
@@ -17,37 +17,24 @@
package io.github.project.openubl.quarkus.xbuilder.it;
import io.github.project.openubl.quarkus.xbuilder.XBuilder;
-import io.github.project.openubl.xbuilder.content.catalogs.Catalog1;
-import io.github.project.openubl.xbuilder.content.catalogs.Catalog19;
-import io.github.project.openubl.xbuilder.content.catalogs.Catalog1_Invoice;
-import io.github.project.openubl.xbuilder.content.catalogs.Catalog22;
-import io.github.project.openubl.xbuilder.content.catalogs.Catalog23;
-import io.github.project.openubl.xbuilder.content.catalogs.Catalog6;
-import io.github.project.openubl.xbuilder.content.models.common.Cliente;
-import io.github.project.openubl.xbuilder.content.models.common.Proveedor;
import io.github.project.openubl.xbuilder.content.models.standard.general.CreditNote;
import io.github.project.openubl.xbuilder.content.models.standard.general.DebitNote;
-import io.github.project.openubl.xbuilder.content.models.standard.general.DocumentoVentaDetalle;
import io.github.project.openubl.xbuilder.content.models.standard.general.Invoice;
import io.github.project.openubl.xbuilder.content.models.sunat.baja.VoidedDocuments;
-import io.github.project.openubl.xbuilder.content.models.sunat.baja.VoidedDocumentsItem;
-import io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.PercepcionRetencionOperacion;
import io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.Perception;
import io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.Retention;
-import io.github.project.openubl.xbuilder.content.models.sunat.resumen.Comprobante;
-import io.github.project.openubl.xbuilder.content.models.sunat.resumen.ComprobanteAfectado;
-import io.github.project.openubl.xbuilder.content.models.sunat.resumen.ComprobanteImpuestos;
-import io.github.project.openubl.xbuilder.content.models.sunat.resumen.ComprobanteValorVenta;
import io.github.project.openubl.xbuilder.content.models.sunat.resumen.SummaryDocuments;
-import io.github.project.openubl.xbuilder.content.models.sunat.resumen.SummaryDocumentsItem;
import io.github.project.openubl.xbuilder.enricher.ContentEnricher;
import io.quarkus.qute.Template;
+import io.vertx.core.json.JsonObject;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
-import javax.ws.rs.GET;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.POST;
import javax.ws.rs.Path;
-import java.math.BigDecimal;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
import java.time.LocalDate;
import static io.github.project.openubl.quarkus.xbuilder.XBuilder.Type.CREDIT_NOTE;
@@ -58,17 +45,19 @@
import static io.github.project.openubl.quarkus.xbuilder.XBuilder.Type.SUMMARY_DOCUMENTS;
import static io.github.project.openubl.quarkus.xbuilder.XBuilder.Type.VOIDED_DOCUMENTS;
-@Path("/quarkus-xbuilder")
@ApplicationScoped
+@Consumes(MediaType.APPLICATION_JSON)
+@Produces(MediaType.TEXT_PLAIN)
+@Path("/quarkus-xbuilder")
public class QuarkusXbuilderResource {
@Inject
XBuilder xBuilder;
- @GET
+ @POST
@Path("invoice")
- public String createInvoice() {
- Invoice invoice = getBaseInvoice();
+ public String createInvoice(JsonObject json) {
+ Invoice invoice = json.mapTo(Invoice.class);
ContentEnricher enricher = new ContentEnricher(xBuilder.getDefaults(), () -> LocalDate.of(2022, 1, 25));
enricher.enrich(invoice);
@@ -77,10 +66,10 @@ public String createInvoice() {
return template.data(invoice).render();
}
- @GET
+ @POST
@Path("credit-note")
- public String createCreditNote() {
- CreditNote creditNote = getBaseCreditNote();
+ public String createCreditNote(JsonObject json) {
+ CreditNote creditNote = json.mapTo(CreditNote.class);
ContentEnricher enricher = new ContentEnricher(xBuilder.getDefaults(), () -> LocalDate.of(2022, 1, 25));
enricher.enrich(creditNote);
@@ -89,10 +78,10 @@ public String createCreditNote() {
return template.data(creditNote).render();
}
- @GET
+ @POST
@Path("debit-note")
- public String createDebitNote() {
- DebitNote debitNote = getBaseDebitNote();
+ public String createDebitNote(JsonObject json) {
+ DebitNote debitNote = json.mapTo(DebitNote.class);
ContentEnricher enricher = new ContentEnricher(xBuilder.getDefaults(), () -> LocalDate.of(2022, 1, 25));
enricher.enrich(debitNote);
@@ -101,10 +90,10 @@ public String createDebitNote() {
return template.data(debitNote).render();
}
- @GET
+ @POST
@Path("voided-documents")
- public String createVoidedDocuments() {
- VoidedDocuments voidedDocuments = getVoidedDocuments();
+ public String createVoidedDocuments(JsonObject json) {
+ VoidedDocuments voidedDocuments = json.mapTo(VoidedDocuments.class);
ContentEnricher enricher = new ContentEnricher(xBuilder.getDefaults(), () -> LocalDate.of(2022, 1, 25));
enricher.enrich(voidedDocuments);
@@ -113,10 +102,10 @@ public String createVoidedDocuments() {
return template.data(voidedDocuments).render();
}
- @GET
+ @POST
@Path("summary-documents")
- public String createSummaryDocuments() {
- SummaryDocuments summaryDocuments = getSummaryDocuments();
+ public String createSummaryDocuments(JsonObject json) {
+ SummaryDocuments summaryDocuments = json.mapTo(SummaryDocuments.class);
ContentEnricher enricher = new ContentEnricher(xBuilder.getDefaults(), () -> LocalDate.of(2022, 1, 25));
enricher.enrich(summaryDocuments);
@@ -125,10 +114,10 @@ public String createSummaryDocuments() {
return template.data(summaryDocuments).render();
}
- @GET
+ @POST
@Path("perception")
- public String createPerception() {
- Perception perception = getPerception();
+ public String createPerception(JsonObject json) {
+ Perception perception = json.mapTo(Perception.class);
ContentEnricher enricher = new ContentEnricher(xBuilder.getDefaults(), () -> LocalDate.of(2022, 1, 25));
enricher.enrich(perception);
@@ -137,10 +126,10 @@ public String createPerception() {
return template.data(perception).render();
}
- @GET
+ @POST
@Path("retention")
- public String createRetention() {
- Retention retention = getRetention();
+ public String createRetention(JsonObject json) {
+ Retention retention = json.mapTo(Retention.class);
ContentEnricher enricher = new ContentEnricher(xBuilder.getDefaults(), () -> LocalDate.of(2022, 1, 25));
enricher.enrich(retention);
@@ -149,250 +138,4 @@ public String createRetention() {
return template.data(retention).render();
}
- private Invoice getBaseInvoice() {
- return Invoice
- .builder()
- .serie("F001")
- .numero(1)
- .proveedor(Proveedor.builder().ruc("12345678912").razonSocial("Softgreen S.A.C.").build())
- .cliente(
- Cliente
- .builder()
- .nombre("Carlos Feria")
- .numeroDocumentoIdentidad("12121212121")
- .tipoDocumentoIdentidad(Catalog6.RUC.toString())
- .build()
- )
- .detalle(
- DocumentoVentaDetalle
- .builder()
- .descripcion("Item1")
- .cantidad(new BigDecimal("10"))
- .precio(new BigDecimal("100"))
- .build()
- )
- .build();
- }
-
- private CreditNote getBaseCreditNote() {
- return CreditNote
- .builder()
- .serie("FC01")
- .numero(1)
- .comprobanteAfectadoSerieNumero("F001-1")
- .sustentoDescripcion("mi sustento")
- .proveedor(Proveedor.builder().ruc("12345678912").razonSocial("Softgreen S.A.C.").build())
- .cliente(
- Cliente
- .builder()
- .nombre("Carlos Feria")
- .numeroDocumentoIdentidad("12121212121")
- .tipoDocumentoIdentidad(Catalog6.RUC.toString())
- .build()
- )
- .detalle(
- DocumentoVentaDetalle
- .builder()
- .descripcion("Item1")
- .cantidad(new BigDecimal("10"))
- .precio(new BigDecimal("100"))
- .build()
- )
- .build();
- }
-
- private DebitNote getBaseDebitNote() {
- return DebitNote
- .builder()
- .serie("FD01")
- .numero(1)
- .comprobanteAfectadoSerieNumero("F001-1")
- .sustentoDescripcion("mi sustento")
- .proveedor(Proveedor.builder().ruc("12345678912").razonSocial("Softgreen S.A.C.").build())
- .cliente(
- Cliente
- .builder()
- .nombre("Carlos Feria")
- .numeroDocumentoIdentidad("12121212121")
- .tipoDocumentoIdentidad(Catalog6.RUC.toString())
- .build()
- )
- .detalle(
- DocumentoVentaDetalle
- .builder()
- .descripcion("Item1")
- .cantidad(new BigDecimal("10"))
- .precio(new BigDecimal("100"))
- .build()
- )
- .build();
- }
-
- public VoidedDocuments getVoidedDocuments() {
- return VoidedDocuments.builder()
- .numero(1)
- .fechaEmision(LocalDate.of(2022, 01, 31))
- .fechaEmisionComprobantes(LocalDate.of(2022, 01, 29))
- .proveedor(Proveedor.builder()
- .ruc("12345678912")
- .razonSocial("Softgreen S.A.C.")
- .build()
- )
- .comprobante(VoidedDocumentsItem.builder()
- .serie("F001")
- .numero(1)
- .tipoComprobante(Catalog1_Invoice.FACTURA.getCode())
- .descripcionSustento("Mi sustento1")
- .build()
- )
- .comprobante(VoidedDocumentsItem.builder()
- .serie("F001")
- .numero(2)
- .tipoComprobante(Catalog1_Invoice.FACTURA.getCode())
- .descripcionSustento("Mi sustento2")
- .build()
- )
- .build();
- }
-
- public SummaryDocuments getSummaryDocuments() {
- return SummaryDocuments.builder()
- .numero(1)
- .fechaEmision(LocalDate.of(2022, 01, 31))
- .fechaEmisionComprobantes(LocalDate.of(2022, 01, 29))
- .proveedor(Proveedor.builder()
- .ruc("12345678912")
- .razonSocial("Softgreen S.A.C.")
- .build()
- )
- .comprobante(SummaryDocumentsItem.builder()
- .tipoOperacion(Catalog19.ADICIONAR.toString())
- .comprobante(Comprobante.builder()
- .tipoComprobante(Catalog1_Invoice.BOLETA.getCode())//
- .serieNumero("B001-1")
- .cliente(Cliente.builder()
- .nombre("Carlos Feria")
- .numeroDocumentoIdentidad("12345678")
- .tipoDocumentoIdentidad(Catalog6.DNI.getCode())
- .build()
- )
- .impuestos(ComprobanteImpuestos.builder()
- .igv(new BigDecimal("18"))
- .icb(new BigDecimal(2))
- .build()
- )
- .valorVenta(ComprobanteValorVenta.builder()
- .importeTotal(new BigDecimal("120"))
- .gravado(new BigDecimal("120"))
- .build()
- )
- .build()
- )
- .build()
- )
- .comprobante(SummaryDocumentsItem.builder()
- .tipoOperacion(Catalog19.ADICIONAR.toString())
- .comprobante(Comprobante.builder()
- .tipoComprobante(Catalog1.NOTA_CREDITO.getCode())
- .serieNumero("BC02-2")
- .comprobanteAfectado(ComprobanteAfectado.builder()
- .serieNumero("B002-2")
- .tipoComprobante(Catalog1.BOLETA.getCode()) //
- .build()
- )
- .cliente(Cliente.builder()
- .nombre("Carlos Feria")
- .numeroDocumentoIdentidad("12345678")
- .tipoDocumentoIdentidad(Catalog6.DNI.getCode())//
- .build()
- )
- .impuestos(ComprobanteImpuestos.builder()
- .igv(new BigDecimal("18"))
- .build()
- )
- .valorVenta(ComprobanteValorVenta.builder()
- .importeTotal(new BigDecimal("118"))
- .gravado(new BigDecimal("118"))
- .build()
- )
- .build()
- )
- .build()
- )
- .build();
- }
-
- public Perception getPerception() {
- return Perception.builder()
- .serie("P001")
- .numero(1)
- .fechaEmision(LocalDate.of(2022, 01, 31))
- .proveedor(Proveedor.builder()
- .ruc("12345678912")
- .razonSocial("Softgreen S.A.C.")
- .build()
- )
- .cliente(Cliente.builder()
- .nombre("Carlos Feria")
- .numeroDocumentoIdentidad("12121212121")
- .tipoDocumentoIdentidad(Catalog6.RUC.getCode())
- .build()
- )
- .importeTotalPercibido(new BigDecimal("10"))
- .importeTotalCobrado(new BigDecimal("210"))
- .tipoRegimen(Catalog22.VENTA_INTERNA.getCode())
- .tipoRegimenPorcentaje(Catalog22.VENTA_INTERNA.getPercent()) //
- .operacion(PercepcionRetencionOperacion.builder()
- .numeroOperacion(1)
- .fechaOperacion(LocalDate.of(2022, 01, 31))
- .importeOperacion(new BigDecimal("100"))
- .comprobante(io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.ComprobanteAfectado.builder()
- .tipoComprobante(Catalog1.FACTURA.getCode())
- .serieNumero("F001-1")
- .fechaEmision(LocalDate.of(2022, 01, 31))
- .importeTotal(new BigDecimal("200"))
- .moneda("PEN")
- .build()
- )
- .build()
- )
- .build();
- }
-
- public Retention getRetention() {
- return Retention.builder()
- .serie("R001")
- .numero(1)
- .fechaEmision(LocalDate.of(2022, 01, 31))
- .proveedor(Proveedor.builder()
- .ruc("12345678912")
- .razonSocial("Softgreen S.A.C.")
- .build()
- )
- .cliente(Cliente.builder()
- .nombre("Carlos Feria")
- .numeroDocumentoIdentidad("12121212121")
- .tipoDocumentoIdentidad(Catalog6.RUC.getCode())
- .build()
- )
- .importeTotalRetenido(new BigDecimal("10"))
- .importeTotalPagado(new BigDecimal("200"))
- .tipoRegimen(Catalog23.TASA_TRES.getCode())
- .tipoRegimenPorcentaje(Catalog23.TASA_TRES.getPercent()) //
- .operacion(PercepcionRetencionOperacion.builder()
- .numeroOperacion(1)
- .fechaOperacion(LocalDate.of(2022, 01, 31))
- .importeOperacion(new BigDecimal("100"))
- .comprobante(io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.ComprobanteAfectado.builder()
- .tipoComprobante(Catalog1.FACTURA.getCode())
- .serieNumero("F001-1")
- .fechaEmision(LocalDate.of(2022, 01, 31))
- .importeTotal(new BigDecimal("210"))
- .moneda("PEN")
- .build()
- )
- .build()
- )
- .build();
- }
}
diff --git a/quarkus-extension/integration-tests/src/test/java/io/github/project/openubl/quarkus/xbuilder/it/QuarkusXbuilderResourceTest.java b/quarkus-extension/integration-tests/src/test/java/io/github/project/openubl/quarkus/xbuilder/it/QuarkusXbuilderResourceTest.java
index 72eded2c..793aee79 100644
--- a/quarkus-extension/integration-tests/src/test/java/io/github/project/openubl/quarkus/xbuilder/it/QuarkusXbuilderResourceTest.java
+++ b/quarkus-extension/integration-tests/src/test/java/io/github/project/openubl/quarkus/xbuilder/it/QuarkusXbuilderResourceTest.java
@@ -16,25 +16,74 @@
*/
package io.github.project.openubl.quarkus.xbuilder.it;
-import static io.restassured.RestAssured.given;
-import static org.hamcrest.Matchers.is;
-
+import io.github.project.openubl.xbuilder.content.catalogs.Catalog1;
+import io.github.project.openubl.xbuilder.content.catalogs.Catalog19;
+import io.github.project.openubl.xbuilder.content.catalogs.Catalog1_Invoice;
+import io.github.project.openubl.xbuilder.content.catalogs.Catalog22;
+import io.github.project.openubl.xbuilder.content.catalogs.Catalog23;
+import io.github.project.openubl.xbuilder.content.catalogs.Catalog6;
+import io.github.project.openubl.xbuilder.content.models.common.Cliente;
+import io.github.project.openubl.xbuilder.content.models.common.Proveedor;
+import io.github.project.openubl.xbuilder.content.models.standard.general.CreditNote;
+import io.github.project.openubl.xbuilder.content.models.standard.general.DebitNote;
+import io.github.project.openubl.xbuilder.content.models.standard.general.DocumentoVentaDetalle;
+import io.github.project.openubl.xbuilder.content.models.standard.general.Invoice;
+import io.github.project.openubl.xbuilder.content.models.sunat.baja.VoidedDocuments;
+import io.github.project.openubl.xbuilder.content.models.sunat.baja.VoidedDocumentsItem;
+import io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.PercepcionRetencionOperacion;
+import io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.Perception;
+import io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.Retention;
+import io.github.project.openubl.xbuilder.content.models.sunat.resumen.Comprobante;
+import io.github.project.openubl.xbuilder.content.models.sunat.resumen.ComprobanteAfectado;
+import io.github.project.openubl.xbuilder.content.models.sunat.resumen.ComprobanteImpuestos;
+import io.github.project.openubl.xbuilder.content.models.sunat.resumen.ComprobanteValorVenta;
+import io.github.project.openubl.xbuilder.content.models.sunat.resumen.SummaryDocuments;
+import io.github.project.openubl.xbuilder.content.models.sunat.resumen.SummaryDocumentsItem;
import io.quarkus.test.junit.QuarkusTest;
-import org.junit.jupiter.api.Disabled;
+import io.restassured.http.ContentType;
import org.junit.jupiter.api.Test;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+import static io.restassured.RestAssured.given;
+import static org.hamcrest.Matchers.is;
+
@QuarkusTest
public class QuarkusXbuilderResourceTest {
@Test
public void testInvoice() {
+ Invoice invoice = Invoice.builder()
+ .serie("F001")
+ .numero(1)
+ .proveedor(Proveedor.builder()
+ .ruc("12345678912")
+ .razonSocial("Softgreen S.A.C.")
+ .build()
+ )
+ .cliente(Cliente.builder()
+ .nombre("Carlos Feria")
+ .numeroDocumentoIdentidad("12121212121")
+ .tipoDocumentoIdentidad(Catalog6.RUC.toString())
+ .build()
+ )
+ .detalle(DocumentoVentaDetalle.builder()
+ .descripcion("Item1")
+ .cantidad(new BigDecimal("10"))
+ .precio(new BigDecimal("100"))
+ .build()
+ )
+ .build();
+
given()
.when()
- .get("/quarkus-xbuilder/invoice")
+ .contentType(ContentType.JSON)
+ .body(invoice)
+ .post("/quarkus-xbuilder/invoice")
.then()
.statusCode(200)
- .body(
- is(
+ .body(is(
"\n" +
"\n" +
"\n" +
"\n" +
@@ -512,8 +639,76 @@ public void testVoidedDocuments() {
@Test
public void testSummaryDocuments() {
+ SummaryDocuments summaryDocuments = SummaryDocuments.builder()
+ .numero(1)
+ .fechaEmision(LocalDate.of(2022, 01, 31))
+ .fechaEmisionComprobantes(LocalDate.of(2022, 01, 29))
+ .proveedor(Proveedor.builder()
+ .ruc("12345678912")
+ .razonSocial("Softgreen S.A.C.")
+ .build()
+ )
+ .comprobante(SummaryDocumentsItem.builder()
+ .tipoOperacion(Catalog19.ADICIONAR.toString())
+ .comprobante(Comprobante.builder()
+ .tipoComprobante(Catalog1_Invoice.BOLETA.getCode())//
+ .serieNumero("B001-1")
+ .cliente(Cliente.builder()
+ .nombre("Carlos Feria")
+ .numeroDocumentoIdentidad("12345678")
+ .tipoDocumentoIdentidad(Catalog6.DNI.getCode())
+ .build()
+ )
+ .impuestos(ComprobanteImpuestos.builder()
+ .igv(new BigDecimal("18"))
+ .icb(new BigDecimal(2))
+ .build()
+ )
+ .valorVenta(ComprobanteValorVenta.builder()
+ .importeTotal(new BigDecimal("120"))
+ .gravado(new BigDecimal("120"))
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .comprobante(SummaryDocumentsItem.builder()
+ .tipoOperacion(Catalog19.ADICIONAR.toString())
+ .comprobante(Comprobante.builder()
+ .tipoComprobante(Catalog1.NOTA_CREDITO.getCode())
+ .serieNumero("BC02-2")
+ .comprobanteAfectado(ComprobanteAfectado.builder()
+ .serieNumero("B002-2")
+ .tipoComprobante(Catalog1.BOLETA.getCode()) //
+ .build()
+ )
+ .cliente(Cliente.builder()
+ .nombre("Carlos Feria")
+ .numeroDocumentoIdentidad("12345678")
+ .tipoDocumentoIdentidad(Catalog6.DNI.getCode())//
+ .build()
+ )
+ .impuestos(ComprobanteImpuestos.builder()
+ .igv(new BigDecimal("18"))
+ .build()
+ )
+ .valorVenta(ComprobanteValorVenta.builder()
+ .importeTotal(new BigDecimal("118"))
+ .gravado(new BigDecimal("118"))
+ .build()
+ )
+ .build()
+ )
+ .build()
+ )
+ .build();
+
given()
- .when().get("/quarkus-xbuilder/summary-documents")
+ .when()
+ .contentType(ContentType.JSON)
+ .body(summaryDocuments)
+ .post("/quarkus-xbuilder/summary-documents")
.then()
.statusCode(200)
.body(is("\n" +
@@ -646,8 +841,46 @@ public void testSummaryDocuments() {
@Test
public void testPerception() {
+ Perception perception = Perception.builder()
+ .serie("P001")
+ .numero(1)
+ .fechaEmision(LocalDate.of(2022, 01, 31))
+ .proveedor(Proveedor.builder()
+ .ruc("12345678912")
+ .razonSocial("Softgreen S.A.C.")
+ .build()
+ )
+ .cliente(Cliente.builder()
+ .nombre("Carlos Feria")
+ .numeroDocumentoIdentidad("12121212121")
+ .tipoDocumentoIdentidad(Catalog6.RUC.getCode())
+ .build()
+ )
+ .importeTotalPercibido(new BigDecimal("10"))
+ .importeTotalCobrado(new BigDecimal("210"))
+ .tipoRegimen(Catalog22.VENTA_INTERNA.getCode())
+ .tipoRegimenPorcentaje(Catalog22.VENTA_INTERNA.getPercent()) //
+ .operacion(PercepcionRetencionOperacion.builder()
+ .numeroOperacion(1)
+ .fechaOperacion(LocalDate.of(2022, 01, 31))
+ .importeOperacion(new BigDecimal("100"))
+ .comprobante(io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.ComprobanteAfectado.builder()
+ .tipoComprobante(Catalog1.FACTURA.getCode())
+ .serieNumero("F001-1")
+ .fechaEmision(LocalDate.of(2022, 01, 31))
+ .importeTotal(new BigDecimal("200"))
+ .moneda("PEN")
+ .build()
+ )
+ .build()
+ )
+ .build();
+
given()
- .when().get("/quarkus-xbuilder/perception")
+ .when()
+ .contentType(ContentType.JSON)
+ .body(perception)
+ .post("/quarkus-xbuilder/perception")
.then()
.statusCode(200)
.body(is("\n" +
@@ -726,8 +959,46 @@ public void testPerception() {
@Test
public void testRetention() {
+ Retention retention = Retention.builder()
+ .serie("R001")
+ .numero(1)
+ .fechaEmision(LocalDate.of(2022, 01, 31))
+ .proveedor(Proveedor.builder()
+ .ruc("12345678912")
+ .razonSocial("Softgreen S.A.C.")
+ .build()
+ )
+ .cliente(Cliente.builder()
+ .nombre("Carlos Feria")
+ .numeroDocumentoIdentidad("12121212121")
+ .tipoDocumentoIdentidad(Catalog6.RUC.getCode())
+ .build()
+ )
+ .importeTotalRetenido(new BigDecimal("10"))
+ .importeTotalPagado(new BigDecimal("200"))
+ .tipoRegimen(Catalog23.TASA_TRES.getCode())
+ .tipoRegimenPorcentaje(Catalog23.TASA_TRES.getPercent()) //
+ .operacion(PercepcionRetencionOperacion.builder()
+ .numeroOperacion(1)
+ .fechaOperacion(LocalDate.of(2022, 01, 31))
+ .importeOperacion(new BigDecimal("100"))
+ .comprobante(io.github.project.openubl.xbuilder.content.models.sunat.percepcionretencion.ComprobanteAfectado.builder()
+ .tipoComprobante(Catalog1.FACTURA.getCode())
+ .serieNumero("F001-1")
+ .fechaEmision(LocalDate.of(2022, 01, 31))
+ .importeTotal(new BigDecimal("210"))
+ .moneda("PEN")
+ .build()
+ )
+ .build()
+ )
+ .build();
+
given()
- .when().get("/quarkus-xbuilder/retention")
+ .when()
+ .contentType(ContentType.JSON)
+ .body(retention)
+ .post("/quarkus-xbuilder/retention")
.then()
.statusCode(200)
.body(is("\n" +