Skip to content

Add docs and refactor classess #73

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,22 @@
import lombok.Builder;
import lombok.Data;

/**
* Datos de contacto
*
* @author <a href="mailto:carlosthe19916@gmail.com">Carlos Feria</a>
*/
@Data
@Builder
public class Contacto {

/**
* Número telefónico
*/
private String telefono;

/**
* Correo electrónico
*/
private String email;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,19 +19,55 @@
import lombok.Builder;
import lombok.Data;

/**
* Dirección
*
* @author <a href="mailto:carlosthe19916@gmail.com">Carlos Feria</a>
*/
@Data
@Builder
public class Direccion {

/**
* Código de 6 dígitos que corresponden al Departamento, Provincia, y Distrito
*/
private String ubigeo;

/**
* Código de cuatro dígitos asignado por SUNAT, que identifica al
* establecimiento anexo. Dicho código se genera al momento la respectiva comunicación del
* establecimiento. Tratándose del domicilio fiscal y en el caso de no poder determinar el lugar
* de la venta, informar “0000”.
*/
private String codigoLocal;

/**
* Nombre de la urbanización.
*/
private String urbanizacion;

/**
* Nombre del Departamento o Región. Ejemplo: Ayacucho
*/
private String departamento;

/**
* Nombre de la Provincia. Ejemplo: Huamanga
*/
private String provincia;

/**
* Nombre del Distrito. Ejemplo: Quinua
*/
private String distrito;

/**
* Dirección. Ejemplo: Jirón las piedras 123
*/
private String direccion;

/**
* Código de 2 dígitos que corresponde al país a la que pertenece la dirección. Ejemplo: PE
*/
private String codigoPais;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,22 @@
import lombok.Builder;
import lombok.Data;

/**
* Persona que firma electrónicamente el documento
*
* @author <a href="mailto:carlosthe19916@gmail.com">Carlos Feria</a>
*/
@Data
@Builder
public class Firmante {

/**
* Número de RUC de la persona
*/
private String ruc;

/**
* Razón social de la persona
*/
private String razonSocial;
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,37 @@
import lombok.Builder;
import lombok.Data;

/**
* Persona que vende o presta un servicio
*
* @author <a href="mailto:carlosthe19916@gmail.com">Carlos Feria</a>
*/
@Data
@Builder
public class Proveedor {

/**
* Número de RUC de la persona jurídica
*/
private String ruc;

/**
* Nombre comercial de la persona jurídica
*/
private String nombreComercial;

/**
* Razón social de la persona jurídica
*/
private String razonSocial;

/**
* Dirección de la persona jurídica
*/
private Direccion direccion;

/**
* Contacto de la persona jurídica
*/
private Contacto contacto;
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,15 @@
import lombok.EqualsAndHashCode;
import lombok.experimental.SuperBuilder;

/**
* Clase base para CreditNote y DebitNote.
*
* @author <a href="mailto:carlosthe19916@gmail.com">Carlos Feria</a>
*/
@Data
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public class CreditNote extends BaseDocumentoNota {
public class CreditNote extends Note {

private List<DocumentoTributarioRelacionado_CreditNote> otrosDocumentosTributariosRelacionados;
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,22 @@
import lombok.Builder;
import lombok.Data;

/**
* Cuota de pago para Invoice
*
* @author <a href="mailto:carlosthe19916@gmail.com">Carlos Feria</a>
*/
@Data
@Builder
public class CuotaDePago {

/**
* Importe de la cuota
*/
private BigDecimal importe;

/**
* Fecha de pago de la cuota
*/
private LocalDate fechaPago;
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
@Data
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public class DebitNote extends BaseDocumentoNota {
public class DebitNote extends Note {

private List<DocumentoTributarioRelacionado_DebitNote> otrosDocumentosTributariosRelacionados;
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@
import lombok.Builder;
import lombok.Data;

/**
* Detracción asociada a un Invoice
*
* @author <a href="mailto:carlosthe19916@gmail.com">Carlos Feria</a>
*/
@Data
@Builder
public class Detraccion {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,27 +32,75 @@
@SuperBuilder
public abstract class Document {

/**
* Leyendas asociadas al comprobante
*/
@Singular
private Map<String, String> leyendas;

/**
* Moneda en la que se emite el comprobante
*/
private String moneda;

/**
* Tasa del IGV. Ejemplo: 0.18
*/
private BigDecimal tasaIgv;

/**
* Tasa del IBC. Ejemplo: 0.2
*/
private BigDecimal tasaIcb;

/**
* Serie del comprobante
*/
private String serie;

/**
* Número del comprobante
*/
private Integer numero;

/**
* Fecha de emisión del comprobante
*/
private LocalDate fechaEmision;

/**
* Hora de emisión del comprobante
*/
private LocalTime horaEmision;

/**
* Cliente
*/
private Cliente cliente;

/**
* Proveedor del bien o servicio
*/
private Proveedor proveedor;

/**
* Persona que firma electrónicamente el comprobante
*/
private Firmante firmante;

/**
* Total de impuestos a pagar
*/
private TotalImpuestos totalImpuestos;

/**
* Detalle del comprobante
*/
@Singular
private List<DocumentoDetalle> detalles;

/**
* Guias de remision relacionadas
*/
private List<GuiaRemisionRelacionada> guiasRemisionRelacionadas;
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
@Builder
public class DocumentoDetalle {

private Integer index;
private String descripcion;
private String unidadMedida;
private BigDecimal cantidad;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,45 @@
import lombok.EqualsAndHashCode;
import lombok.experimental.SuperBuilder;

/**
* Clase base para CreditNote y DebitNOte.
*
* @author <a href="mailto:carlosthe19916@gmail.com">Carlos Feria</a>
*/
@Data
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public abstract class BaseDocumentoNota extends Document {
public abstract class Note extends Document {

/**
* Tipo de nota.
* <p>
* Nota de Crédito: Catalogo 09.
* <p>
* Nota de Débito: Catalogo 10.
*/
private String tipoNota;

/**
* Serie y número del comprobante al que le aplica la nota de crédito/débito.
* Ejemplo: F001-1
*/
private String comprobanteAfectadoSerieNumero;

/**
* Tipo de del probante referido en {@link Note#comprobanteAfectadoSerieNumero}.
* <p>
* Catalogo 01.
*/
private String comprobanteAfectadoTipo;

/**
* Texto sustentatorio para la emision de la nota
*/
private String sustentoDescripcion;

/**
* Importe total de la nota
*/
private TotalImporteNote totalImporte;
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
*/
package io.github.project.openubl.xbuilder.enricher;

import io.github.project.openubl.xbuilder.content.models.standard.general.BaseDocumentoNota;
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.Invoice;
import io.github.project.openubl.xbuilder.content.models.standard.general.Note;
import io.github.project.openubl.xbuilder.enricher.config.DateProvider;
import io.github.project.openubl.xbuilder.enricher.config.Defaults;
import io.github.project.openubl.xbuilder.enricher.kie.RulePhase;
Expand Down Expand Up @@ -72,7 +72,7 @@ public void enrich(DebitNote input) {
enrichNote(input);
}

private void enrichNote(BaseDocumentoNota input) {
private void enrichNote(Note input) {
LocalDate systemLocalDate = dateProvider.now();

Stream
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import io.github.project.openubl.xbuilder.content.models.utils.UBLRegex;
import io.github.project.openubl.xbuilder.enricher.kie.AbstractBodyRule;
import io.github.project.openubl.xbuilder.enricher.kie.RulePhase;
import java.util.Optional;
import java.util.function.Consumer;

/**
Expand All @@ -51,10 +52,10 @@ public void modify(Object object) {
comprobanteTipo = Catalog12.BOLETA_DE_VENTA_EMITIDA_POR_ANTICIPOS.getCode();
}
} else {
Catalog12 catalog12 = Catalog
.valueOfCode(Catalog12.class, anticipo.getComprobanteTipo())
.orElseThrow(Catalog.invalidCatalogValue);
comprobanteTipo = catalog12.getCode();
Optional<Catalog12> catalog12 = Catalog.valueOfCode(Catalog12.class, anticipo.getComprobanteTipo());
if (catalog12.isPresent()) {
comprobanteTipo = catalog12.get().getCode();
}
}

anticipo.setComprobanteTipo(comprobanteTipo);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,15 @@
import static io.github.project.openubl.xbuilder.enricher.kie.rules.utils.Helpers.whenBaseDocumento;

import io.github.project.openubl.xbuilder.content.models.common.Direccion;
import io.github.project.openubl.xbuilder.content.models.common.Proveedor;
import io.github.project.openubl.xbuilder.content.models.standard.general.Document;
import io.github.project.openubl.xbuilder.enricher.kie.AbstractHeaderRule;
import io.github.project.openubl.xbuilder.enricher.kie.RulePhase;
import java.util.function.Consumer;

/**
* Rule for {@link Proveedor#direccion}
*/
@RulePhase(type = RulePhase.PhaseType.ENRICH)
public class ProveedorDireccionRule extends AbstractHeaderRule {

Expand Down
Loading