protected string Grabar(string strDatosTarea, string slTareas) { string sIdTarea, sEstado, sResul = ""; int nIdTarea, nIdPT, iUsuario; bool bFaltanValoresAE = false, bPrimeraTarea = true; short nOrden = 0, iCodUne; #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 { string[] aDatosTarea = Regex.Split(strDatosTarea, "##"); ///aDatosTarea[0] = IDPT ///aDatosTarea[1] = ID Actividad ///aDatosTarea[2] = NodoActivo int?nAct = null; if ((aDatosTarea[1] != "") && (aDatosTarea[1] != "0")) { nAct = int.Parse(aDatosTarea[1]); } nIdPT = int.Parse(aDatosTarea[0]); iUsuario = int.Parse(Session["NUM_EMPLEADO_ENTRADA"].ToString()); iCodUne = short.Parse(aDatosTarea[2]); string[] aTarea = Regex.Split(slTareas, "##"); for (int i = 0; i < aTarea.Length; i++) { if (aTarea[i] != "") { string[] aTar = Regex.Split(aTarea[i], ";"); sIdTarea = aTar[0]; sEstado = aTar[1]; if ((sIdTarea != "") && (sIdTarea != "0")) { nIdTarea = int.Parse(sIdTarea); if (bPrimeraTarea) { nOrden = TAREAPSP.flCalcularOrden2(null, nIdPT); bPrimeraTarea = false; } else { nOrden++; } TAREAPSP.ModificarPadre(tr, nIdTarea, nIdPT, nAct, nOrden, iUsuario); //Como he podido cambiar de PT hay que ver si tiene los AE del nuevo PT para calcular su estado //Siempre que la tarea no esté FINALIZADA, CERRADA o ANULADA (Victor 14/02/2012) if (sEstado != "3" && sEstado != "4" && sEstado != "5") { bFaltanValoresAE = ProyTec.bFaltanValoresAE(tr, iCodUne, nIdPT); if (bFaltanValoresAE) { TAREAPSP.ModificarEstado(tr, nIdTarea, 2, iUsuario);//Paso a estado PENDIENTE } } } } } Conexion.CommitTransaccion(tr); sResul = "OK@#@"; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos de la tarea", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }