fix: alinear bloques de ingresos de boleta con grupos reales de la entidad

sueldoBruto ahora suma INGRESOS FIJOS, horasExtras suma EXTRAS Y VARIABLES
y gratificacionesOrdinarias suma VACACIONES Y LIQUIDACION (antes solo
tomaban 1-2 columnas sueltas). Se agrega columna utilidades al bloque.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GDaQQ4oDPiTnXr2FfDLnst
parent bdbbb023
...@@ -30,6 +30,7 @@ public record RentaQuintaDetalleCompletoDTO( ...@@ -30,6 +30,7 @@ public record RentaQuintaDetalleCompletoDTO(
BigDecimal sueldoBruto, BigDecimal sueldoBruto,
BigDecimal horasExtras, BigDecimal horasExtras,
BigDecimal gratificacionesOrdinarias, BigDecimal gratificacionesOrdinarias,
BigDecimal utilidades,
BigDecimal utilidadesDistribuidas, BigDecimal utilidadesDistribuidas,
BigDecimal otrosEmpleadores, BigDecimal otrosEmpleadores,
BigDecimal totalBrutoRemunerativo BigDecimal totalBrutoRemunerativo
......
...@@ -66,95 +66,114 @@ public class RentaQuinta { ...@@ -66,95 +66,114 @@ public class RentaQuinta {
@Column(name = "rem_contrato", precision = 15, scale = 2) @Column(name = "rem_contrato", precision = 15, scale = 2)
private BigDecimal remContrato; private BigDecimal remContrato;
/* INGRESOS FIJOS */
@Column(name = "basico", precision = 15, scale = 2) @Column(name = "basico", precision = 15, scale = 2)
private BigDecimal basico; private BigDecimal basico;
@Column(name = "vacaciones_gozadas_rem_vaca", precision = 15, scale = 2)
private BigDecimal vacacionesGozadasRemVaca;
@Column(name = "licencia_goce_haber", precision = 15, scale = 2)
private BigDecimal licenciaGoceHaber;
@Column(name = "licencia_salud_familiar_ley_30012", precision = 15, scale = 2)
private BigDecimal licenciaSaludFamiliarLey30012;
@Column(name = "asignacion_familiar", precision = 15, scale = 2) @Column(name = "asignacion_familiar", precision = 15, scale = 2)
private BigDecimal asignacionFamiliar; private BigDecimal asignacionFamiliar;
@Column(name = "movilidad", precision = 15, scale = 2) @Column(name = "movilidad", precision = 15, scale = 2)
private BigDecimal movilidad; private BigDecimal movilidad;
@Column(name = "asignacion_estudios", precision = 15, scale = 2) /* INGRESOS FIJOS */
private BigDecimal asignacionEstudios;
/* EXTRAS Y VARIABLES */
@Column(name = "horas_extras_25", precision = 15, scale = 2)
private BigDecimal horasExtras25;
@Column(name = "horas_extras_35", precision = 15, scale = 2)
private BigDecimal horasExtras35;
@Column(name = "dominical", precision = 15, scale = 2)
private BigDecimal dominical;
@Column(name = "bono_extraordinario", precision = 15, scale = 2) @Column(name = "bono_extraordinario", precision = 15, scale = 2)
private BigDecimal bonoExtraordinario; private BigDecimal bonoExtraordinario;
@Column(name = "vacaciones_truncas", precision = 15, scale = 2) @Column(name = "bono_productividad", precision = 15, scale = 2)
private BigDecimal vacacionesTruncas; private BigDecimal bonoProductividad;
@Column(name = "compensacion_vacacional", precision = 15, scale = 2) @Column(name = "bono_desempeno", precision = 15, scale = 2)
private BigDecimal compensacionVacacional; private BigDecimal bonoDesempeno;
@Column(name = "vacaciones_gozadas_rem_vaca", precision = 15, scale = 2) @Column(name = "bono_aniversario", precision = 15, scale = 2)
private BigDecimal vacacionesGozadasRemVaca; private BigDecimal bonoAniversario;
@Column(name = "cts", precision = 15, scale = 2) @Column(name = "apoyo_salud", precision = 15, scale = 2)
private BigDecimal cts; private BigDecimal apoyoSalud;
@Column(name = "gratificacion_proporcional", precision = 15, scale = 2) @Column(name = "asignacion_estudios", precision = 15, scale = 2)
private BigDecimal gratificacionProporcional; private BigDecimal asignacionEstudios;
@Column(name = "bonificacion_extraordinaria", precision = 15, scale = 2) @Column(name = "asignacion_fallecimiento_familiar", precision = 15, scale = 2)
private BigDecimal bonificacionExtraordinaria; private BigDecimal asignacionFallecimientoFamiliar;
@Column(name = "gratificacion_julio_diciembre", precision = 15, scale = 2) @Column(name = "reintegro", precision = 15, scale = 2)
private BigDecimal gratificacionJulioDiciembre; private BigDecimal reintegro;
@Column(name = "bonificacion_extraordinaria_2", precision = 15, scale = 2) @Column(name = "canasta_navidad", precision = 15, scale = 2)
private BigDecimal bonificacionExtraordinaria2; private BigDecimal canastaNavidad;
@Column(name = "subsidio_enfermedad", precision = 15, scale = 2) @Column(name = "vale_consumo", precision = 15, scale = 2)
private BigDecimal subsidioEnfermedad; private BigDecimal valeConsumo;
@Column(name = "bono_productividad", precision = 15, scale = 2) @Column(name = "obsequios", precision = 15, scale = 2)
private BigDecimal bonoProductividad; private BigDecimal obsequios;
@Column(name = "licencia_goce_haber", precision = 15, scale = 2) @Column(name = "canasta_navidad_2", precision = 15, scale = 2)
private BigDecimal licenciaGoceHaber; private BigDecimal canastaNavidad2;
@Column(name = "subsidio_maternidad", precision = 15, scale = 2) @Column(name = "vale_consumo_descuento", precision = 15, scale = 2)
private BigDecimal subsidioMaternidad; private BigDecimal valeConsumoDescuento;
@Column(name = "licencia_salud_familiar_ley_30012", precision = 15, scale = 2) /* EXTRAS Y VARIABLES */
private BigDecimal licenciaSaludFamiliarLey30012;
@Column(name = "reintegro", precision = 15, scale = 2) /* VACACIONES Y LIQUIDACIÓN */
private BigDecimal reintegro;
@Column(name = "horas_extras_25", precision = 15, scale = 2) @Column(name = "compensacion_vacacional", precision = 15, scale = 2)
private BigDecimal horasExtras25; private BigDecimal compensacionVacacional;
@Column(name = "horas_extras_35", precision = 15, scale = 2) @Column(name = "gratificacion_proporcional", precision = 15, scale = 2)
private BigDecimal horasExtras35; private BigDecimal gratificacionProporcional;
@Column(name = "apoyo_salud", precision = 15, scale = 2) @Column(name = "vacaciones_truncas", precision = 15, scale = 2)
private BigDecimal apoyoSalud; private BigDecimal vacacionesTruncas;
@Column(name = "suma_graciosa", precision = 15, scale = 2) @Column(name = "suma_graciosa", precision = 15, scale = 2)
private BigDecimal sumaGraciosa; private BigDecimal sumaGraciosa;
@Column(name = "bono_desempeno", precision = 15, scale = 2) @Column(name = "bonificacion_extraordinaria", precision = 15, scale = 2)
private BigDecimal bonoDesempeno; private BigDecimal bonificacionExtraordinaria;
@Column(name = "asignacion_fallecimiento_familiar", precision = 15, scale = 2) @Column(name = "bonificacion_extraordinaria_2", precision = 15, scale = 2)
private BigDecimal asignacionFallecimientoFamiliar; private BigDecimal bonificacionExtraordinaria2;
@Column(name = "dominical", precision = 15, scale = 2) @Column(name = "gratificacion_julio_diciembre", precision = 15, scale = 2)
private BigDecimal dominical; private BigDecimal gratificacionJulioDiciembre;
@Column(name = "bono_aniversario", precision = 15, scale = 2) /* VACACIONES Y LIQUIDACIÓN */
private BigDecimal bonoAniversario;
@Column(name = "canasta_navidad", precision = 15, scale = 2) @Column(name = "cts", precision = 15, scale = 2)
private BigDecimal canastaNavidad; private BigDecimal cts;
@Column(name = "vale_consumo", precision = 15, scale = 2)
private BigDecimal valeConsumo;
@Column(name = "obsequios", precision = 15, scale = 2) @Column(name = "subsidio_enfermedad", precision = 15, scale = 2)
private BigDecimal obsequios; private BigDecimal subsidioEnfermedad;
@Column(name = "subsidio_maternidad", precision = 15, scale = 2)
private BigDecimal subsidioMaternidad;
@Column(name = "rem_bruta", precision = 15, scale = 2) @Column(name = "rem_bruta", precision = 15, scale = 2)
private BigDecimal remBruta; private BigDecimal remBruta;
...@@ -204,12 +223,6 @@ public class RentaQuinta { ...@@ -204,12 +223,6 @@ public class RentaQuinta {
@Column(name = "prestamos", precision = 15, scale = 2) @Column(name = "prestamos", precision = 15, scale = 2)
private BigDecimal prestamos; private BigDecimal prestamos;
@Column(name = "canasta_navidad_2", precision = 15, scale = 2)
private BigDecimal canastaNavidad2;
@Column(name = "vale_consumo_descuento", precision = 15, scale = 2)
private BigDecimal valeConsumoDescuento;
@Column(name = "obsequios_descuento", precision = 15, scale = 2) @Column(name = "obsequios_descuento", precision = 15, scale = 2)
private BigDecimal obsequiosDescuento; private BigDecimal obsequiosDescuento;
......
...@@ -87,6 +87,7 @@ public class RentaQuintaMapper { ...@@ -87,6 +87,7 @@ public class RentaQuintaMapper {
calculo.proyeccionGratificaciones(), calculo.proyeccionGratificaciones(),
BigDecimal.ZERO, BigDecimal.ZERO,
BigDecimal.ZERO, BigDecimal.ZERO,
BigDecimal.ZERO,
calculo.proyeccionFutura()); calculo.proyeccionFutura());
BigDecimal ingresosAnuales = pasado.totalBrutoRemunerativo() BigDecimal ingresosAnuales = pasado.totalBrutoRemunerativo()
...@@ -134,14 +135,41 @@ public class RentaQuintaMapper { ...@@ -134,14 +135,41 @@ public class RentaQuintaMapper {
if (!filtro.test(r)) { if (!filtro.test(r)) {
continue; continue;
} }
sueldoBruto = sueldoBruto.add(orZero(r.getSueldoBruto())); sueldoBruto = sueldoBruto
horasExtras = horasExtras.add(orZero(r.getHorasExtras25())).add(orZero(r.getHorasExtras35())); .add(orZero(r.getBasico()))
.add(orZero(r.getVacacionesGozadasRemVaca()))
.add(orZero(r.getLicenciaGoceHaber()))
.add(orZero(r.getLicenciaSaludFamiliarLey30012()))
.add(orZero(r.getAsignacionFamiliar()))
.add(orZero(r.getMovilidad()));
horasExtras = horasExtras
.add(orZero(r.getHorasExtras25()))
.add(orZero(r.getHorasExtras35()))
.add(orZero(r.getDominical()))
.add(orZero(r.getBonoExtraordinario()))
.add(orZero(r.getBonoProductividad()))
.add(orZero(r.getBonoDesempeno()))
.add(orZero(r.getBonoAniversario()))
.add(orZero(r.getApoyoSalud()))
.add(orZero(r.getAsignacionEstudios()))
.add(orZero(r.getAsignacionFallecimientoFamiliar()))
.add(orZero(r.getReintegro()))
.add(orZero(r.getCanastaNavidad()))
.add(orZero(r.getValeConsumo()))
.add(orZero(r.getObsequios()))
.add(orZero(r.getCanastaNavidad2()))
.add(orZero(r.getValeConsumoDescuento()));
gratificaciones = gratificaciones gratificaciones = gratificaciones
.add(orZero(r.getCompensacionVacacional()))
.add(orZero(r.getGratificacionProporcional())) .add(orZero(r.getGratificacionProporcional()))
.add(orZero(r.getVacacionesTruncas()))
.add(orZero(r.getSumaGraciosa()))
.add(orZero(r.getBonificacionExtraordinaria()))
.add(orZero(r.getBonificacionExtraordinaria2()))
.add(orZero(r.getGratificacionJulioDiciembre())); .add(orZero(r.getGratificacionJulioDiciembre()));
} }
BigDecimal total = sueldoBruto.add(horasExtras).add(gratificaciones); BigDecimal total = sueldoBruto.add(horasExtras).add(gratificaciones);
return new BloqueIngresosDTO(sueldoBruto, horasExtras, gratificaciones, BigDecimal.ZERO, BigDecimal.ZERO, total); return new BloqueIngresosDTO(sueldoBruto, horasExtras, gratificaciones, BigDecimal.ZERO, BigDecimal.ZERO, BigDecimal.ZERO, total);
} }
private BigDecimal orZero(BigDecimal v) { private BigDecimal orZero(BigDecimal v) {
......
...@@ -12,6 +12,10 @@ import java.util.Optional; ...@@ -12,6 +12,10 @@ import java.util.Optional;
public interface RentaQuintaRepository extends JpaRepository<RentaQuinta, Long> { public interface RentaQuintaRepository extends JpaRepository<RentaQuinta, Long> {
/**
* Filtros opcionales de la grilla (catálogo + búsqueda por documento/apellidos), compartidos
* entre la query de datos y su countQuery.
*/
String FILTROS = """ String FILTROS = """
and (:sede is null or trim(r.codlocal) = :sede) and (:sede is null or trim(r.codlocal) = :sede)
and (:tipoPlanilla is null or trim(r.boletaTipoPersonal) = :tipoPlanilla) and (:tipoPlanilla is null or trim(r.boletaTipoPersonal) = :tipoPlanilla)
...@@ -53,9 +57,11 @@ public interface RentaQuintaRepository extends JpaRepository<RentaQuinta, Long> ...@@ -53,9 +57,11 @@ public interface RentaQuintaRepository extends JpaRepository<RentaQuinta, Long>
+ coalesce(r.gratificacionJulioDiciembre, 0)) + coalesce(r.gratificacionJulioDiciembre, 0))
"""; """;
/** Meses de un trabajador en un año, ordenados cronológicamente (historial anual). */
List<RentaQuinta> findByCodperAndBoletaAnioOrderByBoletaMesAsc( List<RentaQuinta> findByCodperAndBoletaAnioOrderByBoletaMesAsc(
Integer codper, Integer boletaAnio); Integer codper, Integer boletaAnio);
/** Boleta de un trabajador en un mes puntual. */
Optional<RentaQuinta> findByCodperAndBoletaAnioAndBoletaMes( Optional<RentaQuinta> findByCodperAndBoletaAnioAndBoletaMes(
Integer codper, Integer boletaAnio, Integer boletaMes); Integer codper, Integer boletaAnio, Integer boletaMes);
...@@ -105,6 +111,7 @@ public interface RentaQuintaRepository extends JpaRepository<RentaQuinta, Long> ...@@ -105,6 +111,7 @@ public interface RentaQuintaRepository extends JpaRepository<RentaQuinta, Long>
@Param("texto") String texto, @Param("texto") String texto,
Pageable pageable); Pageable pageable);
/** Boletas completas de un trabajador en un año, ordenadas por mes (pantalla de historial). */
@Query(""" @Query("""
select r from RentaQuinta r select r from RentaQuinta r
where r.codper = :codper and r.boletaAnio = :anio where r.codper = :codper and r.boletaAnio = :anio
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment