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 + " <span style=\"border: 1px solid gray; border-radius: 5px; background:" + GeneraColor((int)items.NUM_PERIODO) + ";\"> </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> <span style=\"border: 1px solid gray; border-radius: 5px; background:" + GeneraColor((int)vPeriodoResultado.NUM_PERIODO) + ";\"> </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); }
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); } }
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); }