Calcular numero de días de vacaciones del mes
Last updated
Was this helpful?
Last updated
Was this helpful?
A veces necesitamos calcular el numero de días de vacaciones del mes.
Tenemos que descartar los días de vacaciones que pertenecen a otro mes.
Mostramos los dias de vacaciones del mes
Mostramos el total de días.
Definimos el método en el Services
public Integer totalDiasVacionesdelMes(Agente agente, Reservado reservado, Integer numeroMes, Integer numeroDiasMes) {
String vacaciones = "";
Integer total = 0;
try {
List<Vacacion> vacacionList
= vacacionRepository.findBy(new Document("agente.idagente", agente.getIdagente()));
if (!vacacionList.isEmpty()) {
Integer diainicial = 0;
Integer mesinicial = 0;
Integer anioinicial = 0;
Integer diafinal = 0;
Integer mesfinal = 0;
Integer aniofinal = 0;
Integer contador = 0;
for (Vacacion v : vacacionList) {
Date fechainicio = JsfUtil.converterDate(v.getFechainicio());
Date fechafin = JsfUtil.converterDate(v.getFechafin());
if (reservado.getAnio().equals(JsfUtil.getAnioDeUnaFecha(v.getFechainicio())) || reservado.getAnio().equals(JsfUtil.getAnioDeUnaFecha(v.getFechafin()))) {
if (numeroMes.equals(JsfUtil.getMesDeUnaFecha(v.getFechainicio()))
|| numeroMes.equals(JsfUtil.getMesDeUnaFecha(v.getFechafin()))) {
diainicial = JsfUtil.getDiaDeUnaFecha(v.getFechainicio());
mesinicial = JsfUtil.getMesDeUnaFecha(v.getFechainicio());
anioinicial = JsfUtil.getAnioDeUnaFecha(v.getFechainicio());
diafinal = JsfUtil.getDiaDeUnaFecha(v.getFechafin());
mesfinal = JsfUtil.getMesDeUnaFecha(v.getFechafin());
aniofinal = JsfUtil.getAnioDeUnaFecha(v.getFechafin());
contador = 0;
if (mesinicial < numeroMes) {
// si es un dia del mes anterior
//lo colocamos en el primer dia del mes actual
diainicial = 1;
}
if (numeroMes < mesfinal) {
diafinal = numeroDiasMes;
}
Integer dias = (diafinal - diainicial) + 1;
total += dias;
}
}
}
}
} catch (Exception e) {
JsfUtil.warningMessage("totalDiasVacionesdelMes() " + e.getLocalizedMessage());
}
return total;
}