Calcular numero de días de vacaciones del mes

  • 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;
    }

Last updated