@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;
    }
  }
  public static void CreandoEnModificacionSolicitudes(
      String accion,
      CEconomicosManuales dbCEconomicosManuales,
      CEconomicosManuales cEconomicosManuales) {

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

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

    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
        }
      }
    }
    List<String> valoresNuevos = new ArrayList<String>();

    if (cEconomicosManuales.tipo.nombre != null) {
      valoresNuevos = new ArrayList<String>();
      valoresNuevos.add(cEconomicosManuales.tipo.nombre.toString());
      peticionModificacion.setValorCreado(
          "Solicitud.ceconomicos.otros.tipo.nombre", new ArrayList<String>(), valoresNuevos);
      dbCEconomicosManuales.tipo.nombre = cEconomicosManuales.tipo.nombre;
    }

    if (cEconomicosManuales.tipo.descripcion != null) {
      valoresNuevos = new ArrayList<String>();
      valoresNuevos.add(cEconomicosManuales.tipo.descripcion.toString());
      peticionModificacion.setValorCreado(
          "Solicitud.ceconomicos.otros.tipo.descripcion", new ArrayList<String>(), valoresNuevos);
      dbCEconomicosManuales.tipo.descripcion = cEconomicosManuales.tipo.descripcion;
    }

    if (cEconomicosManuales.comentariosAdministracion != null) {
      valoresNuevos = new ArrayList<String>();
      valoresNuevos.add(cEconomicosManuales.tipo.comentariosAdministracion.toString());
      peticionModificacion.setValorCreado(
          "Solicitud.ceconomicos.otros.comentariosAdministracion",
          new ArrayList<String>(),
          valoresNuevos);
      dbCEconomicosManuales.comentariosAdministracion =
          cEconomicosManuales.comentariosAdministracion;
    }

    if (cEconomicosManuales.comentariosSolicitante != null) {
      valoresNuevos = new ArrayList<String>();
      valoresNuevos.add(cEconomicosManuales.tipo.comentariosSolicitante.toString());
      peticionModificacion.setValorCreado(
          "Solicitud.ceconomicos.otros.comentariosSolicitante",
          new ArrayList<String>(),
          valoresNuevos);
      dbCEconomicosManuales.comentariosSolicitante = cEconomicosManuales.comentariosSolicitante;
    }

    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();
  }