Skip to content

Commit 130fc2d

Browse files
Add support to summaryDocuments (#152)
1 parent 16ccb73 commit 130fc2d

File tree

25 files changed

+871
-170
lines changed

25 files changed

+871
-170
lines changed

core/src/main/java/io/github/project/openubl/xbuilder/content/models/common/Document.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@
2828
@NoArgsConstructor
2929
public abstract class Document {
3030

31+
/**
32+
* Moneda en la que se emite el comprobante
33+
*/
34+
@Schema(minLength = 3, maxLength = 3)
35+
private String moneda;
36+
3137
/**
3238
* Fecha de emisión del comprobante. Ejemplo 2022-12-25 (YYYY-MM-SS)
3339
*/

core/src/main/java/io/github/project/openubl/xbuilder/content/models/standard/general/SalesDocument.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,6 @@ public abstract class SalesDocument extends Document {
4343
@Singular
4444
private Map<String, String> leyendas;
4545

46-
/**
47-
* Moneda en la que se emite el comprobante
48-
*/
49-
@Schema(minLength = 3, maxLength = 3)
50-
private String moneda;
51-
5246
/**
5347
* Tasa del IGV. Ejemplo: 0.18
5448
*/
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright 2019 Project OpenUBL, Inc. and/or its affiliates
3+
* and other contributors as indicated by the @author tags.
4+
*
5+
* Licensed under the Apache License - 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* https://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package io.github.project.openubl.xbuilder.content.models.sunat;
18+
19+
import io.github.project.openubl.xbuilder.content.models.common.Document;
20+
import io.github.project.openubl.xbuilder.content.models.common.Firmante;
21+
import io.github.project.openubl.xbuilder.content.models.common.Proveedor;
22+
import io.swagger.v3.oas.annotations.media.Schema;
23+
import lombok.Data;
24+
import lombok.EqualsAndHashCode;
25+
import lombok.ToString;
26+
import lombok.experimental.SuperBuilder;
27+
28+
import java.time.LocalDate;
29+
30+
@Data
31+
@SuperBuilder
32+
@EqualsAndHashCode(callSuper = true)
33+
@ToString(callSuper = true)
34+
public class SunatDocument extends Document {
35+
36+
/**
37+
* Numero de comprobante emitido para la fecha de emision dada
38+
*/
39+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, minimum = "1", maximum = "99999999")
40+
private Integer numero;
41+
42+
/**
43+
* Fecha de emisión del comprobante. Ejemplo 2022-12-25 (YYYY-MM-SS)
44+
*/
45+
@Schema(description = "Format: \"YYYY-MM-SS\". Ejemplo: 2022-12-25", pattern = "^\\d{4}-\\d{2}-\\d{2}$")
46+
private LocalDate fechaEmision;
47+
48+
/**
49+
* Fecha de emisión de los comprobantes dados de baja. Ejemplo 2022-12-25 (YYYY-MM-SS)
50+
*/
51+
@Schema(description = "Format: \"YYYY-MM-SS\". Ejemplo: 2022-12-25", pattern = "^\\d{4}-\\d{2}-\\d{2}$")
52+
private LocalDate fechaEmisionComprobantes;
53+
private Firmante firmante;
54+
private Proveedor proveedor;
55+
}

core/src/main/java/io/github/project/openubl/xbuilder/content/models/sunat/baja/VoidedDocuments.java

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
package io.github.project.openubl.xbuilder.content.models.sunat.baja;
1818

19-
import io.github.project.openubl.xbuilder.content.models.common.Document;
19+
import io.github.project.openubl.xbuilder.content.models.sunat.SunatDocument;
2020
import io.swagger.v3.oas.annotations.media.ArraySchema;
2121
import io.swagger.v3.oas.annotations.media.Schema;
2222
import lombok.Data;
@@ -26,32 +26,14 @@
2626
import lombok.experimental.SuperBuilder;
2727
import lombok.extern.jackson.Jacksonized;
2828

29-
import java.time.LocalDate;
3029
import java.util.List;
3130

3231
@Jacksonized
3332
@Data
3433
@SuperBuilder
3534
@EqualsAndHashCode(callSuper = true)
3635
@ToString(callSuper = true)
37-
public class VoidedDocuments extends Document {
38-
/**
39-
* Numero de comprobante emitido para la fecha de emision dada
40-
*/
41-
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, minimum = "1", maximum = "99999999")
42-
private Integer numero;
43-
44-
/**
45-
* Fecha de emisión del comprobante. Ejemplo 2022-12-25 (YYYY-MM-SS)
46-
*/
47-
@Schema(description = "Format: \"YYYY-MM-SS\". Ejemplo: 2022-12-25", pattern = "^\\d{4}-\\d{2}-\\d{2}$")
48-
private LocalDate fechaEmision;
49-
50-
/**
51-
* Fecha de emisión de los comprobantes dados de baja. Ejemplo 2022-12-25 (YYYY-MM-SS)
52-
*/
53-
@Schema(description = "Format: \"YYYY-MM-SS\". Ejemplo: 2022-12-25", pattern = "^\\d{4}-\\d{2}-\\d{2}$")
54-
private LocalDate fechaEmisionComprobantes;
36+
public class VoidedDocuments extends SunatDocument {
5537

5638
/**
5739
* Lista de comprobantes a dar de baja

core/src/main/java/io/github/project/openubl/xbuilder/content/models/sunat/resumen/Comprobante.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,32 @@
1717
package io.github.project.openubl.xbuilder.content.models.sunat.resumen;
1818

1919
import io.github.project.openubl.xbuilder.content.models.common.Cliente;
20+
import io.swagger.v3.oas.annotations.media.Schema;
21+
import lombok.AllArgsConstructor;
22+
import lombok.Builder;
2023
import lombok.Data;
24+
import lombok.NoArgsConstructor;
2125

2226
@Data
27+
@Builder
28+
@NoArgsConstructor
29+
@AllArgsConstructor
2330
public class Comprobante {
2431

25-
private String tipo;
32+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, description = "Catalogo 01")
33+
private String tipoComprobante;
34+
35+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED)
2636
private String serieNumero;
37+
38+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED)
2739
private Cliente cliente;
40+
41+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED)
2842
private ComprobanteValorVenta valorVenta;
43+
44+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED)
2945
private ComprobanteImpuestos impuestos;
46+
47+
private ComprobanteAfectado comprobanteAfectado;
3048
}

core/src/main/java/io/github/project/openubl/xbuilder/content/models/sunat/resumen/ComprobanteAfectado.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,21 @@
1616
*/
1717
package io.github.project.openubl.xbuilder.content.models.sunat.resumen;
1818

19+
import io.swagger.v3.oas.annotations.media.Schema;
20+
import lombok.AllArgsConstructor;
21+
import lombok.Builder;
1922
import lombok.Data;
23+
import lombok.NoArgsConstructor;
2024

2125
@Data
26+
@Builder
27+
@NoArgsConstructor
28+
@AllArgsConstructor
2229
public class ComprobanteAfectado {
2330

24-
private String tipo;
31+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, description = "Catalogo 01")
32+
private String tipoComprobante;
33+
34+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, description = "Comprobante afectado")
2535
private String serieNumero;
2636
}

core/src/main/java/io/github/project/openubl/xbuilder/content/models/sunat/resumen/ComprobanteImpuestos.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,23 @@
1616
*/
1717
package io.github.project.openubl.xbuilder.content.models.sunat.resumen;
1818

19+
import io.swagger.v3.oas.annotations.media.Schema;
20+
import lombok.AllArgsConstructor;
21+
import lombok.Builder;
1922
import lombok.Data;
23+
import lombok.NoArgsConstructor;
2024

2125
import java.math.BigDecimal;
2226

2327
@Data
28+
@Builder
29+
@NoArgsConstructor
30+
@AllArgsConstructor
2431
public class ComprobanteImpuestos {
2532

33+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, description = "IGV del comprobante")
2634
private BigDecimal igv;
35+
36+
@Schema(requiredMode = Schema.RequiredMode.NOT_REQUIRED, description = "ICB del comprobante")
2737
private BigDecimal icb;
2838
}

core/src/main/java/io/github/project/openubl/xbuilder/content/models/sunat/resumen/ComprobanteValorVenta.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,21 @@
1616
*/
1717
package io.github.project.openubl.xbuilder.content.models.sunat.resumen;
1818

19+
import io.swagger.v3.oas.annotations.media.Schema;
20+
import lombok.AllArgsConstructor;
21+
import lombok.Builder;
1922
import lombok.Data;
23+
import lombok.NoArgsConstructor;
2024

2125
import java.math.BigDecimal;
2226

2327
@Data
28+
@Builder
29+
@NoArgsConstructor
30+
@AllArgsConstructor
2431
public class ComprobanteValorVenta {
2532

33+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED)
2634
private BigDecimal importeTotal;
2735
private BigDecimal otrosCargos;
2836
private BigDecimal gravado;

core/src/main/java/io/github/project/openubl/xbuilder/content/models/sunat/resumen/ResumenDiario.java renamed to core/src/main/java/io/github/project/openubl/xbuilder/content/models/sunat/resumen/SummaryDocuments.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,29 @@
1616
*/
1717
package io.github.project.openubl.xbuilder.content.models.sunat.resumen;
1818

19-
import io.github.project.openubl.xbuilder.content.models.common.Firmante;
20-
import io.github.project.openubl.xbuilder.content.models.common.Proveedor;
19+
import io.github.project.openubl.xbuilder.content.models.sunat.SunatDocument;
20+
import io.swagger.v3.oas.annotations.media.ArraySchema;
21+
import io.swagger.v3.oas.annotations.media.Schema;
2122
import lombok.Data;
23+
import lombok.EqualsAndHashCode;
24+
import lombok.Singular;
25+
import lombok.ToString;
26+
import lombok.experimental.SuperBuilder;
27+
import lombok.extern.jackson.Jacksonized;
2228

2329
import java.util.List;
2430

31+
@Jacksonized
2532
@Data
26-
public class ResumenDiario {
33+
@SuperBuilder
34+
@EqualsAndHashCode(callSuper = true)
35+
@ToString(callSuper = true)
36+
public class SummaryDocuments extends SunatDocument {
2737

28-
private Integer numero;
29-
private Long fechaEmision;
30-
private Long fechaEmisionDeComprobantesAsociados;
31-
private Firmante firmante;
32-
private Proveedor proveedor;
33-
private List<ResumenDiarioDetalle> detalle;
38+
/**
39+
* Lista de comprobantes
40+
*/
41+
@Singular
42+
@ArraySchema(minItems = 1, schema = @Schema(requiredMode = Schema.RequiredMode.REQUIRED))
43+
private List<SummaryDocumentsItem> comprobantes;
3444
}
Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,21 @@
1616
*/
1717
package io.github.project.openubl.xbuilder.content.models.sunat.resumen;
1818

19+
import io.swagger.v3.oas.annotations.media.Schema;
20+
import lombok.AllArgsConstructor;
21+
import lombok.Builder;
1922
import lombok.Data;
23+
import lombok.NoArgsConstructor;
2024

2125
@Data
22-
public class ResumenDiarioDetalle {
26+
@Builder
27+
@NoArgsConstructor
28+
@AllArgsConstructor
29+
public class SummaryDocumentsItem {
2330

31+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED, description = "Catalogo Catalog19")
2432
private String tipoOperacion;
33+
34+
@Schema(requiredMode = Schema.RequiredMode.REQUIRED)
2535
private Comprobante comprobante;
26-
private ComprobanteAfectado comprobanteAfectado;
2736
}

0 commit comments

Comments
 (0)