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(
BigDecimal sueldoBruto,
BigDecimal horasExtras,
BigDecimal gratificacionesOrdinarias,
BigDecimal utilidades,
BigDecimal utilidadesDistribuidas,
BigDecimal otrosEmpleadores,
BigDecimal totalBrutoRemunerativo
......
......@@ -66,95 +66,114 @@ public class RentaQuinta {
@Column(name = "rem_contrato", precision = 15, scale = 2)
private BigDecimal remContrato;
/* INGRESOS FIJOS */
@Column(name = "basico", precision = 15, scale = 2)
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)
private BigDecimal asignacionFamiliar;
@Column(name = "movilidad", precision = 15, scale = 2)
private BigDecimal movilidad;
@Column(name = "asignacion_estudios", precision = 15, scale = 2)
private BigDecimal asignacionEstudios;
/* INGRESOS FIJOS */
/* 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)
private BigDecimal bonoExtraordinario;
@Column(name = "vacaciones_truncas", precision = 15, scale = 2)
private BigDecimal vacacionesTruncas;
@Column(name = "bono_productividad", precision = 15, scale = 2)
private BigDecimal bonoProductividad;
@Column(name = "compensacion_vacacional", precision = 15, scale = 2)
private BigDecimal compensacionVacacional;
@Column(name = "bono_desempeno", precision = 15, scale = 2)
private BigDecimal bonoDesempeno;
@Column(name = "vacaciones_gozadas_rem_vaca", precision = 15, scale = 2)
private BigDecimal vacacionesGozadasRemVaca;
@Column(name = "bono_aniversario", precision = 15, scale = 2)
private BigDecimal bonoAniversario;
@Column(name = "cts", precision = 15, scale = 2)
private BigDecimal cts;
@Column(name = "apoyo_salud", precision = 15, scale = 2)
private BigDecimal apoyoSalud;
@Column(name = "gratificacion_proporcional", precision = 15, scale = 2)
private BigDecimal gratificacionProporcional;
@Column(name = "asignacion_estudios", precision = 15, scale = 2)
private BigDecimal asignacionEstudios;
@Column(name = "bonificacion_extraordinaria", precision = 15, scale = 2)
private BigDecimal bonificacionExtraordinaria;
@Column(name = "asignacion_fallecimiento_familiar", precision = 15, scale = 2)
private BigDecimal asignacionFallecimientoFamiliar;
@Column(name = "gratificacion_julio_diciembre", precision = 15, scale = 2)
private BigDecimal gratificacionJulioDiciembre;
@Column(name = "reintegro", precision = 15, scale = 2)
private BigDecimal reintegro;
@Column(name = "bonificacion_extraordinaria_2", precision = 15, scale = 2)
private BigDecimal bonificacionExtraordinaria2;
@Column(name = "canasta_navidad", precision = 15, scale = 2)
private BigDecimal canastaNavidad;
@Column(name = "subsidio_enfermedad", precision = 15, scale = 2)
private BigDecimal subsidioEnfermedad;
@Column(name = "vale_consumo", precision = 15, scale = 2)
private BigDecimal valeConsumo;
@Column(name = "bono_productividad", precision = 15, scale = 2)
private BigDecimal bonoProductividad;
@Column(name = "obsequios", precision = 15, scale = 2)
private BigDecimal obsequios;
@Column(name = "licencia_goce_haber", precision = 15, scale = 2)
private BigDecimal licenciaGoceHaber;
@Column(name = "canasta_navidad_2", precision = 15, scale = 2)
private BigDecimal canastaNavidad2;
@Column(name = "subsidio_maternidad", precision = 15, scale = 2)
private BigDecimal subsidioMaternidad;
@Column(name = "vale_consumo_descuento", precision = 15, scale = 2)
private BigDecimal valeConsumoDescuento;
@Column(name = "licencia_salud_familiar_ley_30012", precision = 15, scale = 2)
private BigDecimal licenciaSaludFamiliarLey30012;
/* EXTRAS Y VARIABLES */
@Column(name = "reintegro", precision = 15, scale = 2)
private BigDecimal reintegro;
/* VACACIONES Y LIQUIDACIÓN */
@Column(name = "horas_extras_25", precision = 15, scale = 2)
private BigDecimal horasExtras25;
@Column(name = "compensacion_vacacional", precision = 15, scale = 2)
private BigDecimal compensacionVacacional;
@Column(name = "horas_extras_35", precision = 15, scale = 2)
private BigDecimal horasExtras35;
@Column(name = "gratificacion_proporcional", precision = 15, scale = 2)
private BigDecimal gratificacionProporcional;
@Column(name = "apoyo_salud", precision = 15, scale = 2)
private BigDecimal apoyoSalud;
@Column(name = "vacaciones_truncas", precision = 15, scale = 2)
private BigDecimal vacacionesTruncas;
@Column(name = "suma_graciosa", precision = 15, scale = 2)
private BigDecimal sumaGraciosa;
@Column(name = "bono_desempeno", precision = 15, scale = 2)
private BigDecimal bonoDesempeno;
@Column(name = "bonificacion_extraordinaria", precision = 15, scale = 2)
private BigDecimal bonificacionExtraordinaria;
@Column(name = "asignacion_fallecimiento_familiar", precision = 15, scale = 2)
private BigDecimal asignacionFallecimientoFamiliar;
@Column(name = "bonificacion_extraordinaria_2", precision = 15, scale = 2)
private BigDecimal bonificacionExtraordinaria2;
@Column(name = "dominical", precision = 15, scale = 2)
private BigDecimal dominical;
@Column(name = "gratificacion_julio_diciembre", precision = 15, scale = 2)
private BigDecimal gratificacionJulioDiciembre;
@Column(name = "bono_aniversario", precision = 15, scale = 2)
private BigDecimal bonoAniversario;
/* VACACIONES Y LIQUIDACIÓN */
@Column(name = "canasta_navidad", precision = 15, scale = 2)
private BigDecimal canastaNavidad;
@Column(name = "cts", precision = 15, scale = 2)
private BigDecimal cts;
@Column(name = "vale_consumo", precision = 15, scale = 2)
private BigDecimal valeConsumo;
@Column(name = "obsequios", precision = 15, scale = 2)
private BigDecimal obsequios;
@Column(name = "subsidio_enfermedad", precision = 15, scale = 2)
private BigDecimal subsidioEnfermedad;
@Column(name = "subsidio_maternidad", precision = 15, scale = 2)
private BigDecimal subsidioMaternidad;
@Column(name = "rem_bruta", precision = 15, scale = 2)
private BigDecimal remBruta;
......@@ -204,12 +223,6 @@ public class RentaQuinta {
@Column(name = "prestamos", precision = 15, scale = 2)
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)
private BigDecimal obsequiosDescuento;
......
......@@ -87,6 +87,7 @@ public class RentaQuintaMapper {
calculo.proyeccionGratificaciones(),
BigDecimal.ZERO,
BigDecimal.ZERO,
BigDecimal.ZERO,
calculo.proyeccionFutura());
BigDecimal ingresosAnuales = pasado.totalBrutoRemunerativo()
......@@ -134,14 +135,41 @@ public class RentaQuintaMapper {
if (!filtro.test(r)) {
continue;
}
sueldoBruto = sueldoBruto.add(orZero(r.getSueldoBruto()));
horasExtras = horasExtras.add(orZero(r.getHorasExtras25())).add(orZero(r.getHorasExtras35()));
sueldoBruto = sueldoBruto
.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
.add(orZero(r.getCompensacionVacacional()))
.add(orZero(r.getGratificacionProporcional()))
.add(orZero(r.getVacacionesTruncas()))
.add(orZero(r.getSumaGraciosa()))
.add(orZero(r.getBonificacionExtraordinaria()))
.add(orZero(r.getBonificacionExtraordinaria2()))
.add(orZero(r.getGratificacionJulioDiciembre()));
}
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) {
......
......@@ -12,6 +12,10 @@ import java.util.Optional;
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 = """
and (:sede is null or trim(r.codlocal) = :sede)
and (:tipoPlanilla is null or trim(r.boletaTipoPersonal) = :tipoPlanilla)
......@@ -53,9 +57,11 @@ public interface RentaQuintaRepository extends JpaRepository<RentaQuinta, Long>
+ coalesce(r.gratificacionJulioDiciembre, 0))
""";
/** Meses de un trabajador en un año, ordenados cronológicamente (historial anual). */
List<RentaQuinta> findByCodperAndBoletaAnioOrderByBoletaMesAsc(
Integer codper, Integer boletaAnio);
/** Boleta de un trabajador en un mes puntual. */
Optional<RentaQuinta> findByCodperAndBoletaAnioAndBoletaMes(
Integer codper, Integer boletaAnio, Integer boletaMes);
......@@ -105,6 +111,7 @@ public interface RentaQuintaRepository extends JpaRepository<RentaQuinta, Long>
@Param("texto") String texto,
Pageable pageable);
/** Boletas completas de un trabajador en un año, ordenadas por mes (pantalla de historial). */
@Query("""
select r from RentaQuinta r
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