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); }
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); }