private void Reporte_Cargar()
        {
            List <Reporte_CostoProduccionResult> lstDocumentos;

            try
            {
                ReporteContabilidadWCFClient objReporteContabilidadWCF = new ReporteContabilidadWCFClient();
                DateTime fechaInicio = new DateTime(dpFecInicio.SelectedDate.Value.Year, dpFecInicio.SelectedDate.Value.Month, 1);
                DateTime fechaFinal  = new DateTime(dpFecFinal.SelectedDate.Value.Year, dpFecFinal.SelectedDate.Value.Month, 1).AddMonths(1).AddDays(-1);

                DateTime mesEvaluado = new DateTime(dpFecVariacion.SelectedDate.Value.Year, dpFecVariacion.SelectedDate.Value.Month, 1);

                if (fechaFinal < fechaInicio)
                {
                    rwmReporte.RadAlert("Ud. debe ingresar un periodo final mayor o igual al periodo inicial", 500, 100, "Validación de fechas", "");
                }

                else if (mesEvaluado < fechaInicio)
                {
                    rwmReporte.RadAlert("Ud. debe ingresar un mes evaluado que pertenezca al rango del Periodo Inicio y Final", 500, 100, "Validación de fechas", "");
                }

                else if (mesEvaluado > fechaFinal)
                {
                    rwmReporte.RadAlert("Ud. debe ingresar un mes evaluado que pertenezca al rango del Periodo Inicio y Final", 500, 100, "Validación de fechas", "");
                }

                else
                {
                    lstDocumentos = objReporteContabilidadWCF.ReporteCostoProduccion(((Usuario_LoginResult)Session["Usuario"]).idEmpresa, ((Usuario_LoginResult)Session["Usuario"]).codigoUsuario,
                                                                                     fechaInicio, fechaFinal).ToList();

                    var       dtLstDocumento = new DataTable();
                    DataTable dtDoc          = ToDataTable(lstDocumentos, "dtLstDoc");
                    dtLstDocumento = dtDoc;
                    if (lstDocumentos.Any())
                    {
                        PivotTable objPivotTable = new PivotTable();

                        var moneda  = ddlMoneda.SelectedValue;
                        var lstRows = new List <string>();
                        lstRows.Add("PT_Kardex");
                        lstRows.Add("PT_Descripcion");
                        lstRows.Add("cantidadTotal");
                        if (moneda == "0")
                        {
                            lstRows.Add("costoTotalSol");
                            lstRows.Add("hhSol");
                            lstRows.Add("hhMaqSol");
                            lstRows.Add("costoDistribuidoSol");
                            lstRows.Add("costoProdTerminadoSol");
                        }
                        else
                        {
                            lstRows.Add("costoTotalDol");
                            lstRows.Add("hhDol");
                            lstRows.Add("hhMaqDol");
                            lstRows.Add("costoDistribuidoDol");
                            lstRows.Add("costoProdTerminadoDol");
                        }
                        dtLstDocumento = objPivotTable.Generate(dtDoc, lstRows, "Mes", "cuSol");

                        string mesVariacion = "c/u " + dpFecVariacion.SelectedDate.Value.Year.ToString() + " - " +
                                              dpFecVariacion.SelectedDate.Value.Month.ToString();

                        if (dtLstDocumento.Columns.Contains(mesVariacion))
                        {
                            foreach (DataRow row in dtLstDocumento.Select())
                            {
                                if (moneda == "0")
                                {
                                    string cuMesEvaluado = string.IsNullOrEmpty(row[mesVariacion].ToString()) ? "0" : row[mesVariacion].ToString();
                                    row["Variacion"]     = 1 - Math.Round((Convert.ToDecimal(cuMesEvaluado) / (Convert.ToDecimal(row["Variacion"]) / dtLstDocumento.Columns.Count - 8)), 2);
                                    row["cantidadTotal"] = row["cantidadTotal"] == null ? 0m : Math.Round(Convert.ToDecimal(row["cantidadTotal"]), 2);
                                    row["hhSol"]         = row["hhSol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["hhSol"]), 2);
                                    row["hhMaqSol"]      = row["hhMaqSol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["hhMaqSol"]), 2);
                                    row["costoTotalSol"] = row["costoTotalSol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["costoTotalSol"]), 2);
                                }

                                else
                                {
                                    string cuMesEvaluado = string.IsNullOrEmpty(row[mesVariacion].ToString()) ? "0" : row[mesVariacion].ToString();
                                    row["Variacion"]     = 1 - Math.Round((Convert.ToDecimal(cuMesEvaluado) / (Convert.ToDecimal(row["Variacion"]) / dtLstDocumento.Columns.Count - 8)), 2);
                                    row["cantidadTotal"] = row["cantidadTotal"] == null ? 0m : Math.Round(Convert.ToDecimal(row["cantidadTotal"]), 2);
                                    row["hhDol"]         = row["hhDol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["hhDol"]), 2);
                                    row["hhMaqDol"]      = row["hhMaqDol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["hhMaqDol"]), 2);
                                    row["costoTotalDol"] = row["costoTotalDol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["costoTotalDol"]), 2);
                                }
                            }
                        }
                        else
                        {
                            foreach (DataRow row in dtLstDocumento.Select())
                            {
                                if (moneda == "0")
                                {
                                    row["Variacion"]     = 0;
                                    row["cantidadTotal"] = row["cantidadTotal"] == null ? 0m : Math.Round(Convert.ToDecimal(row["cantidadTotal"]), 2);
                                    row["hhSol"]         = row["hhSol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["hhSol"]), 2);
                                    row["hhMaqSol"]      = row["hhMaqSol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["hhMaqSol"]), 2);
                                    row["costoTotalSol"] = row["costoTotalSol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["costoTotalSol"]), 2);
                                }

                                else
                                {
                                    row["Variacion"]     = 0;
                                    row["cantidadTotal"] = row["cantidadTotal"] == null ? 0m : Math.Round(Convert.ToDecimal(row["cantidadTotal"]), 2);
                                    row["hhDol"]         = row["hhDol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["hhDol"]), 2);
                                    row["hhMaqDol"]      = row["hhMaqDol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["hhMaqDol"]), 2);
                                    row["costoTotalDol"] = row["costoTotalDol"] == null ? 0m : Math.Round(Convert.ToDecimal(row["costoTotalDol"]), 2);
                                }
                            }
                        }

                        dtLstDocumento.Columns["PT_Kardex"].ColumnName      = "Kardex";
                        dtLstDocumento.Columns["PT_Descripcion"].ColumnName = "Descripcion";
                        dtLstDocumento.Columns["cantidadTotal"].ColumnName  = "Cantidad de Produccion";
                        dtLstDocumento.Columns["Variacion"].ColumnName      = "% Variacion " + mesVariacion;

                        if (moneda == "0")
                        {
                            dtLstDocumento.Columns["costoTotalSol"].ColumnName         = "Costo de Material Consumido (S/)";
                            dtLstDocumento.Columns["hhSol"].ColumnName                 = "Costo Inductor H/H (S/)";
                            dtLstDocumento.Columns["hhMaqSol"].ColumnName              = "Costo Inductor H/MAQ (S/)";
                            dtLstDocumento.Columns["costoDistribuidoSol"].ColumnName   = "Costo Gasto Distribuido (S/)";
                            dtLstDocumento.Columns["costoProdTerminadoSol"].ColumnName = "Costo de Produccion Producto Terminado (S/)";
                        }
                        else
                        {
                            dtLstDocumento.Columns["costoTotalDol"].ColumnName         = "Costo de Material Consumido ($)";
                            dtLstDocumento.Columns["hhDol"].ColumnName                 = "Costo Inductor H/H ($)";
                            dtLstDocumento.Columns["hhMaqDol"].ColumnName              = "Costo Inductor H/MAQ ($)";
                            dtLstDocumento.Columns["costoDistribuidoDol"].ColumnName   = "Costo Gasto Distribuido ($)";
                            dtLstDocumento.Columns["costoProdTerminadoDol"].ColumnName = "Costo de Produccion Producto Terminado ($)";
                        }
                    }

                    List <DataRow> rows = dtLstDocumento.Rows.Cast <DataRow>().ToList();

                    foreach (var row in rows)
                    {
                        foreach (var column in row.Table.Columns)
                        {
                            string HeaderName = column.ToString();

                            if (HeaderName.Contains("201") && !HeaderName.Contains("Variaci"))
                            {
                                if (string.IsNullOrEmpty(row[HeaderName].ToString()))
                                {
                                    row[HeaderName] = 0;
                                }
                                else
                                {
                                    row[HeaderName] = Math.Round(Convert.ToDecimal(row[HeaderName]), 2);
                                }
                            }
                        }
                    }

                    grdDocumentos01.DataSource = rows;
                    string mensaje = "Se han encontrado " + rows.Count.ToString() + " registros.";
                    //lblMensaje.Text = "Se han encontrado " + rows.Count.ToString() + " registros.";
                    //lblMensaje.CssClass = "mensajeExito";
                    grdDocumentos01.DataBind();

                    ViewState["lstDocumentos"]          = JsonHelper.JsonSerializer(lstDocumentos);
                    HttpContext.Current.Session["rows"] = rows;
                    Session["mensaje"]  = mensaje;
                    Session["cantidad"] = rows.Count;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }