private string obtenerDatos(string sDesde, string sHasta, string sNivelEstructura,
                                string sCategoria, string sCualidad, string sClientes,
                                string sResponsables, string sNaturalezas, string sHorizontal, string sModeloContrato,
                                string sContrato, string sIDEstructura, string sSectores, string sSegmentos,
                                string sComparacionLogica,
                                string sCNP, string sCSN1P, string sCSN2P, string sCSN3P, string sCSN4P, string sPSN)
    {
        int           nWidthTabla     = 470; //370+100
        int           nColumnasACrear = 0;
        StringBuilder sb = new StringBuilder();
        StringBuilder sbColgroupTitulo = new StringBuilder();
        StringBuilder sbTitulo         = new StringBuilder();
        StringBuilder sbResultado      = new StringBuilder();
        string        sTablaTitulo     = "";
        string        sTablaContenido  = "";
        string        sTablaResultado  = "";
        decimal       nRatio           = 0;

        string sColor = "";

        try
        {
            sbColgroupTitulo.Append("<colgroup>");
            sbColgroupTitulo.Append("<col style='width:350px;' />");
            sbColgroupTitulo.Append("<col style='width:120px;' />");

            DataSet ds = ConsultasPGE.ObtenerDatosFichaEconomica((int)Session["UsuarioActual"],
                                                                 int.Parse(sDesde), int.Parse(sHasta),
                                                                 (sNivelEstructura == "0")? null:(int?)int.Parse(sNivelEstructura),
                                                                 sCategoria,
                                                                 sCualidad,
                                                                 sClientes,
                                                                 sResponsables,
                                                                 sNaturalezas,
                                                                 sHorizontal,
                                                                 sModeloContrato,
                                                                 sContrato,
                                                                 sIDEstructura,
                                                                 sSectores,
                                                                 sSegmentos,
                                                                 (sComparacionLogica == "1")? true:false,
                                                                 sCNP,
                                                                 sCSN1P,
                                                                 sCSN2P,
                                                                 sCSN3P,
                                                                 sCSN4P,
                                                                 sPSN,
                                                                 Session["MONEDA_VDC"].ToString()
                                                                 );

            bool bTitulos = false;
            int  i        = 0;
            foreach (DataRow oFila in ds.Tables[0].Rows)
            {
                if (!bTitulos)
                {
                    sbTitulo.Append("<tr class='TBLINI'>");
                    sbTitulo.Append("<td></td>");
                    for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
                    {
                        if (x == 4)
                        {
                            string[] aNomMeses = Regex.Split(ds.Tables[0].Columns[x].ColumnName, "-");
                            sbTitulo.Append("<td>");
                            sbTitulo.Append(Fechas.AnnomesAFechaDescCorta(int.Parse(aNomMeses[0].ToString())));
                            sbTitulo.Append(" - ");
                            sbTitulo.Append(Fechas.AnnomesAFechaDescCorta(int.Parse(aNomMeses[1].ToString())));
                            sbTitulo.Append("</td>");
                        }
                        else
                        {
                            sbColgroupTitulo.Append("<col style='width:100px;' />");
                            sbTitulo.Append("<td>" + Fechas.AnnomesAFechaDescLarga(int.Parse(ds.Tables[0].Columns[x].ColumnName)) + "</td>");
                            nColumnasACrear++;
                        }
                    }
                    sbTitulo.Append("</tr>");
                    bTitulos = true;
                }

                if (oFila["t454_idformula"].ToString() != "3" &&
                    oFila["t454_idformula"].ToString() != "1" &&
                    oFila["t454_idformula"].ToString() != "2" &&
                    oFila["t454_idformula"].ToString() != "8"
                    )
                {
                    switch (oFila["nivel"].ToString())
                    {
                    case "1":
                        sb.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' ");
                        //sb.Append(" style='display:block; height: 20px' nivel='1' desplegado='1'>");
                        sb.Append(" style='display:table-row; height: 20px' nivel='1' desplegado='1'>");
                        if (oFila["t454_idformula"].ToString() != "5")
                        {
                            sb.Append("<td style='text-align:left;'><IMG class=NSEG1 onclick=mostrar(this) src='../../../../images/plus.gif' style='cursor:pointer;'>");
                        }
                        else
                        {
                            sb.Append("<td style='text-align:left;'><IMG class=NSEG1 src='../../../../images/imgSeparador.gif' style='width:9px;'>");
                        }

                        sb.Append("<nobr class='NBR' style='width:320px;'>" + oFila["t454_literal"].ToString() + "</nobr></td>");
                        break;

                    case "2":
                        sb.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' ");
                        sb.Append(" style='display:none; height: 20px' nivel='2' desplegado='1'>");
                        if (oFila["t454_idformula"].ToString() == "33" || oFila["t454_idformula"].ToString() == "34")
                        {
                            sb.Append("<td style='text-align:left;'><IMG class=NSEG2 onclick=mostrar(this) src='../../../../images/plus.gif' style='cursor:pointer;'>");
                        }
                        else
                        {
                            sb.Append("<td style='text-align:left;'><IMG class=NSEG2 src='../../../../images/imgSeparador.gif' style='width:9px;'>");
                        }

                        sb.Append("<nobr class='NBR' style='width:300px;'>" + oFila["t454_literal"].ToString() + "</nobr></td>");
                        break;

                    case "3":
                        sb.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' ");
                        sb.Append(" style='display:none; height:20px;' nivel='3'>");
                        sb.Append("<td style='text-align:left;'><IMG class=NSEG3 src='../../../../images/imgSeparador.gif'>");
                        sb.Append("<nobr class='NBR' style='width:280px;'>" + oFila["t454_literal"].ToString() + "</nobr></td>");
                        break;
                    }

                    for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
                    {
                        if (decimal.Parse(oFila.ItemArray[x].ToString()) < 0)
                        {
                            sColor = "red";
                        }
                        else
                        {
                            sColor = "black";
                        }
                        sb.Append("<td style='color:" + sColor + "'>" + decimal.Parse(oFila.ItemArray[x].ToString()).ToString("N") + "</td>");
                    }
                    sb.Append("</tr>");
                }
                else
                {
                    if (oFila["t454_idformula"].ToString() == "8")
                    {
                        sbResultado.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' style='height:17px' class='TBLFIN'>");
                        sbResultado.Append("<td style='text-align:left;'><nobr class='NBR W320 NSEG1'>Ratio</nobr></td>");
                        for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
                        {
                            if (decimal.Parse(oFila.ItemArray[x].ToString()) == 0)
                            {
                                nRatio = 0;
                            }
                            else
                            {
                                nRatio = decimal.Parse(ds.Tables[0].Rows[i - 1].ItemArray[x].ToString()) * 100 / decimal.Parse(oFila.ItemArray[x].ToString());
                            }
                            if (nRatio < 0)
                            {
                                sColor = "red";
                            }
                            else
                            {
                                sColor = "black";
                            }
                            sbResultado.Append("<td style='color:" + sColor + "'>" + nRatio.ToString("N") + " %</td>");
                        }
                        sbResultado.Append("</tr>");
                    }
                    else
                    {
                        sbResultado.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' style='HEIGHT: 17px' class='TBLFIN'>");
                        if (oFila["t454_idformula"].ToString() == "3")
                        {
                            sbResultado.Append("<td style='text-align:left;'><nobr class='NSEG1'>" + oFila["t454_literal"].ToString() + " / </nobr><span style='color:red'>Facturación anticipada</span></td>");
                        }
                        else
                        {
                            sbResultado.Append("<td style='text-align:left;'><nobr class='NBR W320 NSEG1'>" + oFila["t454_literal"].ToString() + "</nobr></td>");
                        }
                        for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
                        {
                            if (decimal.Parse(oFila.ItemArray[x].ToString()) < 0)
                            {
                                sColor = "red";
                            }
                            else
                            {
                                sColor = "black";
                            }
                            sbResultado.Append("<td style='color:" + sColor + "'>" + decimal.Parse(oFila.ItemArray[x].ToString()).ToString("N") + "</td>");
                        }
                        sbResultado.Append("</tr>");
                    }
                }

                i++;
            }
            ds.Dispose();

            nWidthTabla      = nWidthTabla + nColumnasACrear * 100;
            sTablaContenido  = "<table id='tblDatos' class='texto' style='width:" + nWidthTabla.ToString() + "px; ' cellpadding='0'>";
            sTablaContenido += sbColgroupTitulo.ToString();
            sTablaContenido += "</colgroup>";
            sTablaContenido += sb.ToString();
            //sTablaContenido += "</tbody>";
            sTablaContenido += "</table>";

            sTablaTitulo  = "<table id='tblTitulo' class='texto' style='width:" + nWidthTabla.ToString() + "px;' cellpadding='0'>";
            sTablaTitulo += sbColgroupTitulo.ToString();
            sTablaTitulo += "</colgroup>";
            sTablaTitulo += sbTitulo.ToString();
            sTablaTitulo += "</table>";

            sTablaResultado  = "<table id='tblResultado' class='texto' style='width:" + nWidthTabla.ToString() + "px;' cellpadding='0'>";
            sTablaResultado += sbColgroupTitulo.ToString();
            sTablaResultado += "</colgroup>";
            sTablaResultado += sbResultado.ToString();
            sTablaResultado += "</table>";

            return("OK@#@" + sTablaTitulo + "@#@" + sTablaContenido + "@#@" + sTablaResultado);
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los datos económicos.", ex));
        }
    }
    private string getProyectosNoCerrados(int iAnoMes)
    {
        try
        {
            StringBuilder sb = new StringBuilder();
            bool          bMesesOK = true, bProcesable = true;

            sb.Append("<table class='texto' id=tblDatos style='width: 970px;' border='0'>");
            sb.Append("<colgroup>");
            sb.Append("<col style='width:25px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:55px;' />");
            sb.Append("<col style='width:220px;' />");
            sb.Append("<col style='width:55px;' />");
            sb.Append("<col style='width:50px;' />");
            sb.Append("<col style='width:60px;' />");
            sb.Append("<col style='width:60px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:60px;' />");//Contrato
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:25px;' />");
            sb.Append("</colgroup>");
            SqlDataReader dr = PROYECTOSUBNODO.ObtenerProyectosNoCerrados((int)Session["UsuarioActual"], iAnoMes);

            while (dr.Read())
            {
                bMesesOK    = true;
                bProcesable = true;

                sb.Append("<tr id='" + dr["t301_idproyecto"].ToString() + "' ");
                sb.Append("idPSN='" + dr["t305_idproyectosubnodo"].ToString() + "' ");
                sb.Append("monedaPSN='" + dr["t422_idmoneda_proyecto"].ToString() + "' ");

                sb.Append(" ondblclick='irCarrusel(this)' ");

                if (dr["faltan_CEC_obligatorios"].ToString() == "1" ||
                    dr["faltan_CED_obligatorios"].ToString() == "1" ||
                    (Fechas.AddAnnomes(int.Parse(dr["T303_ultcierreeco"].ToString()), 1) != int.Parse(dr["t325_anomes"].ToString()) && sOrigen != "carrusel")
                    )
                {
                    bProcesable = false;
                }
                if (bProcesable)
                {
                    sb.Append(" p='1'");
                }
                else
                {
                    sb.Append(" p='0'");
                }
                //sb.Append(" ondblclick='CierreProyecto(this)'  procesado='' ");
                //


                sb.Append(" procesado='' ");
                //if (iAnoMes == int.Parse(dr["t325_anomes"].ToString())) sb.Append(" class='MANO' ");
                sb.Append(" class='MA' ");
                sb.Append("style='height:20px;'>");

                if (dr["ajuste"].ToString() == "1")
                {
                    this.hdnExcepcion.Text = "1";
                }
                //Celda 1
                sb.Append("<td style='cursor:pointer;'>");
                if (bProcesable)
                {
                    sb.Append("<input type='checkbox' class='check' style='margin-left:5px;'/>");
                }
                sb.Append("</td>");
                //Celda 2
                if (dr["t305_cualidad"].ToString() == "C")
                {
                    sb.Append("<td><img src='../../../images/imgIconoContratante.gif' width='16px' height='16px' /></td>");
                }
                else
                {
                    sb.Append("<td><img src='../../../images/imgIconoRepPrecio.gif' width='16px' height='16px' /></td>");
                }
                //Celda 3
                sb.Append("<td style='text-align:right; padding-right:5px;'>" + int.Parse(dr["t301_idproyecto"].ToString()).ToString("#,###") + "</td>");
                //Celda 4
                if (iAnoMes != int.Parse(dr["t325_anomes"].ToString()))
                {
                    sb.Append("<td style='padding-left:3px;' style='color:red'>");
                }
                else
                {
                    sb.Append("<td style='padding-left:3px;'>");
                }

                sb.Append("<nobr class='NBR W210' style='noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../images/info.gif' style='vertical-align:middle' />  Información] body=[<label style='width:75px'>Proyecto:</label>" + dr["t301_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>Responsable:</label>" + dr["responsable"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>" + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + ":</label>" + dr["t303_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>Cliente:</label>" + dr["t302_denominacion"].ToString().Replace((char)34, (char)39) + "] hideselects=[off]\" ondblclick='irCarrusel(this.parentNode.parentNode)' >" + dr["t301_denominacion"].ToString().Replace((char)34, (char)39) + "</nobr></td>");

                //Celda 5
                sb.Append("<td>" + Fechas.AnnomesAFechaDescCorta(int.Parse(dr["T303_ultcierreeco"].ToString())) + "</td>");
                //Celda 6
                if (Fechas.AddAnnomes(int.Parse(dr["T303_ultcierreeco"].ToString()), 1) != int.Parse(dr["t325_anomes"].ToString()))
                {
                    sb.Append("<td style='color:red'>");
                    bMesesOK = false;
                }
                else
                {
                    sb.Append("<td>");
                }
                sb.Append(Fechas.AnnomesAFechaDescCorta(int.Parse(dr["t325_anomes"].ToString())) + "</td>");
                //Celda 7
                sb.Append("<td style='text-align:right; padding-right:2px;'>" + double.Parse(dr["consumoIAP"].ToString()).ToString("N") + "</td>");
                //Celda 8
                sb.Append("<td style='text-align:right; padding-right:2px;'>" + double.Parse(dr["consumoPGE"].ToString()).ToString("N") + "</td>");
                //Celda 9
                if (bMesesOK)
                {
                    sb.Append("<td style=text-align:center;'></td>");
                }
                else
                {
                    if (sOrigen == "carrusel")
                    {
                        sb.Append("<td style=text-align:center;'><img src='../../../Images/imgCalAma.gif' /></td>");
                    }
                    else
                    {
                        sb.Append("<td  style=text-align:center;'><img src='../../../Images/imgCalRojo.gif' /></td>");
                    }
                    this.hdnExcepcion.Text = "1";
                }
                //Celda 10
                if (dr["faltan_CEC_obligatorios"].ToString() == "1" || dr["faltan_CED_obligatorios"].ToString() == "1")
                {
                    sb.Append("<td style=text-align:center;'><img src='../../../Images/imgIconoObl16.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=text-align:center;'></td>");
                }
                //Celda 11
                if (dr["faltan_Cualificadores_obligatorios"].ToString() == "1")
                {
                    sb.Append("<td style=text-align:center;'><img src='../../../Images/imgIconoObl16Azul.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=text-align:center;'></td>");
                }
                //Celda 12
                if (decimal.Parse(dr["consumonivel"].ToString()) > 0)
                {
                    sb.Append("<td style=text-align:center;'><img src='../../../Images/imgConsNivel.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=text-align:center;'></td>");
                }
                //Celda 13
                if (dr["ajuste"].ToString() == "1")
                {
                    sb.Append("<td style=text-align:center;'><img src='../../../Images/imgAjuste2.gif' title='Importe de ajuste: " + double.Parse(dr["Importe_Ajuste"].ToString()).ToString("N") + " &euro;' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=text-align:center;'></td>");
                }
                //Celda 14
                if (dr["t306_idcontrato"].ToString() == "" || dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + int.Parse(dr["t306_idcontrato"].ToString()).ToString("#,###") + "</td>");
                }
                //Celda 15
                if (dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TotalContrato"].ToString()).ToString("N") + "</td>");
                }
                //Celda 16
                sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TotalProducido"].ToString()).ToString("N") + "</td>");
                //Celda 17
                if (dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TPPAC"].ToString()).ToString("N") + "</td>");
                }
                //Celda 18
                if (bProcesable)
                {
                    sb.Append("<td style='text-align:right;padding-right:3px;'><img src='../../../Images/imgMesAbierto.gif' /></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;padding-right:3px;'><img src='../../../Images/imgMesNoProceso.gif' /></td>");
                }
                sb.Append("</tr>");
            }
            dr.Close();
            dr.Dispose();

            sb.Append("</table>");

            return("OK@#@" + sb.ToString() + "@#@" + this.hdnExcepcion.Text);
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los proyectos.", ex));
        }
    }
示例#3
0
    private string obtenerDatos(int iAnoMes)
    {
        StringBuilder sb = new StringBuilder();

        try
        {
            string sAnoMesIni, sAnoMesFin;
            int    iAnoMesIni = Fechas.AddAnnomes(iAnoMes, -12), iAnoMesFin;

            sAnoMesIni           = iAnoMesIni.ToString();
            this.hdnMesAct.Value = Fechas.AnnomesAFechaDescCorta(iAnoMes);

            #region grafico 1
            DateTime dtPrimer = Fechas.crearDateTime("01/" + sAnoMesIni.Substring(4, 2) + "/" + sAnoMesIni.Substring(0, 4));
            iAnoMesFin = Fechas.AddAnnomes(iAnoMes, 1);
            sAnoMesFin = iAnoMesFin.ToString();
            DateTime dtUltimo = Fechas.crearDateTime("01/" + sAnoMesFin.Substring(4, 2) + "/" + sAnoMesFin.Substring(0, 4));

            SqlDataReader dr = CONEXIONES.SelectGraficoMes(null, int.Parse(Session["IDFICEPI_PC_ACTUAL"].ToString()),
                                                           (int)Session["UsuarioActual"], dtPrimer, dtUltimo);

            DataTable table = new DataTable();
            table.Load(dr);
            DataView dv = table.DefaultView;
            dr.Close();
            dr.Dispose();

            Chart1.ChartAreas["ChartArea1"].AxisX.MinorGrid.Enabled   = true;
            Chart1.ChartAreas["ChartArea1"].AxisX.MinorGrid.Interval  = 1;
            Chart1.ChartAreas["ChartArea1"].AxisX.MinorGrid.LineWidth = 1;
            Chart1.ChartAreas["ChartArea1"].AxisX.MinorGrid.LineColor = Color.LightGray;
            //Creo las series para el gráfico con cada uno de los conceptos
            //Creo una serie para las conexiones propias
            Series seriePropias = new Series("Conexiones propias");
            //seriePropias.Points.DataBind(dv, "anomes", "npropias", "");
            seriePropias.Points.DataBind(dv, "mes", "npropias", "");
            Chart1.Series.Add(seriePropias);

            //Creo una serie para las conexiones en mi nombre
            Series serieAjenas = new Series("Conexiones en su nombre");
            //serieAjenas.Points.DataBind(dv2, "anomes", "najenas", "");
            serieAjenas.Points.DataBind(dv, "mes", "najenas", "");
            Chart1.Series.Add(serieAjenas);

            for (int i = 0; i < Chart1.Series.Count; i++)
            {
                Chart1.Series[i].ChartType       = SeriesChartType.Bar;
                Chart1.Series[i]["PointWidth"]   = "1.0";
                Chart1.Series[i]["DrawingStyle"] = "Default";
                //if (dv.Count == 1)
                //{
                //    Chart1.Series[i].ChartType = SeriesChartType.Column;
                //    Chart1.Series[i]["PointWidth"] = "0.2";
                //    Chart1.Series[i]["DrawingStyle"] = "Default";
                //}
                //else
                //{
                //    Chart1.Series[i].ChartType = SeriesChartType.Spline;
                //    Chart1.Series[i].BorderWidth = 2;
                //    Chart1.Series[i].ShadowOffset = 1;
                //}
                //Chart1.Series[i].MarkerStyle = MarkerStyle.Circle;
                //Chart1.Series[i].MarkerColor = Color.Navy;
                //Chart1.Series[i].MarkerSize = 6;
                Chart1.Series[i].ToolTip = "#VALY{N0}";
                //Asigno evento click
                //Chart1.Series[i].MapAreaAttributes = "onclick=\"javascript:alert('Event captured! Series Name: #SER, Point Index: #INDEX, Valor: #VALX');\"";
                //Chart1.Series[i].MapAreaAttributes = "onclick=\"javascript:getMes('#VALX');\" onmouseover=\"document.body.style.cursor='pointer'\" onmouseout=\"document.body.style.cursor='default'\"";
                Chart1.Series[i].MapAreaAttributes = "onclick=\"javascript:getMes('#VALX');\" onmouseover=\"ponerMano();\" onmouseout=\"quitarMano();\"";
            }

            Chart1.Visible = true;

            table.Dispose();
            dv.Dispose();
            #endregion

            return("OK@#@");// +sb.ToString();
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los datos.", ex));
        }
    }
示例#4
0
    private string ObtenerTabla(string sDisponibilidad, string sMisProyectos, string sFechaDesde, string sFechaHasta, string sRol, string sSupervisor, string sCentroTrab, string sOficina, string sProfesional, string sResponsable, string sEstructuraNodos)
    {
        int    nWidthTabla         = 400;
        int    nColumnasACrear     = 0;
        int    nIndiceColPrimerMes = 19;
        string sComun = "";

        StringBuilder sbA = new StringBuilder(); //body fijo
        StringBuilder sbB = new StringBuilder(); //body móvil

        StringBuilder sbColgroupTitulo = new StringBuilder();
        StringBuilder sbTitulo         = new StringBuilder();

        string sTablaTituloMovil = "";
        string sTablaBodyMovil   = "";

        //string sTablaResultado = "";
        try
        {
            sbA.Append("<table id='tblBodyFijo' style='width:400px; text-align:left;' cellpadding='0' cellspacing='0' border='0'>");
            sbA.Append("<colgroup>");
            sbA.Append("<col style='width:20px;'/>");  //Icono (EXPANDIR/CONTRAER)
            sbA.Append("<col style='width:20px;'/>");  //Icono tipo recurso/sexo
            sbA.Append("<col style='width:360px;'/>"); //Profesional/Concepto
            sbA.Append("</colgroup>");
            //sbA.Append("<tbody>");

            DataSet ds = USUARIO.ConsultaDisponibilidad((int)Session["UsuarioActual"], int.Parse(sFechaDesde), int.Parse(sFechaHasta), sDisponibilidad, (sMisProyectos == "1")? true: false, sRol, sSupervisor, sCentroTrab, sOficina, sProfesional, sResponsable, sEstructuraNodos);

            bool bTitulos = false;
            int  i        = 0;
            int  iUsuario = 0;
            int  iContUsu = 0;

            DataRow oFilaCal = null;
            if (ds.Tables[0].Rows.Count != 0)
            {
                foreach (DataRow oFila in ds.Tables[0].Rows)
                {
                    if (!bTitulos)
                    {
                        sbTitulo.Append("<tr class='TBLINI'>");
                        for (int x = nIndiceColPrimerMes; x < ds.Tables[0].Columns.Count; x++)
                        {
                            if (x < nIndiceColPrimerMes)
                            {
                                continue;
                            }
                            sbColgroupTitulo.Append("<col style='width:60px;' />");
                            sbTitulo.Append("<td align='center'>" + Fechas.AnnomesAFechaDescCorta(int.Parse(ds.Tables[0].Columns[x].ColumnName)) + "</td>");
                            nColumnasACrear++;
                        }
                        sbTitulo.Append("</tr>");
                        bTitulos = true;
                    }

                    if (oFila["tipodato"].ToString() == "0")
                    {
                        oFilaCal = oFila; continue;
                    }
                    ;

                    sComun = "<tr id='" + oFila["t314_idusuario"].ToString() + "/" + oFila["t305_idproyectosubnodo"].ToString() + "/" + oFila["tipodato"].ToString() + "' ";

                    if (iUsuario != int.Parse(oFila["t314_idusuario"].ToString()))
                    {
                        iUsuario = int.Parse(oFila["t314_idusuario"].ToString());
                        iContUsu++;
                    }

                    string sClass = "";
                    if (iContUsu % 2 == 0)
                    {
                        sClass += "FA";
                    }
                    else
                    {
                        sClass += "FB";
                    }

                    sbA.Append(sComun);
                    sbB.Append(sComun);

                    sbA.Append(" usu='" + oFila["t314_idusuario"].ToString() + "' ");
                    sbA.Append(" cr=\"" + Utilidades.escape(oFila["t303_denominacion"].ToString()) + "\" ");
                    sbA.Append(" supervisor=\"" + Utilidades.escape(oFila["supervisor"].ToString()) + "\" ");
                    sbA.Append(" centro=\"" + Utilidades.escape(oFila["centroTrab"].ToString()) + "\" ");
                    sbA.Append(" oficina=\"" + Utilidades.escape(oFila["oficina"].ToString()) + "\" ");
                    sbA.Append(" rol=\"" + Utilidades.escape(oFila["rol"].ToString()) + "\" ");
                    sbA.Append(" responsable=\"" + Utilidades.escape(oFila["responsable"].ToString()) + "\" ");
                    sbA.Append(" cliente=\"" + Utilidades.escape(oFila["t302_denominacion"].ToString()) + "\" ");
                    sbA.Append(" tipo='" + oFila["tipo"].ToString() + "'");
                    sbA.Append(" sexo='" + oFila["sexo"].ToString() + "'");
                    sbA.Append(" tipodato='" + oFila["tipodato"].ToString() + "'");
                    sbA.Append(" calendario=\"" + Utilidades.escape(oFila["t066_descal"].ToString()) + "\" ");

                    sbA.Append(" falta='" + oFila["faltaEmp"].ToString() + "'");

                    if (oFila["fbajaEmp"] == DBNull.Value)
                    {
                        sbA.Append(" fbaja='000000' ");
                    }
                    else
                    {
                        sbA.Append(" fbaja='" + oFila["fbajaEmp"].ToString() + "' ");
                    }

                    if (oFila["tipodato"].ToString() == "1")
                    {
                        sComun = " class='" + sClass + "' nivel='1' desplegado='1' style='display:table-row;";
                    }
                    else
                    {
                        sComun = " nivel='2' desplegado='0' class='" + sClass + " htr";
                    }
                    //else sComun = " nivel='2' desplegado='0' style='display:none;' class='" + sClass;

                    if (oFila["tipodato"].ToString() == "1" && i != 0)
                    {
                        sComun += "border-top: solid 1px #A6C3D2;";
                    }
                    sComun += "' ";

                    sbA.Append(sComun);
                    //sbA.Append("onclick='setFilaFija(this)'");

                    sbB.Append(sComun);
                    //sbB.Append("onclick='setFilaMovil(this)'");

                    if (oFila["tipodato"].ToString() == "1")
                    {
                        //sbA.Append("><td><IMG class=NSEG1 onclick=mostrar(this) src='../../../../images/plus.gif' style='cursor:pointer;'></td>");
                        sbA.Append("><td></td>");
                        sbA.Append("<td></td><td align='left' class='tdbr' style='padding-left:3px;font-weight: bold'>");
                        //sTooltip = Utilidades.escape("<label style='width:70px'>" + sNodo + ":</label>" + oFila["t303_denominacion"].ToString() + "<br/><label style='width:70px'>Supervisor:</label>" + oFila["supervisor"].ToString() + "<br/><label style='width:70px'>Centro:</label>" + oFila["centroTrab"].ToString() + "<br/><label style='width:70px'>Oficina:</label>" + oFila["oficina"].ToString() + "<br/><label style='width:70px'>Rol:</label>" + oFila["rol"].ToString() + "<br/><label style='width:70px'>Calendario:</label>" + oFila["t066_descal"].ToString());
                        //sbA.Append("<nobr style='font-weight: bold' class='NBR W360' onmouseover=showTTE(\"" + sTooltip + "\") onMouseout=\"hideTTE()\">" + oFila["descripcion"].ToString() + "</nobr>");
                        sbA.Append(oFila["descripcion"].ToString() + "</td>");
                    }
                    else
                    {
                        sbA.Append("><td></td><td></td>");
                        sbA.Append("<td align='left' class='tdbr' style='padding-left:10px;white-space:nowrap;'>");
                        if (oFila["tipodato"].ToString() == "3")
                        {
                            //sTooltip = Utilidades.escape("<label style='width:70px'>" + sNodo + ":</label>" + oFila["t303_denominacion"].ToString() + "<br/><label style='width:70px'>Responsable:</label>" + oFila["responsable"].ToString() + "<br/><label style='width:70px'>Cliente:</label>" + oFila["t302_denominacion"].ToString());
                            //sbA.Append("<nobr class='NBR W360' onmouseover=showTTE(\"" + sTooltip + "\") onMouseout=\"hideTTE()\">" + oFila["descripcion"].ToString() + "</nobr>");
                            sbA.Append(oFila["descripcion"].ToString() + "</td>");
                        }
                        else
                        {
                            //sbA.Append("<nobr class='NBR W360'>" + oFila["descripcion"].ToString() + "</nobr></td>");
                            sbA.Append(oFila["descripcion"].ToString() + "</td>");
                        }
                    }
                    sbB.Append(">");

                    for (int x = nIndiceColPrimerMes; x < ds.Tables[0].Columns.Count; x++)
                    {
                        if (x < nIndiceColPrimerMes)
                        {
                            continue;
                        }
                        sbB.Append("<td align='right'");
                        if (x == nIndiceColPrimerMes)
                        {
                            sbB.Append(" class='tdbrl'");
                        }

                        if (oFila["tipodato"].ToString() == "1")
                        {
                            if (decimal.Parse(oFilaCal.ItemArray[x].ToString()) == 0)
                            {
                                sbB.Append(" style='background-color: #F58D8D;font-weight: bold;'");
                            }
                            else
                            {
                                sbB.Append(" style='font-weight: bold'");
                            }
                        }

                        sbB.Append(">");

                        sbB.Append(decimal.Parse(oFila.ItemArray[x].ToString()).ToString("N"));

                        sbB.Append("</td>");
                    }
                    sbA.Append("</tr>");
                    sbB.Append("</tr>");
                    i++;
                }
            }
            sbA.Append("</table>");
            ds.Dispose();

            nWidthTabla        = nColumnasACrear * 60;
            sTablaTituloMovil  = "<table id='tblTituloMovil' class='texto' style='width:" + nWidthTabla.ToString() + "px;' cellpadding='0'>";
            sTablaTituloMovil += "<colgroup>";
            sTablaTituloMovil += sbColgroupTitulo.ToString();
            sTablaTituloMovil += "</colgroup>";
            sTablaTituloMovil += sbTitulo.ToString();
            sTablaTituloMovil += "</table>";

            sTablaBodyMovil  = "<table id='tblBodyMovil' class='texto' style='width:" + nWidthTabla.ToString() + "px; ' mantenimiento='1' cellpadding='0' cellspacing='0' border='0'>";
            sTablaBodyMovil += "<colgroup>";
            sTablaBodyMovil += sbColgroupTitulo.ToString();
            sTablaBodyMovil += "</colgroup>";
            sTablaBodyMovil += sbB.ToString();
            sTablaBodyMovil += "</table>";

            return("OK@#@" + sTablaTituloMovil + "@#@" + sTablaBodyMovil + "@#@" + sbA.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los proyectos técnicos", ex));
        }
    }
示例#5
0
    private string ObtenerTabla(int nPSN)
    {
        int    nWidthTabla         = 400;
        int    nColumnasACrear     = 0;
        int    nIndiceColPrimerMes = 13;
        string sComun = "";

        StringBuilder sbA = new StringBuilder(); //body fijo
        StringBuilder sbB = new StringBuilder(); //body móvil

        StringBuilder sbColgroupTitulo = new StringBuilder();
        StringBuilder sbTitulo         = new StringBuilder();

        string  sTablaTituloMovil = "";
        string  sTablaBodyMovil   = "";
        DataRow rowTipoDato3;

        //string sTablaResultado = "";
        try
        {
            sbA.Append("<table id='tblBodyFijo' style='width:400px; text-align:left;'>");
            sbA.Append("<colgroup>");
            sbA.Append("<col style='width:20px;'/>");  //Icono
            sbA.Append("<col style='width:280px;'/>"); //Profesional
            sbA.Append("<col style='width:100px;'/>"); //Concepto
            sbA.Append("</colgroup>");
            //sbA.Append("<tbody>");


            DataSet ds = PROYECTOSUBNODO.Disponibilidad(nPSN);

            bool bTitulos = false;
            int  i        = 0;

            if (ds.Tables[0].Rows.Count != 0)
            {
                rowTipoDato3 = ds.Tables[0].Rows[0];
                foreach (DataRow oFila in ds.Tables[0].Rows)
                {
                    if (oFila["tipodato"].ToString() == "3")
                    {
                        //rowTipoDato3 = oFila;
                        i++;
                        continue;
                    }

                    if (!bTitulos)
                    {
                        sbTitulo.Append("<tr class='TBLINI'>");
                        for (int x = nIndiceColPrimerMes; x < ds.Tables[0].Columns.Count; x++)
                        {
                            if (x < nIndiceColPrimerMes)
                            {
                                continue;
                            }
                            sbColgroupTitulo.Append("<col style='width:60px;' />");
                            sbTitulo.Append("<td align='center'>" + Fechas.AnnomesAFechaDescCorta(int.Parse(ds.Tables[0].Columns[x].ColumnName)) + "</td>");
                            nColumnasACrear++;
                        }
                        sbTitulo.Append("</tr>");
                        bTitulos = true;
                    }


                    sComun  = "<tr id='" + oFila["t314_idusuario"].ToString() + oFila["tipodato"].ToString() + "' ";
                    sComun += " usu=" + oFila["t314_idusuario"].ToString();
                    sComun += " tipo='" + oFila["tipodato"].ToString() + "'";
                    sComun += " caso='" + oFila["caso"].ToString() + "'";
                    sComun += " sexo='" + oFila["sexo"].ToString() + "'";
                    if (oFila["t313_idempresa_nodomes"] == DBNull.Value)
                    {
                        sComun += " empnodo=''";
                    }
                    else
                    {
                        sComun += " empnodo='" + oFila["t313_idempresa_nodomes"].ToString() + "'";
                    }

                    if (oFila["t303_idnodo_usuariomes"] == DBNull.Value)
                    {
                        sComun += " nodousumes=''";
                    }
                    else
                    {
                        sComun += " nodousumes='" + oFila["t303_idnodo_usuariomes"].ToString() + "'";
                    }
                    sComun += " coste=" + oFila["coste"].ToString();
                    sComun += " costerep=" + oFila["costerep"].ToString();
                    sComun += " falta=" + oFila["falta"].ToString();

                    if (oFila["fbaja"] == DBNull.Value)
                    {
                        sComun += " fbaja='000000' ";
                    }
                    else
                    {
                        sComun += " fbaja='" + oFila["fbaja"].ToString() + "' ";
                    }
                    sComun += " style='height: 20px;";
                    if (oFila["tipodato"].ToString() == "1")
                    {
                        sComun += "cursor:pointer;";
                    }
                    sComun += "' ";

                    sbA.Append(sComun);
                    if (oFila["tipodato"].ToString() == "1")
                    {
                        sbA.Append("onclick='setFilaFija(this)'");
                    }

                    sbB.Append(sComun);
                    if (oFila["tipodato"].ToString() == "1")
                    {
                        sbB.Append("onclick='setFilaMovil(this)'");
                    }

                    if (oFila["tipodato"].ToString() == "1")
                    {
                        sbA.Append("><td></td>");
                        sbA.Append("<td align='left' class='tdbr' style='padding-left:3px;'>");
                        sbA.Append("<nobr class='NBR W280' onmouseover='TTip(event)'>" + oFila["Profesional"].ToString() + "</nobr>");
                    }
                    else
                    {
                        sbA.Append("><td></td>");
                        sbA.Append("<td align='left' class='tdbr' style='padding-left:3px;'>");
                    }
                    sbA.Append("</td><td class='tdbl'><nobr class='NBR W90'>" + oFila["descripcion"].ToString() + "</nobr></td>");
                    sbB.Append(">");

                    for (int x = nIndiceColPrimerMes; x < ds.Tables[0].Columns.Count; x++)
                    {
                        if (x < nIndiceColPrimerMes)
                        {
                            continue;
                        }
                        sbB.Append("<td align='right'");
                        if (x == nIndiceColPrimerMes)
                        {
                            sbB.Append(" class='tdbrl'");
                        }

                        if (oFila["tipodato"].ToString() == "4")
                        {
                            sbB.Append(" jl='" + decimal.Parse(ds.Tables[0].Rows[i - 1].ItemArray[x].ToString()).ToString("#,##0") + "' ");
                        }

                        sbB.Append(">");

                        sbB.Append(decimal.Parse(oFila.ItemArray[x].ToString()).ToString("N"));

                        sbB.Append("</td>");
                    }
                    sbA.Append("</tr>");
                    sbB.Append("</tr>");
                    i++;
                }
            }
            sbA.Append("</table>");
            ds.Dispose();

            nWidthTabla        = nColumnasACrear * 60;
            sTablaTituloMovil  = "<table id='tblTituloMovil' class='texto' style='width:" + nWidthTabla.ToString() + "px;' cellpadding='0'>";
            sTablaTituloMovil += "<colgroup>";
            sTablaTituloMovil += sbColgroupTitulo.ToString();
            sTablaTituloMovil += "</colgroup>";
            sTablaTituloMovil += sbTitulo.ToString();
            sTablaTituloMovil += "</table>";

            sTablaBodyMovil  = "<table id='tblBodyMovil' class='texto' style='width:" + nWidthTabla.ToString() + "px; ' mantenimiento='1' cellpadding='0'>";
            sTablaBodyMovil += "<colgroup>";
            sTablaBodyMovil += sbColgroupTitulo.ToString();
            sTablaBodyMovil += "</colgroup>";
            sTablaBodyMovil += sbB.ToString();
            sTablaBodyMovil += "</table>";

            return("OK@#@" + sTablaTituloMovil + "@#@" + sTablaBodyMovil + "@#@" + sbA.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los proyectos técnicos", ex));
        }
    }
    public void CorreoDestinatariosUSA(int idcomunicacion, byte byteNueva)
    {
        string sVigencia = "";
//        string sEstado = "";
        string sTexto = "";

        iFecha = 0;

        ArrayList     aListCorreo = new ArrayList();
        StringBuilder sbuilder    = new StringBuilder();
//        string sMensaje = "";
        string sAsunto = "";
        string sTO;

        ESPACIOCOMUNICACION oESPACIOCOMUNICACION = ESPACIOCOMUNICACION.Select(null, idcomunicacion);

        if (byteNueva == 1)
        {
            sAsunto = "Creación de un nuevo aviso para el proyecto '" + oESPACIOCOMUNICACION.t301_denominacion + "'.";
        }
        else
        {
            sAsunto = "Modificación de un aviso del proyecto '" + oESPACIOCOMUNICACION.t301_denominacion + "'.";
        }

        sbuilder.Append(@"<BR>SUPER le informa de la ");

        if (byteNueva == 1)
        {
            sbuilder.Append(@"creación de la siguiente comunicación por parte del usuario: " + Session["DES_EMPLEADO_ENTRADA"] + " ");
        }
        else
        {
            sbuilder.Append(@"modificación de la siguiente comunicación por parte del usuario: " + Session["DES_EMPLEADO_ENTRADA"] + " ");
        }
        sbuilder.Append(@"<BR><BR>Los datos de la comunicación son:<BR><BR><BR>");

        sbuilder.Append("<label style='width:120px'>Fecha de aviso: </label>" + oESPACIOCOMUNICACION.t639_fechacom + "<br>");
        sbuilder.Append("<label style='width:120px'>Autor: </label>" + oESPACIOCOMUNICACION.autor + "<br>");

        string sPartidasConta = "";

        if ((bool)oESPACIOCOMUNICACION.t639_consumo)
        {
            sPartidasConta += "Consumo,";
        }
        if ((bool)oESPACIOCOMUNICACION.t639_produccion)
        {
            sPartidasConta += "Producción,";
        }
        if ((bool)oESPACIOCOMUNICACION.t639_facturacion)
        {
            sPartidasConta += "Facturación,";
        }
        if ((bool)oESPACIOCOMUNICACION.t639_facturacion)
        {
            sPartidasConta += "Otros,";
        }

        if (sPartidasConta.Length > 0)
        {
            sPartidasConta = sPartidasConta.Substring(0, sPartidasConta.Length - 1);
        }

        sbuilder.Append("<label style='width:120px'>Partidas contables: </label>" + sPartidasConta + "<br>");

        sTexto = oESPACIOCOMUNICACION.t639_descripcion;

        sTexto = sTexto.Replace(((char)13).ToString() + ((char)10).ToString(), "<br>").Replace((char)34, (char)39);

        sbuilder.Append("<label style='width:120px'>Descripción: </label>" + sTexto + "<br>");

        if ((bool)oESPACIOCOMUNICACION.t639_vigenciaproyecto)
        {
            sVigencia = "Todo el proyecto";
        }
        else
        {
            sVigencia = Fechas.AnnomesAFechaDescCorta((int)oESPACIOCOMUNICACION.t639_vigenciadesde) + " - " + Fechas.AnnomesAFechaDescCorta((int)oESPACIOCOMUNICACION.t639_vigenciahasta);
        }

        sbuilder.Append("<label style='width:120px'>Vigencia: </label>" + sVigencia + "<br>");

        sTexto = oESPACIOCOMUNICACION.t639_observaciones;
        sTexto = sTexto.Replace(((char)13).ToString() + ((char)10).ToString(), "<br>").Replace((char)34, (char)39);

        sbuilder.Append("<label style='width:120px'>Observaciones: </label>" + sTexto + "<br>");

        iFecha = DateTime.Now.Year * 100 + DateTime.Now.Month;

        //if ((bool)oESPACIOCOMUNICACION.t639_vigenciaproyecto) sEstado = "Abierto";
        //else if (iFecha >= int.Parse(oESPACIOCOMUNICACION.t639_vigenciadesde.ToString()) && iFecha <= int.Parse(oESPACIOCOMUNICACION.t639_vigenciahasta.ToString()))
        //    sEstado = "Abierto";
        //else sEstado = "Cerrado";

        sbuilder.Append("<label style='width:120px'>Estado: </label>" + sTexto + "<br>");


        aCorreoUSA = Regex.Split(sCorreoUSA, ",");

        for (int j = 0; j < aCorreoUSA.Length; j++)
        {
            if (aCorreoUSA[j] == "")
            {
                continue;
            }

            string[] aID = Regex.Split(aCorreoUSA[j], "/");

            sTO    = aID[0];
            sTexto = sbuilder.ToString();

            string[] aMail = { sAsunto, sTexto, sTO };
            if (sTO != "")
            {
                aListCorreo.Add(aMail);
            }
        }

        Correo.EnviarCorreos(aListCorreo);
    }
    private string obtenerDatos(string sDesde, string sHasta, string sNivelEstructura,
                                string sCategoria, string sCualidad, string sClientes,
                                string sResponsables, string sNaturalezas, string sHorizontal, string sModeloContrato,
                                string sContrato, string sIDEstructura, string sSectores, string sSegmentos,
                                string sComparacionLogica,
                                string sCNP, string sCSN1P, string sCSN2P, string sCSN3P, string sCSN4P, string sPSN)
    {
        int           nWidthTabla     = 470; //370+100
        int           nColumnasACrear = 0;
        StringBuilder sb = new StringBuilder();
        StringBuilder sbColgroupTitulo = new StringBuilder();
        StringBuilder sbTitulo         = new StringBuilder();
        StringBuilder sbResultado      = new StringBuilder();
        string        sTablaTitulo     = "";
        string        sTablaContenido  = "";
        string        sTablaResultado  = "";
        decimal       nRatio           = 0;

        string sColor = "";

        try
        {
            sbColgroupTitulo.Append("<colgroup>");
            sbColgroupTitulo.Append("<col style='width:350px;' />");
            sbColgroupTitulo.Append("<col style='width:120px;' />");

            DataSet ds = ConsultasPGE.ObtenerDatosSegRenta((int)Session["UsuarioActual"],
                                                           int.Parse(sDesde), int.Parse(sHasta),
                                                           (sNivelEstructura == "0")? null:(int?)int.Parse(sNivelEstructura),
                                                           sCategoria,
                                                           sCualidad,
                                                           sClientes,
                                                           sResponsables,
                                                           sNaturalezas,
                                                           sHorizontal,
                                                           sModeloContrato,
                                                           sContrato,
                                                           sIDEstructura,
                                                           sSectores,
                                                           sSegmentos,
                                                           (sComparacionLogica == "1")? true:false,
                                                           sCNP,
                                                           sCSN1P,
                                                           sCSN2P,
                                                           sCSN3P,
                                                           sCSN4P,
                                                           sPSN,
                                                           Session["MONEDA_VDC"].ToString()
                                                           );

            bool bTitulos = false;
            foreach (DataRow oFila in ds.Tables[0].Rows)
            {
                if (!bTitulos)
                {
                    sbTitulo.Append("<tr class='TBLINI'>");
                    sbTitulo.Append("<td></td>");
                    for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
                    {
                        if (x == 4)
                        {
                            string[] aNomMeses = Regex.Split(ds.Tables[0].Columns[x].ColumnName, "-");
                            sbTitulo.Append("<td>");
                            sbTitulo.Append(Fechas.AnnomesAFechaDescCorta(int.Parse(aNomMeses[0].ToString())));
                            sbTitulo.Append(" - ");
                            sbTitulo.Append(Fechas.AnnomesAFechaDescCorta(int.Parse(aNomMeses[1].ToString())));
                            sbTitulo.Append("</td>");
                        }
                        else
                        {
                            sbColgroupTitulo.Append("<col style='width:100px;' />");
                            sbTitulo.Append("<td>" + Fechas.AnnomesAFechaDescLarga(int.Parse(ds.Tables[0].Columns[x].ColumnName)) + "</td>");
                            nColumnasACrear++;
                        }
                    }
                    sbTitulo.Append("</tr>");
                    bTitulos = true;
                }

                if (oFila["t454_idformula"].ToString() != "2")
                {
                    switch (oFila["nivel"].ToString())
                    {
                    case "1":
                        sb.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' style='height: 20px' nivel='1'>");
                        sb.Append("<td style='text-align:left;'><IMG class=NSEG1 src='../../../../images/imgSeparador.gif'>");
                        sb.Append("<nobr class='NBR W320'>" + oFila["t454_literal"].ToString() + "</nobr></td>");
                        break;

                    case "2":
                        sb.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' style='height: 20px' nivel='2'>");
                        sb.Append("<td style='text-align:left;'><IMG class=NSEG2 src='../../../../images/imgSeparador.gif'>");
                        sb.Append("<nobr class='NBR W280'>- " + oFila["t454_literal"].ToString() + "</nobr></td>");
                        break;
                    }

                    for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
                    {
                        if (decimal.Parse(oFila.ItemArray[x].ToString()) < 0)
                        {
                            sColor = "red";
                        }
                        else
                        {
                            sColor = "black";
                        }
                        sb.Append("<td style='color:" + sColor + "'>" + decimal.Parse(oFila.ItemArray[x].ToString()).ToString("N") + "</td>");
                    }
                    sb.Append("</tr>");
                }
                else
                {
                    //if (oFila["t454_idformula"].ToString() == "8")
                    //{
                    //    sbResultado.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' style='HEIGHT: 17px' class='TBLFIN'>");
                    //    sbResultado.Append("<td><nobr class='NBR W320 NSEG1'>Ratio</nobr></td>");
                    //    for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
                    //    {
                    //        if ((decimal)oFila.ItemArray[x] == 0) nRatio = 0;
                    //        else
                    //        {
                    //            nRatio = (decimal)ds.Tables[0].Rows[0].ItemArray[x] * 100 / (decimal)oFila.ItemArray[x];
                    //        }
                    //        if (nRatio < 0) sColor = "red";
                    //        else sColor = "black";
                    //        sbResultado.Append("<td style='color:" + sColor + "'>" + nRatio.ToString("N") + " %</td>");
                    //    }
                    //    sbResultado.Append("</tr>");
                    //}
                    //else
                    //{
                    sbResultado.Append("<tr id='" + oFila["t454_idformula"].ToString() + "' style='HEIGHT: 17px' class='TBLFIN'>");
                    sbResultado.Append("<td style='text-align:left;'><nobr class='NBR W320 NSEG1'>" + oFila["t454_literal"].ToString() + "</nobr></td>");
                    for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
                    {
                        if (decimal.Parse(oFila.ItemArray[x].ToString()) < 0)
                        {
                            sColor = "red";
                        }
                        else
                        {
                            sColor = "black";
                        }
                        sbResultado.Append("<td style='color:" + sColor + "'>" + decimal.Parse(oFila.ItemArray[x].ToString()).ToString("N") + "</td>");
                    }
                    sbResultado.Append("</tr>");
                    //}
                }
            }

            sbResultado.Append("<tr id='0' style='HEIGHT: 17px' class='TBLFIN'>");
            sbResultado.Append("<td style='text-align:left;'><nobr class='NBR W320 NSEG1'>Ratio</nobr></td>");
            for (int x = 4; x < ds.Tables[0].Columns.Count; x++)
            {
                if (decimal.Parse(ds.Tables[0].Rows[0].ItemArray[x].ToString()) == 0)
                {
                    nRatio = 0;
                }
                else
                {
                    nRatio = decimal.Parse(ds.Tables[0].Rows[12].ItemArray[x].ToString()) * 100 / decimal.Parse(ds.Tables[0].Rows[0].ItemArray[x].ToString());
                }
                if (nRatio < 0)
                {
                    sColor = "red";
                }
                else
                {
                    sColor = "black";
                }
                sbResultado.Append("<td style='color:" + sColor + "'>" + nRatio.ToString("N") + " %</td>");
            }
            sbResultado.Append("</tr>");

            ds.Dispose();

            nWidthTabla      = nWidthTabla + nColumnasACrear * 100;
            sTablaContenido  = "<table id='tblDatos' class='texto' style='WIDTH:" + nWidthTabla.ToString() + "px; table-layout:fixed;  BORDER-COLLAPSE: collapse;' cellpadding='0' cellspacing='0' border='0'>";
            sTablaContenido += sbColgroupTitulo.ToString();
            sTablaContenido += "</colgroup>";
            sTablaContenido += sb.ToString();
            //sTablaContenido += "</tbody>";
            sTablaContenido += "</table>";

            sTablaTitulo  = "<table id='tblTitulo' class='texto' style='WIDTH:" + nWidthTabla.ToString() + "px; table-layout:fixed;  BORDER-COLLAPSE: collapse;' cellpadding='0' cellspacing='0' border='0'>";
            sTablaTitulo += sbColgroupTitulo.ToString();
            sTablaTitulo += "</colgroup>";
            sTablaTitulo += sbTitulo.ToString();
            sTablaTitulo += "</table>";

            sTablaResultado  = "<table id='tblResultado' class='texto' style='WIDTH:" + nWidthTabla.ToString() + "px; table-layout:fixed;  BORDER-COLLAPSE: collapse;' cellpadding='0' cellspacing='0' border='0'>";
            sTablaResultado += sbColgroupTitulo.ToString();
            sTablaResultado += "</colgroup>";
            sTablaResultado += sbResultado.ToString();
            sTablaResultado += "</table>";



            return("OK@#@" + sTablaTitulo + "@#@" + sTablaContenido + "@#@" + sTablaResultado);
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los datos económicos.", ex));
        }
    }
示例#8
0
    private string getProyectosCierre(bool bADM, string nPSN, string sAnomes, string sResponsables, string sSubnodos,
                                      string sPSN, string sOrigen, string sComparacionLogica, string bListaProy)
    {
        try
        {
            StringBuilder sb = new StringBuilder();
            Hashtable     htAjustes = new Hashtable();
            SqlDataReader dr = null;
            bool          bMesesOK = true, bProcesable = true;
            DateTime?     oDT1 = null, oDT2 = null, oDT3 = null, oDT4 = null;
            int           nTiempoBD       = 0;
            int           nTiempoHTML     = 0;
            int           nTiempoDialogos = 0;

            sb.Append("<TABLE class='texto' id='tblDatos' style='width: 974px;'>");
            sb.Append("<colgroup>");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:60px;' />");
            sb.Append("<col style='width:140px;' />");
            sb.Append("<col style='width:35px;' />");
            sb.Append("<col style='width:55px;' />");
            sb.Append("<col style='width:54px;' />");
            sb.Append("<col style='width:60px;' />");
            sb.Append("<col style='width:60px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:20px;' />");
            sb.Append("<col style='width:55px;' />");
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:80px;' />");
            sb.Append("<col style='width:25px;' />");
            sb.Append("</colgroup>");
            sb.Append("<tbody>");

            bool bCarrusel = false;
            if (sOrigen == "carrusel")
            {
                bCarrusel = (SUPER.Capa_Negocio.Utilidades.EsAdminProduccion()) ? true : false;
            }

            oDT1 = DateTime.Now;
            if (bListaProy == "S")
            {
                dr = PROYECTOSUBNODO.ObtenerProyectosACerrar(nPSN);
            }
            else
            {
                if (!bADM)
                {
                    if (sOrigen == "menucierresat" || sOrigen == "menucierresatsaa")
                    {
                        dr = PROYECTOSUBNODO.ObtenerProyectosACerrarUSA((int)Session["UsuarioActual"], (sOrigen == "menucierresatsaa") ? true : false);
                    }
                    else
                    {
                        dr = PROYECTOSUBNODO.ObtenerProyectosACerrar((int)Session["UsuarioActual"], (nPSN == "") ? null : (int?)int.Parse(nPSN), bCarrusel);
                    }
                }
                else
                {
                    dr = PROYECTOSUBNODO.ObtenerProyectosACerrarADM(int.Parse(sAnomes), sResponsables, sSubnodos, sPSN, (sComparacionLogica == "1") ? true : false);
                }
            }
            oDT2 = DateTime.Now;
            string s_idsegmesproy = "";
            while (dr.Read())
            {
                bMesesOK    = true;
                bProcesable = true;

                aProyectos.Add(dr["t301_idproyecto"].ToString());
                sb.Append("<tr id='" + dr["t301_idproyecto"].ToString() + "' ");
                sb.Append("idPSN='" + dr["t305_idproyectosubnodo"].ToString() + "' ");
                sb.Append("cualidad='" + dr["t305_cualidad"].ToString() + "' ");
                sb.Append("anomes='" + dr["t325_anomes"].ToString() + "' ");
                //sb.Append("ajuste='" + dr["ajuste"].ToString() + "' ");
                //sb.Append("importe_ajuste='" + dr["Importe_Ajuste"].ToString() + "' ");
                sb.Append("nSegMes='" + dr["t325_idsegmesproy"].ToString() + "' ");

                //if ( (byte)dr["monedas_proyectos_contrato"] > 1
                //    || (dr["t306_idcontrato"] != DBNull.Value && dr["t422_idmoneda_proyecto"].ToString() != dr["t422_idmoneda_contrato"].ToString()))
                //{//Por ahora no permitimoes cerrar este caso ni a los administradores.
                //    sb.Append("a_procesar='0' ");
                //    bProcesable = false;
                //}
                //else
                if (bADM)
                {
                    sb.Append("a_procesar='1' ");
                    s_idsegmesproy += dr["t325_idsegmesproy"].ToString() + ",";
                }
                else if (dr["faltan_CEC_obligatorios"].ToString() == "1" ||
                         dr["faltan_CED_obligatorios"].ToString() == "1" ||
                         dr["faltan_Cualificadores_obligatorios"].ToString() == "1" ||
                         (Fechas.AddAnnomes(int.Parse(dr["T303_ultcierreeco"].ToString()), 1) != int.Parse(dr["t325_anomes"].ToString()) && sOrigen != "carrusel")
                         //|| ( (byte)dr["monedas_proyectos_contrato"] > 1 )
                         //|| (dr["t306_idcontrato"] != DBNull.Value && dr["t422_idmoneda_proyecto"].ToString() != dr["t422_idmoneda_contrato"].ToString())
                         )
                {
                    sb.Append("a_procesar='0' ");
                    bProcesable = false;
                }
                else
                {
                    sb.Append("a_procesar='1' ");
                    s_idsegmesproy += dr["t325_idsegmesproy"].ToString() + ",";
                }

                sb.Append("style='height:20px' procesado=''>");

                if (dr["ajuste"].ToString() == "1")
                {
                    this.hdnExcepcion.Text = "1";
                }

                if (dr["t305_cualidad"].ToString() == "C")
                {
                    sb.Append("<td style=\"border-right:none\"><img src='../../../images/imgIconoContratante.gif' width='16px' height='16px' /></td>");
                }
                else
                {
                    sb.Append("<td style=\"border-right:none\"><img src='../../../images/imgIconoRepPrecio.gif' width='16px' height='16px' /></td>");
                }

                sb.Append("<td style=\"border-right:none; padding-right:5px;text-align:right;\">" + int.Parse(dr["t301_idproyecto"].ToString()).ToString("#,###") + "</td>");
                sb.Append("<td style='padding-left:3px;'><nobr class='NBR W135' style='noWrap:true;' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../images/info.gif' style='vertical-align:middle' />  Información] body=[<label style='width:75px'>Proyecto:</label>" + dr["t301_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>Categoría:</label>" + ((dr["t301_categoria"].ToString() == "P") ? "Producto" : "Servicio") + "<br><label style='width:75px'>Responsable:</label>" + dr["responsable"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>" + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + ":</label>" + dr["t303_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>Cliente:</label>" + dr["t302_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:75px'>Moneda:</label>" + dr["t422_denominacion_proyecto"].ToString() + "] hideselects=[off]\">" + dr["t301_denominacion"].ToString().Replace((char)34, (char)39) + "</nobr></td>");

                sb.Append("<td style='padding-left:2px;'>" + dr["t422_idmoneda_proyecto"].ToString() + "</td>");
                sb.Append("<td style='padding-left:1px;'>" + Fechas.AnnomesAFechaDescCorta(int.Parse(dr["T303_ultcierreeco"].ToString())) + "</td>");

                if (Fechas.AddAnnomes(int.Parse(dr["T303_ultcierreeco"].ToString()), 1) != int.Parse(dr["t325_anomes"].ToString()))
                {
                    sb.Append("<td style='color:red;padding-left:1px;'>");
                    bMesesOK = false;
                }
                else
                {
                    sb.Append("<td style='padding-left:1px;'>");
                }
                sb.Append(Fechas.AnnomesAFechaDescCorta(int.Parse(dr["t325_anomes"].ToString())) + "</td>");

                sb.Append("<td style='text-align:right;padding-right:2px;'>" + decimal.Parse(dr["consumoIAP"].ToString()).ToString("N") + "</td>");
                sb.Append("<td style='text-align:right;padding-right:2px;'>" + decimal.Parse(dr["consumoPGE"].ToString()).ToString("N") + "</td>");

                if (bMesesOK)
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;padding-right:2px;\"></td>");
                }
                else
                {
                    if (sOrigen == "carrusel")
                    {
                        sb.Append("<td style=\"border-right:none;text-align:center;padding-right:2px;\"><img src='../../../Images/imgCalAma.gif' /></td>");
                    }
                    else
                    {
                        sb.Append("<td style=\"border-right:none;text-align:center;padding-right:2px;\"><img src='../../../Images/imgCalRojo.gif' /></td>");
                    }
                    this.hdnExcepcion.Text = "1";
                }

                if (dr["faltan_CEC_obligatorios"].ToString() == "1" || dr["faltan_CED_obligatorios"].ToString() == "1")
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgIconoObl16.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }

                if (dr["faltan_Cualificadores_obligatorios"].ToString() == "1")
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgIconoObl16Azul.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }

                if (decimal.Parse(dr["consumonivel"].ToString()) > 0)
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgConsNivel.gif' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }

                if ((byte)dr["monedas_proyectos_contrato"] > 1 ||
                    (dr["t306_idcontrato"] != DBNull.Value && dr["t422_idmoneda_proyecto"].ToString() != dr["t422_idmoneda_contrato"].ToString())
                    )
                {
                    string sTitle = "";
                    if ((byte)dr["monedas_proyectos_contrato"] > 1)
                    {
                        sTitle += "Los proyectos asociados al contrato tienen monedas diferentes.<br>";
                    }
                    if (dr["t306_idcontrato"] != DBNull.Value && dr["t422_idmoneda_proyecto"].ToString() != dr["t422_idmoneda_contrato"].ToString())
                    {
                        sTitle += "Moneda del contrato: " + dr["t422_denominacion_contrato"].ToString() + "\nMoneda del proyecto: " + dr["t422_denominacion_proyecto"].ToString() + "\n";
                    }

                    if (dr["ajuste"].ToString() == "1")
                    {
                        if ((string)htAjustes[dr["t301_categoria"].ToString() + dr["t306_idcontrato"].ToString()] == null)
                        {
                            htAjustes.Add(dr["t301_categoria"].ToString() + dr["t306_idcontrato"].ToString(),
                                          dr["t301_idproyecto"].ToString()
                                          );
                        }
                        sTitle += "Importe de ajuste: " + decimal.Parse(dr["Importe_Ajuste"].ToString()).ToString("N") + " " + dr["t422_denominacionimportes_proyecto"].ToString();
                        this.hdnExcepcion.Text = "1";
                    }
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgExclamacion.png' title='" + sTitle + "' /></td>");
                }
                else if (dr["ajuste"].ToString() == "1" && bProcesable)   //si hay ajuste y no hay excepción que impida cerrar
                {
                    if ((string)htAjustes[dr["t301_categoria"].ToString() + dr["t306_idcontrato"].ToString()] == null)
                    {
                        htAjustes.Add(dr["t301_categoria"].ToString() + dr["t306_idcontrato"].ToString(),
                                      dr["t301_idproyecto"].ToString()
                                      );
                        sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgAjuste2.gif' title='Importe de ajuste: " + decimal.Parse(dr["Importe_Ajuste"].ToString()).ToString("N") + "' /></td>");
                        this.hdnExcepcion.Text = "1";
                    }
                    else
                    {
                        sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                    }
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }

                if (decimal.Parse(dr["t325_consperiod"].ToString()) != 0)
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"><img src='../../../Images/imgConsumoPeriod.gif' title='Consumos periodificados: " + decimal.Parse(dr["t325_consperiod"].ToString()).ToString("N") + "' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;text-align:center;\"></td>");
                }
                if (decimal.Parse(dr["t325_prodperiod"].ToString()) != 0)
                {
                    sb.Append("<td style='text-align:center;'><img src='../../../Images/imgProduccionPeriod.gif' title='Producción periodificada: " + decimal.Parse(dr["t325_prodperiod"].ToString()).ToString("N") + "' /></td>");
                    this.hdnExcepcion.Text = "1";
                }
                else
                {
                    sb.Append("<td></td>");
                }

                if (dr["t306_idcontrato"].ToString() == "" || dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + int.Parse(dr["t306_idcontrato"].ToString()).ToString("#,###") + "</td>");
                }

                if (dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TotalContrato"].ToString()).ToString("N") + "</td>");
                }

                sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TotalProducido"].ToString()).ToString("N") + "</td>");

                if (dr["t305_cualidad"].ToString() != "C")
                {
                    sb.Append("<td style='text-align:right;'></td>");
                }
                else
                {
                    sb.Append("<td style='text-align:right;'>" + decimal.Parse(dr["TPPAC"].ToString()).ToString("N") + "</td>");
                }

                if (bProcesable)
                {
                    sb.Append("<td style=\"border-right:none\"><img src='../../../Images/imgMesAbierto.gif' /></td>");
                }
                else
                {
                    sb.Append("<td style=\"border-right:none;padding-left:3px;text-align:center;\"><img src='../../../Images/imgMesNoProceso.gif' /></td>");
                }
                sb.Append("</tr>");
            }
            dr.Close();
            dr.Dispose();
            sb.Append("</tbody>");
            sb.Append("</table>");

            oDT3        = DateTime.Now;
            nTiempoBD   = Fechas.DateDiff("mm", (DateTime)oDT1, (DateTime)oDT2);
            nTiempoHTML = Fechas.DateDiff("mm", (DateTime)oDT2, (DateTime)oDT3);
            //Obtengo las alertas producidas por los proyectos a cerrar.
            //s_idsegmesproy
            int nAlertas = 0;
            if (s_idsegmesproy != "")
            {
                DataSet ds = SUPER.Capa_Datos.SEGMESPROYECTOSUBNODO.ObtenerDialogosDeAlertasDS(null, s_idsegmesproy, true);
                Session["DS_ALERTASCIERRE"] = ds;
                nAlertas = ds.Tables[0].Rows.Count;
            }
            oDT4            = DateTime.Now;
            nTiempoDialogos = Fechas.DateDiff("mm", (DateTime)oDT3, (DateTime)oDT4);

            return("OK@#@" + sb.ToString() + "@#@" + this.hdnExcepcion.Text + "@#@" + nAlertas.ToString() + "@#@"
                   + nTiempoBD.ToString() + "@#@"
                   + nTiempoHTML.ToString() + "@#@"
                   + nTiempoDialogos.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los proyectos.", ex));
        }
    }
示例#9
0
    private string obtener(string nAccederBDatos, string sEvolucionMensual, string sDesde, string sHasta, string sDimensiones, string sMagnitudes,
                           string sNodo,
                           string sProyecto,
                           string sCliente,
                           string sResponsable,
                           string sCualidad,
                           string sNaturaleza,
                           string sTablasAuxiliares)
    {
        try
        {
            bool bNodo        = false;
            bool bProyecto    = false;
            bool bCliente     = false;
            bool bResponsable = false;
            bool bCualidad    = false;
            bool bNaturaleza  = false;

            string sFormulas_aux = "", sOrdenDimensiones = "";

            int nTiempoBD   = 0;
            int nTiempoHTML = 0;

            #region Actualización de tablas auxiliares
            string[] aDimensiones = Regex.Split(sDimensiones, "{sep}");
            foreach (string oDim in aDimensiones)
            {
                switch (oDim)
                {
                case "nodo": bNodo = true; sOrdenDimensiones += "2,"; break;

                case "proyecto": bProyecto = true; sOrdenDimensiones += "4,"; break;

                case "cliente": bCliente = true; sOrdenDimensiones += "6,"; break;

                case "responsable": bResponsable = true; sOrdenDimensiones += "8,"; break;

                case "cualidad": bCualidad = true; sOrdenDimensiones += "9,"; break;

                case "naturaleza": bNaturaleza = true; sOrdenDimensiones += "11,"; break;
                }
            }
            sOrdenDimensiones = sOrdenDimensiones.Substring(0, sOrdenDimensiones.Length - 1);

            string[] aMagnitud = Regex.Split(sMagnitudes, "{sep}");
            foreach (string oDa in aMagnitud)
            {
                switch (oDa)
                {
                case "Ingresos_Netos": sFormulas_aux += "1,"; break;

                case "Margen": sFormulas_aux += "2,"; break;

                case "Obra_en_curso": sFormulas_aux += "3,"; break;

                case "Saldo_de_Clientes": sFormulas_aux += "4,"; break;

                case "Total_Cobros": sFormulas_aux += "5,"; break;

                case "Total_Gastos": sFormulas_aux += "6,"; break;

                case "Total_Ingresos": sFormulas_aux += "7,"; break;

                case "Volumen_de_Negocio": sFormulas_aux += "8,"; break;

                case "Otros_consumos": sFormulas_aux += "9,"; break;
                }
            }

            #endregion

            StringBuilder sb = new StringBuilder();
            StringBuilder sbAux = new StringBuilder();
            DataSet       ds = null;
            DateTime?     oDT1 = null, oDT2 = null, oDT3 = null;
            int           nMeses   = 0;
            bool          sw_class = false;

            #region Creación del DataSet
            if (int.Parse(nAccederBDatos) == 1 || Session["DS_CUADROMANDO"] == null)
            {
                if (sEvolucionMensual == "1")
                {
                    oDT1   = DateTime.Now;
                    nMeses = Fechas.DateDiff("month", Fechas.AnnomesAFecha(int.Parse(sDesde)), Fechas.AnnomesAFecha(int.Parse(sHasta))) + 1;
                    ds     = SUPER.DAL.PROYECTOSUBNODO.PruebaDatosTablaDinamicaV5_EM(null, (int)Session["UsuarioActual"], int.Parse(sDesde), int.Parse(sHasta), Session["MONEDA_VDC"].ToString(),
                                                                                     bNodo, bProyecto, bCliente, bResponsable, bCualidad, bNaturaleza,
                                                                                     sNodo, sProyecto, sCliente, sResponsable, sCualidad, sNaturaleza, sFormulas_aux,
                                                                                     (sTablasAuxiliares == "1") ? true : false, sOrdenDimensiones);
                    oDT2 = DateTime.Now;
                }
                else
                {
                    oDT1 = DateTime.Now;
                    ds   = SUPER.DAL.PROYECTOSUBNODO.PruebaDatosTablaDinamicaV5(null, (int)Session["UsuarioActual"], int.Parse(sDesde), int.Parse(sHasta), Session["MONEDA_VDC"].ToString(),
                                                                                bNodo, bProyecto, bCliente, bResponsable, bCualidad, bNaturaleza,
                                                                                sNodo, sProyecto, sCliente, sResponsable, sCualidad, sNaturaleza,
                                                                                (sTablasAuxiliares == "1") ? true : false, sOrdenDimensiones);
                    oDT2 = DateTime.Now;
                }

                Session["DS_CUADROMANDO"] = ds;
            }
            else
            {
                oDT1 = DateTime.Now;
                ds   = (DataSet)Session["DS_CUADROMANDO"];
                oDT2 = DateTime.Now;
            }
            #endregion

            if (sEvolucionMensual == "1")
            {
                #region Con Evolución Mensual

                sb.Append("<table id='tblDatos' style='width:auto;' cellpadding='0' cellspacing='0' border='0'>");
                sb.Append("<tr id='rowTituloDatos'>");

                foreach (string oCol in aDimensiones)
                {
                    switch (oCol)
                    {
                    //La imagen "imgMoveWhite.png" tiene que ser el primer objeto de la celda para que se puedan
                    //arrastrar las columnas.
                    case "nodo": sb.Append("<th dimension='nodo' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>" + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + "</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('nodo') /></th>"); break;

                    case "proyecto": sb.Append("<th dimension='proyecto' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Proyecto</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('proyecto') /></th>"); break;

                    case "cliente": sb.Append("<th dimension='cliente' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Cliente</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('cliente') /></th>"); break;

                    case "responsable": sb.Append("<th dimension='responsable' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Responsable</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('responsable') /></th>"); break;

                    case "cualidad": sb.Append("<th dimension='cualidad' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Cualidad</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('cualidad') /></th>"); break;

                    case "naturaleza": sb.Append("<th dimension='naturaleza' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Naturaleza</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('naturaleza') /></th>"); break;
                    }
                }

                sb.Append("<th class='Dimension'>Indicadores</th>");
                for (int i = 14; i < ds.Tables[0].Columns.Count; i++)
                {
                    if (i == 14)
                    {
                        string[] aRango = Regex.Split(ds.Tables[0].Columns[i].ColumnName, "-");
                        sb.Append("<th>" + Fechas.AnnomesAFechaDescCorta(int.Parse(aRango[0])) + " - " + Fechas.AnnomesAFechaDescCorta(int.Parse(aRango[1])) + "</th>");
                    }
                    else
                    {
                        sb.Append("<th>" + Fechas.AnnomesAFechaDescCorta(int.Parse(ds.Tables[0].Columns[i].ColumnName)) + "</th>");
                    }
                }
                sb.Append("</tr>");
                sb.Append("</table>");
                #endregion
                sb.Append("{sep}");
                #region HTML Filas
                sb.Append("<table id='tblDatosBody' style='width:auto;' cellpadding='0' cellspacing='0' border='0'>");
                foreach (DataRow oFila in ds.Tables[0].Rows) //Datos
                {
                    sb.Append("<tr ");

                    if (bNodo)
                    {
                        sb.Append("idnodo='" + oFila["t303_idnodo"].ToString() + "' ");
                        sb.Append("desnodo=\"" + Utilidades.escape(oFila["t303_denominacion"].ToString()) + "\" ");
                    }
                    if (bProyecto)
                    {
                        sb.Append("idproyecto='" + oFila["t301_idproyecto"].ToString() + "' ");
                        sb.Append("desproyecto=\"" + Utilidades.escape(oFila["t301_denominacion"].ToString()) + "\" ");
                    }
                    if (bCliente)
                    {
                        sb.Append("idcliente='" + oFila["t302_idcliente"].ToString() + "' ");
                        sb.Append("descliente=\"" + Utilidades.escape(oFila["t302_denominacion"].ToString()) + "\" ");
                    }
                    if (bResponsable)
                    {
                        sb.Append("idresponsable='" + oFila["t314_idusuario_responsable"].ToString() + "' ");
                        sb.Append("desresponsable=\"" + Utilidades.escape(oFila["ResponsableProyecto"].ToString()) + "\" ");
                    }
                    if (bCualidad)
                    {
                        sb.Append("cualidad='" + oFila["t305_cualidad"].ToString() + "' ");
                        switch (oFila["t305_cualidad"].ToString())
                        {
                        case "C": sb.Append("descualidad=\"Contratante\" "); break;

                        case "P": sb.Append("descualidad=\"Replicada con gestión\" "); break;

                        case "J": sb.Append("descualidad=\"Replicada sin gestión\" "); break;
                        }
                    }
                    if (bNaturaleza)
                    {
                        sb.Append("idnaturaleza='" + oFila["t323_idnaturaleza"].ToString() + "' ");
                        sb.Append("desnaturaleza=\"" + Utilidades.escape(oFila["t323_denominacion"].ToString()) + "\" ");
                    }

                    sb.Append(">");

                    foreach (string oDato in aDimensiones)
                    {
                        switch (oDato)
                        {
                        case "nodo": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila["t303_denominacion"].ToString() + "</td>"); break;

                        case "proyecto": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + int.Parse(oFila["t301_idproyecto"].ToString()).ToString("#,###") + " - " + oFila["t301_denominacion"].ToString() + "</td>"); break;

                        case "cliente": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila["t302_denominacion"].ToString() + "</td>"); break;

                        case "responsable": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila["ResponsableProyecto"].ToString() + "</td>"); break;

                        case "cualidad":
                            switch (oFila["t305_cualidad"].ToString())
                            {
                            case "C": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">Contratante</td>"); break;

                            case "P": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">Replicada con gestión</td>"); break;

                            case "J": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">Replicada sin gestión</td>"); break;
                            }
                            break;

                        case "naturaleza": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila["t323_denominacion"].ToString() + "</td>"); break;
                        }
                    }



                    for (int i = 12; i < ds.Tables[0].Columns.Count; i++)
                    {
                        if (i == 13)
                        {
                            continue;          //numrow
                        }
                        if (i == 12)
                        {
                            sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila[ds.Tables[0].Columns[i].ColumnName].ToString() + "</td>");
                        }
                        else
                        {
                            sb.Append("<td magnitud='" + oFila[ds.Tables[0].Columns[12].ColumnName].ToString() + "' formula='" + oFila[ds.Tables[0].Columns[11].ColumnName].ToString() + "' mes='" + ds.Tables[0].Columns[i].ColumnName + "' ondblclick='gp(this);' class='MA " + ((i == 14) ? "MagPeriodo" : "Mag") + "'>" + ((decimal.Parse(oFila[ds.Tables[0].Columns[i].ColumnName].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila[ds.Tables[0].Columns[i].ColumnName].ToString()).ToString("N")) + "</td>");
                        }
                    }

                    sb.Append("</tr>");
                }
                sb.Append("</table>");
                #endregion
            }
            else
            {
                #region Sin Evolución Mensual
                sb.Append("<table id='tblDatos' style='width:auto;' cellpadding='0' cellspacing='0' border='0'>");
                sb.Append("<tr id='rowTituloDatos'>");

                foreach (string oCol in aDimensiones)
                {
                    switch (oCol)
                    {
                    //La imagen "imgMoveWhite.png" tiene que ser el primer objeto de la celda
                    //para que se puedan arrastrar las columnas.
                    case "nodo": sb.Append("<th dimension='nodo' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>" + Estructura.getDefLarga(Estructura.sTipoElem.NODO) + "</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('nodo') /></th>"); break;

                    case "proyecto": sb.Append("<th dimension='proyecto' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Proyecto</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('proyecto') /></th>"); break;

                    case "cliente": sb.Append("<th dimension='cliente' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Cliente</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('cliente') /></th>"); break;

                    case "responsable": sb.Append("<th dimension='responsable' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Responsable</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('responsable') /></th>"); break;

                    case "cualidad": sb.Append("<th dimension='cualidad' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Cualidad</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('cualidad') /></th>"); break;

                    case "naturaleza": sb.Append("<th dimension='naturaleza' class='Dimension'><img src='../../../Images/imgMoveWhite.png' class='move' /><label style='vertical-align:middle;'>Naturaleza</label><img src='../../../Images/imgSelector.png' class='selector' onclick=setFiltros('naturaleza') /></th>"); break;
                    }
                }

                foreach (string oCol in aMagnitud)
                {
                    switch (oCol)
                    {
                    case "Ingresos_Netos": sb.Append("<th class='MagTit' title='Ingresos netos'>Ing. netos</th>"); break;

                    case "Margen": sb.Append("<th class='MagTit' title='Margen de contribución'>Margen</th>"); break;

                    case "Obra_en_curso": sb.Append("<th class='MagTit' title='Obra en curso'>Obra en curso</th>"); break;

                    case "Saldo_de_Clientes": sb.Append("<th class='MagTit' title='Saldo de clientes'>Saldo cli.</th>"); break;

                    case "Total_Cobros": sb.Append("<th class='MagTit' title='Total cobros'>T. cobros</th>"); break;

                    case "Total_Gastos": sb.Append("<th class='MagTit' title='Total gastos'>T. gastos</th>"); break;

                    case "Total_Ingresos": sb.Append("<th class='MagTit' title='Total ingresos'>T. ingresos</th>"); break;

                    case "Volumen_de_Negocio": sb.Append("<th class='MagTit' title='Volumen de negocio'>Vol. negocio</th>"); break;

                    case "Otros_consumos": sb.Append("<th class='MagTit' title='Otros consumos'>Otros consumos</th>"); break;
                    }
                }
                sb.Append("</tr>");
                sb.Append("</table>");
                #endregion
                sb.Append("{sep}");
                #region HTML Filas
                sb.Append("<table id='tblDatosBody' style='width:auto;' cellpadding='0' cellspacing='0' border='0'>");
                foreach (DataRow oFila in ds.Tables[0].Rows) //Datos
                {
                    sb.Append("<tr ");

                    if (bNodo)
                    {
                        sb.Append("idnodo='" + oFila["t303_idnodo"].ToString() + "' ");
                        //sb.Append("desnodo=\"" + Utilidades.escape(oFila["t303_denominacion"].ToString()) + "\" ");
                    }
                    if (bProyecto)
                    {
                        sb.Append("idproyecto='" + oFila["t301_idproyecto"].ToString() + "' ");
                        //sb.Append("desproyecto=\"" + Utilidades.escape(oFila["t301_denominacion"].ToString()) + "\" ");
                    }
                    if (bCliente)
                    {
                        sb.Append("idcliente='" + oFila["t302_idcliente"].ToString() + "' ");
                        //sb.Append("descliente=\"" + Utilidades.escape(oFila["t302_denominacion"].ToString()) + "\" ");
                    }
                    if (bResponsable)
                    {
                        sb.Append("idresponsable='" + oFila["t314_idusuario_responsable"].ToString() + "' ");
                        //sb.Append("desresponsable=\"" + Utilidades.escape(oFila["ResponsableProyecto"].ToString()) + "\" ");
                    }
                    if (bCualidad)
                    {
                        sb.Append("idcualidad='" + oFila["t305_cualidad"].ToString() + "' ");
                        //switch (oFila["t305_cualidad"].ToString())
                        //{
                        //    case "C": sb.Append("descualidad=\"Contratante\" "); break;
                        //    case "P": sb.Append("descualidad=\"Replicada con gestión\" "); break;
                        //    case "J": sb.Append("descualidad=\"Replicada sin gestión\" "); break;
                        //}
                    }
                    if (bNaturaleza)
                    {
                        sb.Append("idnaturaleza='" + oFila["t323_idnaturaleza"].ToString() + "' ");
                        //sb.Append("desnaturaleza=\"" + Utilidades.escape(oFila["t323_denominacion"].ToString()) + "\" ");
                    }

                    sb.Append(">");

                    foreach (string oDato in aDimensiones)
                    {
                        switch (oDato)
                        {
                        case "nodo": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila["t303_denominacion"].ToString() + "</td>"); break;

                        case "proyecto": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + int.Parse(oFila["t301_idproyecto"].ToString()).ToString("#,###") + " - " + oFila["t301_denominacion"].ToString() + "</td>"); break;

                        case "cliente": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila["t302_denominacion"].ToString() + "</td>"); break;

                        case "responsable": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila["ResponsableProyecto"].ToString() + "</td>"); break;

                        case "cualidad":
                            switch (oFila["t305_cualidad"].ToString())
                            {
                            case "C": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">Contratante</td>"); break;

                            case "P": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">Replicada con gestión</td>"); break;

                            case "J": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">Replicada sin gestión</td>"); break;
                            }
                            break;

                        case "naturaleza": sb.Append("<td" + ((!sw_class) ? " class='Dimension'" : "") + ">" + oFila["t323_denominacion"].ToString() + "</td>"); break;
                        }
                    }

                    foreach (string oCol in aMagnitud)
                    {
                        switch (oCol)
                        {
                        case "Ingresos_Netos": sb.Append("<td magnitud='Ingresos_Netos' formula='1' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Ingresos_Netos"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Ingresos_Netos"].ToString()).ToString("N")) + "</td>"); break;

                        case "Margen": sb.Append("<td magnitud='Margen' formula='2' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Margen"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Margen"].ToString()).ToString("N")) + "</td>"); break;

                        case "Obra_en_curso": sb.Append("<td magnitud='Obra_en_curso' formula='3' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Obra_en_curso"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Obra_en_curso"].ToString()).ToString("N")) + "</td>"); break;

                        case "Saldo_de_Clientes": sb.Append("<td magnitud='Saldo_de_Clientes' formula='4' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Saldo_de_Clientes"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Saldo_de_Clientes"].ToString()).ToString("N")) + "</td>"); break;

                        case "Total_Cobros": sb.Append("<td magnitud='Total_Cobros' formula='5' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Total_Cobros"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Total_Cobros"].ToString()).ToString("N")) + "</td>"); break;

                        case "Total_Gastos": sb.Append("<td magnitud='Total_Gastos' formula='6' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Total_Gastos"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Total_Gastos"].ToString()).ToString("N")) + "</td>"); break;

                        case "Total_Ingresos": sb.Append("<td magnitud='Total_Ingresos' formula='7' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Total_Ingresos"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Total_Ingresos"].ToString()).ToString("N")) + "</td>"); break;

                        case "Volumen_de_Negocio": sb.Append("<td magnitud='Volumen_de_Negocio' formula='8' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Volumen_de_Negocio"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Volumen_de_Negocio"].ToString()).ToString("N")) + "</td>"); break;

                        case "Otros_consumos": sb.Append("<td magnitud='Otros_consumos' formula='9' ondblclick='gp(this);' class='MA Mag'>" + ((decimal.Parse(oFila["Otros_consumos"].ToString()).ToString("N") == "0,00") ? "" : decimal.Parse(oFila["Otros_consumos"].ToString()).ToString("N")) + "</td>"); break;
                        }
                    }
                    sb.Append("</tr>");
                    sw_class = true;
                }
                sb.Append("</table>");
                #endregion
            }

            #region Arrays javascript
            if (sTablasAuxiliares == "1")
            {
                int i = 0;
                sbAux.Append("@#@");
                foreach (DataRow oFila in ds.Tables[1].Rows)                                                                                                                                                 //Nodos
                {
                    sbAux.Append("js_Nodo[" + i.ToString() + "] = { \"c\":" + oFila["t303_idnodo"].ToString() + ", \"d\":\"" + Utilidades.escape(oFila["t303_denominacion"].ToString()) + "\", \"m\":1 };"); //c: codigo, d:denominacion, m:marcado
                    i++;
                }
                i = 0;
                sbAux.Append("@#@");
                foreach (DataRow oFila in ds.Tables[2].Rows) //Proyecto
                {
                    sbAux.Append("js_Proyecto[" + i.ToString() + "] = { \"c\":" + oFila["t301_idproyecto"].ToString() + ", \"d\":\"" + Utilidades.escape(int.Parse(oFila["t301_idproyecto"].ToString()).ToString("#,###") + " - " + oFila["t301_denominacion"].ToString()) + "\", \"m\":1 };");
                    i++;
                }
                i = 0;
                sbAux.Append("@#@");
                foreach (DataRow oFila in ds.Tables[3].Rows) //Cliente
                {
                    sbAux.Append("js_Cliente[" + i.ToString() + "] = { \"c\":" + oFila["t302_idcliente"].ToString() + ", \"d\":\"" + Utilidades.escape(oFila["t302_denominacion"].ToString()) + "\", \"m\":1 };");
                    i++;
                }
                i = 0;
                sbAux.Append("@#@");
                foreach (DataRow oFila in ds.Tables[4].Rows) //Responsable proyecto
                {
                    sbAux.Append("js_Responsable[" + i.ToString() + "] = { \"c\":" + oFila["t314_idusuario_responsable"].ToString() + ", \"d\":\"" + Utilidades.escape(oFila["ResponsableProyecto"].ToString()) + "\", \"m\":1 };");
                    i++;
                }
                i = 0;
                sbAux.Append("@#@");
                foreach (DataRow oFila in ds.Tables[5].Rows) //Cualidad
                {
                    string sCualidadAux = "";
                    switch (oFila["t305_cualidad"].ToString())
                    {
                    case "C": sCualidadAux = "Contratante"; break;

                    case "P": sCualidadAux = "Replicada con gestión"; break;

                    case "J": sCualidadAux = "Replicada sin gestión"; break;
                    }

                    sbAux.Append("js_Cualidad[" + i.ToString() + "] = { \"c\":\"" + oFila["t305_cualidad"].ToString() + "\", \"d\":\"" + Utilidades.escape(sCualidadAux) + "\", \"m\":1 };");
                    i++;
                }
                i = 0;
                sbAux.Append("@#@");
                foreach (DataRow oFila in ds.Tables[6].Rows) //Naturaleza
                {
                    sbAux.Append("js_Naturaleza[" + i.ToString() + "] = { \"c\":" + oFila["t323_idnaturaleza"].ToString() + ", \"d\":\"" + Utilidades.escape(oFila["t323_denominacion"].ToString()) + "\", \"m\":1 };");
                    i++;
                }
            }
            #endregion

            ds.Dispose();


            oDT3 = DateTime.Now;
            //nTiempoBD = Fechas.DateDiff("mm", (DateTime)oDT1, (DateTime)oDT2);
            //nTiempoHTML = Fechas.DateDiff("mm", (DateTime)oDT2, (DateTime)oDT3);
            nTiempoBD   = (int)((TimeSpan)(oDT2 - oDT1)).TotalMilliseconds;
            nTiempoHTML = (int)((TimeSpan)(oDT3 - oDT2)).TotalMilliseconds;



            return("OK@#@" + sb.ToString() + "@#@"
                   + nTiempoBD.ToString() + "@#@"
                   + nTiempoHTML.ToString()
                   + sbAux.ToString());
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los datos.", ex));
        }
    }
    private string obtenerComunicaciones(int iPSN)
    {
        try
        {
            string sNumPE = "", sDesc = "", sUSA = "N", sProyUSA = "N", sProyExternalizable = "N";
            string sContable = "", sVigencia = "", sEstado = "";
            int    iFecha = DateTime.Now.Year * 100 + DateTime.Now.Month, idProy = -1;

            SqlDataReader dr2 = PROYECTO.fgGetDatosProy(iPSN);
            if (dr2.Read())
            {
                idProy = int.Parse(dr2["t301_idproyecto"].ToString());
                sNumPE = int.Parse(dr2["t301_idproyecto"].ToString()).ToString("###,###");
                sDesc  = dr2["t301_denominacion"].ToString();
                if (dr2["t305_cualidad"].ToString() == "C" &&
                    dr2["t301_estado"].ToString() == "A" &&
                    (Session["UsuarioActual"].ToString() == dr2["t314_idusuario_SAT"].ToString() ||
                     Session["UsuarioActual"].ToString() == dr2["t314_idusuario_SAA"].ToString()))
                {
                    sUSA = "S";
                }
                if (dr2["t314_idusuario_SAT"].ToString() != "0" || dr2["t314_idusuario_SAA"].ToString() != "0")
                {
                    sProyUSA = "S";
                }
                sProyExternalizable = ((bool)dr2["t301_externalizable"]) ? "S" : "N";
            }
            dr2.Close();
            dr2.Dispose();

            sb.Append("<table id='tblDatos' class='texto MA' style='WIDTH: 960px;' mantenimiento='1'>");
            sb.Append("<colgroup>");
            sb.Append("     <col style='width:10px;' />");
            sb.Append("     <col style='width:60px;' />");
            sb.Append("     <col style='width:205px;' />");
            sb.Append("     <col style='width:70px;' />");
            sb.Append("     <col style='width:200px;' />");
            sb.Append("     <col style='width:125x;' />");
            sb.Append("     <col style='width:175px;' />");
            sb.Append("     <col style='width:25px;' />");
            sb.Append("     <col style='width:70px;' />");
            sb.Append("     <col style='width:20px;' />");
            sb.Append("</colgroup>");
            sb.Append("<tbody id='tbodyDatos'>");

            SqlDataReader dr = ESPACIOCOMUNICACION.Catalogo(idProy);
            while (dr.Read())
            {
                sb.Append("<tr id='" + dr["t639_idcomunicacion"].ToString() + "' bd='' onclick='mm(event)' onDblClick='detalle(this.id,event);' ");

                if (sUSA == "S")
                {
                    sb.Append(" obs=\"" + Utilidades.escape(dr["t639_observaciones"].ToString()) + "\" ");
                }

                sb.Append(" style=' height:20px'>");
                sb.Append("<td><img src='../../../images/imgFN.gif'></td>");

                sb.Append("<td style='text-align:right; padding-right:3px;'>" + DateTime.Parse(dr["t639_fechacom"].ToString()).ToShortDateString() + "</td>");

                sb.Append("<td style='padding-left:5px;'><nobr class='NBR W190' onmouseover='TTip(event)'>" + dr["Autor"].ToString() + "</nobr></td>");

                sContable = "";
                if ((bool)dr["t639_consumo"])
                {
                    sContable += "C,";
                }
                if ((bool)dr["t639_produccion"])
                {
                    sContable += "P,";
                }
                if ((bool)dr["t639_facturacion"])
                {
                    sContable += "F,";
                }
                if ((bool)dr["t639_otros"])
                {
                    sContable += "O,";
                }

                if (sContable.Length > 0)
                {
                    sContable = sContable.Substring(0, sContable.Length - 1);
                }

                sb.Append("<td>" + sContable + "</td>");
                sb.Append("<td><nobr class='NBR W190' onDblClick='detalle(this.parentNode.parentNode.id,event);' ");

                sb.Append("style='noWrap:true;' ");
                if (dr["t639_descripcion"].ToString() != "")
                {
                    sb.Append("title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../images/info.gif' style='vertical-align:middle' />  Información] body=[" + Utilidades.CadenaParaTooltipExtendido(dr["t639_descripcion"].ToString()) + "] hideselects=[off]\" ");
                }
                sb.Append(">" + dr["t639_descripcion"].ToString() + "</nobr></td>");
                sVigencia = "";
                sEstado   = "";

                if ((bool)dr["t639_vigenciaproyecto"])
                {
                    sVigencia = "Todo el proyecto";
                }
                else
                {
                    sVigencia = Fechas.AnnomesAFechaDescCorta(int.Parse(dr["t639_vigenciadesde"].ToString())) + " - " + Fechas.AnnomesAFechaDescCorta(int.Parse(dr["t639_vigenciahasta"].ToString()));
                }

                sb.Append("<td>" + sVigencia + "</td>");
                //sb.Append("<td><nobr class='NBR W160' onDblClick='detalle(this.parentNode.parentNode.id);' style='noWrap:true;height:16px' ");
                sb.Append("<td><nobr class='NBR W160' onDblClick='detalle(this.parentNode.parentNode.id,event);' style='noWrap:true;' ");
                if (dr["t639_observaciones"].ToString() != "")
                {
                    sb.Append("title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../images/info.gif' style='vertical-align:middle' />  Información] body=[" + Utilidades.CadenaParaTooltipExtendido(dr["t639_observaciones"].ToString()) + "] hideselects=[off]\" ");
                }
                sb.Append(">" + dr["t639_observaciones"].ToString() + "</nobr></td>");

                sb.Append("<td style='text-align:center;'>");
                if (sUSA == "S")
                {
                    sb.Append("<image style='width:16px;' class='MA' ondblclick='cargarObserva(this.parentNode.parentNode);' src='../../../images/imgComentario.gif'></image>");
                }
                else
                {
                    sb.Append("<image style='width:16px;' src='../../../images/imgSeparador.gif'></image>");
                }
                sb.Append("</td>");


                if ((bool)dr["t639_vigenciaproyecto"])
                {
                    sEstado = "Abierto";
                }
                else if (iFecha >= int.Parse(dr["t639_vigenciadesde"].ToString()) && iFecha <= int.Parse(dr["t639_vigenciahasta"].ToString()))
                {
                    sEstado = "Abierto";
                }
                else if (iFecha < int.Parse(dr["t639_vigenciadesde"].ToString()))
                {
                    sEstado = "Pendiente";
                }
                else
                {
                    sEstado = "Cerrado";
                }

                sb.Append("<td style='text-align:center;'>");
                if (sEstado == "Abierto")
                {
                    sb.Append("<img style='width:16px;' src='../../../images/imgSI.gif' />");
                }
                else if (sEstado == "Pendiente")
                {
                    sb.Append("<img style='width:16px;' src='../../../images/imgPendiente.gif' />");
                }
                else
                {
                    sb.Append("<img style='width:16px;' src='../../../images/imgNO.gif' />");
                }
                sb.Append("</td>");
                sb.Append("<td style='text-align:center;'>");
                if ((int)dr["docs"] > 0)
                {
                    sb.Append("<img style='width:16px;' src='../../../images/imgDocumento.gif' />");
                }
                sb.Append("</td>");
                sb.Append("</tr>");
            }
            dr.Close();
            dr.Dispose();
            sb.Append("</tbody>");
            sb.Append("</table>");

            return("OK@#@" + sb.ToString() + "@#@" + sNumPE + "@#@" + sDesc + "@#@" + sUSA + "@#@" + sProyUSA + "@#@" + sProyExternalizable);
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los espacios de comunicación", ex));
        }
    }