private string Procesar(string sNumPSN, string sRTPT, string sParalizada, string sActiva, string sPendiente, string sFinalizada, string sFecIniVig, string sFecFinVig)
    {
        bool     bParalizada = false, bActiva = false, bPendiente = false, bFinalizada = false, bRTPT = false;
        DateTime?dIniV = null;
        DateTime?dFinV = null;

        string sResul           = "";
        int    iTareasAfectadas = 0;

        #region abrir conexión y transacción
        try
        {
            oConn = Conexion.Abrir();
            tr    = Conexion.AbrirTransaccion(oConn);
        }
        catch (Exception ex)
        {
            if (oConn.State == ConnectionState.Open)
            {
                Conexion.Cerrar(oConn);
            }
            sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex);
            return(sResul);
        }
        #endregion

        try
        {
            if (sRTPT == "1")
            {
                bRTPT = true;
            }
            if (sParalizada == "1")
            {
                bParalizada = true;
            }
            if (sActiva == "1")
            {
                bActiva = true;
            }
            if (sPendiente == "1")
            {
                bPendiente = true;
            }
            if (sFinalizada == "1")
            {
                bFinalizada = true;
            }
            if (sFecIniVig != "")
            {
                dIniV = DateTime.Parse(sFecIniVig);
            }
            if (sFecFinVig != "")
            {
                dFinV = DateTime.Parse(sFecFinVig);
            }

            iTareasAfectadas = TAREAPSP.Cierre(tr, int.Parse(sNumPSN), (int)Session["UsuarioActual"], bRTPT, bParalizada, bActiva, bPendiente, bFinalizada, dIniV, dFinV);
            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@" + iTareasAfectadas.ToString();
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "error@#@Error al actualizar los estados de las tareas del proyecto subnodo " + sNumPSN + "\n\n" + ex.Message;
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }