private void ObtenerDatosTarea() { ITEMSPLANTILLA o = ITEMSPLANTILLA.Select(null, nIdTarea); txtIdTarea.Text = o.t339_iditems.ToString("#,###"); txtDesTarea.Text = o.t339_desitem; this.hdnTipo.Text = o.t339_tipoitem; this.hdnMargen.Text = o.t339_margen.ToString(); this.hdnIdPlant.Text = o.t338_idplantilla.ToString(); if (o.t339_avanceauto) { this.chkAvance.Checked = true; } else { this.chkAvance.Checked = false; } if (o.t339_obligaest) { this.chkObliga.Checked = true; } else { this.chkObliga.Checked = false; } if (o.t339_facturable) { chkFacturable.Checked = true; } hdnOrden.Text = o.t339_orden.ToString(); gsTipoPlant = o.tipoPlant.ToString(); }
private string GrabarComo(string sDesPlant, string sAmbito, string sIdPlantOrigen, string sOrigen, string sTipo, string sNodo, string sEmp, string sDep, string sPer) { string sResul = ""; int iPromotor = int.Parse(Session["IDFICEPI_PC_ACTUAL"].ToString()), idPlantOrigen, idPlantDestino; SqlConnection oConn = null; SqlTransaction tr = null; try { //Cargo los datos de la plantilla actual idPlantOrigen = int.Parse(sIdPlantOrigen); PlantProy miPlant = new PlantProy(); miPlant.Obtener(idPlantOrigen); //Abro transaccion serializable oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccionSerializable(oConn); if (sAmbito == "") { sAmbito = miPlant.ambito; } if (sAmbito != "D") { miPlant.codune = -1; } idPlantDestino = PlantProy.Insertar(tr, miPlant.tipo, Utilidades.unescape(sDesPlant), 1, sAmbito, iPromotor, miPlant.codune, miPlant.obs); ITEMSPLANTILLA.Duplicar(tr, idPlantOrigen, idPlantDestino); Conexion.CommitTransaccion(tr); //Recargo el desglose //sResul = "OK@#@" + obtenerPlantillas(inodo, sorigen, true); sResul = Buscar("1", "0", sTipo, sOrigen, sNodo, sEmp, sDep, sPer, true); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al grabar el desglose de la plantilla", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }
protected string Grabar(string strDatosItem, string strDatosAE, string strDatosApertura) { string sResul = ""; #region abrir conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(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 { #region datos Item plantilla string[] aDatosTarea = Regex.Split(strDatosItem, "##"); ///aDatosTarea[0] = ID item plantilla; ///aDatosTarea[1] = Tipo item; ///aDatosTarea[2] = Des. item; ///aDatosTarea[3] = margen; ///aDatosTarea[4] = orden; ///aDatosTarea[5] = ID plantilla; ///aDatosTarea[6] = Facturable o no (1 / 0); ///aDatosTarea[7] = Avence automatico o no (1 / 0); ///aDatosTarea[8] = Obliga estimación ; bool bFacturable = false, bAvanceAuto = false, bObligaEst = false; if (aDatosTarea[6] == "1") { bFacturable = true; } if (aDatosTarea[7] == "1") { bAvanceAuto = true; } if (aDatosTarea[8] == "1") { bObligaEst = true; } ITEMSPLANTILLA.Update(tr, int.Parse(aDatosTarea[0]), //ID item plantilla; aDatosTarea[1], //TIPO de item Utilidades.unescape(aDatosTarea[2]), //Des. item; byte.Parse(aDatosTarea[3]), //margen short.Parse(aDatosTarea[4]), //orden int.Parse(aDatosTarea[5]), //ID plantilla; bFacturable, bAvanceAuto, bObligaEst); #endregion #region datos Atributos Estadísticos string[] aAE = Regex.Split(strDatosAE, "///"); foreach (string oAE in aAE) { string[] aValores = Regex.Split(oAE, "##"); switch (aValores[0]) { case "I": AEITEMSPLANTILLA.Insert(tr, int.Parse(aValores[1]), int.Parse(aValores[3])); break; case "U": AEITEMSPLANTILLA.Update(tr, int.Parse(aValores[1]), int.Parse(aValores[3])); break; case "D": AEITEMSPLANTILLA.Delete(tr, int.Parse(aValores[1]), int.Parse(aValores[3])); break; } } #endregion Conexion.CommitTransaccion(tr); sResul = "OK@#@" + DateTime.Now.ToString() + "@#@" + Session["NUM_EMPLEADO_ENTRADA"].ToString() + "@#@" + Session["DES_EMPLEADO_ENTRADA"].ToString(); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos del elemento", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }
private string Grabar(string sIdPlant, string sCadena, string sHitosEspeciales) {/*En el parametro de entrada tenemos en primer lugar el codigo de la plantilla * y luego una lista de elementos del tipo sEstado@#@sTipo@#@sDes@#@sCodigo@#@sOrden@#@sMargen@#@sFacturable@#@avance@#@obligaest## */ string sCad, sTipo, sDesc, sResul = "", sEstado = "N", sCadenaBorrado = "", sTipoPlant, sAux; int iPos, iTarea = -1, iAux = -1, iCodigo = -1, iHito = -1, iMargen = 0; short iOrden = 0, iOrdenAnt = 0; bool bFacturable, bAvance, bObliga; SqlConnection oConn = null; SqlTransaction tr = null; #region Control para comprobar que la estructura no ha variado desde que se ha leido. SqlConnection oConn2 = null; SqlTransaction tr2 = null; try { oConn2 = Conexion.Abrir(); tr2 = Conexion.AbrirTransaccion(oConn2); } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex); return(sResul); } SqlDataReader dr2 = PlantTarea.Catalogo(int.Parse(sIdPlant)); ArrayList aEstrOrig = (ArrayList)Session["OrdenEstructuraPlant"]; ArrayList aEstrActual = new ArrayList(); string sTipo2, sIDItem2, sOrden2; while (dr2.Read()) { sTipo2 = dr2["Tipo"].ToString(); sIDItem2 = dr2["t339_iditems"].ToString(); sOrden2 = dr2["orden"].ToString(); string[] sEstr = new string[3] { sOrden2, sTipo2, sIDItem2 }; aEstrActual.Add(sEstr); } dr2.Close(); dr2.Dispose(); string sMsgError = "Error@#@PSP ha detectado que durante su edición, la estructura ha variado por modificación de otro usuario.\n\nPulse \"Aceptar\" para recuperar la estructura actualizada, teniendo en cuenta que perderá los cambios realizados.\nPulsando \"Cancelar\" permanecerá en la pantalla actual sin realizar la grabación.@#@1"; if (aEstrOrig.Count != aEstrActual.Count) { Conexion.CerrarTransaccion(tr2); Conexion.Cerrar(oConn2); return(sMsgError); } else { for (int i = 0; i < aEstrOrig.Count; i++) { if (((string[])aEstrOrig[i])[0] != ((string[])aEstrActual[i])[0] || ((string[])aEstrOrig[i])[1] != ((string[])aEstrActual[i])[1] || ((string[])aEstrOrig[i])[2] != ((string[])aEstrActual[i])[2] ) { Conexion.CerrarTransaccion(tr2); Conexion.Cerrar(oConn2); return(sMsgError); } } } Conexion.CommitTransaccion(tr2); Conexion.Cerrar(oConn2); Session["OrdenEstructuraPlant"] = null; #endregion try { sCadenaBorrado = sIdPlant + @"//"; //Abro transaccion try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex); return(sResul); } if (lblTipo.Text == "Proyecto económico") { sTipoPlant = "E"; } else { sTipoPlant = "T"; } //Obtengo una cadena solo con la lista de filas a grabar //estado@#@tipo@#@descripcion@#@codPT@#@sCodigo@#@sOrden@#@sMargen@#@sFacturable @#@avance@#@obligaest sCad = sCadena; if (sCad == "") {//Tenemos un desglose vacío. No hacemos nada } else {//Con la cadena generamos una lista y la recorremos para grabar cada elemento string[] aTareas = Regex.Split(sCad, @"##"); for (int i = 0; i < aTareas.Length - 1; i++) { sCad = aTareas[i]; string[] aItems = Regex.Split(sCad, @"@#@"); sEstado = aItems[0]; sTipo = aItems[1]; sDesc = Utilidades.unescape(aItems[2]); sAux = aItems[3]; if (sAux != "") { iCodigo = int.Parse(sAux); } else { iCodigo = -1; } sAux = aItems[4]; if (sAux != "") { iOrdenAnt = short.Parse(sAux); } else { iOrdenAnt = 1; } sCad = aItems[5]; iPos = sCad.IndexOf(@"px"); sAux = sCad.Substring(0, iPos); if (sAux != "") { iMargen = int.Parse(sAux); } else { iMargen = 0; } sCad = aItems[6]; if (sCad == "T") { bFacturable = true; } else { bFacturable = false; } sCad = aItems[7]; if (sCad == "T") { bAvance = true; } else { bAvance = false; } sCad = aItems[8]; if (sCad == "T") { bObliga = true; } else { bObliga = false; } //Si no ha cambiado la linea pero el orden actual es distinto del original hay que updatear la linea para actualizar el orden if (iOrden != iOrdenAnt && sEstado == "N") { sEstado = "U"; } if (sEstado != "D") { iOrden++; } if (sEstado == "D") { sCadenaBorrado += sTipo + "##" + iCodigo + @"@#@"; } switch (sTipo) { case "T": iTarea = iCodigo; break; case "H": iHito = iCodigo; break; } //Si es una plantilla de proyecto técnico no hay que grabar linea de PT if ((sTipoPlant == "T") && (sTipo == "P")) { sEstado = "N"; } switch (sEstado) { case "U": ITEMSPLANTILLA.Update(tr, iCodigo, sTipo, Utilidades.unescape(sDesc), (byte)iMargen, (short)iOrden, int.Parse(sIdPlant), bFacturable, bAvance, bObliga); break; case "I": iAux = ITEMSPLANTILLA.Insert(tr, sTipo, Utilidades.unescape(sDesc), (byte)iMargen, (short)iOrden, int.Parse(sIdPlant), bFacturable, bAvance, bObliga); break; } //switch (sEstado) } //for } //Elimino las filas borradas BorrarDesglose(tr, sCadenaBorrado, sTipoPlant); //Grabo los hitos especiales //sEstado+"##"+Utilidades.escape(sDes)+"##"+sCodigo+"##"+sOrden+"//" sCad = sHitosEspeciales; if (sCad == "") {//Tenemos un desglose vacío. No hacemos nada } else {//Con la cadena generamos una lista y la recorremos para grabar cada elemento string[] aTareas = Regex.Split(sCad, @"@#@"); iOrden = 0; for (int i = 0; i < aTareas.Length - 1; i++) { sCad = aTareas[i]; if (sCad != "") { string[] aElems = Regex.Split(sCad, @"##"); sEstado = aElems[0]; sDesc = Utilidades.unescape(aElems[1]); iHito = int.Parse(aElems[2]); iOrdenAnt = short.Parse(aElems[3]); if (sEstado != "D") { iOrden++; } //Si no ha cambiado la linea pero el orden actual es distinto del original hay que updatear la linea para actualizar el orden if (iOrden != iOrdenAnt && sEstado == "N") { sEstado = "U"; } switch (sEstado) { case "N": break; case "D": HITOE_PLANT.Delete(tr, iHito); break; case "U": HITOE_PLANT.Update(tr, iHito, sDesc, null, null, iOrden); break; case "I": iAux = HITOE_PLANT.Insert(tr, sDesc, "", true, iOrden, int.Parse(sIdPlant)); break; }//switch (sEstado) } } } //Cierro transaccion Conexion.CommitTransaccion(tr); //Recargo el desglose ObtenerTareas(int.Parse(sIdPlant), sTipoPlant); ObtenerHitos(int.Parse(sIdPlant)); //sResul = "OK@#@" + sIdPlant; sResul = "OK@#@" + strTablaHTMLTarea + "@#@" + strTablaHTMLHito; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al grabar el desglose de la plantilla", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }