protected string Procesar(string sSegMesProy, string nPSN, string sConsPersonas, string sConsNivel, string sProdProfesional, string sProdPerfil, string sAvance, string sPeriodCons, string sPeriodProd, string sClasesAClonar, string strMeses) { string sResul = "", sw = "0"; int nSMPSN_destino = 0; int t325_anomes_maxC = 0; int t325_anomes_minA = 0; int t303_ultcierreeco = 0; #region apertura de conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccionSerializable(oConn); } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex); return(sResul); } #endregion try { DataSet ds = SEGMESPROYECTOSUBNODO.ObtenerMesesReferenciaParaClonado(tr, int.Parse(nPSN)); foreach (DataRow oMes in ds.Tables[0].Rows) { if (oMes["t325_estado"].ToString() == "C") { t325_anomes_maxC = (int)oMes["t325_anomes"]; } if (oMes["t325_estado"].ToString() == "A") { t325_anomes_minA = (int)oMes["t325_anomes"]; } } foreach (DataRow oMes in ds.Tables[1].Rows) { t303_ultcierreeco = (int)oMes["t303_ultcierreeco"]; } string[] aAnomes = Regex.Split(strMeses, "##"); foreach (string oAnomes in aAnomes) { if (oAnomes == "") { continue; } if (int.Parse(oAnomes) <= t303_ultcierreeco || int.Parse(oAnomes) <= t325_anomes_maxC) { sw = "1"; continue; } nSMPSN_destino = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, int.Parse(nPSN), int.Parse(oAnomes)); if (nSMPSN_destino != 0) { SEGMESPROYECTOSUBNODO.Delete(tr, nSMPSN_destino); } nSMPSN_destino = SEGMESPROYECTOSUBNODO.Insert(tr, int.Parse(nPSN), int.Parse(oAnomes), "A", 0, 0, false, 0, 0); SEGMESPROYECTOSUBNODO.ClonarMes(tr, int.Parse(sSegMesProy), nSMPSN_destino, sClasesAClonar, (sConsPersonas == "1") ? true : false, (sConsNivel == "1") ? true : false, (sProdProfesional == "1") ? true : false, (sProdPerfil == "1") ? true : false, (sAvance == "1") ? true : false, (sPeriodCons == "1") ? true : false, (sPeriodProd == "1") ? true : false, SUPER.Capa_Negocio.Utilidades.EsAdminProduccion() ); } Conexion.CommitTransaccion(tr); sResul = "OK@#@" + sw; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al clonar los datos del mes de referencia.", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }