private string Traspglobal(string sSobreescribir) { string sResul = ""; string sEstadoMes = ""; int nSMPSN = 0; DataSet dsProf = null; #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 try { DataSet ds = CONSPERMES.ObtenerPSNaTraspasarDS((int)Session["UsuarioActual"]); foreach (DataRow oPSN in ds.Tables[0].Rows) { if (PROYECTOSUBNODO.ObtenerUltCierreEcoNodoPSN(tr, (int)oPSN["t305_idproyectosubnodo"]) >= (int)oPSN["annomes_traspaso"]) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("No se ha realizado el traspaso, debido a que el " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + " '" + oPSN["t303_denominacion"].ToString() + "' se encuentra cerrado en el mes a traspasar."); break; } else { nSMPSN = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, (int)oPSN["t305_idproyectosubnodo"], (int)oPSN["annomes_traspaso"]); if (nSMPSN == 0) { if (oPSN["tiene_consumos"].ToString() == "1") { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, (int)oPSN["t305_idproyectosubnodo"], (int)oPSN["annomes_traspaso"]); if (sEstadoMes == "C") { continue; } nSMPSN = SEGMESPROYECTOSUBNODO.Insert(tr, (int)oPSN["t305_idproyectosubnodo"], (int)oPSN["annomes_traspaso"], sEstadoMes, 0, 0, false, 0, 0); } } else { SEGMESPROYECTOSUBNODO oSegMes = SEGMESPROYECTOSUBNODO.Obtener(tr, nSMPSN, null); if (oSegMes.t325_estado == "C") { continue; } if (sSobreescribir == "1") { CONSPERMES.DeleteByT325_idsegmesproy(tr, nSMPSN); } } #region Datos Profesionales if (oPSN["tiene_consumos"].ToString() == "1") //si tiene consumos técnicos (IAP) { dsProf = CONSPERMES.ObtenerDatosPSNaTraspasarDS(tr, (int)oPSN["t305_idproyectosubnodo"], (int)oPSN["annomes_traspaso"], oPSN["t301_modelocoste"].ToString(), true, (sSobreescribir == "1")? false:true); foreach (DataRow oProf in dsProf.Tables[0].Rows) { double nUnidades = (oPSN["t301_modelocoste"].ToString() == "J") ? double.Parse(oProf["jornadas_adaptadas"].ToString()) : double.Parse(oProf["horas_reportadas_proy"].ToString()); if (nUnidades != 0) { CONSPERMES.Insert(tr, nSMPSN, (int)oProf["t314_idusuario"], (oPSN["t301_modelocoste"].ToString() == "J") ? double.Parse(oProf["jornadas_adaptadas"].ToString()) : double.Parse(oProf["horas_reportadas_proy"].ToString()), decimal.Parse(oProf["t330_costecon"].ToString()), decimal.Parse(oProf["t330_costerep"].ToString()), (oProf["t303_idnodo"] != DBNull.Value)? (int?)oProf["t303_idnodo"]:null, (oProf["t313_idempresa"] != DBNull.Value)? (int?)oProf["t313_idempresa"]:null); } } dsProf.Dispose(); } #endregion SEGMESPROYECTOSUBNODO.UpdateTraspasoIAP(tr, nSMPSN, true); } } ds.Dispose(); Conexion.CommitTransaccion(tr); sResul = "OK@#@"; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al realizar el traspaso global.", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }
private string Grabar(string sPSN, string sAnnomes, string strProfesionales, string sHayDatosProf) { string sResul = ""; string sEstadoMes = ""; int nPSN = int.Parse(sPSN), nAnnomes = int.Parse(sAnnomes), nSMPSN = 0; bool bErrorControlado = false; #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 try { if (PROYECTOSUBNODO.ObtenerUltCierreEcoNodoPSN(tr, nPSN) >= nAnnomes) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("No se ha realizado el traspaso, debido a que el " + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + " se encuentra cerrado en el mes a traspasar."); } else { nSMPSN = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, nPSN, nAnnomes); if (nSMPSN == 0) { if (sHayDatosProf == "1") { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, nPSN, nAnnomes); if (sEstadoMes != "C") { nSMPSN = SEGMESPROYECTOSUBNODO.Insert(tr, nPSN, nAnnomes, sEstadoMes, 0, 0, false, 0, 0); } } } else { if (Session["ADMINISTRADOR_PC_ACTUAL"].ToString() != "SA") { SEGMESPROYECTOSUBNODO oSMPSN = SEGMESPROYECTOSUBNODO.Obtener(tr, nSMPSN, null); if (oSMPSN.t325_estado == "C") { bErrorControlado = true; throw (new Exception("No se permite grabar, debido a que el mes en curso está cerrado para el proyecto.")); } } CONSPERMES.DeleteByT325_idsegmesproy(tr, nSMPSN); } #region Datos Profesionales if (strProfesionales != "" && sEstadoMes != "C") { string[] aProfesionales = Regex.Split(strProfesionales, "##"); foreach (string oProf in aProfesionales) { if (oProf == "") { continue; } string[] aProf = Regex.Split(oProf, "//"); ///aProf[0] = idUsuario ///aProf[1] = costecon ///aProf[2] = costerep ///aProf[3] = nodo_usuario ///aProf[4] = empresa_nodo ///aProf[5] = unidades económicas CONSPERMES.Insert(tr, nSMPSN, int.Parse(aProf[0]), double.Parse(aProf[5]), decimal.Parse(aProf[1]), decimal.Parse(aProf[2]), (aProf[3] != "") ? (int?)int.Parse(aProf[3]) : null, (aProf[4] != "") ? (int?)int.Parse(aProf[4]) : null); } } #endregion SEGMESPROYECTOSUBNODO.UpdateTraspasoIAP(tr, nSMPSN, true); Conexion.CommitTransaccion(tr); sResul = "OK@#@"; } } catch (Exception ex) { Conexion.CerrarTransaccion(tr); if (!bErrorControlado) { sResul = "Error@#@" + Errores.mostrarError("Error al grabar los consumos del proyecto.", ex); } else { sResul = "Error@#@Operación rechazada.\n\n" + ex.Message; } } finally { Conexion.Cerrar(oConn); } return(sResul); }