コード例 #1
0
    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.&nbsp;:</label>" + oTar.t331_despt.Replace((char)34, (char)39));
                sb.Append("<br><label style='width:60px'>Fase&nbsp;:</label>" + oTar.t334_desfase.Replace((char)34, (char)39));
                sb.Append("<br><label style='width:60px'>Actividad&nbsp;:</label>" + oTar.t335_desactividad.Replace((char)34, (char)39));
                sb.Append("<br><label style='width:60px'>Tarea&nbsp;:</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));
        }
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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);
        }
    }
コード例 #4
0
    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);
    }
コード例 #5
0
    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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;</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);
    }
コード例 #6
0
    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;
        }
    }
コード例 #7
0
    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);
    }
コード例 #8
0
    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);
    }
コード例 #9
0
    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>&nbsp;<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>&nbsp;");
            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>&nbsp;<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>&nbsp;</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;
    }