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 // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..). public static void guardarPCE( Long idSolicitud, Long idCEconomico, Long idCEconomicosManuales, CEconomicosManuales cEconomicosManuales, String bGuardarPCE) { checkAuthenticity(); if (!permisoGuardarPCE("editar")) { Messages.error("No tiene permisos suficientes para realizar la acción"); } CEconomico dbCEconomico = PaginaCEconomicoManualCopiaController.getCEconomico(idSolicitud, idCEconomico); CEconomicosManuales dbCEconomicosManuales; if (idCEconomicosManuales == null) { dbCEconomicosManuales = PaginaCEconomicoManualCopiaController.getCEconomicosManuales(); CustomValidation.required("cEconomicosManuales.tipo.nombre", cEconomicosManuales.tipo.nombre); if (!Messages.hasErrors()) { // Creamos el Tipo ConceptoEconomico por defecto (el solicitante solo podrá cambiar el // atributo nombre) TipoCEconomico tipoCEconomico = new TipoCEconomico(); tipoCEconomico.clase = "manual"; tipoCEconomico.comentariosAdministracion = true; tipoCEconomico.comentariosSolicitante = true; tipoCEconomico.descripcion = cEconomicosManuales.tipo.descripcion; tipoCEconomico.nombre = cEconomicosManuales.tipo.nombre; tipoCEconomico.instrucciones = null; // "Instrucciones"; tipoCEconomico.tipoOtro = false; tipoCEconomico.creadoUsuario = true; tipoCEconomico.jerarquia = dbCEconomico.tipo.jerarquia + "." + (dbCEconomico.otros.size() + 1); tipoCEconomico.save(); TipoEvaluacion tipoEvaluacion = TipoEvaluacion.all().first(); tipoEvaluacion.ceconomicos.add(tipoCEconomico); tipoEvaluacion.save(); dbCEconomicosManuales.tipo = tipoCEconomico; dbCEconomicosManuales.save(); CreandoEnModificacionSolicitudes("editar", dbCEconomicosManuales, cEconomicosManuales); idCEconomicosManuales = dbCEconomicosManuales.id; dbCEconomico.otros.add(dbCEconomicosManuales); } } else { dbCEconomicosManuales = PaginaCEconomicoManualCopiaController.getCEconomicosManuales( idCEconomico, idCEconomicosManuales); } PaginaCEconomicoManualCopiaController.guardarPCEBindReferences(cEconomicosManuales); if (!Messages.hasErrors()) { PaginaCEconomicoManualCopiaController.guardarPCEValidateCopy( "editar", dbCEconomicosManuales, cEconomicosManuales); } if (!Messages.hasErrors()) { PaginaCEconomicoManualCopiaController.guardarPCEValidateRules( dbCEconomicosManuales, cEconomicosManuales); } if (!Messages.hasErrors()) { SolicitudGenerica solicitud = PaginaCEconomicosController.getSolicitudGenerica(idSolicitud); Object miSavePages = ModelUtils.invokeMethodClass(SolicitudGenerica.class, solicitud, "getSavePagesCopy"); ModelUtils.invokeMethodClass( miSavePages.getClass(), miSavePages, "setPaginaPCEconomicosCopia", false); ModelUtils.invokeMethodClass(miSavePages.getClass(), miSavePages, "save"); dbCEconomico.save(); dbCEconomicosManuales.save(); idCEconomicosManuales = dbCEconomicosManuales.id; log.info( "Acción Editar de página: " + "gen/PaginaCEconomicoManualCopia/PaginaCEconomicoManualCopia.html" + " , intentada con éxito"); } else { flash(cEconomicosManuales); log.info( "Acción Editar de página: " + "gen/PaginaCEconomicoManualCopia/PaginaCEconomicoManualCopia.html" + " , intentada sin éxito (Problemas de Validación)"); } PaginaCEconomicoManualCopiaController.guardarPCERender( idSolicitud, idCEconomico, idCEconomicosManuales); }