public void eliminarRegistro() {
    try {
      SolicitudPersonal solicitudPersonalEliminar = registroSeleccionado;
      solicitudPersonalEliminar.setListaSolicitudPersonalPago(
          egresoFacade.getListaSolicitudPersonalPago(solicitudPersonalEliminar));
      if (solicitudPersonalEliminar.getListaSolicitudPersonalPago() != null
          && !solicitudPersonalEliminar.getListaSolicitudPersonalPago().isEmpty()) {
        mostrarMensaje(
            Boolean.TRUE,
            "No se puede eliminar la Solicitud Personal, posee un egreso de Pago asociado.");
        return;
      }

      solicitudPersonalEliminar.setIntParaEstado(Constante.PARAM_T_ESTADOUNIVERSAL_ANULADO);
      solicitudPersonalEliminar.setIntPersEmpresaElimina(EMPRESA_USUARIO);
      solicitudPersonalEliminar.setIntPersPersonaElimina(PERSONA_USUARIO);
      solicitudPersonalEliminar.setTsFechaEliminacion(MyUtil.obtenerFechaActual());

      egresoFacade.modificarSolicitudPersonaDirecto(solicitudPersonalEliminar);

      buscar();
      mostrarMensaje(Boolean.TRUE, "Se eliminó correctamente la Solicitud Personal.");
    } catch (Exception e) {
      mostrarMensaje(
          Boolean.FALSE, "Hubo un error durante la eliminación de la Solicitud Personal.");
      log.error(e.getMessage(), e);
    }
  }
  public void buscar() {
    try {
      cargarUsuario();
      solicitudPersonalFiltro.getId().setIntPersEmpresa(EMPRESA_USUARIO);

      listaSolicitudPersonal = new ArrayList<SolicitudPersonal>();
      listaPersonaFiltroBuqueda = new ArrayList<Persona>();
      if (personaFiltroBusqueda.getStrEtiqueta() != null
          && !personaFiltroBusqueda.getStrEtiqueta().isEmpty()) {
        personaFiltroBusqueda.getStrEtiqueta().trim();
        listaPersonaFiltroBuqueda =
            personaFacade.buscarListaPersonaParaFiltro(
                personaFiltroBusqueda.getIntEstadoCod(), personaFiltroBusqueda.getStrEtiqueta());
        if (listaPersonaFiltroBuqueda.isEmpty()) return;
      }

      for (Persona persona : listaPersonaFiltroBuqueda) {
        log.info(persona);
      }

      if (solicitudPersonalFiltro.getIntAño().equals(Constante.OPCION_SELECCIONAR)) {
        solicitudPersonalFiltro.setIntAño(null);
        solicitudPersonalFiltro.setIntMes(null);
      } else {
        if (solicitudPersonalFiltro.getIntMes().intValue() < 10)
          solicitudPersonalFiltro.setIntPeriodoPago(
              Integer.parseInt(
                  solicitudPersonalFiltro.getIntAño() + "0" + solicitudPersonalFiltro.getIntMes()));
        else
          solicitudPersonalFiltro.setIntPeriodoPago(
              Integer.parseInt(
                  solicitudPersonalFiltro.getIntAño() + "" + solicitudPersonalFiltro.getIntMes()));
      }

      if (solicitudPersonalFiltro.getIntParaDocumentoGeneral().equals(Constante.OPCION_SELECCIONAR))
        solicitudPersonalFiltro.setIntParaDocumentoGeneral(null);

      if (solicitudPersonalFiltro
          .getIntParaEstado()
          .equals(Constante.PARAM_T_ESTADOUNIVERSAL_TODOS))
        solicitudPersonalFiltro.setIntParaEstado(null);

      if (solicitudPersonalFiltro.getIntParaEstadoPago().equals(Constante.OPCION_SELECCIONAR))
        solicitudPersonalFiltro.setIntParaEstadoPago(null);

      listaSolicitudPersonal =
          egresoFacade.buscarSolicitudPersonal(solicitudPersonalFiltro, listaPersonaFiltroBuqueda);

      for (SolicitudPersonal solicitudPersonal : listaSolicitudPersonal) {
        solicitudPersonal.setPersona(
            personaFacade.devolverPersonaCargada(solicitudPersonal.getIntPersPersonaGiro()));
        if (solicitudPersonal.getIntSucuIdSucursal() != null)
          solicitudPersonal.setSucursal(
              MyUtil.obtenerSucursalDeLista(
                  solicitudPersonal.getIntSucuIdSucursal(), listaSucursal));
        if (solicitudPersonal.getIntSudeIdSubsucursal() != null)
          solicitudPersonal.setSubsucursal(
              MyUtil.obtenerSubsucursalDeLista(
                  solicitudPersonal.getIntSudeIdSubsucursal(),
                  solicitudPersonal.getSucursal().getListaSubSucursal()));
      }

      Collections.sort(
          listaSolicitudPersonal,
          new Comparator<SolicitudPersonal>() {
            public int compare(SolicitudPersonal uno, SolicitudPersonal otro) {
              return uno.getId()
                  .getIntItemSolicitudPersonal()
                  .compareTo(otro.getId().getIntItemSolicitudPersonal());
            }
          });
      ocultarMensaje();
    } catch (Exception e) {
      log.error(e.getMessage(), e);
    }
  }
  public void grabar() {
    log.info("--grabar");
    try {
      if (mostrarPanelInferior) {
        if (solicitudPersonalNuevo.getBdMontoTotalSolicitud() == null
            || solicitudPersonalNuevo.getBdMontoTotalSolicitud().signum() <= 0) {
          mostrarMensaje(Boolean.FALSE, "Debe de haber un Monto Total válido.");
          return;
        }
        if (solicitudPersonalNuevo.getPersona() == null) {
          mostrarMensaje(Boolean.FALSE, "Debe de seleccionar una Entidad de Pago.");
          return;
        }
        if (solicitudPersonalNuevo.getStrObservacion() == null
            || solicitudPersonalNuevo.getStrObservacion().isEmpty()) {
          mostrarMensaje(Boolean.FALSE, "Debe de ingresar una observación.");
          return;
        }
        if (solicitudPersonalNuevo.getArchivo() == null) {
          mostrarMensaje(Boolean.FALSE, "Debe de agregar un archivo de Sustento de Autorización.");
          return;
        }
        /*if(solicitudPersonalNuevo.getIntPeriodoPago()==null){
        	mostrarMensaje(Boolean.FALSE, "Debe de ingresar un Periodo."); return;
        }*/
        if (solicitudPersonalNuevo.getListaSolicitudPersonalDetalle().isEmpty()) {
          mostrarMensaje(Boolean.FALSE, "Debe de agregar al menos un Detalle de Solicitud.");
          return;
        }

        if (!solicitudPersonalNuevo
            .getIntParaDocumentoGeneral()
            .equals(Constante.PARAM_T_DOCUMENTOGENERAL_REMUNERACION)) {
          solicitudPersonalNuevo.setIntParaSubTipoDocumentoPlanilla(null);
        }
        if (solicitudPersonalNuevo
                .getIntParaAgrupacionPago()
                .equals(Constante.PARAM_T_OPERACIONPAGOPLANILLA_INDIVIDUAL)
            && solicitudPersonalNuevo.getListaSolicitudPersonalDetalle().size() > 1) {
          mostrarMensaje(
              Boolean.FALSE,
              "Si el tipo de operación es Individual, solo puede tener 1 detalle asociado.");
          return;
        }

        if (solicitudPersonalNuevo.getId().getIntItemSolicitudPersonal() == null) {
          egresoFacade.grabarSolicitudPersonal(solicitudPersonalNuevo);
          buscar();
          mostrarMensaje(Boolean.TRUE, "Se registró correctamente la Solicitud Personal.");
        } else {
          egresoFacade.modificarSolicitudPersonal(solicitudPersonalNuevo);
          buscar();
          mostrarMensaje(Boolean.TRUE, "Se modificó correctamente la Solicitud Personal.");
        }
      }

      if (mostrarImportarDatos) {
        if (listaSolicitudPersonalCarga != null && !listaSolicitudPersonalCarga.isEmpty()) {
          for (SolicitudPersonal solicitudPersonal : listaSolicitudPersonalCarga) {
            egresoFacade.grabarSolicitudPersonal(solicitudPersonal);
          }
          buscar();
          mostrarMensaje(
              Boolean.TRUE, "Se registraron correctamente las Solicitudes Personales cargadas.");
          ((FileUploadController) getSessionBean("fileUploadController"))
              .setListaSolicitudPersonal(null);
        }
      }

      habilitarGrabar = Boolean.FALSE;
      deshabilitarNuevo = Boolean.TRUE;
    } catch (Exception e) {
      mostrarMensaje(
          Boolean.FALSE,
          "Ocurrio un error durante el proceso de registro de la Solicitud Personal.");
      log.error(e.getMessage(), e);
    }
  }