public static void tablatablaFirmantesEspera(Long idRegistro) {

    Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams");
    SolicitudGenerica dbSolicitud =
        SolicitudPresentarModificacionFAPController.getSolicitudGenerica(ids.get("idSolicitud"));
    Long idRegistroModificacion =
        dbSolicitud.registroModificacion.get(dbSolicitud.registroModificacion.size() - 1).id;
    RegistroModificacion registroModificacion =
        RegistroModificacion.findById(idRegistroModificacion);
    idRegistro = registroModificacion.registro.id;

    java.util.List<Firmante> rows =
        Firmante.find(
                "select firmante from Registro registro join registro.firmantes.todos firmante where registro.id=? and firmante.tipo=? and firmante.fechaFirma is not null",
                idRegistro,
                "representante")
            .fetch();

    List<Firmante> rowsFiltered = rows; // Tabla sin permisos, no filtra

    tables.TableRenderResponse<Firmante> response =
        new tables.TableRenderResponse<Firmante>(
            rowsFiltered, false, false, false, "", "", "", getAccion(), ids);

    renderJSON(response.toJSON("idvalor", "nombre", "id"));
  }
  public static void index(Long idEvaluacion, String accion) {
    Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams");
    if (secure.checkGrafico("accesoEvaluacion", "visible", "leer", ids, null)) {
      TipoEvaluacion tipoEvaluacion = TipoEvaluacion.all().first();
      Evaluacion evaluacion = Evaluacion.findById(idEvaluacion);
      if (evaluacion != null) {
        BaremacionUtils.ordenarTiposCEconomicos(evaluacion.tipo.ceconomicos);
        BaremacionUtils.ordenarCEconomicos(evaluacion.ceconomicos);
        BaremacionUtils.ordenarTiposCriterios(evaluacion.tipo.criterios);
        BaremacionUtils.ordenarCriterios(evaluacion.criterios);
      }
      notFoundIfNull(evaluacion);
      String expedienteUrl = redirectToFirstPage(evaluacion.solicitud.id);
      int duracion = tipoEvaluacion.duracion - 1;
      // Stupid hack
      boolean admin = "administradorgestor".contains(AgenteController.getAgente().rolActivo);

      if (!EstadosEvaluacionEnum.evaluada.name().equals(evaluacion.estado)) {
        BaremacionService.calcularTotales(evaluacion, admin, true);
      }
      boolean puedoGuardar =
          secure.checkGrafico("guardarEvaluacion", "editable", accion, ids, null);
      renderTemplate(
          "fap/Baremacion/fichaEvaluador.html",
          evaluacion,
          expedienteUrl,
          duracion,
          idEvaluacion,
          accion,
          puedoGuardar);
    } else {
      play.Logger.error("No se cumple el permiso \"accesoEvaluacion\" con ids: " + ids);
      forbidden();
    }
  }
  @Util
  public static void firmarRepresentanteFormFirmaRepresentante(
      Long idSolicitud, Long idRegistroModificacion, Long idRegistro, String firma) {
    SolicitudGenerica solicitud =
        SolicitudPresentarModificacionFAPController.getSolicitudGenerica(idSolicitud);
    idRegistroModificacion =
        solicitud.registroModificacion.get(solicitud.registroModificacion.size() - 1).id;
    RegistroModificacion registroModificacion =
        RegistroModificacion.findById(idRegistroModificacion);
    idRegistro = registroModificacion.registro.id;
    Registro registro =
        SolicitudPresentarModificacionFAPController.getRegistro(idRegistroModificacion, idRegistro);

    play.Logger.info("Metodo: firmarRepresentanteFormFirmaRepresentante");
    Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams");
    Map<String, Object> vars = new HashMap<String, Object>();
    if (secure.checkAcceso("editarFirma", "editar", ids, vars)) {
      if (registro.firmantes.todos == null || registro.firmantes.todos.size() == 0) {
        registro.firmantes.todos = solicitud.solicitante.calcularFirmantes();
        registro.firmantes.save();
      }
      FirmaUtils.firmar(registro.oficial, registro.firmantes.todos, firma, null);
    } else {
      // ERROR
      Messages.error("No tiene permisos suficientes para realizar la acción++");
    }
    if (!Messages.hasErrors()) {
      registro.fasesRegistro.firmada = true;
      registroModificacion.save();
      registro.save();
    }
  }
  @Util
  public static void PopupPassValidateCopy(String accion, Agente dbAgente, Agente agente) {
    CustomValidation.clearValidadas();
    if (secure.checkGrafico(
        "noEditable",
        "editable",
        accion,
        (Map<String, Long>) tags.TagMapStack.top("idParams"),
        null)) {
      CustomValidation.valid("agente", agente);
      dbAgente.username = agente.username;
    }

    CustomValidation.valid("agente", agente);
    CustomValidation.required("agente.verificacion", agente.verificacion);
    CustomValidation.required("agente.newpassword", agente.newpassword);
    CustomValidation.compare(agente.newpassword, params.get("agente_newpasswordcopy"));

    if (agente.verificacion != null) { // agente.verificación = contraseña actual
      if (dbAgente.password.equals(Crypto.passwordHash(agente.verificacion))) {
        dbAgente.password = Crypto.passwordHash(agente.newpassword);
        log.info("El usuario <" + dbAgente.username + "> ha modificado su contraseña");
      } else {
        Validation.addError("password", "Contraseña actual incorrecta");
      }
    }
    //		else {
    //			dbAgente.password = Crypto.passwordHash(agente.newpassword);
    //			log.info("El usuario <" + dbAgente.username + "> ha modificado su contraseña");
    //		}
  }
  public static void tabladocumentosAccesiblesEvaluador(Long idSolicitud, Long idEvaluacion) {

    java.util.List<Documento> rows = new ArrayList<Documento>();
    Evaluacion evaluacion = Evaluacion.findById(idEvaluacion);
    if (TipoDocumentoAccesible.count() > 0) {
      List<TipoDocumentoAccesible> tiposDocumentosAccesibles = TipoDocumentoAccesible.findAll();
      boolean encontrado;
      SolicitudGenerica dbSolicitud = SolicitudGenerica.findById(idSolicitud);
      List<Documento> documentosAportados =
          (List<Documento>)
              ModelUtils.invokeMethodClassStatic(
                  BaremacionFAP.class, "getDocumentosAccesibles", idSolicitud, idEvaluacion);
      for (TipoDocumentoAccesible tipo : tiposDocumentosAccesibles) {
        encontrado = false;
        for (int i = dbSolicitud.verificaciones.size() - 1; i >= 0; i--) {
          for (VerificacionDocumento documento : dbSolicitud.verificaciones.get(i).documentos) {
            if ((ObligatoriedadDocumentosFap.eliminarVersionUri(documento.uriTipoDocumento)
                    .equals(ObligatoriedadDocumentosFap.eliminarVersionUri(tipo.uri)))
                && (documento.estadoDocumentoVerificacion.equals(
                    EstadosDocumentoVerificacionEnum.valido.name()))) {
              if (documentosAportados != null) {
                for (Documento doc : documentosAportados) {
                  if ((doc.uri != null) && (doc.uri.equals(documento.uriDocumento))) {
                    rows.add(doc);
                    encontrado = true;
                    // break;
                  }
                }
              } else {
                play.Logger.error(
                    "No existe ningun documento en la lista de documentos Accesibles para buscar los del tipo requerido en la Evaluación.");
              }
              // break;
            }
          }
          //					if (encontrado)
          //						break;
        }
      }
    }
    // Siempre se añade el documento solicitud evaluación
    if (evaluacion.solicitudEnEvaluacion.uri != null) rows.add(evaluacion.solicitudEnEvaluacion);

    Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams");
    List<Documento> rowsFiltered = rows; // Tabla sin permisos, no filtra

    tables.TableRenderResponse<Documento> response =
        new tables.TableRenderResponse<Documento>(
            rowsFiltered, false, false, false, "", "", "", "editar", ids);

    renderJSON(response.toJSON("fechaRegistro", "descripcionVisible", "tipo", "urlDescarga", "id"));
  }
  @Util
  public static void save(Long idEvaluacion) {
    Map<String, Long> ids = (Map<String, Long>) tags.TagMapStack.top("idParams");
    if (secure.checkGrafico("guardarEvaluacion", "editable", "editar", ids, null)) {
      boolean actionSave = params.get("save") != null;
      boolean actionPdf = params.get("pdf") != null;
      boolean actionEnd = params.get("end") != null;
      if (!(actionSave || actionPdf || actionEnd)) {
        // No se específico una acción
        notFound("Acción no especificada");
      }
      Evaluacion evaluacion = Evaluacion.findById(params.get("evaluacion.id", Long.class));
      if (evaluacion == null) {
        notFound("Fallo al recuperar la evaluación");
      }
      if (!evaluacion.estado.equals(EstadosEvaluacionEnum.enTramite.name())) {
        Messages.error("No se puede guardar porque esta evaluación ya ha sido finalizada");
        Messages.keep();
        index(evaluacion.id, "leer");
      }
      // Comentarios
      if (evaluacion.tipo.comentariosAdministracion) {
        evaluacion.comentariosAdministracion = params.get("evaluacion.comentariosAdministracion");
      }

      if (evaluacion.tipo.comentariosSolicitante) {
        evaluacion.comentariosSolicitante = params.get("evaluacion.comentariosSolicitante");
      }
      boolean guardarMaximo = false;
      // Criterios de evaluacion
      for (Criterio criterio : evaluacion.criterios) {
        String param = "criterio[" + criterio.id + "]";
        String key = param + ".valor";
        Double valor = params.get(key, Double.class);

        if (criterio.tipo.claseCriterio.equals("manual")
            || criterio.tipo.claseCriterio.equals("automod")) {

          // Únicamente valida cuando se va a finalizar
          // la verificación
          if (actionEnd || actionSave) {
            if (actionEnd) validation.required(key, valor);
            // TODO validaciones de tamaño máximo
            if (criterio.tipo.valorMaximo != null
                && valor != null
                && criterio.tipo.valorMaximo.compareTo(valor) < 0) {
              // validation.addError(key, "El valor "+valor+" es superior al valor máximo permitido:
              // "+criterio.tipo.valorMaximo);
              Messages.warning(
                  "El valor del criterio manual '"
                      + criterio.tipo.jerarquia
                      + " - "
                      + criterio.tipo.nombre
                      + "' ("
                      + FapFormat.formatMoneda(valor)
                      + ") es superior al permitido en ese tipo de criterio: "
                      + FapFormat.formatMoneda(criterio.tipo.valorMaximo));
              if (actionEnd) {
                criterio.valor = criterio.tipo.valorMaximo;
                guardarMaximo = true;
              }
            }
            if (criterio.tipo.valorMinimo != null
                && valor != null
                && criterio.tipo.valorMinimo.compareTo(valor) > 0) {
              Messages.warning(
                  "El criterio manual/automod "
                      + criterio.tipo.jerarquia
                      + " ("
                      + FapFormat.formatMoneda(valor)
                      + ") no llega al mínimo valor permitido: "
                      + criterio.tipo.valorMinimo
                      + ". Se ha establecido como valor a 0,00");
              if (actionEnd) criterio.valor = 0.0;
            }
          }
          if (!validation.hasErrors()) {
            if (guardarMaximo) guardarMaximo = false;
            else criterio.valor = valor;
          }
        }

        if (!validation.hasErrors()) {
          // Comentarios
          if (criterio.tipo.comentariosAdministracion) {
            criterio.comentariosAdministracion = params.get(param + ".comentariosAdministracion");
          }

          if (criterio.tipo.comentariosSolicitante) {
            criterio.comentariosSolicitante = params.get(param + ".comentariosSolicitante");
          }
        }
      }
      if (!validation.hasErrors()) {
        boolean admin = "administradorgestor".contains(AgenteController.getAgente().rolActivo);
        BaremacionService.calcularTotales(evaluacion, admin);
        for (Criterio criterio : evaluacion.criterios) {
          if (criterio.tipo.claseCriterio.equals("auto")) {
            if (actionEnd || actionSave) {
              if (criterio.tipo.valorMaximo != null
                  && criterio.valor != null
                  && criterio.tipo.valorMaximo.compareTo(criterio.valor) < 0) {
                if (actionSave)
                  Messages.warning(
                      "El criterio automático '"
                          + criterio.tipo.jerarquia
                          + " - "
                          + criterio.tipo.nombre
                          + "' ("
                          + FapFormat.formatMoneda(criterio.valor)
                          + ") sobrepasaba el máximo valor permitido. Se ha establecido como valor, su valor máximo posible: "
                          + FapFormat.formatMoneda(criterio.tipo.valorMaximo));
                criterio.valor = criterio.tipo.valorMaximo;
              }
              if (criterio.tipo.valorMinimo != null
                  && criterio.valor != null
                  && criterio.tipo.valorMinimo.compareTo(criterio.valor) > 0) {
                Messages.warning(
                    "El criterio automático "
                        + criterio.tipo.jerarquia
                        + " ("
                        + criterio.valor
                        + ") no llega al mínimo valor permitido: "
                        + FapFormat.formatMoneda(criterio.tipo.valorMinimo)
                        + ". Se ha establecido como valor a 0,00");
                criterio.valor = 0.0;
              }
            }
          }
        }
        if (!Messages.hasErrors()) {
          BaremacionService.calcularTotales(evaluacion, true, true);
        }
        evaluacion.save();
      } else {
        flash(evaluacion);
      }

      if (actionSave || actionEnd) {
        if (actionEnd && !validation.hasErrors()) {
          // Si no hubo errores anteriores, se comprueba si existen validaciones propias de la
          // aplicacion
          botonFinalizar();
          if (!Messages.hasErrors()) {
            evaluacion.estado = EstadosEvaluacionEnum.evaluada.name();
            evaluacion.save();
            Messages.ok(
                "La evaluación del expediente "
                    + evaluacion.solicitud.expedienteAed.idAed
                    + " finalizó correctamente");
            ConsultarEvaluacionesController.index();
          }
        }

        if (actionSave && !validation.hasErrors()) {
          Messages.ok(
              "La evaluación del expediente "
                  + evaluacion.solicitud.expedienteAed.idAed
                  + " se guardó correctamente");
        }

        Messages.keep();
        redirect("fap.FichaEvaluadorController.index", evaluacion.id, "editar");
      }
    } else {
      play.Logger.error("No se cumple el permiso \"guardarEvaluacion\" con ids: " + ids);
      forbidden();
    }
  }
  @Util
  public static void guardarPCEValidateCopy(
      String accion,
      CEconomicosManuales dbCEconomicosManuales,
      CEconomicosManuales cEconomicosManuales) {
    CustomValidation.clearValidadas();
    if (secure.checkGrafico(
        "modificacionTrasPresentacionDeSolicitud",
        "editable",
        accion,
        (Map<String, Long>) tags.TagMapStack.top("idParams"),
        null)) {
      CustomValidation.valid("cEconomicosManuales", cEconomicosManuales);

      // Código de Copia
      // (1) Caso de modificacion (Existe y lo cambio) (2) Caso de Creacion (Lo creo desde 0)

      String idSolicitud = params.get("idSolicitud");
      SolicitudGenerica dbSolicitud = SolicitudGenerica.findById(Long.parseLong(idSolicitud));

      PeticionModificacion peticionModificacion = new PeticionModificacion();
      peticionModificacion.campoPagina = "Solicitud.ceconomicos.otros";

      Map<String, String> allSimpleTabla = params.allSimple();
      for (Map.Entry<String, String> entry : allSimpleTabla.entrySet()) {
        if (entry.getKey().startsWith("id")) {
          try {
            peticionModificacion.idSimples.put(entry.getKey(), Long.parseLong(entry.getValue()));
          } catch (Exception e) {
            // El parámetro no era un long
          }
        }
      }
      peticionModificacion.idSimples.put("idCEconomicosManuales", dbCEconomicosManuales.id);
      List<String> valoresAntiguos = new ArrayList<String>();
      List<String> valoresNuevos = new ArrayList<String>();
      Boolean hayModificaciones = false;

      // Validando el tipo.nombre
      CustomValidation.valid("cEconomicosManuales.tipo", cEconomicosManuales.tipo);
      CustomValidation.required("cEconomicosManuales.tipo.nombre", cEconomicosManuales.tipo.nombre);

      // Código de Copia del tipo.nombre
      if (((dbCEconomicosManuales.tipo.nombre != null)
              && (cEconomicosManuales.tipo.nombre.toString() != null)
              && (!dbCEconomicosManuales
                  .tipo
                  .nombre
                  .toString()
                  .equals(cEconomicosManuales.tipo.nombre.toString())))
          || ((cEconomicosManuales.tipo.nombre == null)
              && (!cEconomicosManuales.tipo.nombre.equals(dbCEconomicosManuales.tipo.nombre)))) {
        valoresAntiguos = new ArrayList<String>();
        if (dbCEconomicosManuales.tipo.nombre != null)
          valoresAntiguos.add(dbCEconomicosManuales.tipo.nombre.toString());
        valoresNuevos = new ArrayList<String>();
        valoresNuevos.add(cEconomicosManuales.tipo.nombre.toString());
        peticionModificacion.setValorModificado(
            "Solicitud.ceconomicos.otros.tipo.nombre", valoresAntiguos, valoresNuevos);
        hayModificaciones = true;
      }
      dbCEconomicosManuales.tipo.nombre = cEconomicosManuales.tipo.nombre;

      // Código de Copia del tipo.descripcion
      if (((dbCEconomicosManuales.tipo.descripcion != null)
              && (cEconomicosManuales.tipo.descripcion.toString() != null)
              && (!dbCEconomicosManuales
                  .tipo
                  .descripcion
                  .toString()
                  .equals(cEconomicosManuales.tipo.descripcion.toString())))
          || ((cEconomicosManuales.tipo.descripcion == null)
              && (!cEconomicosManuales.tipo.descripcion.equals(
                  dbCEconomicosManuales.tipo.descripcion)))) {
        valoresAntiguos = new ArrayList<String>();
        if (dbCEconomicosManuales.tipo.descripcion != null)
          valoresAntiguos.add(dbCEconomicosManuales.tipo.descripcion.toString());
        valoresNuevos = new ArrayList<String>();
        valoresNuevos.add(cEconomicosManuales.tipo.descripcion.toString());
        peticionModificacion.setValorModificado(
            "Solicitud.ceconomicos.otros.tipo.descripcion", valoresAntiguos, valoresNuevos);
        hayModificaciones = true;
      }
      dbCEconomicosManuales.tipo.descripcion = cEconomicosManuales.tipo.descripcion;

      // Código de Copia del comentarioAdministracion
      if (((dbCEconomicosManuales.comentariosAdministracion != null)
              && (cEconomicosManuales.comentariosAdministracion.toString() != null)
              && (!dbCEconomicosManuales
                  .comentariosAdministracion
                  .toString()
                  .equals(cEconomicosManuales.comentariosAdministracion.toString())))
          || ((cEconomicosManuales.comentariosAdministracion == null)
              && (!cEconomicosManuales.comentariosAdministracion.equals(
                  dbCEconomicosManuales.comentariosAdministracion)))) {
        valoresAntiguos = new ArrayList<String>();
        if (dbCEconomicosManuales.comentariosAdministracion != null)
          valoresAntiguos.add(dbCEconomicosManuales.comentariosAdministracion.toString());
        valoresNuevos = new ArrayList<String>();
        valoresNuevos.add(cEconomicosManuales.comentariosAdministracion.toString());
        peticionModificacion.setValorModificado(
            "Solicitud.ceconomicos.otros.comentariosAdministracion",
            valoresAntiguos,
            valoresNuevos);
        hayModificaciones = true;
      }
      dbCEconomicosManuales.comentariosAdministracion =
          cEconomicosManuales.comentariosAdministracion;

      // Código de Copia del comentarioSolicitante
      if (((dbCEconomicosManuales.comentariosSolicitante != null)
              && (cEconomicosManuales.comentariosSolicitante.toString() != null)
              && (!dbCEconomicosManuales
                  .comentariosSolicitante
                  .toString()
                  .equals(cEconomicosManuales.comentariosSolicitante.toString())))
          || ((cEconomicosManuales.comentariosSolicitante == null)
              && (!cEconomicosManuales.comentariosSolicitante.equals(
                  dbCEconomicosManuales.comentariosSolicitante)))) {
        valoresAntiguos = new ArrayList<String>();
        if (dbCEconomicosManuales.comentariosSolicitante != null)
          valoresAntiguos.add(dbCEconomicosManuales.comentariosSolicitante.toString());
        valoresNuevos = new ArrayList<String>();
        valoresNuevos.add(cEconomicosManuales.comentariosSolicitante.toString());
        peticionModificacion.setValorModificado(
            "Solicitud.ceconomicos.otros.comentariosSolicitante", valoresAntiguos, valoresNuevos);
        hayModificaciones = true;
      }
      dbCEconomicosManuales.comentariosSolicitante = cEconomicosManuales.comentariosSolicitante;

      // Guardo en el json los valores simples:
      // Json por todos los valores
      if (hayModificaciones) {
        // peticionModificacion.setValorModificado("Solicitud.ceconomicos.otros", valoresAntiguos,
        // valoresNuevos);
        peticionModificacion.idSimples.put("idCEconomicosManuales", dbCEconomicosManuales.id);
        Gson gson = new Gson();
        String jsonPM = gson.toJson(peticionModificacion);
        JsonPeticionModificacion jsonPeticionModificacion = new JsonPeticionModificacion();
        jsonPeticionModificacion.jsonPeticion = jsonPM;
        dbSolicitud
            .registroModificacion
            .get(dbSolicitud.registroModificacion.size() - 1)
            .jsonPeticionesModificacion
            .add(jsonPeticionModificacion);
        dbSolicitud.save();
      }

      // Copia de los valores: O2M Un json por cada valor

      // Logica de copia a BBDD
      List<String> valoresAntiguosTabla = new ArrayList<String>();
      List<String> valoresNuevosTabla = new ArrayList<String>();

      if ((dbCEconomicosManuales.valores == null)
          || (dbCEconomicosManuales.valores.size() == 0)) { // Dead code?
        // peticionModificacion.idSimples.put("idCEconomicosManuales",dbCEconomicosManuales.id);
        // //Viernes añadido
        // Guardo todos los nuevos valores
        for (int i = 0; i < cEconomicosManuales.valores.size(); i++) { // Modificando
          valoresNuevosTabla = new ArrayList<String>();
          valoresNuevosTabla.add(cEconomicosManuales.valores.get(i).valorSolicitado.toString());

          // Json por todos los valores
          PeticionModificacion peticionModificacionTabla = new PeticionModificacion();
          peticionModificacionTabla.campoPagina =
              "Solicitud.ceconomicos.otros.valores.valorSolicitado";
          peticionModificacionTabla.idSimples = peticionModificacion.idSimples;
          peticionModificacionTabla.idSimples.put(
              "idValoresCEconomicoManuales", cEconomicosManuales.valores.get(i).id);

          peticionModificacionTabla.setValorCreado(
              "Solicitud.ceconomicos.otros.valores.valorSolicitado",
              new ArrayList<String>(),
              valoresNuevosTabla); // PRUEBA
          Gson gsonTabla = new Gson();
          String jsonPMTabla = gsonTabla.toJson(peticionModificacionTabla);
          JsonPeticionModificacion jsonPeticionModificaciontabla = new JsonPeticionModificacion();
          jsonPeticionModificaciontabla.jsonPeticion = jsonPMTabla;
          dbSolicitud
              .registroModificacion
              .get(dbSolicitud.registroModificacion.size() - 1)
              .jsonPeticionesModificacion
              .add(jsonPeticionModificaciontabla);
          dbSolicitud.save();
        }
        dbCEconomicosManuales.valores = cEconomicosManuales.valores;

      } else {
        for (int i = 0; i < cEconomicosManuales.valores.size(); i++) { // Modificando
          valoresAntiguosTabla = new ArrayList<String>();
          valoresNuevosTabla = new ArrayList<String>();
          hayModificaciones = false;

          PeticionModificacion peticionModificacionTabla = new PeticionModificacion();
          peticionModificacionTabla.campoPagina =
              "Solicitud.ceconomicos.otros.valores.valorSolicitado";
          peticionModificacionTabla.idSimples = peticionModificacion.idSimples;

          if ((cEconomicosManuales.valores.get(i).valorSolicitado != null)
              && (cEconomicosManuales.valores.get(i).valorSolicitado.toString()
                  != dbCEconomicosManuales.valores.get(i).valorSolicitado.toString())) {
            valoresAntiguosTabla.add(
                dbCEconomicosManuales.valores.get(i).valorSolicitado.toString());
            dbCEconomicosManuales.valores.get(i).valorSolicitado =
                cEconomicosManuales.valores.get(i).valorSolicitado; // Logica
            valoresNuevosTabla.add(cEconomicosManuales.valores.get(i).valorSolicitado.toString());
            peticionModificacionTabla.idSimples.put(
                "idValoresCEconomico",
                dbCEconomicosManuales.valores.get(i).id); // AQUI idValoresCEconomo

            // Json
            peticionModificacionTabla.setValorModificado(
                "Solicitud.ceconomicos.otros.valores.valorSolicitado",
                valoresAntiguosTabla,
                valoresNuevosTabla); // PRUEBA
            Gson gsonTabla = new Gson();
            String jsonPMTabla = gsonTabla.toJson(peticionModificacionTabla);
            JsonPeticionModificacion jsonPeticionModificaciontabla = new JsonPeticionModificacion();
            jsonPeticionModificaciontabla.jsonPeticion = jsonPMTabla;
            dbSolicitud
                .registroModificacion
                .get(dbSolicitud.registroModificacion.size() - 1)
                .jsonPeticionesModificacion
                .add(jsonPeticionModificaciontabla);
            dbSolicitud.save();
          }
        }
      }
      // dbCEconomicosManuales.valores=cEconomicosManuales.valores;
    }
  }