@Util
  public static Registro getRegistro(Long idRegistroModificacion, Long idRegistro) {
    Registro registro = null;

    if (idRegistroModificacion == null) {
      if (!Messages.messages(MessageType.FATAL).contains("Falta parámetro idRegistroModificacion"))
        Messages.fatal("Falta parámetro idRegistroModificacion");
    }

    if (idRegistro == null) {
      RegistroModificacion registroModificacion =
          RegistroModificacion.findById(idRegistroModificacion);
      idRegistro = registroModificacion.registro.id;
    }
    if (idRegistroModificacion != null && idRegistro != null) {
      registro =
          Registro.find(
                  "select registro from RegistroModificacion registroModificacion join registroModificacion.registro registro where registroModificacion.id=? and registro.id=?",
                  idRegistroModificacion,
                  idRegistro)
              .first();
      if (registro == null) Messages.fatal("Error al recuperar Registro");
    }
    return registro;
  }
  @Util
  public static RegistroModificacion getRegistroModificacion(
      Long idSolicitud, Long idRegistroModificacion) {
    RegistroModificacion registroModificacion = null;

    if (idSolicitud == null) {
      if (!Messages.messages(MessageType.FATAL).contains("Falta parámetro idSolicitud"))
        Messages.fatal("Falta parámetro idSolicitud");
    }

    if (idRegistroModificacion == null) {
      SolicitudGenerica solicitud =
          PresentarModificacionFAPController.getSolicitudGenerica(idSolicitud);
      idRegistroModificacion =
          solicitud.registroModificacion.get(solicitud.registroModificacion.size() - 1).id;
      if (idRegistroModificacion == null) {
        if (!Messages.messages(MessageType.FATAL)
            .contains("Falta parámetro idRegistroModificacion"))
          Messages.fatal("Falta parámetro idRegistroModificacion");
      }
    }
    if (idSolicitud != null && idRegistroModificacion != null) {
      registroModificacion =
          RegistroModificacion.find(
                  "select registroModificacion from SolicitudGenerica solicitud join solicitud.registroModificacion registroModificacion where solicitud.id=? and registroModificacion.id=?",
                  idSolicitud,
                  idRegistroModificacion)
              .first();
      if (registroModificacion == null) Messages.fatal("Error al recuperar RegistroModificacion");
    }
    return registroModificacion;
  }
  public static void index(
      String accion, Long idSolicitud, Long idCEconomico, Long idCEconomicosManuales) {
    if (accion == null) accion = getAccion();
    if (!permiso(accion)) {
      Messages.fatal("No tiene permisos suficientes para realizar esta acción");
      renderTemplate("fap/PaginaCEconomicoManualCopia/PaginaCEconomicoManualCopia.html");
    }

    SolicitudGenerica solicitud =
        PaginaCEconomicoManualCopiaController.getSolicitudGenerica(idSolicitud);
    CEconomico cEconomico =
        PaginaCEconomicoManualCopiaController.getCEconomico(idSolicitud, idCEconomico);

    TipoEvaluacion tipoEvaluacion = TipoEvaluacion.all().first();
    Integer duracion = tipoEvaluacion.duracion - 1;

    CEconomicosManuales cEconomicosManuales = null;
    if ("crear".equals(accion)) {
      cEconomicosManuales = PaginaCEconomicoManualCopiaController.getCEconomicosManuales();
      cEconomicosManuales.valores = new ArrayList<ValoresCEconomico>();
      for (int i = 0; i <= duracion; i++) {
        ValoresCEconomico vCE = new ValoresCEconomico(i);
        cEconomicosManuales.valores.add(vCE);
      }
      if (properties.FapProperties.getBoolean("fap.entidades.guardar.antes")) {

        cEconomicosManuales.save();
        idCEconomicosManuales = cEconomicosManuales.id;
        cEconomico.otros.add(cEconomicosManuales);
        cEconomico.save();

        accion = "editar";
      }

    } else if (!"borrado".equals(accion)) {
      cEconomicosManuales =
          PaginaCEconomicoManualCopiaController.getCEconomicosManuales(
              idCEconomico, idCEconomicosManuales);
      if (cEconomicosManuales == null) {
        cEconomicosManuales = getFlashCEconomicosManuales();
        accion = "crear";
        Messages.clear();
      }
    }

    log.info(
        "Visitando página: " + "fap/PaginaCEconomicoManualCopia/PaginaCEconomicoManualCopia.html");
    renderTemplate(
        "fap/PaginaCEconomicoManualCopia/PaginaCEconomicoManualCopia.html",
        accion,
        idSolicitud,
        idCEconomico,
        idCEconomicosManuales,
        solicitud,
        cEconomico,
        cEconomicosManuales,
        duracion);
  }
 @Util
 public static Documento getDocumento(Long idSolicitud, Long idDocumento) {
   System.out.println("hola soy hijo");
   Documento documento = null;
   if (idSolicitud == null) {
     Messages.fatal("Falta parámetro idSolicitud");
   } else if (idDocumento == null) {
     Messages.fatal("Falta parámetro idDocumento");
   } else {
     documento =
         Documento.find(
                 "select registradas.justificante from Solicitud solicitud join solicitud.aportaciones.registradas registradas where solicitud.id=? and solicitud.aportaciones.actual.id=?",
                 idSolicitud,
                 idDocumento)
             .first();
     if (documento == null) {
       Messages.fatal("Error al recuperar Documento");
     }
   }
   return documento;
 }
 @Util
 private static String redirectToFirstPage(Long idSolicitud) {
   // Url Primera pagina de la solicitud
   String firstPage = FapProperties.get("fap.app.firstPage");
   if (firstPage == null) {
     play.Logger.error(
         "No está definida la property fap.app.firstPage que identifica la primera página.");
     Messages.fatal("Se ha producido un error");
   }
   String expedienteUrl =
       Router.reverse(firstPage + "Controller.index").add("idSolicitud", idSolicitud).url;
   return expedienteUrl;
 }
 @Util
 public static void index(String accion, Long idDocumento, Long idSolicitud) {
   Documento documento;
   if (accion.equals("crear")) {
     documento = new Documento();
   } else {
     documento = getDocumento(idSolicitud, idDocumento);
   }
   if (!permiso(accion)) {
     Messages.fatal("No tiene permisos suficientes para realizar esta acción");
   }
   renderTemplate(
       "gen/popups/registrosPopupVer.html", accion, idDocumento, documento, idSolicitud);
 }
  public static void index(
      String accion, Long idSolicitud, Long idRegistroModificacion, Long idRegistro) {
    if (accion == null) accion = getAccion();
    if (!permiso(accion)) {
      Messages.fatal("No tiene suficientes privilegios para acceder a esta solicitud");
      renderTemplate(
          "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html");
    }

    SolicitudGenerica solicitud =
        SolicitudPresentarModificacionFAPController.getSolicitudGenerica(idSolicitud);
    idRegistroModificacion =
        solicitud.registroModificacion.get(solicitud.registroModificacion.size() - 1).id;
    RegistroModificacion registroModificacion =
        SolicitudPresentarModificacionFAPController.getRegistroModificacion(
            idSolicitud, idRegistroModificacion);
    idRegistro = registroModificacion.registro.id;

    Registro registro = null;
    if ("crear".equals(accion)) {
      registro = SolicitudPresentarModificacionFAPController.getRegistro();
      if (properties.FapProperties.getBoolean("fap.entidades.guardar.antes")) {

        registro.save();
        idRegistro = registro.id;
        registroModificacion.registro = registro;
        registroModificacion.save();

        accion = "editar";
      }

    } else if (!"borrado".equals(accion)) {
      registro =
          SolicitudPresentarModificacionFAPController.getRegistro(
              idRegistroModificacion, idRegistro);
    }

    log.info(
        "Visitando página: "
            + "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html");
    renderTemplate(
        "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html",
        accion,
        idSolicitud,
        idRegistroModificacion,
        idRegistro,
        solicitud,
        registroModificacion,
        registro);
  }