private string getTarea1(string sTarea) { StringBuilder sb = new StringBuilder(); string sId; try { TAREAPSP oTar = TAREAPSP.Obtener(null, int.Parse(sTarea.Replace(".", ""))); sb.Append("<div style='background-image:url(../../../../Images/imgFT16.gif); width: 460px;'>"); sb.Append("<table id='tblOpciones' class='texto MANO' style='width: 460px;' mantenimiento='0'>"); sb.Append("<colgroup><col style='width: 460px;' /></colgroup>"); sb.Append("<tbody>"); if (oTar.t332_idtarea != 0) { sId = oTar.t332_idtarea.ToString(); sb.Append("<tr id='" + sId + "' onclick='ms(this);getRecursos(this.id)' style='height:16px'"); sb.Append(" style='noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] "); sb.Append("header=[<img src='../../../../images/info.gif' style='vertical-align:middle' /> Información] body=["); sb.Append("<label style='width:60px'>P.T. :</label>" + oTar.t331_despt.Replace((char)34, (char)39)); sb.Append("<br><label style='width:60px'>Fase :</label>" + oTar.t334_desfase.Replace((char)34, (char)39)); sb.Append("<br><label style='width:60px'>Actividad :</label>" + oTar.t335_desactividad.Replace((char)34, (char)39)); sb.Append("<br><label style='width:60px'>Tarea :</label>" + int.Parse(sId).ToString("#,###")); sb.Append(" " + oTar.t332_destarea.Replace((char)34, (char)39) + "] hideselects=[off]\">"); sb.Append("<td style='padding-left:3px;'><nobr class='NBR W445'>" + oTar.t332_destarea + "</nobr></td>"); sb.Append("</tr>"); } sb.Append("</tbody>"); sb.Append("</table></div>"); return("OK@#@" + oTar.t332_destarea + "@#@" + sb.ToString()); } catch (Exception ex) { return("Error@#@" + Errores.mostrarError("Error al obtener la tarea ", ex)); } }
private string buscarTarea(string sIdTarea) { string sResul = ""; StringBuilder sb = new StringBuilder(); int idTarea = int.Parse(sIdTarea); try { TAREAPSP oTar = TAREAPSP.Obtener(null, idTarea); if (oTar.t332_destarea != "") { sb.Append(oTar.t305_idproyectosubnodo + "##"); sb.Append(oTar.t303_idnodo + "##"); sb.Append(oTar.t301_estado + "##"); sb.Append(oTar.num_proyecto.ToString("#,###") + "##"); sb.Append(oTar.nom_proyecto + "##"); sb.Append(oTar.t331_idpt + "##"); sb.Append(oTar.t331_despt + "##"); sb.Append(oTar.t334_idfase + "##"); sb.Append(oTar.t334_desfase + "##"); sb.Append(oTar.t335_idactividad + "##"); sb.Append(oTar.t335_desactividad + "##"); sb.Append(idTarea.ToString("#,###") + "##"); sb.Append(oTar.t332_destarea + "///"); } sResul = "OK@#@" + sb.ToString(); } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al buscar la tarea", ex); } return(sResul); }
private void getTarea(string sIdTarea) { int idTarea = int.Parse(sIdTarea); try { TAREAPSP oTar = TAREAPSP.Obtener(null, idTarea); if (oTar.t332_destarea != "") { this.hdnT305IdProy.Value = oTar.t305_idproyectosubnodo.ToString(); this.txtEstado.Text = oTar.t301_estado; if (this.txtEstado.Text == "C" || this.txtEstado.Text == "H") { sAccesoBitacoraT = "L"; } this.txtNomProy.Text = oTar.nom_proyecto; this.txtCodProy.Text = oTar.num_proyecto.ToString("#,###"); switch (this.txtEstado.Text) { case "A": imgEstProy.ImageUrl = "~/images/imgIconoProyAbierto.gif"; imgEstProy.Attributes.Add("title", "Proyecto abierto"); break; case "C": imgEstProy.ImageUrl = "~/images/imgIconoProyCerrado.gif"; imgEstProy.Attributes.Add("title", "Proyecto cerrado"); break; case "P": imgEstProy.ImageUrl = "~/images/imgIconoProyPresup.gif"; imgEstProy.Attributes.Add("title", "Proyecto presupuestado"); break; case "H": imgEstProy.ImageUrl = "~/images/imgIconoProyHistorico.gif"; imgEstProy.Attributes.Add("title", "Proyecto histórico"); break; } this.hdnIdPT.Text = oTar.t331_idpt.ToString(); this.txtDesPT.Text = oTar.t331_despt; this.hdnIdFase.Text = oTar.t334_idfase.ToString(); this.txtFase.Text = oTar.t334_desfase; this.hdnIdActividad.Text = oTar.t335_idactividad.ToString(); this.txtActividad.Text = oTar.t335_desactividad; this.txtIdTarea.Text = idTarea.ToString("#,###"); this.txtDesTarea.Text = oTar.t332_destarea.Replace("<", " "); } } catch (Exception ex) { Errores.mostrarError("Error al buscar la tarea", 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 static string EnviarCorreoAlerta(string sIdAsunto, string strDatosTarea, string slIntegrantes, bool bAlta) { string sResul = "", sTexto = "", sTO = "", sAux, sIdResponsable, slMails, sToAux = ""; string sAsunto = "", sAccionBD = ""; bool bNotificable = false; ArrayList aListCorreo = new ArrayList(); StringBuilder sb = new StringBuilder(); try { string[] aDatosTarea = Regex.Split(strDatosTarea, "##"); sIdResponsable = aDatosTarea[20]; //slMails = Utilidades.unescape(aDatosTarea[7]); slMails = aDatosTarea[7]; if (slMails == "" && sIdResponsable == "") { return("OK@#@"); } sAsunto = "Alerta de asunto en Bitácora de tarea."; if (bAlta) { sb.Append("<BR>SUPER le informa de la generación del siguiente asunto:<BR><BR>"); } else { sb.Append("<BR>SUPER le informa de la modificación del siguiente asunto:<BR><BR>"); } // 0 -> id asunto (si -1 es un alta) // 1 -> descripcion corta // 2 -> descripcion larga // 3 -> referencia externa // 4 -> f/notificación // 5 -> f/fin // 6 -> f/limite // 7 -> alerta // 8 -> departamento // 9 -> tipo // 10-> estado // 11-> severidad // 12-> prioridad // 13-> sistema // 14-> esfuerzo planificado // 15-> esfuerzo real // 16 -> observaciones // 17 -> cod une // 18 -> cod Tarea // 19 -> notificador // 20 -> id responsable // 21 -> estado anterior // 22 -> nombre responsable // 23 -> desc tipo // 24-> desc estado // 25-> desc severidad // 26-> desc prioridad TAREAPSP oTar = TAREAPSP.Obtener(null, int.Parse(aDatosTarea[18])); sb.Append("<label style='width:120px'>Proyecto económico: </label>" + oTar.num_proyecto.ToString("#,###") + @" - " + oTar.nom_proyecto + "<br>"); sb.Append("<label style='width:120px'>Proyecto técnico: </label>" + oTar.t331_despt + "<br>"); sb.Append("<label style='width:120px'>Fase: </label>" + oTar.t334_desfase + "<br>"); sb.Append("<label style='width:120px'>Actividad: </label>" + oTar.t335_desactividad + "<br>"); sb.Append("<label style='width:120px'>Tarea: </label>" + int.Parse(aDatosTarea[18]).ToString("#,###") + @" - " + oTar.t332_destarea + "<br>"); sb.Append("<label style='width:120px'>Asunto: </label><b>" + sIdAsunto + @" - " + Utilidades.unescape(aDatosTarea[1]) + "</b><br><br>"); sb.Append("<b>Información del asunto:</b><br>"); sb.Append("<label style='width:120px'>Responsable: </label>" + Utilidades.unescape(aDatosTarea[22]) + "<br>"); sAux = aDatosTarea[6]; if (sAux == "") { sb.Append("<label style='width:120px'>F/Límite: </label> <br>"); } else { sb.Append("<label style='width:120px'>F/Límite: </label>" + sAux.Substring(0, 10) + "<br>"); } sAux = aDatosTarea[5]; if (sAux == "") { sb.Append("<label style='width:120px'>F/Fin: </label> <br>"); } else { sb.Append("<label style='width:120px'>F/Fin: </label>" + sAux.Substring(0, 10) + "<br>"); } sb.Append("<label style='width:120px'>Ref. Externa: </label>" + Utilidades.unescape(aDatosTarea[3]) + "<br>"); sb.Append("<label style='width:120px'>Esfuerzo planificado: </label>" + Utilidades.unescape(aDatosTarea[14]) + "<br>"); sb.Append("<label style='width:120px'>Esfuerzo real: </label>" + Utilidades.unescape(aDatosTarea[15]) + "<br>"); sb.Append("<label style='width:120px'>Severidad: </label>" + Utilidades.unescape(aDatosTarea[25]) + "<br>"); sb.Append("<label style='width:120px'>Prioridad: </label>" + Utilidades.unescape(aDatosTarea[26]) + "<br>"); sb.Append("<label style='width:120px'>Tipo: </label>" + Utilidades.unescape(aDatosTarea[23]) + "<br>"); sb.Append("<label style='width:120px'>Estado: </label>" + Utilidades.unescape(aDatosTarea[24]) + "<br>"); sb.Append("<label style='width:120px'>Sistema afectado: </label>" + Utilidades.unescape(aDatosTarea[13]) + "<br><br>"); //descripcion larga sb.Append("<b><label style='width:120px'>Descripción: </label></b>" + Utilidades.unescape(aDatosTarea[2]) + "<br><br>"); //observaciones sb.Append("<b><label style='width:120px'>Observaciones: </label></b>" + Utilidades.unescape(aDatosTarea[16]) + "<br><br>"); //Departamento sb.Append("<b><label style='width:120px'>Departamento: </label></b>" + Utilidades.unescape(aDatosTarea[8]) + "<br><br>"); //Obtengo la lista de e-mail a los que alertar if (!slMails.Contains(";")) { slMails += ";"; } string[] aMails = Regex.Split(slMails, ";"); //Genero una tabla con la lista de e-mails a notificar sb.Append("<b><label style='width:400px'>Relación de e-mails a notificar: </label></b> <br>"); sb.Append("<table width='400px' style='padding:10px;'>"); sb.Append("<colgroup><col style='width:400px;' /></colgroup>"); sb.Append("<tbody>"); for (int i = 0; i < aMails.Length; i++) { sToAux = aMails[i].Trim(); if (sToAux != "") { sb.Append("<tr><td style='padding-left:5px;font-size:11px;'>"); sTO = Utilidades.unescape(aMails[i]); sAux = sTO.Substring(0, 2); if (sAux == "\r\n") { sTO = sTO.Substring(2); } sb.Append(sTO); sb.Append("</td></tr>"); } } sb.Append("</tbody>"); sb.Append("</table><br>"); //Genero una tabla con la lista de profesionales a notificar sb.Append("<b><label style='width:400px'>Relación de profesionales asignados: </label> </b><br>"); sb.Append("<table width='400px' style='padding:10px;'>"); sb.Append("<colgroup><col style='width:400px;' /></colgroup>"); sb.Append("<tbody>"); if (slIntegrantes != "") {//Con la cadena generamos una lista y la recorremos string[] aPersonas = Regex.Split(slIntegrantes, @"///"); for (int i = 0; i < aPersonas.Length; i++) { if (aPersonas[i] != "") { string[] aIntegrante = Regex.Split(aPersonas[i], @"##"); sAccionBD = aIntegrante[0]; if (aIntegrante[2] == "1") { bNotificable = true; } else { bNotificable = false; } switch (sAccionBD) { case "": case "I": case "U": case "N": sb.Append("<tr><td style='padding-left:5px;font-size:11px;'>"); sb.Append(Utilidades.unescape(aIntegrante[3])); sb.Append("</td></tr>"); break; } } }//for } sb.Append("</tbody>"); sb.Append("</table><br>"); sTexto = sb.ToString(); //Envío e-mail al responsable del asunto if (sIdResponsable != "") { //sTO = Recurso.CodigoRed(int.Parse(sIdResponsable)); sTO = SUPER.Capa_Negocio.Recurso.GetDireccionMail(int.Parse(sIdResponsable)); string[] aMail = { sAsunto, sTexto, sTO }; aListCorreo.Add(aMail); } //Obtengo la lista de e-mail a los que alertar y envío un correo a cada uno for (int i = 0; i < aMails.Length; i++) { if (aMails[i] != "") { sTO = aMails[i]; //sTO.Replace((char)10, (char)160); //sTO.Replace((char)13, (char)160); sAux = sTO.Substring(0, 2); if (sAux == "\r\n") { sTO = sTO.Substring(2); } sTO.Trim(); string[] aMail = { sAsunto, sTexto, sTO }; aListCorreo.Add(aMail); } } //Obtengo la lista de profesionales a los que notificar y envío un correo a cada uno if (slIntegrantes == "") {//Tenemos lista vacía. No hacemos nada } else {//Con la cadena generamos una lista y la recorremos string[] aPersonas = Regex.Split(slIntegrantes, @"///"); for (int i = 0; i < aPersonas.Length; i++) { if (aPersonas[i] != "") { string[] aIntegrante = Regex.Split(aPersonas[i], @"##"); sAccionBD = aIntegrante[0]; sTO = aIntegrante[4]; if (aIntegrante[2] == "1") { bNotificable = true; } else { bNotificable = false; } if (bNotificable) { switch (sAccionBD) { case "": case "I": case "U": case "N": string[] aMail = { sAsunto, sTexto, sTO }; aListCorreo.Add(aMail); break; } } } }//for } Correo.EnviarCorreos(aListCorreo); sResul = "OK@#@"; } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al enviar correo de asunto de Bitácora de tarea. Asunto=" + sIdAsunto, ex); } return(sResul); }
private void ObtenerDatosAsunto() { int nTarea = 0; //Relleno el combo de tipo de asunto this.cboTipo.DataValueField = "t384_idtipo"; this.cboTipo.DataTextField = "t384_destipo"; this.cboTipo.DataSource = TIPOASUNTO.Catalogo("", null, null, 3, 0); this.cboTipo.DataBind(); if (nIdAsunto == -1) { nTarea = nIdT; txtValCre.Text = DateTime.Now.ToShortDateString(); txtValNotif.Text = DateTime.Now.ToShortDateString(); this.txtIdResponsable.Text = Session["NUM_EMPLEADO_ENTRADA"].ToString(); this.txtResponsable.Text = Session["APELLIDO1"].ToString() + " " + Session["APELLIDO2"].ToString() + ", " + Session["NOMBRE"].ToString(); this.txtRegistrador.Text = Session["APELLIDO1"].ToString() + " " + Session["APELLIDO2"].ToString() + ", " + Session["NOMBRE"].ToString(); } else { ASUNTO_T o = ASUNTO_T.Select(tr, nIdAsunto); nTarea = o.t332_idtarea; txtIdAsunto.Text = o.t600_idasunto.ToString(); txtDesAsunto.Text = o.t600_desasunto; txtDescripcion.Text = o.t600_desasuntolong; this.txtEtp.Text = o.t600_etp.ToString("N"); this.txtEtr.Text = o.t600_etr.ToString("N");//#,##0.## if (o.t600_fcreacion.Year > 1900) { txtValCre.Text = o.t600_fcreacion.ToShortDateString(); } if (o.t600_fnotificacion.Year > 1900) { txtValNotif.Text = o.t600_fnotificacion.ToShortDateString(); } if (o.t600_flimite.Year > 1900) { txtValLim.Text = o.t600_flimite.ToShortDateString(); } if (o.t600_ffin.Year > 1900) { txtValFin.Text = o.t600_ffin.ToShortDateString(); } this.txtDpto.Text = o.t600_dpto; this.txtAlerta.Text = o.t600_alerta; this.txtObs.Text = o.t600_obs; this.txtRefExt.Text = o.t600_refexterna; this.txtSistema.Text = o.t600_sistema; this.cboEstado.SelectedValue = o.t600_estado.ToString(); this.cboEstado.Text = o.Estado; this.txtEstadoAnt.Text = o.t600_estado.ToString(); this.cboPrioridad.SelectedValue = o.t600_prioridad.ToString(); this.cboPrioridad.Text = o.Prioridad; this.cboSeveridad.SelectedValue = o.t600_severidad.ToString(); this.cboSeveridad.Text = o.Severidad; this.cboTipo.SelectedValue = o.t384_idtipo.ToString(); this.cboTipo.Text = o.Tipo; this.txtNotificador.Text = o.t600_notificador; this.txtIdResponsable.Text = o.t600_responsable.ToString(); this.txtResponsable.Text = o.Responsable; this.txtRegistrador.Text = o.Registrador; } TAREAPSP oTarea = TAREAPSP.Obtener(null, nTarea); PROYECTOSUBNODO oPSN = PROYECTOSUBNODO.Obtener(null, oTarea.t305_idproyectosubnodo); if (oPSN.t305_opd) { lblNumero.Style.Add("display", "none"); txtIdAsunto.Style.Add("display", "none"); lblCreacion.Style.Add("visibility", "hidden"); txtValCre.Style.Add("visibility", "hidden"); tsPestanas.Items[1].Disabled = true; } }
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); }
protected string Grabar(string sCopias, string slTareas) { string sIdTarea, sResul = "", sDesTarea = ""; int nIdTarea, iUsuario, nIdTareaNew; short nOrden = 0, nCopias = 0; byte nEstado = 1; DateTime?dValIni = null; DateTime?dValFin = null; DateTime?dPLIni = null; DateTime?dPLFin = null; DateTime?dPRFin = null; #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 { iUsuario = int.Parse(Session["NUM_EMPLEADO_ENTRADA"].ToString()); nCopias = short.Parse(sCopias); string[] aTarea = Regex.Split(slTareas, "##"); for (int i = 0; i < aTarea.Length; i++) { sIdTarea = aTarea[i]; if ((sIdTarea != "") && (sIdTarea != "0")) { nIdTarea = int.Parse(sIdTarea); TAREAPSP oTarea = TAREAPSP.Obtener(tr, nIdTarea); nOrden = TAREAPSP.flCalcularOrden2(null, oTarea.t331_idpt); //Por defecto la nueva tarea estará activa salvo que la original esté pendiente if (oTarea.t332_estado == 2) { nEstado = 2; } else { nEstado = 1; } if (oTarea.t332_fiv.ToString() != "") { dValIni = oTarea.t332_fiv; } if (oTarea.t332_ffv.ToString() != "") { dValFin = oTarea.t332_ffv; } if (oTarea.t332_fipl.ToString() != "") { dPLIni = oTarea.t332_fipl; } if (oTarea.t332_ffpl.ToString() != "") { dPLFin = oTarea.t332_ffpl; } if (oTarea.t332_ffpr.ToString() != "") { dPRFin = oTarea.t332_ffpr; } for (short j = 1; j <= nCopias; j++) { sDesTarea = "Copia " + j.ToString() + " de " + oTarea.t332_destarea; if (sDesTarea.Length > 100) { sDesTarea = sDesTarea.Substring(1, 100); } nIdTareaNew = TAREAPSP.Insert(tr , sDesTarea //Des. tarea; , oTarea.t332_destarealong //Des. larga de tarea; , oTarea.t331_idpt //Id PT , oTarea.t335_idactividad //IdActividad , iUsuario //promotor , iUsuario //último modificador , DateTime.Now //F.Alta , DateTime.Now //F.Ultima modificacion , dValIni //F.Inicio Vigencia , dValFin //F.Fin vigencia , nEstado //estado , dPLIni //F.Inicio Planificada , dPLFin //F.Fin Planificada , oTarea.t332_etpl //Esfuerzo total estimado , dPRFin //F.Fin Prevista , oTarea.t332_etpr //Esfuerzo total previsto , null //PST , oTarea.t332_cle //Control límite de esfuerzos , oTarea.t332_tipocle //tipo de control de límite de esfuerzo , nOrden //orden , oTarea.t332_facturable //facturable , decimal.Parse(oTarea.t332_presupuesto.ToString()) //presupuesto , null, //24 "", //OTL "", //INCIDENCIA "", //OBSERVACIONES oTarea.t332_notificable, //notificabled "", //NOTAS1 "", //NOTAS2 "", //NOTAS3 "", //NOTAS4 oTarea.t332_avance, //avance real oTarea.t332_avanceauto, //avance automatico (true/false) oTarea.t332_impiap, //imputable en IAP (true/false) false, //notas IAP oTarea.t332_heredanodo, //recursos heredados del nodo oTarea.t332_heredaproyeco, //recursos heredados del PE "", //mesaje generico para todos los profesionales oTarea.t332_notif_prof //Notificar a profesionales asociados , oTarea.t332_acceso_bitacora_iap , null //pendiente ultimo null modo facturación , oTarea.t332_horascomplementarias); POOL_GF_TAREA.DuplicarPoolGF(tr, nIdTarea, nIdTareaNew); //Asigno lo atributos estadístico que tuviera la tarea original AETAREAPSP.DuplicarAEs(tr, nIdTarea, nIdTareaNew); } //For copias } //IF } //FOR 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); } return(sResul); }
private static string EnviarCorreoAlerta(string sTipo, string strDatosTarea, string slMails, string slIntegrantes, string sIdResponsable, bool bAlta) { string sResul = "", sTexto = "", sTO = "", sAux, sToAux = "", sIdAccion = ""; string sAsunto = "", sAccionBD=""; bool bNotificable; ArrayList aListCorreo = new ArrayList(); StringBuilder sb = new StringBuilder(); try { if (slMails == "" && slIntegrantes == "" && sIdResponsable=="") return "OK@#@"; sAsunto = "Alerta de acción en Bitácora de tarea."; if (bAlta) sb.Append("<BR>SUPER le informa de la generación de la siguiente acción:<BR><BR>"); else sb.Append("<BR>SUPER le informa de la modificación de la siguiente acción:<BR><BR>"); string[] aDatosTarea = Regex.Split(strDatosTarea, "##"); //aDatosTarea[0] = hdnIdAccion //aDatosTarea[1] = txtDesAccion //aDatosTarea[2] = cod asunto //aDatosTarea[3] = des asunto //aDatosTarea[4] = f/limite //aDatosTarea[5] = f/fin //aDatosTarea[6] = avance //aDatosTarea[7] = descripción larga acción //aDatosTarea[8] = observaciones //aDatosTarea[9] = Dpto //aDatosTarea[10] = idTarea TAREAPSP oTar = TAREAPSP.Obtener(null, int.Parse(aDatosTarea[10])); sIdAccion = aDatosTarea[0]; sb.Append("<label style='width:120px'>Proyecto económico: </label>" + oTar.num_proyecto.ToString("#,###") + @" - " + oTar.nom_proyecto + "<br>"); sb.Append("<label style='width:120px'>Proyecto técnico: </label>" + oTar.t331_despt + "<br>"); sb.Append("<label style='width:120px'>Fase: </label>" + oTar.t334_desfase + "<br>"); sb.Append("<label style='width:120px'>Actividad: </label>" + oTar.t335_desactividad + "<br>"); sb.Append("<label style='width:120px'>Tarea: </label>" + int.Parse(aDatosTarea[10]).ToString("#,###") + @" - " + oTar.t332_destarea + "<br>"); //sb.Append("<label style='width:120px'>Asunto: </label>" + aDatosTarea[2] + @" - " + Utilidades.unescape(aDatosTarea[3]) + "<br>"); //sb.Append("<label style='width:120px'>Acción: </label><b>" + aDatosTarea[0] + @" - " + Utilidades.unescape(aDatosTarea[1]) + "</b><br><br>"); sb.Append("<label style='width:120px'>Asunto: </label>" + aDatosTarea[2] + @" - " + aDatosTarea[3] + "<br>"); sb.Append("<label style='width:120px'>Acción: </label><b>" + aDatosTarea[0] + @" - " + aDatosTarea[1] + "</b><br><br>"); sb.Append("<b>Información de la acción:</b><br>"); sAux = aDatosTarea[4]; if (sAux == "") sb.Append("<label style='width:120px'>F/Límite: </label> <br>"); else sb.Append("<label style='width:120px'>F/Límite: </label>" + sAux.Substring(0, 10) + "<br>"); sAux = aDatosTarea[5]; if (sAux == "") sb.Append("<label style='width:120px'>F/Fin: </label> "); else sb.Append("<label style='width:120px'>F/Fin: </label>" + sAux.Substring(0, 10)); //avance sAux = aDatosTarea[6]; sb.Append("<br><label style='width:120px'>Avance: </label>" + sAux + "<br><br>"); //descripcion larga //sAux = Utilidades.unescape(aDatosTarea[7]); sb.Append("<b><label style='width:120px'>Descripción: </label></b>" + aDatosTarea[7] + "<br><br>"); //observaciones //sAux = Utilidades.unescape(aDatosTarea[8]); sb.Append("<b><label style='width:120px'>Observaciones: </label></b><br>" + aDatosTarea[8]); //Departamento/Grupo //sAux = Utilidades.unescape(aDatosTarea[9]); sb.Append("<br><br><b><label style='width:120px'>Departamento/Grupo: </label></b>" + aDatosTarea[9]); sb.Append("<br><br>"); //Obtengo la lista de e-mail a los que alertar if (!slMails.Contains(";")) slMails += ";"; string[] aMails = Regex.Split(slMails, ";"); //Genero una tabla con la lista de e-mails a notificar sb.Append("<b><label style='width:400px'>Relación de e-mails a notificar: </label></b> <br>"); sb.Append("<table width='400px' style='padding:10px;'>"); sb.Append("<colgroup><col style='width:400px;' /></colgroup>"); sb.Append("<tbody>"); for (int i = 0; i < aMails.Length; i++) { sToAux = aMails[i].Trim(); if (sToAux != "") { sb.Append("<tr><td style='padding-left:5px;font-size:11px;'>"); //sTO = Utilidades.unescape(aMails[i]); sTO = sToAux; sAux = sTO.Substring(0, 2); if (sAux == "\r\n") sTO = sTO.Substring(2); sb.Append(sTO); sb.Append("</td></tr>"); } } sb.Append("</tbody>"); sb.Append("</table><br>"); //Genero una tabla con la lista de profesionales a notificar sb.Append("<b><label style='width:400px'>Relación de profesionales asignados: </label> </b><br>"); sb.Append("<table width='400px' style='padding:10px;'>"); sb.Append("<colgroup><col style='width:400px;' /></colgroup>"); sb.Append("<tbody>"); if (slIntegrantes != "") {//Con la cadena generamos una lista y la recorremos string[] aPersonas = Regex.Split(slIntegrantes, @"///"); for (int i = 0; i < aPersonas.Length; i++) { if (aPersonas[i] != "") { string[] aIntegrante = Regex.Split(aPersonas[i], @"##"); sAccionBD = aIntegrante[0]; if (aIntegrante[2] == "1") bNotificable = true; else bNotificable = false; switch (sAccionBD) { case "": case "I": case "U": case "N": sb.Append("<tr><td style='padding-left:5px;font-size:11px;'>"); sb.Append(Utilidades.unescape(aIntegrante[3])); sb.Append("</td></tr>"); break; } } }//for } sb.Append("</tbody>"); sb.Append("</table><br>"); sTexto = sb.ToString(); //Envío e-mail al responsable del asunto if (sIdResponsable != "") { //sTO = Recurso.CodigoRed(int.Parse(sIdResponsable)); sTO = SUPER.Capa_Negocio.Recurso.GetDireccionMail(int.Parse(sIdResponsable)); string[] aMail = { sAsunto, sTexto, sTO }; aListCorreo.Add(aMail); } //Obtengo la lista de e-mail a los que alertar y envío un correo a cada uno for (int i = 0; i < aMails.Length; i++) { if (aMails[i] != "") { sTO = aMails[i]; //sTO = Utilidades.unescape(aMails[i]); sAux = sTO.Substring(0, 2); if (sAux == "\r\n") sTO = sTO.Substring(2); sTO.Trim(); string[] aMail = { sAsunto, sTexto, sTO }; aListCorreo.Add(aMail); } } //Obtengo la lista de profesionales a los que notificar y envío un correo a cada uno if (slIntegrantes == "") {//Tenemos lista vacía. No hacemos nada } else {//Con la cadena generamos una lista y la recorremos string[] aPersonas = Regex.Split(slIntegrantes, @"///"); for (int i = 0; i < aPersonas.Length; i++) { if (aPersonas[i] != "") { string[] aIntegrante = Regex.Split(aPersonas[i], @"##"); sAccionBD = aIntegrante[0]; sTO = aIntegrante[4]; if (aIntegrante[2] == "1") bNotificable = true; else bNotificable = false; if (bNotificable) { switch (sAccionBD) { case "": case "I": case "U": case "N": string[] aMail = { sAsunto, sTexto, sTO }; aListCorreo.Add(aMail); break; } } } }//for } Correo.EnviarCorreos(aListCorreo); sResul = "OK@#@"; } catch (Exception ex) { sResul = "Error@#@" + Errores.mostrarError("Error al enviar correo de acción de Bitácora de Tarea (sIdResponsable=" + sIdResponsable + " sIdAccion=" + sIdAccion + ").", ex); } return sResul; }