private string Procesar(string sAnoMes, string sMeses, string strNodos) { string sResul = ""; ArrayList aListCorreo = new ArrayList(); try { #region abrir conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccionSerializable(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 PROYECTOSUBNODO.EliminarObraEnCursoDotacion(tr, int.Parse(sAnoMes), strNodos); DataSet ds = PROYECTOSUBNODO.ObtenerProyectosObraEnCursoDotacion(tr, int.Parse(sAnoMes), int.Parse(sMeses), strNodos); int idT325 = 0; foreach (DataRow oPSN in ds.Tables[0].Rows) { idT325 = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, (int)oPSN["t305_idproyectosubnodo"], int.Parse(sAnoMes)); if (idT325 == 0) { idT325 = SEGMESPROYECTOSUBNODO.InsertSiNoExiste(tr, (int)oPSN["t305_idproyectosubnodo"], int.Parse(sAnoMes)); } //Insertamos en el año-mes indicado el importe del saldo obra en curso en negativo. DATOECO.Insert(tr, idT325, Constantes.nIdClaseDotacionObraEnCurso, "Dotación-Ajuste Obra en Curso", decimal.Parse(oPSN["Obra_Curso_Acum"].ToString()) * -1, null, null, null); //Registramos en la cola de correo EncolarCorreo(aListCorreo, oPSN["codred_gestorprod"].ToString(), oPSN["codred_comercialhermes"].ToString(), decimal.Parse(oPSN["Obra_Curso_Acum"].ToString()).ToString("N"), int.Parse(oPSN["t306_idcontrato"].ToString()).ToString("#,###"), oPSN["t377_denominacion"].ToString(), int.Parse(oPSN["t301_idproyecto"].ToString()).ToString("#,###"), oPSN["t301_denominacion"].ToString(), sMeses.ToString() ); } ds.Dispose(); // Conexion.CommitTransaccion(tr); Conexion.CerrarTransaccion(tr); EnviarCorreos(aListCorreo); sResul = "OK"; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al realizar el ajuste de la dotación de la obra en curso.", ex, false); } finally { Conexion.Cerrar(oConn); } return(sResul); }