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); }
protected string Grabar(string strDatos) { string sResul = ""; int sSegMesProy = 0; string sEstadoMes = ""; bool bErrorControlado = false; double dUnidades = 0; double?dUnidadesBD = 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 { string[] aConsumo = Regex.Split(strDatos, "///"); foreach (string oConsumo in aConsumo) { if (oConsumo == "") { continue; } string[] aValores = Regex.Split(oConsumo, "##"); //0. Opcion BD. "I", "U", "D" //1. AnnoMes //2. ID usuario //3. Coste //4. Unidades //5. Costerep //6. idempresa_nodomes //7. Nodo nPSN = int.Parse(Request.QueryString["nPSN"].ToString()); sSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, nPSN, int.Parse(aValores[1])); if (sSegMesProy == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, nPSN, int.Parse(aValores[1])); if (sEstadoMes == "C") { bErrorControlado = true; throw (new Exception("Durante su intervención en la pantalla, otro usuario ha eliminado el año/mes: " + aValores[1])); } sSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, nPSN, int.Parse(aValores[1]), sEstadoMes, 0, 0, false, 0, 0); } else { SEGMESPROYECTOSUBNODO oSegMes = SEGMESPROYECTOSUBNODO.Obtener(tr, nPSN, int.Parse(aValores[1]), Request.QueryString["sMoneda"].ToString()); if (oSegMes.t325_estado == "C") { bErrorControlado = true; throw (new Exception("Durante su intervención en la pantalla, otro usuario ha cerrado el año/mes: " + aValores[1])); } else { sSegMesProy = oSegMes.t325_idsegmesproy; } } dUnidades = double.Parse(aValores[4]); if (dUnidades == 0) { CONSPERMES.Delete(tr, sSegMesProy, int.Parse(aValores[2])); } else { //Si existe en BBDD, updateo, sino, inserto dUnidadesBD = CONSPERMES.GetUnidades(tr, sSegMesProy, int.Parse(aValores[2])); if (dUnidadesBD == null) //No existe registro -> lo insertamos { int?nEmpresa = null; if (aValores[6] != "") { nEmpresa = int.Parse(aValores[6]); } int?nNodo = null; if (aValores[7] != "") { nNodo = int.Parse(aValores[7]); } CONSPERMES.Insert(tr, sSegMesProy, int.Parse(aValores[2]), dUnidades, decimal.Parse(aValores[3]), decimal.Parse(aValores[5]), nNodo, nEmpresa); } else {//El registro ya existe, solo updateamos si el valor es diferente if (dUnidades != dUnidadesBD) { CONSPERMES.UpdateUnidades(tr, sSegMesProy, int.Parse(aValores[2]), dUnidades); } } } } Conexion.CommitTransaccion(tr); sResul = "OK@#@"; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); if (!bErrorControlado) { sResul = "Error@#@" + Errores.mostrarError("Error al grabar los consumos de los profesionales.", ex); } else { sResul = "Error@#@Operación rechazada.\n\n" + ex.Message; } } 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); }
protected string Grabar(string sSegMesProy, string strDatos) { string sResul = ""; bool bErrorControlado = false; double dUnidades = 0; double?dUnidadesBD = null; #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 { if (Session["ADMINISTRADOR_PC_ACTUAL"].ToString() != "SA") { SEGMESPROYECTOSUBNODO oSMPSN = SEGMESPROYECTOSUBNODO.Obtener(tr, int.Parse(sSegMesProy), null); if (oSMPSN.t325_estado == "C") { bErrorControlado = true; throw (new Exception("Durante su intervención en la pantalla, otro usuario ha cerrado el mes en curso.")); } } //CONSPERMES.DeleteByT325_idsegmesproy(tr, int.Parse(sSegMesProy)); string[] aConsumo = Regex.Split(strDatos, "///"); foreach (string oConsumo in aConsumo) { if (oConsumo == "") { continue; } string[] aValores = Regex.Split(oConsumo, "##"); //0. Opcion BD. "I", "U", "D" //1. ID usuario //2. Coste //3. Unidades //4. Costerep //5. idempresa_nodomes //6. Nodo dUnidades = double.Parse(aValores[3]); if (dUnidades == 0) { CONSPERMES.Delete(tr, int.Parse(sSegMesProy), int.Parse(aValores[1])); } else { //Si existe en BBDD, updateo, sino, inserto dUnidadesBD = CONSPERMES.GetUnidades(tr, int.Parse(sSegMesProy), int.Parse(aValores[1])); if (dUnidadesBD == null) //No existe registro -> lo insertamos { int?nEmpresa = null; if (aValores[5] != "") { nEmpresa = int.Parse(aValores[5]); } int?nNodo = null; if (aValores[6] != "") { nNodo = int.Parse(aValores[6]); } CONSPERMES.Insert(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]), dUnidades, decimal.Parse(aValores[2]), decimal.Parse(aValores[4]), nNodo, nEmpresa); } else {//El registro ya existe, solo updateamos si el valor es diferente if (dUnidades != dUnidadesBD) { CONSPERMES.UpdateUnidades(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]), dUnidades); } } } } Conexion.CommitTransaccion(tr); sResul = "OK@#@"; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); if (!bErrorControlado) { sResul = "Error@#@" + Errores.mostrarError("Error al grabar los consumos de los profesionales.", ex); } else { sResul = "Error@#@Operación rechazada.\n\n" + ex.Message; } } finally { Conexion.Cerrar(oConn); } return(sResul); }