Exemple #1
0
        public void PintarResultadosGrafica()
        {
            PeriodoDesempenoNegocio nDesempeno = new PeriodoDesempenoNegocio();
            GridBoundColumn         vColumn    = new GridBoundColumn();

            vColumn.HeaderText                  = "No. Meta";
            vColumn.DataField                   = "NO_META_EVALUA";
            vColumn.HeaderStyle.Width           = 60;
            vColumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
            vColumn.ItemStyle.HorizontalAlign   = HorizontalAlign.Center;
            vColumn.HeaderStyle.Font.Bold       = true;
            vGridResultados.Columns.Add(vColumn);
            GridBoundColumn vColumnPr = new GridBoundColumn();

            vColumnPr.HeaderText                  = "Meta";
            vColumnPr.DataField                   = "DS_META";
            vColumnPr.HeaderStyle.Width           = 200;
            vColumnPr.ItemStyle.HorizontalAlign   = HorizontalAlign.Left;
            vColumnPr.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
            vColumnPr.HeaderStyle.Font.Bold       = true;
            vColumnPr.FooterText                  = "Total:";
            vColumnPr.FooterStyle.Font.Bold       = true;
            vColumnPr.FooterStyle.HorizontalAlign = HorizontalAlign.Right;
            vGridResultados.Columns.Add(vColumnPr);

            foreach (var items in vPeriodosComparar)
            {
                GridBoundColumn ColumnPeriodo = new GridBoundColumn();
                ColumnPeriodo.HeaderText                  = items.NB_PERIODO + "&nbsp;&nbsp;<span style=\"border: 1px solid gray; border-radius: 5px; background:" + GeneraColor((int)items.NUM_PERIODO) + ";\">&nbsp;&nbsp;</span>";
                ColumnPeriodo.DataField                   = items.NB_PERIODO_ENCABEZADO;
                ColumnPeriodo.HeaderStyle.Width           = 200;
                ColumnPeriodo.ItemStyle.HorizontalAlign   = HorizontalAlign.Right;
                ColumnPeriodo.HeaderStyle.HorizontalAlign = HorizontalAlign.Left;
                ColumnPeriodo.HeaderStyle.Font.Bold       = true;
                ColumnPeriodo.FooterStyle.Font.Bold       = true;
                ColumnPeriodo.FooterStyle.HorizontalAlign = HorizontalAlign.Center;
                ColumnPeriodo.FooterText                  = GeneraFooter(items.ID_PERIODO);
                vGridResultados.Columns.Add(ColumnPeriodo);
            }
            List <E_PERIODOS_COMPARAR> vListaPeriodos = new List <E_PERIODOS_COMPARAR>();

            vResultados = ObtieneMetasComparativaGrafica(SELECCIONPERIODOS.ToString(), ref vListaPeriodos);
        }
        public DataTable ObtieneEvaluadosReporte()
        {
            PeriodoDesempenoNegocio oNegocio = new PeriodoDesempenoNegocio();

            vLstBonosEvaluados   = new List <E_OBTIENE_EVALUADOS_DESEMPENO>();
            vLstEvaluadosReporte = new List <E_OBTIENE_EVALUADOS_DESEMPENO>();
            decimal?vTopeBono;
            decimal?vCumplimientoEvaluado;
            decimal?vMnBonoTotal;
            int     vPeriodos;

            vLstEvaluadosReporte = oNegocio.ObtenerEvaluadosDesempeno(SELECCIONPERIODOS.ToString());

            DataTable vDtPivot = new DataTable();

            vDtPivot.Columns.Add("CL_EMPLEADO", typeof(string));
            vDtPivot.Columns.Add("NB_EMPLEADO_COMPLETO", typeof(string));
            vDtPivot.Columns.Add("NB_PUESTO", typeof(string));
            vDtPivot.Columns.Add("NB_DEPARTAMENTO", typeof(string));
            vDtPivot.Columns.Add("MN_SUELDO", typeof(string));
            vDtPivot.Columns.Add("MN_TOPE_BONO", typeof(string));

            foreach (var item in oLstPeriodos)
            {
                vDtPivot.Columns.Add(item.CL_TIPO_PERIODO, typeof(string));
            }

            vDtPivot.Columns.Add("PR_CUMPLIMIENTO_EVALUADO", typeof(string));
            vDtPivot.Columns.Add("MN_BONO_TOTAL", typeof(string));


            foreach (var item in vLstEvaluadosReporte)
            {
                vLstBonosEvaluados    = oNegocio.ObtenerBonosDesempeno(item.ID_EMPLEADO, SELECCIONPERIODOS.ToString());
                vCumplimientoEvaluado = 0;
                vMnBonoTotal          = 0;
                vTopeBono             = 0;
                vPeriodos             = 0;



                DataRow vDr = vDtPivot.NewRow();
                vDr["CL_EMPLEADO"]          = item.CL_EMPLEADO;
                vDr["NB_EMPLEADO_COMPLETO"] = item.NB_EMPLEADO;
                vDr["NB_PUESTO"]            = item.NB_PUESTO;
                vDr["NB_DEPARTAMENTO"]      = item.NB_DEPARTAMENTO;
                vDr["MN_SUELDO"]            = "$" + item.MN_SUELDO.ToString();

                foreach (var vPeriodo in oLstPeriodos)
                {
                    var vResultado = vLstBonosEvaluados.Where(t => t.ID_PERIODO == vPeriodo.ID_PERIODO).FirstOrDefault();
                    if (vResultado != null)
                    {
                        if (vResultado.PR_CUMPLIMIENTO_EVALUADO != null)
                        {
                            if (vResultado.MN_BONO_TOTAL != null)
                            {
                                vDr[vPeriodo.CL_TIPO_PERIODO.ToString()] = vResultado.PR_CUMPLIMIENTO_EVALUADO.ToString() + "%  " + "<br>" + "  $" + vResultado.MN_BONO_TOTAL.ToString();
                            }
                            else
                            {
                                vDr[vPeriodo.CL_TIPO_PERIODO.ToString()] = vResultado.PR_CUMPLIMIENTO_EVALUADO.ToString() + "%";
                            }
                        }
                        else if (vResultado.MN_BONO_TOTAL != null)
                        {
                            vDr[vPeriodo.CL_TIPO_PERIODO.ToString()] = "\n" + "$" + vResultado.MN_BONO_TOTAL.ToString();
                        }

                        vCumplimientoEvaluado = vCumplimientoEvaluado + vResultado.PR_CUMPLIMIENTO_EVALUADO;
                        vMnBonoTotal          = vMnBonoTotal + vResultado.MN_BONO_TOTAL;
                        vPeriodos             = vPeriodos + 1;
                        if (vResultado.MN_BONO != 0)
                        {
                            vTopeBono = vTopeBono + vResultado.MN_BONO;
                        }
                        else if (vResultado.PR_BONO != 0)
                        {
                            decimal vDiasPeriodo = (decimal)((vResultado.FE_TERMINO - vResultado.FE_INICIO).TotalDays);
                            decimal vSueldoDia   = ((decimal)item.MN_SUELDO / ((decimal)30.4));
                            vTopeBono = vTopeBono + ((vDiasPeriodo + 1) * vSueldoDia * (vResultado.PR_BONO / 100));
                        }
                    }
                }

                vDr["MN_TOPE_BONO"] = "$" + String.Format("{0:0.00}", vTopeBono);
                if (vCumplimientoEvaluado != null)
                {
                    vDr["PR_CUMPLIMIENTO_EVALUADO"] = String.Format("{0:0.00}", ((vCumplimientoEvaluado * 100) / (vPeriodos * 100))) + "%";
                }
                if (vMnBonoTotal != null)
                {
                    vDr["MN_BONO_TOTAL"] = "$" + vMnBonoTotal.ToString();
                }

                vDtPivot.Rows.Add(vDr);
            }
            return(vDtPivot);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            vIdRol = ContextoUsuario.oUsuario.oRol.ID_ROL;

            if (!IsPostBack)
            {
                oLstPeriodos = new List <E_PERIODO_DESEMPENO>();

                if (ContextoPeriodos.oLstPeriodos != null)
                {
                    foreach (E_SELECCION_PERIODOS_DESEMPENO item in ContextoPeriodos.oLstPeriodos)
                    {
                        oLstPeriodos.Add(new E_PERIODO_DESEMPENO
                        {
                            ID_PERIODO         = item.idPeriodo,
                            CL_TIPO_PERIODO    = item.clPeriodo,
                            DS_PERIODO         = item.dsPeriodo,
                            XML_DS_NOTAS       = validarDsNotas(item.dsNotas),
                            FE_INICIO_PERIODO  = DateTime.Parse(item.feInicio),
                            FE_TERMINO_PERIODO = DateTime.Parse(item.feTermino)
                        });
                    }

                    var vXelements = oLstPeriodos.Select(x =>
                                                         new XElement("PERIODOS",
                                                                      new XAttribute("ID_PERIODO", x.ID_PERIODO)
                                                                      ));

                    SELECCIONPERIODOS = new XElement("SELECCIONADOS", vXelements
                                                     );
                }

                GenerarContexto();
                GenerarReporte();

                //GRÁFICA
                PeriodoDesempenoNegocio nDesempeno = new PeriodoDesempenoNegocio();
                List <SPE_OBTIENE_EO_CUMPLIMIENTO_GLOBAL_GRAFICA_Result> vGraficaTotal = nDesempeno.ObtenerCumplimientoGlobalGrafica(SELECCIONPERIODOS.ToString());
                rhcGraficaGlobal.PlotArea.Series.Clear();
                ColumnSeries vSerie = new ColumnSeries();
                Color        vColor = System.Drawing.ColorTranslator.FromHtml("#F2F2F2");

                foreach (var item in vGraficaTotal.OrderBy(o => o.ID_PERIODO))
                {
                    if (item.CUMPLIDO > 0 && item.CUMPLIDO < 60)
                    {
                        vColor = System.Drawing.ColorTranslator.FromHtml("#FF0000");
                    }
                    if (item.CUMPLIDO > 59 && item.CUMPLIDO < 76)
                    {
                        vColor = System.Drawing.ColorTranslator.FromHtml("#FFFF00");
                    }
                    //if (item.CUMPLIDO > 74 && item.CUMPLIDO < 91)
                    //    vColor = System.Drawing.ColorTranslator.FromHtml("#0070C0"); ;
                    if (item.CUMPLIDO > 75 && item.CUMPLIDO < 101)
                    {
                        vColor = System.Drawing.ColorTranslator.FromHtml("#00B050");
                    }
                    vSerie.SeriesItems.Add(new CategorySeriesItem(item.CUMPLIDO, vColor));
                    vSerie.LabelsAppearance.DataFormatString   = "{0:N2}%";
                    vSerie.LabelsAppearance.Visible            = false;
                    vSerie.TooltipsAppearance.DataFormatString = "{0:N2}%";
                    rhcGraficaGlobal.PlotArea.XAxis.Items.Add(item.CL_PERIODO);
                    rhcGraficaGlobal.PlotArea.XAxis.LabelsAppearance.DataFormatString = item.CL_PERIODO;
                    rhcGraficaGlobal.PlotArea.YAxis.LabelsAppearance.DataFormatString = "{0:N2}%";
                }

                rhcGraficaGlobal.PlotArea.Series.Add(vSerie);
            }

            vClUsuario  = ContextoUsuario.oUsuario.CL_USUARIO;
            vNbPrograma = ContextoUsuario.nbPrograma;
        }
        private void ConfiguraPeriodosColumna(string pColumna, int pWidth, string pEncabezado, bool pVisible, bool pGenerarEncabezado, bool pFiltrarColumna, bool pCentrar)
        {
            GridBoundColumn ColumnPeriodo = new GridBoundColumn();

            ColumnPeriodo.DataField                   = pColumna;
            ColumnPeriodo.HeaderStyle.Width           = pWidth;
            ColumnPeriodo.ItemStyle.HorizontalAlign   = HorizontalAlign.Center;
            ColumnPeriodo.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
            ColumnPeriodo.HeaderStyle.VerticalAlign   = VerticalAlign.Middle;
            ColumnPeriodo.HeaderStyle.Font.Bold       = true;
            ColumnPeriodo.ColumnGroupName             = "Periodos";
            ColumnPeriodo.FooterStyle.Font.Bold       = true;
            ColumnPeriodo.FooterStyle.HorizontalAlign = HorizontalAlign.Right;


            PeriodoDesempenoNegocio nDesempeno = new PeriodoDesempenoNegocio();
            List <SPE_OBTIENE_EO_CUMPLIMIENTO_GLOBAL_GRAFICA_Result> vGraficaTotal = nDesempeno.ObtenerCumplimientoGlobalGrafica(SELECCIONPERIODOS.ToString());
            var vPeriodoResultado = vGraficaTotal.Where(s => s.CL_PERIODO + s.ID_PERIODO.ToString() == pColumna).FirstOrDefault();

            ColumnPeriodo.FooterText                  = vPeriodoResultado.CUMPLIDO.ToString() + "%";
            ColumnPeriodo.FooterStyle.BackColor       = ObtieneColorCumplimiento(vPeriodoResultado.CUMPLIDO);
            ColumnPeriodo.FooterStyle.HorizontalAlign = HorizontalAlign.Center;
            ColumnPeriodo.HeaderText                  = "<div style=\"height: 30px;font-size: 10pt;\"><a href='javascript:OpenGlobal(" + vPeriodoResultado.ID_PERIODO + ")'>" + vPeriodoResultado.CL_PERIODO + "</a>&nbsp;&nbsp;<span style=\"border: 1px solid gray; border-radius: 5px; background:" + GeneraColor((int)vPeriodoResultado.NUM_PERIODO) + ";\">&nbsp;&nbsp;</span></div>";

            if (pFiltrarColumna & pVisible)
            {
                if (pWidth <= 60)
                {
                    (ColumnPeriodo as GridBoundColumn).FilterControlWidth = Unit.Pixel(pWidth);
                }
                else
                {
                    (ColumnPeriodo as GridBoundColumn).FilterControlWidth = Unit.Pixel(pWidth - 60);
                }
            }
            else
            {
                (ColumnPeriodo as GridBoundColumn).AllowFiltering = false;
            }

            rgGlobalComparativos.MasterTableView.Columns.Add(ColumnPeriodo);
        }
Exemple #5
0
        public void PintarReporte()
        {
            vPeriodosComparar = new List <E_PERIODOS_COMPARAR>();
            vMetasPeriodo     = new List <E_METAS_COMPARACION_DESEMPENO>();
            PeriodoDesempenoNegocio nDesempeno = new PeriodoDesempenoNegocio();

            vPeriodosComparar = nDesempeno.ObtenerDesempenoComparacion(SELECCIONPERIODOS.ToString());
            int vCuentaPeriodos = nDesempeno.ObtenerDesempenoComparacion(SELECCIONPERIODOS.ToString()).Count;

            vWidthDiv = vCuentaPeriodos * 580;

            if (vCuentaPeriodos > 2)
            {
                btnCancelar.Visible = false;
            }

            dvReporte.Style.Add("width", vWidthDiv.ToString() + "px");
            foreach (E_PERIODOS_COMPARAR item in vPeriodosComparar)
            {
                vResultado = 0;
                HtmlGenericControl vControlGrid = new HtmlGenericControl("div");
                vControlGrid.Attributes.Add("class", "ctrlBasico");
                string vRows = "<table class='ctrlTableForm' style='max-width: 460' >" +
                               "<tr><td class='ctrlTableDataContext'><b>Puesto: </b></td><td colspan='2' class='ctrlTableDataBorderContext'>" + item.NB_PUESTO + "</td></tr>" +
                               "<tr><td class='ctrlTableDataContext'><b>Período: </b></td><td colspan='2' class='ctrlTableDataBorderContext'>" + item.NB_PERIODO + "</td></tr>" +
                               "<tr><td class='ctrlTableDataContext'><b>Fechas: </b></td><td colspan='2' class='ctrlTableDataBorderContext'>" + item.FE_INICIO.ToString("dd-MM-yyyy") + " a " + item.FE_TERMINO.ToString("dd-MM-yyyy") + "</td></tr></table>";
                vControlGrid.InnerHtml = vRows;
                // vMetasPeriodo = nDesempeno.ObtieneMetasComparacion(idEvaluadoMeta: null, pIdPeriodo: item.ID_PERIODO, idEvaluado: vIdEvaluado);
                vMetasPeriodo = nDesempeno.ObtieneMetasPeriodoComparar(SELECCIONPERIODOS.ToString(), idEvaluado: vIdEvaluado, pIdPeriodo: item.ID_PERIODO);
                int vHeight = nDesempeno.ObtieneMetasPeriodoComparar(SELECCIONPERIODOS.ToString(), idEvaluado: vIdEvaluado, pIdPeriodo: item.ID_PERIODO).Count;
                foreach (E_METAS_COMPARACION_DESEMPENO elemen in vMetasPeriodo)
                {
                    vResultado = vResultado + elemen.PR_CUMPLIMIENTO_META;
                }

                if (vHeight == 1)
                {
                    vHeight = 2;
                }

                RadGrid vGrid = new RadGrid()
                {
                    ID                  = "rgEvaluado" + item.CL_PERIODO + item.ID_PERIODO.ToString(),
                    Width               = 560,
                    CssClass            = "cssGrid",
                    AutoGenerateColumns = false,
                };
                GridColumnGroup columnGroup = new GridColumnGroup();
                vGrid.MasterTableView.ColumnGroups.Add(columnGroup);
                vGrid.ShowFooter = true;
                vGrid.ClientSettings.Scrolling.UseStaticHeaders = true;
                vGrid.FooterStyle.Font.Bold             = true;
                columnGroup.HeaderText                  = "METAS EVALUADAS";
                columnGroup.Name                        = "metas";
                columnGroup.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                columnGroup.HeaderStyle.Font.Bold       = true;
                columnGroup.HeaderStyle.BackColor       = Color.FromArgb(162, 8, 0);
                columnGroup.HeaderStyle.ForeColor       = Color.White;
                vGrid.MasterTableView.DataKeyNames      = new string[] { "ID_EVALUADO_META", "ID_PERIODO" };
                vGrid.ItemDataBound                    += new GridItemEventHandler(vGrid_ItemDataBound);
                DataTable       dataTable = new DataTable();
                GridBoundColumn vColumn   = new GridBoundColumn();
                vColumn.HeaderText                  = "Meta";
                vColumn.DataField                   = "DS_META";
                vColumn.HeaderStyle.Width           = 150;
                vColumn.ColumnGroupName             = "metas";
                vColumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                vColumn.HeaderStyle.Font.Bold       = true;
                vGrid.Columns.Add(vColumn);
                GridBoundColumn vColumnPr = new GridBoundColumn();
                vColumnPr.HeaderText                  = "Ponderación";
                vColumnPr.DataField                   = "PR_EVALUADO";
                vColumnPr.HeaderStyle.Width           = 100;
                vColumnPr.ColumnGroupName             = "metas";
                vColumnPr.ItemStyle.HorizontalAlign   = HorizontalAlign.Right;
                vColumnPr.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                vColumnPr.HeaderStyle.Font.Bold       = true;
                //vColumnPr.DataFormatString = "{0:N2}%";
                vGrid.Columns.Add(vColumnPr);
                GridTemplateColumn templateColumn = new GridTemplateColumn();
                templateColumn.HeaderText                  = "Nivel alcanzado";
                templateColumn.ColumnGroupName             = "metas";
                templateColumn.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                templateColumn.ItemStyle.HorizontalAlign   = HorizontalAlign.Center;
                templateColumn.HeaderStyle.Font.Bold       = true;
                templateColumn.UniqueName                  = item.ToString();
                templateColumn.HeaderStyle.Width           = 80;
                templateColumn.ItemTemplate                = new MyTemplate("Color");
                vGrid.Columns.Add(templateColumn);
                GridBoundColumn vColumnCum = new GridBoundColumn();
                vColumnCum.ItemStyle.HorizontalAlign   = HorizontalAlign.Right;
                vColumnCum.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                vColumnCum.HeaderText      = "Cumplimiento";
                vColumnCum.ColumnGroupName = "metas";
                vColumnCum.DataField       = "PR_CUMPLIMIENTO_META_STR";
                //vColumnCum.Aggregate = GridAggregateFunction.Sum;
                //vColumnCum.FooterAggregateFormatString = "Total: {0:N2}%";
                //vColumnCum.DataFormatString = "{0:N2}%";
                vColumnCum.FooterText = vResultado.ToString() + "%";

                if (vResultado < 1)
                {
                    vColumnCum.FooterStyle.BackColor = Color.Gray;
                }
                if (vResultado > 0 && vResultado < 60)
                {
                    vColumnCum.FooterStyle.BackColor = Color.Red;
                    vColumnCum.FooterStyle.ForeColor = Color.White;
                }
                if (vResultado > 59 && vResultado < 76)
                {
                    vColumnCum.FooterStyle.BackColor = Color.Yellow;
                }
                if (vResultado > 75)
                {
                    vColumnCum.FooterStyle.BackColor = Color.Green;
                    vColumnCum.FooterStyle.ForeColor = Color.White;
                }
                vColumnCum.HeaderStyle.Width           = 130;
                vColumnCum.HeaderStyle.Font.Bold       = true;
                vColumnCum.FooterStyle.HorizontalAlign = HorizontalAlign.Center;
                vGrid.Columns.Add(vColumnCum);
                GridTemplateColumn templateColumnArchivo = new GridTemplateColumn();
                templateColumnArchivo.HeaderText = "Evidencia";
                templateColumnArchivo.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
                templateColumnArchivo.ItemStyle.HorizontalAlign   = HorizontalAlign.Center;
                templateColumnArchivo.HeaderStyle.Width           = 90;
                templateColumnArchivo.ColumnGroupName             = "metas";
                templateColumnArchivo.HeaderStyle.Font.Bold       = true;
                templateColumnArchivo.ItemTemplate = new MyTemplate("Evidencias");
                vGrid.Columns.Add(templateColumnArchivo);
                vGrid.DataSource = vMetasPeriodo;
                vGrid.ClientSettings.Selecting.AllowRowSelect = false;
                vGrid.ClientSettings.Scrolling.AllowScroll    = true;
                HtmlGenericControl vContenedorControlGrid = new HtmlGenericControl("div");
                vContenedorControlGrid.Attributes.Add("class", "ctrlBasico");
                vContenedorControlGrid.Controls.Add(vGrid);
                vControlGrid.Controls.Add(vContenedorControlGrid);
                dvReporte.Controls.Add(vControlGrid);
            }
        }
Exemple #6
0
        public DataTable ObtieneMetasComparativaGrafica(string vXmlPeriodos, ref List <E_PERIODOS_COMPARAR> vListaPeriodos)
        {
            PeriodoDesempenoNegocio    oPeriodo = new PeriodoDesempenoNegocio();
            List <E_PERIODOS_COMPARAR> vListaPeriodosGrafica = new List <E_PERIODOS_COMPARAR>();

            vListaPeriodosGrafica = oPeriodo.ObtenerDesempenoComparacion(vXmlPeriodos).ToList();

            DataTable vDtPivot = new DataTable();

            vDtPivot.Columns.Add("NO_META_EVALUA", typeof(string));
            vDtPivot.Columns.Add("DS_META", typeof(string));

            List <E_METAS_PERIODO_COMPARACION> vListaMetasGrafica      = new List <E_METAS_PERIODO_COMPARACION>();
            List <E_METAS_PERIODO_COMPARACION> vListaMetasGraficaFinal = new List <E_METAS_PERIODO_COMPARACION>();

            foreach (var item in vListaPeriodosGrafica)
            {
                //item.NB_PERIODO_ENCABEZADO = item.NB_PERIODO;

                //if (vDtPivot.Columns.Contains(item.NB_PERIODO_ENCABEZADO))
                //{
                //    item.NB_PERIODO_ENCABEZADO = item.NB_PERIODO_ENCABEZADO + "1";
                //}

                vDtPivot.Columns.Add(item.NB_PERIODO_ENCABEZADO, typeof(string));
                vListaMetasGrafica = oPeriodo.ObtieneMetasComparacion(idEvaluadoMeta: null, pIdPeriodo: item.ID_PERIODO, idEvaluado: vIdEvaluado).ToList();

                foreach (E_METAS_PERIODO_COMPARACION items in vListaMetasGrafica)
                {
                    vListaMetasGraficaFinal.Add(new E_METAS_PERIODO_COMPARACION
                    {
                        ID_EVALUADO_META              = items.ID_EVALUADO_META,
                        ID_PERIODO                    = items.ID_PERIODO,
                        ID_EVALUADO                   = items.ID_EVALUADO,
                        NO_META                       = items.NO_META,
                        DS_FUNCION                    = items.DS_FUNCION,
                        NB_INDICADOR                  = items.NB_INDICADOR,
                        DS_META                       = items.DS_META,
                        CL_TIPO_META                  = items.CL_TIPO_META,
                        FG_VALIDA_CUMPLIMIENTO        = items.FG_VALIDA_CUMPLIMIENTO,
                        FG_EVALUAR                    = items.FG_EVALUAR,
                        NB_CUMPLIMIENTO_ACTUAL        = items.NB_CUMPLIMIENTO_ACTUAL,
                        NB_CUMPLIMIENTO_MINIMO        = items.NB_CUMPLIMIENTO_MINIMO,
                        NB_CUMPLIMIENTO_SATISFACTORIO = items.NB_CUMPLIMIENTO_SATISFACTORIO,
                        NB_CUMPLIMIENTO_SOBRESALIENTE = items.NB_CUMPLIMIENTO_SOBRESALIENTE,
                        PR_META                       = items.PR_META,
                        NB_RESULTADO                  = items.NB_RESULTADO,
                        PR_RESULTADO                  = items.PR_RESULTADO,
                        CL_NIVEL                      = items.CL_NIVEL,
                        PR_CUMPLIMIENTO_META          = items.PR_CUMPLIMIENTO_META,
                        FG_EVIDENCIA                  = items.FG_EVIDENCIA,
                        PR_EVALUADO                   = items.PR_EVALUADO,
                        NIVEL_ALZANZADO               = items.NIVEL_ALZANZADO,
                        COLOR_NIVEL                   = items.COLOR_NIVEL
                    }
                                                );
                }
            }

            List <E_META> vMetasGrafica = oPeriodo.ObtenerMetasGrafica(SELECCIONPERIODOS.ToString(), vIdEmpleado).Select(s => new E_META {
                NO_META = s.NO_META.ToString(), DS_META = s.DS_META, PR_CUMPLIMIENTO = s.PR_CUMPLIMIENTO_META, COLOR_NIVEL = s.COLOR_NIVEL, NB_PERIODO = s.NB_PERIODO
            }).ToList();

            vMetas = new List <E_METAS_PERIODOS>();
            vRow   = 1;

            foreach (E_META item in vMetasGrafica.OrderBy(o => o.DS_META))
            {
                bool exists = vMetas.Exists(element => element.DS_META == item.DS_META);
                if (!exists)
                {
                    E_METAS_PERIODOS f = new E_METAS_PERIODOS
                    {
                        NO_META_EVALUA  = vRow,
                        NO_META         = item.NO_META,
                        DS_META         = item.DS_META,
                        NB_PERIODO      = item.NB_PERIODO,
                        PR_CUMPLIMIENTO = item.PR_CUMPLIMIENTO,
                        COLOR_NIVEL     = item.COLOR_NIVEL
                    };
                    vMetas.Add(f);
                    vRow++;
                }
            }


            foreach (var vPues in vMetas.OrderBy(o => o.DS_META))
            {
                DataRow vDr = vDtPivot.NewRow();
                vDr["NO_META_EVALUA"] = vPues.NO_META_EVALUA;
                vDr["DS_META"]        = vPues.DS_META;

                foreach (var vCom in vListaPeriodosGrafica.OrderBy(o => o.ID_PERIODO))
                {
                    var vResultado = vListaMetasGraficaFinal.OrderBy(o => o.ID_PERIODO).Where(t => t.ID_PERIODO == vCom.ID_PERIODO && t.DS_META == vPues.DS_META).FirstOrDefault();
                    if (vResultado != null)
                    {
                        if (vResultado.PR_CUMPLIMIENTO_META != null)
                        {
                            vDr[vCom.NB_PERIODO_ENCABEZADO.ToString()] = vResultado.PR_CUMPLIMIENTO_META + "%";
                        }
                        else
                        {
                            vDr[vCom.NB_PERIODO_ENCABEZADO.ToString()] = "0.00%";
                        }
                    }
                    else
                    {
                        vDr[vCom.NB_PERIODO_ENCABEZADO.ToString()] = "N/A";
                    }
                }
                vDtPivot.Rows.Add(vDr);
            }
            return(vDtPivot);
        }