/**
   * <b> Permite obetener el total de ingresos presupuestado. </b>
   *
   * <p>[Author: Paul Jimenez, Date: 21/06/2016]
   *
   * @throws HiperionException
   */
  public void obtenerTotalGastos() throws HiperionException {

    totalPresupuesto = 0.0;
    try {

      Egreso egresoDB =
          egresoService.buscarEgresos(
              reporteRecaudacionBean.getPeriodo(), reporteRecaudacionBean.getIdAfectacion());

      if (egresoDB != null) {
        List<DetalleEgreso> detEgresos = egresoService.buscarEgresos(egresoDB.getIdEgreso());

        for (DetalleEgreso egreso : detEgresos) {
          totalPresupuesto += egreso.getPresupuesto();
        }

      } else {
        MessagesController.addWarn(
            null, HiperionMensajes.getInstancia().getString("hiperion.mensaje.warn.buscar"));
      }

    } catch (HiperionException e) {
      throw new HiperionException(e);
    }
  }
  /**
   * <b> permite buscar las recaudaciones que fueron ingresadas. </b>
   *
   * <p>[Author: Paul Jimenez, Date: 09/06/2016]
   *
   * @throws HiperionException
   */
  public void generarReporte() throws HiperionException {

    totalGastos = 0.0;

    recaudacionDTOs.clear();

    try {

      Long idAfectacion = reporteRecaudacionBean.getIdAfectacion();

      List<Gasto> gastos = recaudacionService.obtenerGastos(idAfectacion);

      for (Gasto gasto : gastos) {
        RecaudacionDTO recaudacionDTO = new RecaudacionDTO();

        recaudacionDTO.setBeneficiario(gasto.getBeneficiarioGasto());
        recaudacionDTO.setComprobante(gasto.getComprobanteGasto());
        recaudacionDTO.setValorRecaudacion(gasto.getValorGasto());
        recaudacionDTO.setFechaRecaudacion(gasto.getFechaGasto());

        Partida partida = egresoService.obtenerPartidaById(gasto.getPartida().getIdPartida());
        recaudacionDTO.setPartida(partida);

        totalGastos += gasto.getValorGasto();
        recaudacionDTOs.add(recaudacionDTO);
      }

      obtenerTotalGastos();
      createBarModels();

    } catch (HiperionException e) {
      throw new HiperionException(e);
    }
  }
  /**
   * <b> Permite llenar el grafico con los valores obtenidos. </b>
   *
   * <p>[Author: Paul Jimenez, Date: 22/06/2016]
   *
   * @return
   * @throws HiperionException
   */
  private BarChartModel initBarModel() throws HiperionException {
    BarChartModel model = new BarChartModel();

    ChartSeries recaudaciones = new ChartSeries();
    recaudaciones.setLabel("Certificaciones");

    ChartSeries recaudacionesPres = new ChartSeries();
    recaudacionesPres.setLabel("Presupuestadas");
    try {

      if (!recaudacionDTOs.isEmpty()) {

        for (RecaudacionDTO recaudacionDTO : recaudacionDTOs) {
          recaudaciones.set(
              recaudacionDTO.getPartida().getPartida(), recaudacionDTO.getValorRecaudacion());
        }

      } else {
        recaudaciones.set("A", 0);
        recaudaciones.set("B", 1);
      }

      Egreso egresoDB =
          egresoService.buscarEgresos(
              reporteRecaudacionBean.getPeriodo(), reporteRecaudacionBean.getIdAfectacion());

      if (egresoDB != null) {
        List<DetalleEgreso> detEgresos = egresoService.buscarEgresos(egresoDB.getIdEgreso());

        for (DetalleEgreso egreso : detEgresos) {
          recaudacionesPres.set(egreso.getPartida().getPartida(), egreso.getPresupuesto());
        }

      } else {
        recaudacionesPres.set("A", 0);
        recaudacionesPres.set("B", 1);
      }

      model.addSeries(recaudaciones);
      model.addSeries(recaudacionesPres);

    } catch (HiperionException e) {
      throw new HiperionException(e);
    }

    return model;
  }
  /**
   * <b> Permite obtener los departamentos registradas y transformar a una lista de seleccion. </b>
   *
   * <p>[Author: Paul Jimenez, Date: 31/03/2016]
   *
   * @throws HiperionException
   */
  public void obtenerDepartamentos() throws HiperionException {

    try {
      this.departamentoItems = new ArrayList<SelectItem>();

      List<Afectacion> departamentos =
          afectacionService.obtenerDepartamentos(
              reporteRecaudacionBean.getFacultad(), reporteRecaudacionBean.getDependencia());

      for (Afectacion departamento : departamentos) {
        SelectItem selectItem =
            new SelectItem(departamento.getIdAfectacion(), departamento.getDescAfectacion());
        departamentoItems.add(selectItem);
      }

    } catch (HiperionException e) {
      throw new HiperionException(e);
    }
  }