public StringBuffer WordOficio(String cQuery) {
    Vector vcCuerpo = new Vector();
    Vector vcCopiasPara = new Vector();
    Vector vRegs = new Vector();
    Vector vRegs1 = new Vector();
    Vector vRegs2 = new Vector();
    TWord rep = new TWord();
    int iCvePersona = 0, iCveDomicilio = 0, iCveRepLegal = 0;
    String cAsunto = "";

    String cRazonSolical = "_____",
        cDomicilio = "_____",
        cCodigoPost = "_____",
        cEntiFed = "_____",
        cRFC = "_____",
        cCiudadOficioReg = "_____",
        cPuertoConsigna = "_____",
        cPuertoResid = "_____";
    String dtReconosimiento = "_____",
        cRepresentante = "_____",
        cDirector = "_____",
        cNotaria = "_____",
        cNomNotario = "_____",
        cPoder = "_____",
        cColonia = "_____",
        cMunicipio = "_____",
        cMandante = "_____",
        cTipoPersona = "_____",
        cOficinaAdscrita = "_____",
        cNumSolicitud = "_____";
    String[] cParametros = cQuery.split(",");
    int iFolioRPMN = 0, iPartida = 0, lNavAltura = 0, lNavCabotaje = 0;

    try {
      vRegs =
          super.FindByGeneric(
              "",
              "SELECT "
                  + "  CJ.IFOLIORPMN,CJ.IPARTIDA,PER.CNOMRAZONSOCIAL||' '|| PER.CAPPATERNO||' '|| PER.CAPMATERNO AS CRAZONSOCIAL, "
                  + "  DOM.CCALLE||' '|| DOM.CNUMEXTERIOR||' '|| DOM.CNUMINTERIOR AS CDOMICILIO, DOM.CCODPOSTAL, EF.CNOMBRE AS CENTIDADFED, "
                  + "  PER.CRFC,EFO.CNOMBRE AS cCIUDADOFICREG, PC.CDSCPUERTO AS cPUERTOCONSIGNA, CJ.LNAVEGALTURA,CJ.LNAVEGCABOTAJE,PR.CDSCPUERTO AS cPUERTORESID, "
                  + "  cj.DTRECONOCIMIENTO, REP.CNOMRAZONSOCIAL||' '|| REP.CAPPATERNO||' '|| REP.CAPMATERNO AS CREPRESENTANTE, rs.iEjercicio, CJ.INUMSOLICITUD, "
                  + "  cj.cPoder, cj.cNotaria, cj.cNomNotario, dom.cColonia, mun.CNOMBRE as cMunicipio,EF.ICVEENTIDADFED, per.iTipoPersona, ofa.CDSCBREVE as cOficinaAdscrita, CJ.cMandantes  "
                  + "FROM MYRCAPACIDADJUR CJ "
                  + "JOIN TRAREGSOLICITUD RS ON CJ.INUMSOLICITUD= RS.INUMSOLICITUD and CJ.IEJERCICIOSOLICITUD = RS.IEJERCICIO "
                  + "JOIN GRLPERSONA PER ON PER.ICVEPERSONA = RS.ICVESOLICITANTE "
                  + "JOIN GRLDOMICILIO DOM ON DOM.ICVEPERSONA = PER.ICVEPERSONA AND DOM.ICVEDOMICILIO =  RS.ICVEDOMICILIOSOLICITANTE "
                  + "JOIN GRLPAIS PAI ON PAI.ICVEPAIS = DOM.ICVEPAIS "
                  + "JOIN GRLENTIDADFED EF ON EF.ICVEPAIS = DOM.ICVEPAIS and EF.ICVEENTIDADFED = DOM.ICVEENTIDADFED "
                  + "JOIN GRLMUNICIPIO MUN ON MUN.ICVEPAIS = DOM.ICVEPAIS and MUN.ICVEENTIDADFED = DOM.ICVEENTIDADFED AND MUN.ICVEMUNICIPIO = DOM.ICVEMUNICIPIO "
                  + "JOIN GRLOFICINA OF ON OF.ICVEOFICINA = CJ.ICVEOFICINARPMN "
                  + "JOIN GRLENTIDADFED EFO ON EFO.ICVEENTIDADFED = OF.ICVEENTIDADFED and EFO.ICVEPAIS = OF.ICVEPAIS "
                  + "JOIN GRLPUERTO PC ON PC.ICVEPUERTO = CJ.ICVEPUERTOCONSIGNA "
                  + "JOIN GRLPUERTO PR ON PR.ICVEPUERTO = CJ.ICVEPUERTORESIDENCIA "
                  + "JOIN GRLPERSONA REP ON RS.ICVEREPLEGAL = REP.ICVEPERSONA "
                  + "JOIN GRLOFICINA ofa on ofa.ICVEOFICINA = pc.ICVEOFICINAADSCRITA "
                  + "WHERE CJ.ICONSECRECONOCIM ="
                  + cParametros[0],
              dataSourceName);
    } catch (SQLException ex) {
      cMensaje = ex.getMessage();
    } catch (Exception ex2) {
      ex2.printStackTrace();
    }
    // System.out.print("*****     dime que si entra!!");
    try {
      vRegs1 =
          super.FindByGeneric(
              "",
              "SELECT do.CTITULAR FROM GRLDEPTOXOFIC do Join GRLOFICINA O on O.ICVEOFICINA = do.ICVEOFICINA join GRLDEPARTAMENTO d on d.ICVEDEPARTAMENTO = do.ICVEDEPARTAMENTO Where do.ICVEDEPARTAMENTO = 5 and do.ICVEOFICINA=1 ",
              dataSourceName);
    } catch (SQLException ex) {
      cMensaje = ex.getMessage();
    } catch (Exception ex2) {
      ex2.printStackTrace();
    }
    if (vRegs1.size() > 0) {
      TVDinRep vDirector = (TVDinRep) vRegs1.get(0);
      cDirector = vDirector.getString("cTitular");
      rep.comRemplaza("[cNombreDirector]", cDirector);
    }
    rep.iniciaReporte();
    if (vRegs.size() > 0) {
      TVDinRep vDatos = (TVDinRep) vRegs.get(0);
      TVDinRep vDirector = (TVDinRep) vRegs1.get(0);
      cDirector = vDirector.getString("cTitular");
      rep.comRemplaza("[cNombreDirector]", cDirector);
      cRazonSolical = vDatos.getString("CRAZONSOCIAL");
      cDomicilio = vDatos.getString("CDOMICILIO");
      cCodigoPost = vDatos.getString("CCODPOSTAL");
      cEntiFed = vDatos.getString("CENTIDADFED");
      if (Integer.parseInt(vDatos.getString("ICVEENTIDADFED")) == Integer.parseInt(cMex[1]))
        cMunicipio = "" + cMex[2];
      else cMunicipio = vDatos.getString("cMunicipio");
      cColonia = vDatos.getString("cColonia");
      cRFC = vDatos.getString("CRFC");
      cTipoPersona = vDatos.getString("iTipoPersona");

      cCiudadOficioReg = vDatos.getString("cCIUDADOFICREG");
      cPuertoConsigna = vDatos.getString("cPUERTOCONSIGNA");
      cPuertoResid = vDatos.getString("cPUERTORESID");
      dtReconosimiento = vDatos.getString("DTRECONOCIMIENTO");
      cRepresentante = vDatos.getString("CREPRESENTANTE");
      // System.out.print("*****     1");
      if (!vDatos.getString("IFOLIORPMN").equals("null")) {
        // System.out.print("*****     "+vDatos.getString("IFOLIORPMN"));
        // System.out.print("*****     "+vDatos.getInt("IFOLIORPMN"));
        iFolioRPMN = vDatos.getInt("IFOLIORPMN");
        iPartida = vDatos.getInt("IPARTIDA");
      }
      // System.out.print("*****     2");
      lNavAltura = vDatos.getInt("LNAVEGALTURA");
      lNavCabotaje = vDatos.getInt("LNAVEGCABOTAJE");
      cNumSolicitud = vDatos.getInt("iEjercicio") + "/" + vDatos.getInt("INUMSOLICITUD");
      cNotaria = vDatos.getString("cNotaria");
      cPoder = vDatos.getString("cPoder");
      cNomNotario = vDatos.getString("cNomNotario");
      cOficinaAdscrita = vDatos.getString("cOficinaAdscrita");
      /*
          try{
            vRegs2 = super.FindByGeneric("",
                                 "SELECT per.CNOMRAZONSOCIAL||' '|| per.CAPPATERNO||' '|| per.CAPMATERNO As Mandnte FROM MYRMANDATOS man " +
                                 "join grlpersona per On man.ICVEPERSONA= per.ICVEPERSONA " +
                                 "Where man.ICONSECRECONOCIM = "+cParametros[0] ,dataSourceName);
          }catch(SQLException ex){
            cMensaje = ex.getMessage();
          }catch(Exception ex2){
            ex2.printStackTrace();
          }
        if(vRegs2.size()>0){
          int i=0;
          String cEspacio="";
          for(i = 0;i < vRegs2.size();i++){
            TVDinRep vMandante = (TVDinRep) vRegs2.get(i);
            if(i==vRegs2.size()-1) cEspacio=".";
            if(i==vRegs2.size()-2) cEspacio=" y ";
            if(i<vRegs2.size()-2) cEspacio=", ";
            cMandante += vMandante.getString("Mandnte")+cEspacio;
          }
        }
      */
      cMandante = vDatos.getString("cMandante");

      // System.out.print("*****     Mandantes:"+vDatos.getString("cMandante"));

      rep.comRemplaza("[cNombreSol]", cRazonSolical);
      if (Integer.parseInt(cTipoPersona) == 1) {
        rep.comRemplaza("[cNombreSol]", cRepresentante);
        rep.comRemplaza("[cAgencia]", "AGENTE: ");
      } else {
        rep.comRemplaza("[cNomRepL]", " la empresa  " + cRepresentante);
        rep.comRemplaza("[cAgencia]", "AGENCIA: ");
      }
      rep.comRemplaza("[DomicilioSol]", cDomicilio);
      rep.comRemplaza("[CodPosSol]", "C.P.  " + cCodigoPost);
      rep.comRemplaza("[EntidFedSol]", cEntiFed);
      rep.comRemplaza("[MunSol]", cMunicipio);
      rep.comRemplaza("[RFCSol]", cRFC);
      if (Integer.parseInt(cTipoPersona) != 1)
        rep.comRemplaza("[cNomRepL]", "Nombre del Rep. Legal:  " + cRepresentante);
      else rep.comRemplaza("[cNomRepL]", "");
      rep.comRemplaza("[cNombreMandante]", cMandante);

      rep.comRemplaza("[cNomCesionaria]", cCiudadOficioReg);
      rep.comRemplaza("[cPuertoConsigna]", cPuertoConsigna);
      rep.comRemplaza("[cPuertoRes]", cPuertoResid);
      rep.comRemplaza("[dtReconosimiento]", dtReconosimiento);
      rep.comRemplaza("[cNomCesionaria]", cRepresentante);
      rep.comRemplaza("[cColonia]", cColonia); // [cCapitania]cOficinaAdscrita
      rep.comRemplaza("[cCapitania]", cOficinaAdscrita);
      rep.comRemplaza("[Folio]", "" + iFolioRPMN);
      rep.comRemplaza("[Partida]", "" + iPartida); // iNumSolicitud
      rep.comRemplaza("[iNumSolicitud]", "" + cNumSolicitud);
      if (Integer.parseInt(cTipoPersona) != 1)
        rep.comRemplaza("[cNotaria]", "NOTARIOS ASOCIADOS: " + cNotaria);
      else rep.comRemplaza("[cNotaria]", "");
      if (Integer.parseInt(cTipoPersona) != 1)
        rep.comRemplaza("[cPoder]", "" + "Poder No.  " + cPoder);
      else rep.comRemplaza("[cPoder]", "");
      if (Integer.parseInt(cTipoPersona) != 1) rep.comRemplaza("[cNomNotario]", "" + cNomNotario);
      else rep.comRemplaza("[cNomNotario]", "");
      if (lNavAltura == 1 && lNavCabotaje == 0) rep.comRemplaza("[cTipoNavega]", " de altura");
      if (lNavAltura == 0 && lNavCabotaje == 1) rep.comRemplaza("[cTipoNavega]", " de cabotaje ");
      if (lNavAltura == 1 && lNavCabotaje == 1)
        rep.comRemplaza("[cTipoNavega]", " de altura y cabotaje ");
    }
    return rep.getEtiquetas(true);
  }
  /**
   * Actualiza el campo de Producto No Conforme de la persona que recibe la notificación.
   *
   * <p><b> update GRLRegistroPNC set cRecibeNotif=? where iEjercicio = ? AND iConsecutivoPNC = ?
   * </b>
   *
   * <p><b> Campos Llave: iEjercicio,iConsecutivoPNC, </b>
   *
   * @param vData TVDinRep - VO Dinámico que contiene a la entidad a Insertar.
   * @param cnNested Connection - Conexión anidada que permite que el método se encuentre dentro de
   *     una transacción mayor.
   * @throws DAOException - Excepción de tipo DAO
   * @return TVDinRep - Entidad Modificada.
   */
  public TVDinRep updateRecibe(TVDinRep vData, Connection cnNested) throws DAOException {
    DbConnection dbConn = null;
    Connection conn = cnNested;
    PreparedStatement lPStmt = null;
    int iConsecutivoPNC = 0, iEjercicioPNC = 0;
    boolean lSuccess = true;
    try {

      if (cnNested == null) {
        dbConn = new DbConnection(dataSourceName);
        conn = dbConn.getConnection();
        conn.setAutoCommit(false);
        conn.setTransactionIsolation(2);
      }
      Vector vcPNC =
          findByCustom(
              "",
              "SELECT "
                  + "iEjercicioPNC,ICONSECUTIVOPNC "
                  + "FROM TRAREGPNCETAPA "
                  + "where IEJERCICIO = "
                  + vData.getInt("iEjercicio")
                  + " and INUMSOLICITUD = "
                  + vData.getInt("iNumSolicitud")
                  + " order by iorden desc");
      if (vcPNC.size() > 0) {
        TVDinRep vRegPNC = (TVDinRep) vcPNC.get(0);
        iConsecutivoPNC = vRegPNC.getInt("ICONSECUTIVOPNC");
        iEjercicioPNC = vRegPNC.getInt("iEjercicioPNC");
      }

      String lSQL =
          "update GRLRegistroPNC set cRecibeNotif=?,dtNotificacion=? where iEjercicio = ? AND iConsecutivoPNC = ? ";

      lPStmt = conn.prepareStatement(lSQL);
      lPStmt.setString(1, vData.getString("cRecibeNotif"));
      lPStmt.setDate(2, vData.getDate("dtNotificacion"));
      lPStmt.setInt(3, iEjercicioPNC);
      lPStmt.setInt(4, iConsecutivoPNC);

      if (cnNested == null) {
        conn.commit();
      }

      /*if(cnNested == null){
        conn.commit();
        TDVerificacion tdVer = new TDVerificacion();
        tdVer.upNotificacion(vData, cnNested);
      }*/
    } catch (Exception ex) {
      warn("update", ex);
      if (cnNested == null) {
        try {
          conn.rollback();
        } catch (Exception e) {
          fatal("update.rollback", e);
        }
      }
      lSuccess = false;
    } finally {
      try {
        if (lPStmt != null) {
          lPStmt.close();
        }
        if (cnNested == null) {
          if (conn != null) {
            conn.close();
          }
          dbConn.closeConnection();
        }
      } catch (Exception ex2) {
        warn("update.close", ex2);
      }
      if (lSuccess == false) throw new DAOException("");

      return vData;
    }
  }
  /**
   * Inserta el registro dado por la entidad vData.
   *
   * <p><b> insert into
   * GRLRegistroPNC(iEjercicio,iConsecutivoPNC,dtRegistro,iCveUsuRegistro,iCveProducto,lResuelto,dtResolucion,iCveOficinaAsignado,iCveDeptoAsignado)
   * values (?,?,?,?,?,?,?,?,?) </b>
   *
   * <p><b> Campos Llave: iEjercicio,iConsecutivoPNC, </b>
   *
   * @param vData TVDinRep - VO Dinámico que contiene a la entidad a Insertar.
   * @param cnNested Connection - Conexión anidada que permite que el método se encuentre dentro de
   *     una transacción mayor.
   * @throws DAOException - Excepción de tipo DAO
   * @return TVDinRep - VO Dinámico que contiene a la entidad a Insertada, así como a la llave de
   *     esta entidad.
   */
  public TVDinRep insert(TVDinRep vData, Connection cnNested) throws DAOException {
    DbConnection dbConn = null;
    Connection conn = cnNested;
    PreparedStatement lPStmt = null;
    boolean lSuccess = true;
    TFechas dtFechaActual = new TFechas();

    try {
      if (cnNested == null) {
        dbConn = new DbConnection(dataSourceName);
        conn = dbConn.getConnection();
        conn.setAutoCommit(false);
        conn.setTransactionIsolation(2);
      }
      String lSQL =
          "insert into GRLRegistroPNC(iEjercicio,iConsecutivoPNC,dtRegistro,iCveUsuRegistro,iCveProducto,lResuelto,dtResolucion,iCveOficinaAsignado,iCveDeptoAsignado,iCveOficina,iCveDepartamento,iCveProceso) values (?,?,?,?,?,?,?,?,?,?,?,?)";

      // AGREGAR AL ULTIMO ...
      Vector vcData =
          findByCustom(
              "",
              "select MAX(iConsecutivoPNC) AS iConsecutivoPNC from GRLRegistroPNC WHERE iEjercicio = "
                  + vData.getInt("iEjercicio"));
      if (vcData.size() > 0) {
        TVDinRep vUltimo = (TVDinRep) vcData.get(0);
        vData.put("iConsecutivoPNC", vUltimo.getInt("iConsecutivoPNC") + 1);
      } else vData.put("iConsecutivoPNC", 1);
      vData.addPK(vData.getString("iConsecutivoPNC"));
      lPStmt = conn.prepareStatement(lSQL);
      lPStmt.setInt(1, dtFechaActual.getIntYear(dtFechaActual.TodaySQL()));
      lPStmt.setInt(2, vData.getInt("iConsecutivoPNC"));
      iConsecutivo = vData.getInt("iConsecutivoPNC");
      lPStmt.setDate(3, tFecha.TodaySQL());
      lPStmt.setInt(4, vData.getInt("iCveUsuario"));
      lPStmt.setInt(5, vData.getInt("iCveProducto"));
      lPStmt.setInt(6, vData.getInt("lResuelto"));
      if (vData.getDate("dtResolucion") == null) lPStmt.setNull(7, Types.DATE);
      else lPStmt.setDate(7, vData.getDate("dtResolucion"));
      lPStmt.setInt(8, vData.getInt("iCveOficinaUsrAsg"));
      lPStmt.setInt(9, vData.getInt("iCveDeptoUsrAsg"));
      lPStmt.setInt(10, vData.getInt("iCveOficinaUsr"));
      lPStmt.setInt(11, vData.getInt("iCveDeptoUsr"));
      lPStmt.setInt(12, vData.getInt("iCveProceso"));

      lPStmt.executeUpdate();
      lPStmt.close();
      try {
        TDGRLRegCausaPNC1 dGRLRegCausaPNC = new TDGRLRegCausaPNC1();
        dGRLRegCausaPNC.insert(vData, conn, iConsecutivo);
      } catch (Exception exCausa) {
        exCausa.printStackTrace();
        lSuccess = false;
        throw new Exception("Error Causa");
      }
      if (cnNested == null && lSuccess) conn.commit();
    } catch (Exception ex) {
      warn("insert", ex);
      if (cnNested == null) {
        try {
          conn.rollback();
        } catch (Exception e) {
          fatal("insert.rollback", e);
        }
      }
      lSuccess = false;
    } finally {
      try {
        if (lPStmt != null) lPStmt.close();
        if (cnNested == null) {
          if (conn != null) conn.close();
          dbConn.closeConnection();
        }
      } catch (Exception ex2) {
        warn("insert.close", ex2);
      }
      if (lSuccess == false) throw new DAOException("");
      return vData;
    }
  }
  /**
   * Inserta el registro dado por la entidad vData.
   *
   * <p><b> insert into
   * GRLRegistroPNC(iEjercicio,iConsecutivoPNC,dtRegistro,iCveUsuRegistro,iCveProducto,lResuelto,dtResolucion,iCveOficinaAsignado,iCveDeptoAsignado)
   * values (?,?,?,?,?,?,?,?,?) </b>
   *
   * <p><b> Campos Llave: iEjercicio,iConsecutivoPNC, </b>
   *
   * @param vData TVDinRep - VO Dinámico que contiene a la entidad a Insertar.
   * @param cnNested Connection - Conexión anidada que permite que el método se encuentre dentro de
   *     una transacción mayor.
   * @throws DAOException - Excepción de tipo DAO
   * @return TVDinRep - VO Dinámico que contiene a la entidad a Insertada, así como a la llave de
   *     esta entidad.
   */
  public TVDinRep insertExiste(TVDinRep vData, Connection cnNested) throws DAOException {
    DbConnection dbConn = null;
    Connection conn = cnNested;
    PreparedStatement lPStmt = null;
    boolean lSuccess = true;
    boolean lAgregarAPNC = false;
    boolean lInsertaCausa = false;
    TFechas dtFechaActual = new TFechas();
    int iNumSolicitud, iCveTramite, iCveModalidad = 0;
    int iConsecutivoPNC = 0;
    int iEjercicio = 0;
    try {
      // LEL26092006
      Vector vcDataA =
          findByCustom(
              "",
              "SELECT "
                  + "TRAREGPNCETAPA.IEJERCICIOPNC, "
                  + "TRAREGPNCETAPA.INUMSOLICITUD, "
                  + "TRAREGPNCETAPA.ICONSECUTIVOPNC, "
                  + "TRAREGPNCETAPA.ICVETRAMITE, "
                  + "TRAREGPNCETAPA.ICVEMODALIDAD "
                  + "FROM TRAREGPNCETAPA "
                  + "where TRAREGPNCETAPA.IEJERCICIO = "
                  + vData.getInt("iEjercicio")
                  + " and TRAREGPNCETAPA.INUMSOLICITUD = "
                  + vData.getInt("iNumSolicitud")
                  + " ORDER BY ICONSECUTIVOPNC DESC ");
      TVDinRep vSoli;
      if (vcDataA.size() > 0) {
        vSoli = (TVDinRep) vcDataA.get(0);
        iEjercicio = vSoli.getInt("IEJERCICIOPNC");
        iNumSolicitud = vSoli.getInt("INUMSOLICITUD");
        iConsecutivoPNC = vSoli.getInt("ICONSECUTIVOPNC");
        iCveTramite = vSoli.getInt("ICVETRAMITE");
        iCveModalidad = vSoli.getInt("ICVEMODALIDAD");
        vcDataA = null;
        vcDataA =
            findByCustom(
                "",
                "SELECT "
                    + "DTNOTIFICACION FROM TRAREGREQXTRAM "
                    + "WHERE IEJERCICIO = "
                    + iEjercicio
                    + " AND INUMSOLICITUD = "
                    + iNumSolicitud
                    + " AND ICVETRAMITE = "
                    + iCveTramite
                    + " AND ICVEMODALIDAD = "
                    + iCveModalidad
                    + " AND LTIENEPNC = 1");
        lAgregarAPNC = true;
        for (int i = 0; i < vcDataA.size() && lAgregarAPNC == false; i++) {
          vSoli = (TVDinRep) vcDataA.get(i);
          if (vSoli.getDate("DTNOTIFICACION") == null) lAgregarAPNC = true;
          else lAgregarAPNC = false;
        }
      }
      if (lAgregarAPNC) {
        TVDinRep vResuelto;
        Vector vcDataR =
            findByCustom(
                "",
                "SELECT lResuelto "
                    + "FROM GRLREGISTROPNC WHERE "
                    + "IEJERCICIO = "
                    + iEjercicio
                    + " AND ICONSECUTIVOPNC = "
                    + iConsecutivoPNC);
        if (vcDataR.size() > 0) {
          vResuelto = (TVDinRep) vcDataR.get(0);
          if (vResuelto.getInt("lResuelto") != 0) lAgregarAPNC = false;
        }
      }
      // FinLEL26092006
      if (cnNested == null) {
        dbConn = new DbConnection(dataSourceName);
        conn = dbConn.getConnection();
        conn.setAutoCommit(false);
        conn.setTransactionIsolation(2);
      }
      String lSQL =
          "insert into GRLRegistroPNC(iEjercicio,iConsecutivoPNC,dtRegistro,iCveUsuRegistro,iCveProducto,lResuelto,dtResolucion,iCveOficinaAsignado,iCveDeptoAsignado,iCveOficina,iCveDepartamento,iCveProceso) values (?,?,?,?,?,?,?,?,?,?,?,?)";

      // AGREGAR AL ULTIMO ...
      if (lAgregarAPNC == false) {
        Vector vcData =
            findByCustom(
                "",
                "select MAX(iConsecutivoPNC) AS iConsecutivoPNC from GRLRegistroPNC WHERE iEjercicio = "
                    + vData.getInt("iEjercicio"));
        if (vcData.size() > 0) {
          TVDinRep vUltimo = (TVDinRep) vcData.get(0);
          vData.put("iConsecutivoPNC", vUltimo.getInt("iConsecutivoPNC") + 1);
        } else vData.put("iConsecutivoPNC", 1);
      } else {
        vData.put("iConsecutivoPNC", iConsecutivoPNC);
      }
      vData.addPK(vData.getString("iConsecutivoPNC"));
      lPStmt = conn.prepareStatement(lSQL);
      lPStmt.setInt(1, dtFechaActual.getIntYear(dtFechaActual.TodaySQL()));
      lPStmt.setInt(2, vData.getInt("iConsecutivoPNC"));
      iConsecutivo = vData.getInt("iConsecutivoPNC");
      lPStmt.setDate(3, tFecha.TodaySQL());
      lPStmt.setInt(4, vData.getInt("iCveUsuario"));
      lPStmt.setInt(5, vData.getInt("iCveProducto"));
      lPStmt.setInt(6, vData.getInt("lResuelto"));
      if (vData.getDate("dtResolucion") == null) lPStmt.setNull(7, Types.DATE);
      else lPStmt.setDate(7, vData.getDate("dtResolucion"));
      lPStmt.setInt(8, vData.getInt("iCveOficinaUsrAsg"));
      lPStmt.setInt(9, vData.getInt("iCveDeptoUsrAsg"));
      lPStmt.setInt(10, vData.getInt("iCveOficinaUsr"));
      lPStmt.setInt(11, vData.getInt("iCveDeptoUsr"));
      lPStmt.setInt(12, vData.getInt("iCveProceso"));

      if (lAgregarAPNC == false) lPStmt.executeUpdate();
      lPStmt.close();
      try {
        TDGRLRegCausaPNC1 dGRLRegCausaPNC = new TDGRLRegCausaPNC1();
        //    TDGRLRegCausaPNC dGRLRegCausaPNC = new TDGRLRegCausaPNC();
        if (lAgregarAPNC == false) {
          dGRLRegCausaPNC.insert(vData, conn, iConsecutivo);
          //   dGRLRegCausaPNC.insert(vData,conn);
        } else {
          dGRLRegCausaPNC.insertA(vData, conn, iConsecutivo);
          //   dGRLRegCausaPNC.insertA(vData,conn);
        }
      } catch (Exception exCausa) {
        exCausa.printStackTrace();
        lSuccess = false;
      }
      if (cnNested == null && lSuccess) conn.commit();
    } catch (Exception ex) {
      warn("insert", ex);
      if (cnNested == null) {
        try {
          conn.rollback();
        } catch (Exception e) {
          fatal("insert.rollback", e);
        }
      }
      lSuccess = false;
    } finally {
      try {
        if (lPStmt != null) lPStmt.close();
        if (cnNested == null) {
          if (conn != null) conn.close();
          dbConn.closeConnection();
        }
      } catch (Exception ex2) {
        warn("insert.close", ex2);
      }
      if (lSuccess == false) throw new DAOException("");
      return vData;
    }
  }