@Util // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..). public static void frmRegistrar( Long idSolicitud, Long idRegistroModificacion, Long idRegistro, String botonRegistrar) { checkAuthenticity(); if (!permisoFrmRegistrar("editar")) { Messages.error("No tiene permisos suficientes para realizar la acción"); } SolicitudGenerica dbSolicitud = SolicitudPresentarModificacionFAPController.getSolicitudGenerica(idSolicitud); idRegistroModificacion = dbSolicitud.registroModificacion.get(dbSolicitud.registroModificacion.size() - 1).id; RegistroModificacion registroModificacion = RegistroModificacion.findById(idRegistroModificacion); Registro dbRegistro = SolicitudPresentarModificacionFAPController.getRegistro(idRegistroModificacion, idRegistro); if (!Messages.hasErrors()) { try { PresentacionModificacionFapController.invoke( "comprobarFechaLimitePresentacion", idSolicitud); } catch (Throwable e1) { log.error( "Hubo un problema al invocar los métodos comprobarFechaLimitePresentacion: " + e1.getMessage()); Messages.error("Error al validar las comprobaciones de la Fecha Límite de Presentación"); } } if (!Messages.hasErrors()) { try { PresentacionModificacionFapController.invoke("beforeRegistro", idSolicitud); } catch (Throwable e1) { log.error("Hubo un problema al invocar los métodos beforeRegistro: " + e1.getMessage()); Messages.error("Error al validar elementos previos al Registro"); } } if (!Messages.hasErrors()) { try { TramiteBase tramite = PresentacionModificacionFapController.invoke("getTramiteObject", idSolicitud); try { dbRegistro.fasesRegistro.borrador = true; dbRegistro.fasesRegistro.firmada = true; tramite.registrar(); if (dbRegistro.fasesRegistro.clasificarAed) { tramite.cambiarEstadoSolicitud(); registroModificacion.fechaRegistro = dbRegistro.informacionRegistro.fechaRegistro; registroModificacion.save(); } else { play.Logger.error( "No se registro la solicitud de modificación correctamente por lo que no se cambiara el estado de la misma."); Messages.error("Error al intentar sólo registrar."); } if (!Messages.hasErrors()) { try { PresentacionModificacionFapController.invoke("afterRegistro", idSolicitud); } catch (Throwable e1) { log.error( "Hubo un problema al invocar los métodos afterRegistro: " + e1.getMessage()); Messages.error("Error al validar elementos posteriores al registro"); } } } catch (RegistroServiceException e) { log.error( "Error al intentar registrar en la presentacion en frmRegistrar: " + e.getMessage()); Messages.error("Error al intentar sólo registrar"); } } catch (Throwable e1) { log.error( "Error al invocar al TramiteBase en frmRegistrar de SolicitudPresentarModificacionFAPController: " + e1.getMessage()); Messages.error("Error al intentar sólo registrar"); } } if (!Messages.hasErrors()) { SolicitudPresentarModificacionFAPController.frmRegistrarValidateRules(); } if (!Messages.hasErrors()) { dbSolicitud.save(); Messages.ok("Solicitud Registrada correctamente"); log.info( "Acción Editar de página: " + "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html" + " , intentada con éxito"); redirect("PresentarFAPController.index", "editar", idSolicitud, dbSolicitud.registro.id); } else log.info( "Acción Editar de página: " + "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html" + " , intentada sin éxito (Problemas de Validación)"); SolicitudPresentarModificacionFAPController.frmRegistrarRender( idSolicitud, idRegistroModificacion, idRegistro); }