private string Grabar(string sTarea, string sRecurso, string strIndicaciones) { try { TareaRecurso.ModificarIndicaciones(null, int.Parse(sTarea), int.Parse(sRecurso), Utilidades.unescape(strIndicaciones)); return("OK"); } catch (Exception ex) { return("Error@#@" + Errores.mostrarError("Error al grabar las indicaciones", ex)); } }
private string PonerRecurso(string sTipoItem, int IdRecurso, int nIdTarea, bool bNotifProf) { SqlConnection oConn = null; SqlTransaction tr = null; string sResul = ""; //bool bAdmiteRecursoPST = true, bRecursoAsignado = false; try { //Abro transaccion oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); //bRecursoAsignado = TareaRecurso.InsertarTEC(tr, nIdTarea, IdRecurso, null, null, null, null, null, null, 1, null, "", false, // bAdmiteRecursoPST, IdPsn, IdNodo, iUltCierreEco); int iRes = TareaRecurso.InsertarSNE(tr, nIdTarea, IdRecurso, null, null, null, null, null, null, 1, "", "", false); if (bNotifProf && iRes != 0)//se notifica a profesionales y no estaba ya asignado a la tarea { TAREAPSP oTar = TAREAPSP.Obtener(null, nIdTarea); TAREAPSP oTar2 = TAREAPSP.ObtenerOTC(null, nIdTarea); string oRec = "##" + nIdTarea.ToString() + "##" + IdRecurso.ToString() + "################"; oRec += Utilidades.escape(oTar.t332_destarea) + "##"; oRec += oTar.num_proyecto.ToString() + "##" + Utilidades.escape(oTar.nom_proyecto) + "##"; oRec += Utilidades.escape(oTar.t331_despt) + "##" + Utilidades.escape(oTar.t334_desfase) + "##" + Utilidades.escape(oTar.t335_desactividad) + "##"; oRec += Utilidades.escape(oTar2.t346_codpst) + "##" + Utilidades.escape(oTar2.t346_despst) + "##"; oRec += Utilidades.escape(oTar.t332_otl) + "##" + Utilidades.escape(oTar.t332_incidencia) + "##"; TareaRecurso.EnviarCorreoRecurso(tr, "I", oRec, "", "", "", "", Utilidades.escape(oTar.t332_mensaje)); } Conexion.CommitTransaccion(tr); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = Errores.mostrarError("Error al grabar", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }
private string ObtenerRecursos(string sIdTarea, string sCodUne) {// Devuelve el código HTML del catalogo de recursos asociados a la tarea StringBuilder sb = new StringBuilder(); SqlDataReader dr; try { sb.Append("<div style='background-image:url(../../../../Images/imgFT20.gif); width:460px'>"); sb.Append("<table id='tblOpciones3' class='texto' style='width: 460px;' mantenimiento='0'>"); sb.Append("<colgroup><col style='width:20px'/><col style='width:425px'/><col style='width:15px'/></colgroup>");//style='padding-left:5px' sb.Append("<tbody>"); if (sIdTarea != "") { dr = TareaRecurso.Catalogo(int.Parse(sIdTarea), false); while (dr.Read()) { if (dr["t336_estado"].ToString() == "1") {//Solo muestro los activos en la tarea sb.Append("<tr style='height:20px' bd='' id='" + dr["t314_idusuario"].ToString() + "' "); sb.Append("estado='" + dr["t336_estado"].ToString() + "' "); sb.Append("sexo='" + dr["t001_sexo"].ToString() + "' "); sb.Append("baja='" + dr["baja"].ToString() + "' "); sb.Append("tipo='" + dr["tipo"].ToString() + "' "); //if (dr["t303_idnodo"].ToString() == "") sb.Append("tipo='E' "); //else if (dr["t303_idnodo"].ToString() == sCodUne) sb.Append("tipo='P' "); //else sb.Append("tipo='N' "); sb.Append("><td></td><td><nobr class='NBR W410'>" + dr["empleado"].ToString() + "</nobr></td>"); sb.Append("<td><input type='checkbox' style='width:15px' class='checkTabla' checked='true'></td>"); sb.Append("</tr>"); } } sb.Append("</tbody>"); sb.Append("</table></div>"); dr.Close(); dr.Dispose(); } return("OK@#@" + sb.ToString()); } catch (Exception ex) { return("Error@#@" + Errores.mostrarError("Error al obtener las personas ", ex)); } }
public string bTieneconsumos(int nTarea, int nUsuario) { string strReturn = "0"; try { bool bConsumos = TareaRecurso.ExistenConsumos(null, nTarea, nUsuario); if (bConsumos) { strReturn = "1"; } } catch (Exception) { //string s = ex.Message; strReturn = "Error"; } return(strReturn); }
private string PonerRecurso(int IdRecurso, int IdNodo, int iUltCierreEco, int IdPsn, bool bDeriva, decimal costecon, decimal costerep, bool bNotif) { SqlConnection oConn = null; SqlTransaction tr = null; string sResul = ""; try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); //lA FECHA DE alta en el proyecto será la siguiente al último mes cerrado del nodo DateTime dtFechaAlta = Fechas.AnnomesAFecha(Fechas.AddAnnomes(iUltCierreEco, 1)); if (!TareaRecurso.AsociadoAProyecto(tr, IdPsn, IdRecurso)) { //TareaRecurso.AsociarAProyecto(tr, IdNodo, IdRecurso, IdPsn, null, dtFechaAlta, null); //if (costecon == null) costecon = 0; USUARIOPROYECTOSUBNODO.Insert(tr, IdPsn, IdRecurso, costecon, costerep, bDeriva, dtFechaAlta, null, null); } else { //TareaRecurso.ReAsociarAProyecto(tr, IdRecurso, IdPsn); if (!USUARIOPROYECTOSUBNODO.AsociadoDeAltaProyecto(tr, IdPsn, IdRecurso)) { USUARIOPROYECTOSUBNODO.Update(tr, IdPsn, IdRecurso, costecon, costerep, bDeriva, dtFechaAlta, null, null); } } Conexion.CommitTransaccion(tr); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = Errores.mostrarError("Error al grabar", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }
private void Page_Load(object sender, System.EventArgs e) { if (!Page.IsCallback) { try { if (Session["IDRED"] == null) { try { Response.Redirect("~/SesionCaducadaModal.aspx", true); } catch (System.Threading.ThreadAbortException) { return; } } nTarea = int.Parse(Request.QueryString["nTarea"].ToString()); nRecurso = int.Parse(Request.QueryString["nRecurso"].ToString()); TareaRecurso oTR = TareaRecurso.Obtener(nTarea, nRecurso); txtIndicaciones.Text = oTR.sIndicaciones; txtObservaciones.Text = oTR.sComentario; } catch (Exception ex) { sErrores = Errores.mostrarError("Error al obtener los datos", ex); } //1º Se indican (por este orden) la función a la que se va a devolver el resultado // y la función que va a acceder al servidor string cbRespuesta = Page.ClientScript.GetCallbackEventReference(this, "arg", "RespuestaCallBack", "context", false); string cbLlamada = "function RealizarCallBack(arg, context)" + "{" + cbRespuesta + ";" + "}"; //2º Se "registra" la función que va a acceder al servidor. Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "RealizarCallBack", cbLlamada, true); } }
//private string ObtenerDocumentos(string sIdTarea) //{ // StringBuilder sb = new StringBuilder(); // bool bModificable; // SqlDataReader dr = DOCUT.Catalogo(null, int.Parse(sIdTarea), "", "", "", null, null, null, true, null, 3, 0); // sb.Append("<div style='background-image:url(../../../Images/imgFT20.gif); width:0%; height:0%'>"); // sb.Append("<table id='tblDocumentos' class='texto' style='WIDTH: 800px; BORDER-COLLAPSE: collapse; ' cellSpacing='0' border='0'>"); // sb.Append("<colgroup><col style='width:265px;padding-left:5px;' /><col width='215px' /><col width='225px' /><col width='100px' /></colgroup>"); // sb.Append("<tbody>"); // while (dr.Read()) // { //Si el archivo NO es sólo lectura, o si el usuario es el autor del archivo, o es administrador, se permite modificar. // if ((dr["t314_idusuario_autor"].ToString() == Session["NUM_EMPLEADO_ENTRADA"].ToString() || Session["ADMINISTRADOR_PC_ACTUAL"].ToString() == "A") // || (!(bool)dr["t363_privado"] && !(bool)dr["t363_modolectura"])) // bModificable = true; // else // bModificable = false; // sb.Append("<tr id='" + dr["t363_iddocut"].ToString() + "' onclick='mmse(this);' sTipo='T' sAutor='" + dr["t314_idusuario_autor"].ToString() + "' onmouseover='TTip()' style='height:20px;'>"); // //Si el archivo NO es sólo lectura, o si el usuario es el autor del archivo, o es administrador, se permite modificar. // if (bModificable) // sb.Append("<td class='MA' ondblclick=\"modificarDoc(this.parentNode.getAttribute('sTipo'), this.parentNode.id, 'IAP')\"><nobr class='NBR' style='width:255px'>" + dr["t363_descripcion"].ToString() + "</nobr></td>"); // else // sb.Append("<td class='MANO'><nobr class='NBR' style='width:255px'>" + dr["t363_descripcion"].ToString() + "</nobr></td>"); // if (dr["t363_nombrearchivo"].ToString() == "") // { // if (bModificable) // sb.Append("<td class='MA' ondblclick=\"modificarDoc(this.parentNode.getAttribute('sTipo'), this.parentNode.id)\"></td>"); // else // sb.Append("<td class='MANO'></td>"); // } // else // { // string sNomArchivo = dr["t363_nombrearchivo"].ToString() + Utilidades.TamanoArchivo((int)dr["bytes"]); // //Si el archivo no es privado, o es privado y la persona que entra es el autor, o es administrador, se permite descargar. // if ((!(bool)dr["t363_privado"]) || ((bool)dr["t363_privado"] && dr["t314_idusuario_autor"].ToString() == Session["NUM_EMPLEADO_ENTRADA"].ToString()) || Session["ADMINISTRADOR_PC_ACTUAL"].ToString() == "A") // sb.Append("<td><img src=\"../../../images/imgDescarga.gif\" width='16px' height='16px' onclick=\"descargar(this.parentNode.parentNode.getAttribute('sTipo'), this.parentNode.parentNode.id);\" style='vertical-align:bottom;' title=\"Descargar " + sNomArchivo + "\">"); // else // sb.Append("<td><img src=\"../../../images/imgSeparador.gif\" width='16px' height='16px' style='vertical-align:bottom;'>"); // if (bModificable) // sb.Append(" <nobr class='NBR MA' style='width:205px;' ondblclick=\"modificarDoc(this.parentNode.getAttribute('sTipo'), this.parentNode.id)\">" + sNomArchivo + "</nobr></td>"); // else // sb.Append(" <nobr class='NBR MANO' style='width:205px;'>" + sNomArchivo + "</nobr></td>"); // } // if (dr["t363_weblink"].ToString() == "") // { // if (bModificable) // sb.Append("<td class='MA' ondblclick=\"modificarDoc(this.parentNode.getAttribute('sTipo'), this.parentNode.id)\"></td>"); // else // sb.Append("<td class='MANO'></td>"); // } // else // { // string sHTTP = ""; // if (dr["t363_weblink"].ToString().IndexOf("http") == -1) sHTTP = "http://"; // sb.Append("<td><a href='" + sHTTP + dr["t363_weblink"].ToString() + "'><nobr class='NBR' style='width:215px'>" + dr["t363_weblink"].ToString() + "</nobr></a></td>"); // } // if (bModificable) // sb.Append("<td class='MA' ondblclick=\"modificarDoc(this.parentNode.getAttribute('sTipo'), this.parentNode.id)\"><nobr class='NBR' style='width:140px;'>" + dr["autor"].ToString() + "</nobr></td></tr>"); // else // sb.Append("<td class='MANO'><nobr class='NBR' style='width:140px;'>" + dr["autor"].ToString() + "</nobr></td></tr>"); // } // dr.Close(); // dr.Dispose(); // sb.Append("</tbody>"); // sb.Append("</table>"); // sb.Append("</div>"); // return "OK@#@" + sb.ToString(); //} protected string Grabar(string strDatos) { string sResul = ""; aListCorreo = new ArrayList(); #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 { string[] aValores = Regex.Split(strDatos, "##"); ///aValores[0] = IdTarea ///aValores[1] = nETE ///aValores[2] = sFFE ///aValores[3] = sObservaciones ///aValores[4] = nFinalizado; ///aValores[5] = nFinalizadoAntes; ///aValores[6] = nPT; ///aValores[7] = Desc Tarea; ///aValores[8] = sNotas; ///aValores[9] = txtNotas1; ///aValores[10] = txtNotas2; ///aValores[11] = txtNotas3; ///aValores[12] = txtNotas4; ///aValores[13] = sComentarioOriginal; ///aValores[14] = nETEOriginal; ///aValores[15] = sFFEOriginal; double nETE = 0; DateTime?sFFE = null; if (aValores[1] != "") { nETE = double.Parse(aValores[1]); } if (aValores[2] != "") { sFFE = DateTime.Parse(aValores[2]); } TareaRecurso.ActualizarEstimacion(tr, int.Parse(Session["NUM_EMPLEADO_IAP"].ToString()), int.Parse(aValores[0]), sFFE, nETE, Utilidades.unescape(aValores[3]), (aValores[4] == "1")?true:false); if (aValores[5] == "0" && aValores[4] == "1") { //Si antes la tarea no estaba finalizada y ahora sí, //Mail al (a los) RTPT indicando que se ha finalizado //y continuar con la grabación // TareaFinalizada(tr, int.Parse(aValores[0]), int.Parse(aValores[6])); } if (aValores[3] != aValores[13] || aValores[1] != aValores[14] || aValores[2] != aValores[15]) { //Si se han modificado los comentarios del técnico al gerente //Mail al (a los) RTPT // EstimacionModificada(tr, int.Parse(aValores[0]), int.Parse(aValores[6])); } if (aValores[8] == "1") { TAREAPSP.ActualizarNotas(tr, int.Parse(aValores[0]), Utilidades.unescape(aValores[9]), Utilidades.unescape(aValores[10]), Utilidades.unescape(aValores[11]), Utilidades.unescape(aValores[12])); } Conexion.CommitTransaccion(tr); sResul = "OK@#@"; } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al grabar los datos de la tarea", ex); } finally { Conexion.Cerrar(oConn); } try { if (aListCorreo.Count > 0) { Correo.EnviarCorreos(aListCorreo); } } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al enviar el mail a los responsables técnicos de proyectos técnicos", ex); } return(sResul); }
private string PonerRecurso(bool bSoloAsignadas, bool bSoloActivas, int iRecursoOrigen, string sTipoItem, int IdRecurso, int IdItem, string sHaciaProy, int IdNodo, int iUltCierreEco, int IdPsn, bool bNotifProf) { SqlConnection oConn = null; SqlTransaction tr = null; string sResul = ""; bool bAdmiteRecursoPST, bRecursoAsignado = false; try { if (sHaciaProy == "S") { bAdmiteRecursoPST = true; } else { bAdmiteRecursoPST = false; } //Abro transaccion oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); switch (sTipoItem) { case "E": PROYECTOSUBNODO.AsignarTareasProfesional(tr, bSoloAsignadas, bSoloActivas, iRecursoOrigen, IdItem, IdRecurso, null, null, -1, "", false, bAdmiteRecursoPST, IdNodo, iUltCierreEco); break; case "P": ProyTec.AsignarTareasProfesional(tr, bSoloAsignadas, bSoloActivas, iRecursoOrigen, IdItem, IdRecurso, null, null, -1, "", false, bAdmiteRecursoPST, IdPsn, IdNodo, iUltCierreEco); break; case "F": FASEPSP.AsignarTareasProfesional(tr, bSoloAsignadas, bSoloActivas, iRecursoOrigen, IdItem, IdRecurso, null, null, -1, "", false, bAdmiteRecursoPST, IdPsn, IdNodo, iUltCierreEco); break; case "A": ACTIVIDADPSP.AsignarTareasProfesional(tr, bSoloAsignadas, bSoloActivas, iRecursoOrigen, IdItem, IdRecurso, null, null, -1, "", false, bAdmiteRecursoPST, IdPsn, IdNodo, iUltCierreEco); break; case "T": //iNumAsig = TareaRecurso.InsertarSNE(tr, IdItem, IdRecurso, null, null, null, null, null, null, 1, null, "", false); bRecursoAsignado = TareaRecurso.InsertarTEC(tr, IdItem, IdRecurso, null, null, null, null, null, null, 1, null, "", false, bAdmiteRecursoPST, IdPsn, IdNodo, iUltCierreEco); if (bNotifProf && bRecursoAsignado) //se notifica a profesionales y no estaba ya asignado a la tarea { TAREAPSP oTar = TAREAPSP.Obtener(null, IdItem); TAREAPSP oTar2 = TAREAPSP.ObtenerOTC(null, IdItem); string oRec = "##" + IdItem.ToString() + "##" + IdRecurso.ToString() + "################"; oRec += Utilidades.escape(oTar.t332_destarea) + "##"; oRec += oTar.num_proyecto.ToString() + "##" + Utilidades.escape(oTar.nom_proyecto) + "##"; oRec += Utilidades.escape(oTar.t331_despt) + "##" + Utilidades.escape(oTar.t334_desfase) + "##" + Utilidades.escape(oTar.t335_desactividad) + "##"; oRec += Utilidades.escape(oTar2.t346_codpst) + "##" + Utilidades.escape(oTar2.t346_despst) + "##"; oRec += Utilidades.escape(oTar.t332_otl) + "##" + Utilidades.escape(oTar.t332_incidencia) + "##"; TareaRecurso.EnviarCorreoRecurso(tr, "I", oRec, "", "", "", "", Utilidades.escape(oTar.t332_mensaje)); } break; } //if (sHaciaProy == "S") //{ // if (!TareaRecurso.AsociadoAProyecto(tr, IdPsn, IdRecurso)) // {//lA FECHA DE alta en el proyecto será la siguiente al último mes cerrado del nodo // DateTime dtFechaAlta = Fechas.AnnomesAFecha(Fechas.AddAnnomes(iUltCierreEco, 1)); // TareaRecurso.AsociarAProyecto(tr, IdNodo, IdRecurso, IdPsn, null, dtFechaAlta, null); // } // else // TareaRecurso.ReAsociarAProyecto(tr, IdRecurso, IdPsn); //} Conexion.CommitTransaccion(tr); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = Errores.mostrarError("Error al grabar", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }
/// <summary> /// Genera la estructura técnica de un proyecto en SUPER, sobre un proyecto ya existente /// Se borran los item que están en SUPER y no están en OpenProj (salvo que tengan consumos) /// Si el ítem es nuevo en OpenProj - > se inserta en SUPER /// Si el ítem tiene codigo (<Numero1></Numero1>) se updatea en SUPER /// </summary> private string Importar(bool bBorrarEstructura) { StringBuilder sb = new StringBuilder(); int idPSN = -1, iMargen = 0, iCodUne = -1, iNumProy = -1, iPos, iAux; int iPT = -1, iFase = -1, iActiv = -1, iTarea = -1, iHito = -1, iOrden = 1; string sSituacion = "1", sAux, sTipo, sCodSuperItem = "", sNota = "", sAccion = "", sTaskUID = "", sCodTarea = "";//sMargen = "0", string sFIPL = "", sFFPL = "", sFFPR = "", sWorkTarea = "", sListaTareas = "", sListaRecursos = "", sDenTarea = "", sCodUser = ""; string sMensError = ""; bool bFacturable, bHayQueUpdatear = false;//, bEsHito = false decimal dETPL = 0, dETPR = 0; DateTime? dtFIPL = null; DateTime? dtFFPL = null; SqlConnection oConn = null; SqlTransaction tr = null; sListaTareas = this.hdnTareas.Value; sListaRecursos = this.hdnRecursos.Value; htTareas = new Hashtable(); #region Abro transaccion try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); } catch (Exception ex) { return("Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex)); } #endregion idPSN = int.Parse(this.hdnPSN.Value); try { iCodUne = PROYECTOSUBNODO.GetNodo(tr, idPSN); if (bBorrarEstructura) { if (PROYECTOSUBNODO.TieneConsumos(tr, idPSN)) { Conexion.CerrarTransaccion(tr); return("Error@#@El proyecto tiene consumos. No se puede eliminar la estructura actual."); } else { EstrProy.BorrarEstructura(tr, idPSN); } } else { //Vamos a meter lo que importamos debajo de lo que ya existe. Para ello obtenemos el mayor orden de los PT existentes iOrden = ProyTec.GetMaxOrden(tr, idPSN) + 1; } bFacturable = PROYECTOSUBNODO.GetFacturable(tr, idPSN); #region Inserto y/o updateo los items del proyecto string[] aTareas = Regex.Split(sListaTareas, @"/#/"); for (int i = 0; i < aTareas.Length - 1; i++) { string[] aElem = Regex.Split(aTareas[i], @"#@#"); #region recojo datos del XML /* * aElem[0]: sTipo + "##"; * aElem[1]: UID + "##"; * aElem[2]: sMargen + "##"; * aElem[3]: DENOMINACION + "##"; * aElem[4]: ETPL + "##"; * aElem[5]: FIPL + "##"; * aElem[6]: FFPL + "##"; * aElem[7]: ETPR + "##"; * aElem[8]: FFPR + "##"; * aElem[9]: NOTAS + "##"; */ sTipo = aElem[0]; sTaskUID = aElem[1]; iMargen = int.Parse(aElem[2]); sDenTarea = aElem[3]; dETPL = decimal.Parse(aElem[4]); dETPR = decimal.Parse(aElem[7]); sFIPL = aElem[5]; sFFPL = aElem[6]; sFFPR = aElem[8]; sNota = aElem[9]; #endregion #region Cálculo de códigos padre switch (sTipo) { case "P": iFase = -1; iActiv = -1; break; case "F": iActiv = -1; break; case "A": if (iMargen != 40) { iFase = -1; } break; case "T": if (iMargen == 40) { iFase = -1; } else if (iMargen != 60) { iFase = -1; iActiv = -1; } break; //case "HT": //case "HF": //case "HM": // iHito = int.Parse(aElem[7]); // if (sEstado == "D") sCadenaBorrado += sTipo + "@#@" + iHito.ToString() + @"##";//hito // break; } #endregion #region Inserto o updateo el item de la estructura en BBDD if (sCodSuperItem == "" || bBorrarEstructura) { sAccion = "I"; } else { if (sCodSuperItem == "0.0" || sCodSuperItem == "0,0") { sAccion = "I"; } else { sAccion = "U"; //El item esta en OpenProj -> marco en la hashtable para que no lo borre #region obtención del código del elemento updateado sAux = sCodSuperItem.Replace(",", "."); iAux = int.Parse(sAux); ItemsProyecto oItemAux = new ItemsProyecto(); switch (sTipo) { case "P": iPT = iAux; oItemAux = (ItemsProyecto)htPTs[iPT]; oItemAux.borrar = false; htPTs[iPT] = oItemAux; break; case "F": iFase = iAux; oItemAux = (ItemsProyecto)htFs[iFase]; oItemAux.borrar = false; htFs[iFase] = oItemAux; break; case "A": iActiv = iAux; oItemAux = (ItemsProyecto)htAs[iActiv]; oItemAux.borrar = false; htAs[iActiv] = oItemAux; break; case "T": iTarea = iAux; oItemAux = (ItemsProyecto)htItems[iTarea]; oItemAux.borrar = false; htItems[iTarea] = oItemAux; break; case "HF": iHito = iAux; oItemAux = (ItemsProyecto)htHFs[iHito]; oItemAux.borrar = false; htHFs[iHito] = oItemAux; break; } //if (sTipo.Substring(0, 1) == "H") //{ // AsociarTareasHitos(tr, iT305IdProy, iPT, iFase, iActiv, iTarea, iHito, iMargen); //} #endregion } } if (sAccion == "I") { sAux = OpenProj.Insertar(tr, iCodUne, iNumProy, idPSN, sTipo, sDenTarea, iPT, iFase, iActiv, iMargen, iOrden, sFIPL, sFFPL, dETPL, sFFPR, dETPR, Fechas.primerDiaMes(DateTime.Now).ToShortDateString(), "", 0, bFacturable, false, true, sSituacion, sNota, 0 ); #region obtención del código del elemento grabado iPos = sAux.IndexOf("##"); iAux = int.Parse(sAux.Substring(0, iPos)); switch (sTipo) { case "P": iPT = iAux; break; case "F": iFase = iAux; break; case "A": iActiv = iAux; break; case "T": iTarea = iAux; htTareas.Add(sTaskUID, iTarea.ToString()); break; //case "HT": // iHito = iAux; // break; } //if (sTipo.Substring(0, 1) == "H") //{ // AsociarTareasHitos(tr, iT305IdProy, iPT, iFase, iActiv, iTarea, iHito, iMargen); //} #endregion } else {//Hay que updatear el item (si hay algún cambio) bHayQueUpdatear = false; #region Mira si hay algún datos distinto para ver si hay que updatear el registro en la BBDD ItemsProyecto oItem = new ItemsProyecto(); switch (sTipo) { case "T": oItem = (ItemsProyecto)htItems[iTarea]; break; case "P": oItem = (ItemsProyecto)htPTs[iPT]; break; case "F": oItem = (ItemsProyecto)htFs[iFase]; break; case "A": oItem = (ItemsProyecto)htAs[iActiv]; break; case "HF": oItem = (ItemsProyecto)htHFs[iHito]; break; } if (oItem.nombre != sDenTarea) { bHayQueUpdatear = true; } else { if (oItem.descripcion != sNota) { bHayQueUpdatear = true; } else { if (sTipo == "T") { if (oItem.PRIMER_CONSUMO.Substring(0, 10) != sFIPL) { bHayQueUpdatear = true; } else { if (oItem.FFPR.Substring(0, 10) != sFFPR) { bHayQueUpdatear = true; } else { if (oItem.ETPR != dETPR) { bHayQueUpdatear = true; } } } } } } #endregion if (bHayQueUpdatear) { OpenProj.Modificar(tr, iCodUne, idPSN, sTipo, sDenTarea, iPT, iFase, iActiv, iTarea, iHito, iMargen, iOrden, sFIPL, sFFPL, dETPL, sNota); } } iOrden++; #endregion } #endregion #region Si hay recursos con nº empleado SUPER y con asignación a tarea, los meto bool bAux = false; string[] aRecursos = Regex.Split(sListaRecursos, @"/#/"); for (int i = 0; i < aRecursos.Length - 1; i++) { string[] aElem = Regex.Split(aRecursos[i], @"#@#"); //Recojo el código SUPER del recurso en la tarea sTaskUID = aElem[0]; sCodUser = aElem[1]; sWorkTarea = aElem[2]; sFIPL = aElem[3]; sFFPL = aElem[4]; if (sFIPL != "") { dtFIPL = DateTime.Parse(sFIPL); } if (sFFPL != "") { dtFFPL = DateTime.Parse(sFFPL); } if (sCodUser != "") { sCodTarea = htTareas[sTaskUID].ToString(); if (sCodTarea != "" && sWorkTarea != "") { bAux = TareaRecurso.InsertarTEC(tr, int.Parse(sCodTarea), int.Parse(sCodUser), null, null, double.Parse(sWorkTarea), dtFIPL, dtFFPL, null, 1, "", "", true, true, idPSN, -1, -1); if (!bAux) { sMensError += "Por restricciones del proyecto no es posible asignar el empleado " + sCodUser + " a la tarea " + sCodTarea + "\n"; } TareaRecurso.UpdateEsfuerzo(tr, int.Parse(sCodTarea), int.Parse(sCodUser), null, double.Parse(sWorkTarea), dtFIPL, dtFFPL, null, 1); } } } #endregion #region borro los items que estando en SUPER no están en OpenProj (si es tarea que no tenga consumo) //if (!bBorrarEstructura) //{ // ItemsProyecto oItemD = new ItemsProyecto(); // //Borrado de Proyectos Técnicos // foreach (DictionaryEntry item in htPTs) // { // oItemD = (ItemsProyecto)item.Value; // if (oItemD.borrar) // ProyTec.Eliminar(tr, oItemD.codPT); // } // //Borrado de Fases // foreach (DictionaryEntry item in htFs) // { // oItemD = (ItemsProyecto)item.Value; // if (oItemD.borrar) // FASEPSP.Delete(tr, oItemD.codFase); // } // //Borrado de Actividades // foreach (DictionaryEntry item in htAs) // { // oItemD = (ItemsProyecto)item.Value; // if (oItemD.borrar) // ACTIVIDADPSP.Delete(tr, oItemD.codActiv); // } // //Borrado de Hitos de fecha // foreach (DictionaryEntry item in htHFs) // { // oItemD = (ItemsProyecto)item.Value; // if (oItemD.borrar) // HITOPSP.Delete(tr, "HF", oItemD.codTarea); // } // //Borrado de Tareas que no tengan consumos // foreach (DictionaryEntry item in htItems) // { // oItemD = (ItemsProyecto)item.Value; // if (oItemD.borrar) // { // if (oItemD.Consumido == 0) // TAREAPSP.Delete(tr, oItemD.codTarea); // } // } //} #endregion //Cierro transaccion Conexion.CommitTransaccion(tr); if (sMensError == "") { sMensError = "OK"; } else { sMensError = "OKMSG@#@" + sMensError; } return(sMensError); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); return(Errores.mostrarError("Error al cargar la estructura a partir del fichero XML", ex)); } finally { Conexion.Cerrar(oConn); } }