Пример #1
0
    private string obtener(string sEvolucionMensual, string sAgrupacion, string sVisualizacion, string sDato)
    {
        try
        {
            if (Session["DS_TABLADINAMICA"] == null)
            {
                Session["DS_TABLADINAMICA"] = PROYECTOSUBNODO.PruebaDatosTablaDinamicaServidor();
            }
            bool    bEvolucionMensual = (sEvolucionMensual == "1") ? true : false;
            DataSet ds = (DataSet)Session["DS_TABLADINAMICA"];

            #region Actualización de tablas auxiliares
            ds.Tables["Agrupaciones"].Rows.Clear();
            string[] aAgrupacion = Regex.Split(sAgrupacion, "{sep}");
            foreach (string oAg in aAgrupacion)
            {
                if (oAg == "")
                {
                    continue;
                }
                DataRow dr = ds.Tables["Agrupaciones"].NewRow();
                dr[0] = oAg;
                ds.Tables["Agrupaciones"].Rows.Add(dr);
            }

            /* Creo la tabla de Visualizaciones */
            ds.Tables["Visualizaciones"].Rows.Clear();
            string[] aVisualizacion = Regex.Split(sVisualizacion, "{sep}");
            foreach (string oVi in aVisualizacion)
            {
                if (oVi == "")
                {
                    continue;
                }
                DataRow dr = ds.Tables["Visualizaciones"].NewRow();
                dr[0] = oVi;
                ds.Tables["Visualizaciones"].Rows.Add(dr);
            }

            /* Creo la tabla de Datos */
            ds.Tables["Datos"].Rows.Clear();
            string[] aDato = Regex.Split(sDato, "{sep}");
            foreach (string oDa in aDato)
            {
                if (oDa == "")
                {
                    continue;
                }
                DataRow dr = ds.Tables["Datos"].NewRow();
                dr[0] = oDa;
                ds.Tables["Datos"].Rows.Add(dr);
            }

            #endregion

            #region Creación de tabla de resultado

            if (ds.Tables["Resultado"] != null)
            {
                ds.Tables.Remove("Resultado");
            }
            /* Creo la tabla de Resultado */
            DataTable dtResultado = ds.Tables.Add("Resultado");
            dtResultado.Columns.Add("t305_idproyectosubnodo", typeof(int));
            dtResultado.Columns.Add("t325_anomes", typeof(int));
            dtResultado.Columns.Add("t303_idnodo", typeof(int));
            dtResultado.Columns.Add("t303_denominacion", typeof(string));
            dtResultado.Columns.Add("t301_idproyecto", typeof(int));
            dtResultado.Columns.Add("t301_denominacion", typeof(string));
            dtResultado.Columns.Add("t302_idcliente", typeof(int));
            dtResultado.Columns.Add("t302_denominacion", typeof(string));
            dtResultado.Columns.Add("t314_idusuario_responsable", typeof(int));
            dtResultado.Columns.Add("ResponsableProyecto", typeof(string));
            dtResultado.Columns.Add("t305_cualidad", typeof(string));
            dtResultado.Columns.Add("t323_idnaturaleza", typeof(int));
            dtResultado.Columns.Add("t323_denominacion", typeof(string));

            if (!bEvolucionMensual)
            {
                dtResultado.Columns.Add("Ingresos_Netos", typeof(decimal));
                dtResultado.Columns.Add("Margen", typeof(decimal));
                dtResultado.Columns.Add("Obra_en_curso", typeof(decimal));
                dtResultado.Columns.Add("Saldo_de_Clientes", typeof(decimal));
                dtResultado.Columns.Add("Total_Cobros", typeof(decimal));
                dtResultado.Columns.Add("Total_Gastos", typeof(decimal));
                dtResultado.Columns.Add("Total_Ingresos", typeof(decimal));
                dtResultado.Columns.Add("Volumen_de_Negocio", typeof(decimal));
                dtResultado.Columns.Add("Otros_consumos", typeof(decimal));
                dtResultado.Columns.Add("Consumo_recursos", typeof(decimal));
            }
            else
            {
                foreach (DataRow oFilaTotal in ds.Tables["Datos"].Rows)
                {
                    foreach (DataRow oFilaMes in ds.Tables["Meses"].Rows)
                    {
                        dtResultado.Columns.Add(oFilaTotal["Dato"].ToString() + "_" + oFilaMes["Mes"].ToString(), typeof(decimal));
                    }
                }
            }

            ds.Tables["Resultado"].Rows.Clear();



            foreach (DataRow oFilaDato in ds.Tables["Consulta"].Rows)
            {
                int sw = 0;
                foreach (DataRow oFilaResultado in ds.Tables["Resultado"].Rows)
                {
                    int sw_agrupacion = 0;
                    foreach (DataRow oFilaAgrupacion in ds.Tables["Agrupaciones"].Rows)
                    {
                        if (oFilaDato[oFilaAgrupacion["Agrupacion"].ToString()].ToString() == oFilaResultado[oFilaAgrupacion["Agrupacion"].ToString()].ToString())
                        {
                            sw_agrupacion++;
                        }
                    }
                    if (sw_agrupacion == ds.Tables["Agrupaciones"].Rows.Count)
                    {
                        foreach (DataRow oFilaTotal in ds.Tables["Datos"].Rows)
                        {
                            if (!bEvolucionMensual)
                            {
                                oFilaResultado[oFilaTotal["Dato"].ToString()] = decimal.Parse(oFilaResultado[oFilaTotal["Dato"].ToString()].ToString()) + decimal.Parse(oFilaDato[oFilaTotal["Dato"].ToString()].ToString());
                            }
                            else
                            {
                                foreach (DataRow oFilaMes in ds.Tables["Meses"].Rows)
                                {
                                    oFilaResultado[oFilaTotal["Dato"].ToString() + "_" + oFilaMes["Mes"].ToString()] = decimal.Parse(oFilaResultado[oFilaTotal["Dato"].ToString() + "_" + oFilaMes["Mes"].ToString()].ToString()) + (((int)oFilaMes["Mes"] == (int)oFilaDato["t325_anomes"]) ? decimal.Parse(oFilaDato[oFilaTotal["Dato"].ToString()].ToString()) : 0);
                                }
                            }
                        }
                        sw = 1;
                        break;
                    }
                }
                if (sw == 1)
                {
                    continue;
                }

                DataRow dr = ds.Tables["Resultado"].NewRow();
                dr["t305_idproyectosubnodo"]     = (int)oFilaDato["t305_idproyectosubnodo"];
                dr["t325_anomes"]                = (int)oFilaDato["t325_anomes"];                //: oDato.anomes,
                dr["t303_idnodo"]                = (int)oFilaDato["t303_idnodo"];                //: oDato.idnodo,
                dr["t303_denominacion"]          = (string)oFilaDato["t303_denominacion"];       //: oDato.desnodo,
                dr["t301_idproyecto"]            = (int)oFilaDato["t301_idproyecto"];            //: oDato.idproyecto,
                dr["t301_denominacion"]          = (string)oFilaDato["t301_denominacion"];       //: oDato.desproyecto,
                dr["t302_idcliente"]             = (int)oFilaDato["t302_idcliente"];             //: oDato.idcliente,
                dr["t302_denominacion"]          = (string)oFilaDato["t302_denominacion"];       //: oDato.descliente,
                dr["t314_idusuario_responsable"] = (int)oFilaDato["t314_idusuario_responsable"]; //: oDato.idresponsableproyecto,
                dr["ResponsableProyecto"]        = (string)oFilaDato["ResponsableProyecto"];     //: oDato.desresponsableproyecto,
                dr["t305_cualidad"]              = (string)oFilaDato["t305_cualidad"];           //: oDato.cualidad,
                dr["t323_idnaturaleza"]          = (int)oFilaDato["t323_idnaturaleza"];          //: oDato.idnaturaleza,
                dr["t323_denominacion"]          = (string)oFilaDato["t323_denominacion"];       //: oDato.desnaturaleza,

                if (!bEvolucionMensual)
                {
                    dr["Ingresos_Netos"]     = (decimal)oFilaDato["Ingresos_Netos"];     //: oDato.Ingresos_Netos,
                    dr["Margen"]             = (decimal)oFilaDato["Margen"];             //: oDato.Margen,
                    dr["Obra_en_curso"]      = (decimal)oFilaDato["Obra_en_curso"];      //: oDato.Obra_en_curso,
                    dr["Saldo_de_Clientes"]  = (decimal)oFilaDato["Saldo_de_Clientes"];  //: oDato.Saldo_de_Clientes,
                    dr["Total_Cobros"]       = (decimal)oFilaDato["Total_Cobros"];       //: oDato.Total_Cobros,
                    dr["Total_Gastos"]       = (decimal)oFilaDato["Total_Gastos"];       //: oDato.Total_Gastos,
                    dr["Total_Ingresos"]     = (decimal)oFilaDato["Total_Ingresos"];     //: oDato.Total_Ingresos,
                    dr["Volumen_de_Negocio"] = (decimal)oFilaDato["Volumen_de_Negocio"]; //: oDato.Volumen_de_Negocio,
                    dr["Otros_consumos"]     = (decimal)oFilaDato["Otros_consumos"];     //: oDato.Otros_consumos,
                    dr["Consumo_recursos"]   = (decimal)oFilaDato["Consumo_recursos"];   //: oDato.Consumo_recursos
                }
                else
                {
                    foreach (DataRow oFilaTotal in ds.Tables["Datos"].Rows)
                    {
                        foreach (DataRow oFilaMes in ds.Tables["Meses"].Rows)
                        {
                            dr[oFilaTotal["Dato"].ToString() + "_" + oFilaMes["Mes"].ToString()] = (decimal)oFilaDato[oFilaTotal["Dato"].ToString()];
                        }
                    }
                }
                ds.Tables["Resultado"].Rows.Add(dr);
            }

            #endregion

            #region Creación de tabla HTML con el resultado

            StringBuilder sb = new StringBuilder();

            sb.Append("<table id='tblDatos' style='width:auto' cellpadding='0' cellspacing='0' border='0'>");
//            var tblDatos = $I("tblDatos");
//            if (tblDatos != null) {
//                var oNF = null;
//                var oNC = null;
            sb.Append("<tr class='TBLINI' style='text-align:center; height:20px; border:solid 1px #FFFFF; border-collapse:collapse; border-spacing:0px;background-repeat: repeat-x;'>");
            foreach (DataRow oFilaVis in ds.Tables["Visualizaciones"].Rows)
            {
                sb.Append("<td>" + oFilaVis["Visualizacion"].ToString() + "</td>");
            }
            foreach (DataRow oFilaTotal in ds.Tables["Datos"].Rows)
            {
                if (!bEvolucionMensual)
                {
                    sb.Append("<td>" + oFilaTotal["Dato"].ToString() + "</td>");
                }
                else
                {
                    foreach (DataRow oMes in ds.Tables["Meses"].Rows)
                    {
                        sb.Append("<td>" + oFilaTotal["Dato"].ToString() + "_" + oMes["Mes"].ToString() + "</td>");
                    }
                }
            }
            sb.Append("</tr>");
            foreach (DataRow oFilaResultado in ds.Tables["Resultado"].Rows)
            {
                //for (var i = 0; i < this.tabla_resultado.length; i++) {
                //oNF = tblDatos.insertRow(-1);
                sb.Append("<tr>");

                foreach (DataRow oFilaVis in ds.Tables["Visualizaciones"].Rows)
                {
                    sb.Append("<td>" + oFilaResultado[oFilaVis["Visualizacion"].ToString()].ToString() + "</td>");
                }

                foreach (DataRow oFilaTotal in ds.Tables["Datos"].Rows)
                {
                    if (!bEvolucionMensual)
                    {
                        sb.Append("<td style='text-align:right;'>" + decimal.Parse(oFilaResultado[oFilaTotal["Dato"].ToString()].ToString()).ToString("N") + "</td>");
                    }
                    else
                    {
                        foreach (DataRow oMes in ds.Tables["Meses"].Rows)
                        {
                            sb.Append("<td>" + decimal.Parse(oFilaResultado[oFilaTotal["Dato"].ToString() + "_" + oMes["Mes"].ToString()].ToString()).ToString("N") + "</td>");
                        }
                    }
                }
            }
            // $I("divCatalogo").children[0].style.width = tblDatos.scrollWidth + "px";
//            }
            //$I("divCatalogo").scrollTop = 0;
            //$I("divCatalogo").scrollLeft = 0;

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

            #endregion

            ds.Dispose();
            return("OK@#@" + sb.ToString());// + PROYECTOSUBNODO.PruebaDatosTablaDinamica2();
        }
        catch (Exception ex)
        {
            return("Error@#@" + Errores.mostrarError("Error al obtener los datos.", ex));
        }
    }