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; } }