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.")); } } //CONSNIVELMES.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 NIvel //2. Coste //3. Unidades dUnidades = double.Parse(aValores[3]); if (dUnidades == 0) { CONSNIVELMES.Delete(tr, int.Parse(sSegMesProy), int.Parse(aValores[1])); } else { //Si existe en BBDD, updateo, sino, inserto dUnidadesBD = CONSNIVELMES.GetUnidades(tr, int.Parse(sSegMesProy), int.Parse(aValores[1])); if (dUnidadesBD == null) //No existe registro -> lo insertamos { CONSNIVELMES.Insert(tr, int.Parse(sSegMesProy), int.Parse(aValores[1]), decimal.Parse(aValores[2]), dUnidades); } else {//El registro ya existe, solo updateamos si el valor es diferente if (dUnidades != dUnidadesBD) { CONSNIVELMES.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 por nivel.", ex); } else { sResul = "Error@#@Operación rechazada.\n\n" + ex.Message; } } finally { Conexion.Cerrar(oConn); } return(sResul); }
public string getDatosNivel(string sSegMesProy, string sEstadoMes, string sModeloCoste, string sIdNodo, string sEstadoProy, string sMonedaProyecto2, string sMonedaImportes2) { StringBuilder sb = new StringBuilder(); SqlDataReader dr; try { sLectura = "false"; sb.Append("<table id=tblDatos style='width: 960px;' mantenimiento='1'>"); sb.Append("<colgroup>"); sb.Append("<col style='width:10px;' />"); sb.Append("<col style='width:600px;' />"); sb.Append("<col style='width:120px;' />"); sb.Append("<col style='width:120px;' />"); sb.Append("<col style='width:120px;' />"); sb.Append("</colgroup>"); sb.Append("<tbody>"); if (sMonedaProyecto2 != sMonedaImportes2) { sLectura = "true"; } else { if (sEstadoProy == "H" || sEstadoProy == "C" || (bool)Session["MODOLECTURA_PROYECTOSUBNODO"] || sEstadoMes == "C") { sLecturaInsMes = "true"; sLectura = "true"; } if ((sEstadoProy == "A" || sEstadoProy == "P") && Session["ADMINISTRADOR_PC_ACTUAL"].ToString() == "SA") { sLectura = "false"; } } //Comprobar si hay conspermes. Si hay, poner en lectura y mostrar mmoff dr = CONSPERMES.Catalogo(int.Parse(sSegMesProy), null, null, null, null, null, null, 1, 0); if (dr.Read()) { sHayConsumos = "true"; } dr.Close(); dr = CONSNIVELMES.Catalogo(int.Parse(sSegMesProy), sEstadoMes, sMonedaImportes2); while (dr.Read()) { sb.Append("<tr id='" + dr["t442_idnivel"].ToString() + "' bd='' unidades='" + dr["t379_unidades"].ToString().Replace(",", ".") + "' style='height:20px;'"); if (sLectura == "false" && sHayConsumos == "false") { sb.Append(" onclick='mm(event)' "); } sb.Append("><td><img src='../../../images/imgFN.gif'></td>"); sb.Append("<td style='padding-left:5px;'>" + dr["t442_denominacion"].ToString() + "</td>"); sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["coste"].ToString()).ToString("N") + "</td>"); if (sLectura == "false" && sHayConsumos == "false") { sb.Append("<td style='text-align:right;'><input type='text' class='txtNumL' style='width:90px; cursor:pointer' value='" + double.Parse(dr["t379_unidades"].ToString()).ToString("N") + "' onkeyup='fm(event);setUnidades(this);' onfocus='fn(this);' onchange='calcularTotal()' title='" + dr["t379_unidades"].ToString().Replace(",", ".") + "' /></td>"); sb.Append("<td style='text-align:right;padding-right:2px;'><input type='text' class='txtNumL' style='width:90px; cursor:pointer' value='" + double.Parse(dr["importe"].ToString()).ToString("N") + "' onkeyup='fm(event);setImporte(this);' onfocus='fn(this);' onchange='calcularTotal()' /></td>"); } else { sb.Append("<td style='text-align:right;'>" + double.Parse(dr["t379_unidades"].ToString()).ToString("N") + "</td>"); sb.Append("<td style='text-align:right;padding-right:2px;'>" + double.Parse(dr["importe"].ToString()).ToString("N") + "</td>"); } sb.Append("</tr>"); } dr.Close(); dr.Dispose(); sb.Append("</tbody>"); sb.Append("</table>"); return("OK@#@" + sb.ToString() + "@#@" + sLectura + "@#@" + sHayConsumos + "@#@" + MONEDA.getDenominacionImportes(sMonedaImportes2)); } catch (Exception ex) { return("Error@#@" + Errores.mostrarError("Error al obtener los consumos de niveles", ex)); } }