Skip to content

Commit 4ef916b

Browse files
Guia remision relacionadas (#38)
* Guia remision relacionadas * Fix error * Fix error output constraint * Fix license
1 parent c903bac commit 4ef916b

File tree

25 files changed

+1817
-17
lines changed

25 files changed

+1817
-17
lines changed

src/main/java/io/github/project/openubl/xmlbuilderlib/factory/InvoiceAndNoteOutputModelFactory.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@
3737
import io.github.project.openubl.xmlbuilderlib.models.output.standard.note.debitNote.DebitNoteOutputModel;
3838

3939
import java.math.BigDecimal;
40-
import java.util.List;
41-
import java.util.Objects;
42-
import java.util.TimeZone;
40+
import java.util.*;
4341
import java.util.stream.Collectors;
4442
import java.util.stream.Stream;
4543

@@ -131,6 +129,19 @@ private static void enrichDocument(DocumentInputModel input, DocumentOutputModel
131129
: FirmanteOutputModelFactory.getFirmante(input.getProveedor())
132130
);
133131

132+
// Guias de remisión relacionadas
133+
builder.withGuiasRemisionRelacionadas(input.getGuiasRemisionRelacionadas() != null ?
134+
input.getGuiasRemisionRelacionadas().stream()
135+
.map(guiaRemisionInput -> {
136+
GuiaRemisionRelacionadaOutputModel guiaRemisionOutput = new GuiaRemisionRelacionadaOutputModel();
137+
guiaRemisionOutput.setSerieNumero(guiaRemisionInput.getSerieNumero());
138+
guiaRemisionOutput.setTipoDocumento(Catalog.valueOfCode(Catalog1_Guia.class, guiaRemisionInput.getTipoDocumento()).orElseThrow(Catalog.invalidCatalogValue));
139+
return guiaRemisionOutput;
140+
})
141+
.collect(Collectors.toList())
142+
: Collections.emptyList()
143+
);
144+
134145
// Detalle
135146
List<DocumentLineOutputModel> lineOutput = input.getDetalle().stream()
136147
.map(f -> DocumentLineOutputModelFactory.getDocumentLineOutput(f, config, systemClock))
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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 Eclipse Public License - v 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.eclipse.org/legal/epl-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.xmlbuilderlib.models.catalogs;
18+
19+
import java.util.Optional;
20+
import java.util.stream.Stream;
21+
22+
public enum Catalog1_Guia implements Catalog {
23+
24+
GUIA_REMISION_REMITENTE("09"),
25+
GUIA_REMISION_TRANSPORTISTA("31");
26+
27+
private final String code;
28+
29+
Catalog1_Guia(String code) {
30+
this.code = code;
31+
}
32+
33+
public static Optional<Catalog1_Guia> valueOfCode(String code) {
34+
return Stream.of(Catalog1_Guia.values())
35+
.filter(p -> p.code.equals(code))
36+
.findFirst();
37+
}
38+
39+
@Override
40+
public String getCode() {
41+
return code;
42+
}
43+
44+
}

src/main/java/io/github/project/openubl/xmlbuilderlib/models/input/standard/DocumentInputModel.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ public abstract class DocumentInputModel {
5858
@Valid
5959
private List<DocumentLineInputModel> detalle;
6060

61+
@Valid
62+
private List<GuiaRemisionRelacionadaInputModel> guiasRemisionRelacionadas;
63+
6164
public String getSerie() {
6265
return serie;
6366
}
@@ -114,4 +117,11 @@ public void setDetalle(List<DocumentLineInputModel> detalle) {
114117
this.detalle = detalle;
115118
}
116119

120+
public List<GuiaRemisionRelacionadaInputModel> getGuiasRemisionRelacionadas() {
121+
return guiasRemisionRelacionadas;
122+
}
123+
124+
public void setGuiasRemisionRelacionadas(List<GuiaRemisionRelacionadaInputModel> guiasRemisionRelacionadas) {
125+
this.guiasRemisionRelacionadas = guiasRemisionRelacionadas;
126+
}
117127
}

src/main/java/io/github/project/openubl/xmlbuilderlib/models/input/standard/GuiaRemisionRelacionadaInputModel.java

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
package io.github.project.openubl.xmlbuilderlib.models.input.standard;
1818

19-
import io.github.project.openubl.xmlbuilderlib.models.catalogs.Catalog1;
19+
import io.github.project.openubl.xmlbuilderlib.models.catalogs.Catalog1_Guia;
2020
import io.github.project.openubl.xmlbuilderlib.models.catalogs.constraints.CatalogConstraint;
2121

2222
import javax.validation.constraints.NotBlank;
@@ -26,8 +26,8 @@ public class GuiaRemisionRelacionadaInputModel {
2626
@NotBlank
2727
protected String serieNumero;
2828

29-
@CatalogConstraint(value = Catalog1.class)
30-
private String tipoDocumento;
29+
@CatalogConstraint(value = Catalog1_Guia.class)
30+
protected String tipoDocumento;
3131

3232
public String getSerieNumero() {
3333
return serieNumero;
@@ -45,4 +45,32 @@ public void setTipoDocumento(String tipoDocumento) {
4545
this.tipoDocumento = tipoDocumento;
4646
}
4747

48+
public static final class Builder {
49+
protected String serieNumero;
50+
protected String tipoDocumento;
51+
52+
private Builder() {
53+
}
54+
55+
public static Builder aGuiaRemisionRelacionadaInputModel() {
56+
return new Builder();
57+
}
58+
59+
public Builder withSerieNumero(String serieNumero) {
60+
this.serieNumero = serieNumero;
61+
return this;
62+
}
63+
64+
public Builder withTipoDocumento(String tipoDocumento) {
65+
this.tipoDocumento = tipoDocumento;
66+
return this;
67+
}
68+
69+
public GuiaRemisionRelacionadaInputModel build() {
70+
GuiaRemisionRelacionadaInputModel guiaRemisionRelacionadaInputModel = new GuiaRemisionRelacionadaInputModel();
71+
guiaRemisionRelacionadaInputModel.setSerieNumero(serieNumero);
72+
guiaRemisionRelacionadaInputModel.setTipoDocumento(tipoDocumento);
73+
return guiaRemisionRelacionadaInputModel;
74+
}
75+
}
4876
}

src/main/java/io/github/project/openubl/xmlbuilderlib/models/input/standard/invoice/InvoiceInputModel.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import io.github.project.openubl.xmlbuilderlib.models.input.constraints.HighLevelGroupValidation;
2525
import io.github.project.openubl.xmlbuilderlib.models.input.standard.DocumentInputModel;
2626
import io.github.project.openubl.xmlbuilderlib.models.input.standard.DocumentLineInputModel;
27+
import io.github.project.openubl.xmlbuilderlib.models.input.standard.GuiaRemisionRelacionadaInputModel;
2728

2829
import javax.validation.Valid;
2930
import java.util.List;
@@ -51,6 +52,7 @@ public static final class Builder {
5152
private FirmanteInputModel firmante;
5253
private List<DocumentLineInputModel> detalle;
5354
private List<CuotaDePagoInputModel> cuotasDePago;
55+
private List<GuiaRemisionRelacionadaInputModel> guiasRemisionRelacionadas;
5456

5557
private Builder() {
5658
}
@@ -99,6 +101,11 @@ public Builder withCuotasDePago(List<CuotaDePagoInputModel> cuotasDePago) {
99101
return this;
100102
}
101103

104+
public Builder withGuiasRemisionRelacionadas(List<GuiaRemisionRelacionadaInputModel> guiasRemisionRelacionadas) {
105+
this.guiasRemisionRelacionadas = guiasRemisionRelacionadas;
106+
return this;
107+
}
108+
102109
public InvoiceInputModel build() {
103110
InvoiceInputModel invoiceInputModel = new InvoiceInputModel();
104111
invoiceInputModel.setSerie(serie);
@@ -109,6 +116,7 @@ public InvoiceInputModel build() {
109116
invoiceInputModel.setFirmante(firmante);
110117
invoiceInputModel.setDetalle(detalle);
111118
invoiceInputModel.setCuotasDePago(cuotasDePago);
119+
invoiceInputModel.setGuiasRemisionRelacionadas(guiasRemisionRelacionadas);
112120
return invoiceInputModel;
113121
}
114122
}

src/main/java/io/github/project/openubl/xmlbuilderlib/models/input/standard/note/creditNote/CreditNoteInputModel.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import io.github.project.openubl.xmlbuilderlib.models.input.constraints.CuotaDePagoInputModel_Porcentaje100CollectionConstraint;
2626
import io.github.project.openubl.xmlbuilderlib.models.input.constraints.HighLevelGroupValidation;
2727
import io.github.project.openubl.xmlbuilderlib.models.input.standard.DocumentLineInputModel;
28+
import io.github.project.openubl.xmlbuilderlib.models.input.standard.GuiaRemisionRelacionadaInputModel;
2829
import io.github.project.openubl.xmlbuilderlib.models.input.standard.note.NoteInputModel;
2930

3031
import javax.validation.Valid;
@@ -67,6 +68,7 @@ public static final class Builder {
6768
private FirmanteInputModel firmante;
6869
private List<DocumentLineInputModel> detalle;
6970
private List<CuotaDePagoInputModel> cuotasDePago;
71+
private List<GuiaRemisionRelacionadaInputModel> guiasRemisionRelacionadas;
7072

7173
private Builder() {
7274
}
@@ -130,6 +132,11 @@ public Builder withCuotasDePago(List<CuotaDePagoInputModel> cuotasDePago) {
130132
return this;
131133
}
132134

135+
public Builder withGuiasRemisionRelacionadas(List<GuiaRemisionRelacionadaInputModel> guiasRemisionRelacionadas) {
136+
this.guiasRemisionRelacionadas = guiasRemisionRelacionadas;
137+
return this;
138+
}
139+
133140
public CreditNoteInputModel build() {
134141
CreditNoteInputModel creditNoteInputModel = new CreditNoteInputModel();
135142
creditNoteInputModel.setSerieNumeroComprobanteAfectado(serieNumeroComprobanteAfectado);
@@ -143,6 +150,7 @@ public CreditNoteInputModel build() {
143150
creditNoteInputModel.setFirmante(firmante);
144151
creditNoteInputModel.setDetalle(detalle);
145152
creditNoteInputModel.setCuotasDePago(cuotasDePago);
153+
creditNoteInputModel.setGuiasRemisionRelacionadas(guiasRemisionRelacionadas);
146154
return creditNoteInputModel;
147155
}
148156
}

src/main/java/io/github/project/openubl/xmlbuilderlib/models/input/standard/note/debitNote/DebitNoteInputModel.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import io.github.project.openubl.xmlbuilderlib.models.input.common.FirmanteInputModel;
2424
import io.github.project.openubl.xmlbuilderlib.models.input.common.ProveedorInputModel;
2525
import io.github.project.openubl.xmlbuilderlib.models.input.standard.DocumentLineInputModel;
26+
import io.github.project.openubl.xmlbuilderlib.models.input.standard.GuiaRemisionRelacionadaInputModel;
2627
import io.github.project.openubl.xmlbuilderlib.models.input.standard.note.NoteInputModel;
2728

2829
import java.util.List;
@@ -51,7 +52,7 @@ public static final class Builder {
5152
private ProveedorInputModel proveedor;
5253
private FirmanteInputModel firmante;
5354
private List<DocumentLineInputModel> detalle;
54-
private List<CuotaDePagoInputModel> cuotasDePago;
55+
private List<GuiaRemisionRelacionadaInputModel> guiasRemisionRelacionadas;
5556

5657
private Builder() {
5758
}
@@ -110,8 +111,8 @@ public Builder withDetalle(List<DocumentLineInputModel> detalle) {
110111
return this;
111112
}
112113

113-
public Builder withCuotasDePago(List<CuotaDePagoInputModel> cuotasDePago) {
114-
this.cuotasDePago = cuotasDePago;
114+
public Builder withGuiasRemisionRelacionadas(List<GuiaRemisionRelacionadaInputModel> guiasRemisionRelacionadas) {
115+
this.guiasRemisionRelacionadas = guiasRemisionRelacionadas;
115116
return this;
116117
}
117118

@@ -127,6 +128,7 @@ public DebitNoteInputModel build() {
127128
debitNoteInputModel.setProveedor(proveedor);
128129
debitNoteInputModel.setFirmante(firmante);
129130
debitNoteInputModel.setDetalle(detalle);
131+
debitNoteInputModel.setGuiasRemisionRelacionadas(guiasRemisionRelacionadas);
130132
return debitNoteInputModel;
131133
}
132134
}

src/main/java/io/github/project/openubl/xmlbuilderlib/models/output/standard/DocumentOutputModel.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ public abstract class DocumentOutputModel {
7070
@Valid
7171
protected FormaPagoOutputModel formaPago;
7272

73+
@NotNull
74+
@Valid
75+
protected List<GuiaRemisionRelacionadaOutputModel> guiasRemisionRelacionadas;
76+
7377
public String getMoneda() {
7478
return moneda;
7579
}
@@ -158,6 +162,14 @@ public void setFormaPago(FormaPagoOutputModel formaPago) {
158162
this.formaPago = formaPago;
159163
}
160164

165+
public List<GuiaRemisionRelacionadaOutputModel> getGuiasRemisionRelacionadas() {
166+
return guiasRemisionRelacionadas;
167+
}
168+
169+
public void setGuiasRemisionRelacionadas(List<GuiaRemisionRelacionadaOutputModel> guiasRemisionRelacionadas) {
170+
this.guiasRemisionRelacionadas = guiasRemisionRelacionadas;
171+
}
172+
161173
public static class Builder {
162174
protected String moneda;
163175
protected String serieNumero;
@@ -170,6 +182,7 @@ public static class Builder {
170182
protected DocumentImpuestosOutputModel impuestos;
171183
protected List<DocumentLineOutputModel> detalle;
172184
protected FormaPagoOutputModel formaPago;
185+
protected List<GuiaRemisionRelacionadaOutputModel> guiasRemisionRelacionadas;
173186

174187
protected Builder() {
175188
}
@@ -232,5 +245,10 @@ public Builder withFormaPago(FormaPagoOutputModel formaPago) {
232245
this.formaPago = formaPago;
233246
return this;
234247
}
248+
249+
public Builder withGuiasRemisionRelacionadas(List<GuiaRemisionRelacionadaOutputModel> guiasRemisionRelacionadas) {
250+
this.guiasRemisionRelacionadas = guiasRemisionRelacionadas;
251+
return this;
252+
}
235253
}
236254
}

src/main/java/io/github/project/openubl/xmlbuilderlib/models/output/standard/GuiaRemisionRelacionadaOutputModel.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
package io.github.project.openubl.xmlbuilderlib.models.output.standard;
1818

19-
import io.github.project.openubl.xmlbuilderlib.models.catalogs.Catalog1;
19+
import io.github.project.openubl.xmlbuilderlib.models.catalogs.Catalog1_Guia;
2020

2121
import javax.validation.constraints.NotBlank;
2222
import javax.validation.constraints.NotNull;
@@ -27,7 +27,7 @@ public class GuiaRemisionRelacionadaOutputModel {
2727
protected String serieNumero;
2828

2929
@NotNull
30-
private Catalog1 tipoDocumento;
30+
private Catalog1_Guia tipoDocumento;
3131

3232
public String getSerieNumero() {
3333
return serieNumero;
@@ -37,11 +37,11 @@ public void setSerieNumero(String serieNumero) {
3737
this.serieNumero = serieNumero;
3838
}
3939

40-
public Catalog1 getTipoDocumento() {
40+
public Catalog1_Guia getTipoDocumento() {
4141
return tipoDocumento;
4242
}
4343

44-
public void setTipoDocumento(Catalog1 tipoDocumento) {
44+
public void setTipoDocumento(Catalog1_Guia tipoDocumento) {
4545
this.tipoDocumento = tipoDocumento;
4646
}
4747

src/main/java/io/github/project/openubl/xmlbuilderlib/models/output/standard/invoice/InvoiceOutputModel.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public InvoiceOutputModel build() {
6363
invoiceOutputModel.setDetalle(detalle);
6464
invoiceOutputModel.setTipoInvoice(tipoInvoice);
6565
invoiceOutputModel.setFormaPago(formaPago);
66+
invoiceOutputModel.setGuiasRemisionRelacionadas(guiasRemisionRelacionadas);
6667
return invoiceOutputModel;
6768
}
6869
}

0 commit comments

Comments
 (0)