/// <summary> /// Modifica la grafica que se va a presentar /// </summary> /// <param name="mes">Mes usado para pintar el eje X</param> /// <param name="sucursalId">Identificador de la Sucursal a usar</param> /// <param name="datos">DataSet con la informacion</param> /// <param name="diasMes">Numero de dias del mes</param> /// <param name="totalFlota">Lista con la suma de totales de la flota</param> /// <param name="totalRentados">Lista con las suma de los totales rentados de la flota</param> private void ModificarGrafica(int mes, int sucursalId, RentasSucursalDS datos, int diasMes, List <Int32> totalFlota, List <Int32> totalRentados) { XRChart grafica = this.xrGraficaUtilizacion as XRChart; var nombreMes = datos.Meses.First(x => x.Mes == mes).Nombre; if (sucursalId != 0) { var nombreSucursal = datos.Sucursales.First(x => x.SucursalID == sucursalId).Nombre; grafica.Titles[0].Text = "SUCURSAL " + nombreSucursal + " " + nombreMes; } else { grafica.Titles[0].Text = "TOTAL " + nombreMes; } XYDiagram diagramaGrafica = grafica.Diagram as XYDiagram; diagramaGrafica.AxisX.CustomLabels.Clear(); diagramaGrafica.AxisX.Range.MaxValue = diasMes; for (int i = 1; i < diasMes + 1; i++) { CustomAxisLabel customAxisLabel = new CustomAxisLabel(); customAxisLabel.Name = i.ToString(); customAxisLabel.AxisValue = i.ToString(); diagramaGrafica.AxisX.CustomLabels.Add(customAxisLabel); } if (sucursalId == 0) { RentasSucursalDS newDataSet = new RentasSucursalDS(); for (int i = 0; i < totalFlota.Count; i++) { Int32 totalFlotaDia = totalFlota[i]; Int32 totalRentadosDia = totalRentados[i]; Double?porcentaje = null; if (totalFlotaDia != 0) { porcentaje = (Double.Parse(totalRentadosDia.ToString()) / Double.Parse(totalFlotaDia.ToString())); } else { porcentaje = 0; } var row = newDataSet.SubTotalXDia.NewSubTotalXDiaRow(); row.Dia = i + 1; row.Mes = mes; row.PorcentajeUtilizacionFlota = Int32.Parse(Math.Round((Double)(porcentaje * 100)).ToString()); row.Anio = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Anio") : Anio.Value; newDataSet.SubTotalXDia.AddSubTotalXDiaRow(row); } grafica.DataSource = newDataSet; } else { grafica.DataSource = datos; } }
/// <summary> /// Evento Ejecutado para calcular los resultados por dia en el mes solicitado para cada modelo /// </summary> private void Detail_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { var mes = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Mes") : Mes.Value; Int32?sucursal = 0; if (UsarSucursal.Value) { sucursal = this.GetCurrentColumnValue <int>("SucursalID"); } var modeloId = this.GetCurrentColumnValue <int>("ModeloID"); var anio = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Anio") : Anio; var diasMes = this.GetDaysInMonth(mes, anio); RentasSucursalDS data = this.DataSource as RentasSucursalDS; XRTableRow tableRow = this.xrTable2.Rows.LastRow; Int32 flotaUltimoDia = 0; for (int i = 1; i < diasMes + 1; i++) { var cell = tableRow.Cells[String.Format("xrtHeaderModelDay{0}", i)] as XRTableCell; var dia = i; if (dia > 0) { if (sucursal != 0) { var dataRow = data.ModelosXDia.FirstOrDefault(x => x.Mes == mes && x.Dia == dia && x.ModeloID == modeloId && x.SucursalID == sucursal); if (dataRow != null) { cell.Text = (dataRow.UnidadesRentadas + dataRow.UnidadesDisponibles).ToString(); flotaUltimoDia = Int32.Parse(cell.Text); } } else { var dataRow = data.ModelosXDia.Where(x => x.Mes == mes && x.Dia == dia && x.ModeloID == modeloId).ToList(); if (dataRow != null && dataRow.Count > 0) { cell.Text = (dataRow.Sum(x => x.UnidadesRentadas) + dataRow.Sum(x => x.UnidadesDisponibles)).ToString(); flotaUltimoDia = Int32.Parse(cell.Text); } } } else { cell.Text = "-1"; } } if (!UsarSucursal.Value) { this.xrtWhiteSpace.Text = flotaUltimoDia.ToString(); this.xrtWhiteSpace.BackColor = Color.White; } else { this.xrtWhiteSpace.BackColor = Color.DarkGray; } }
/// <summary> /// Evento ejecutado para obtener la concatenacion de año con mes /// </summary> private void xrtMesAnio_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { var mes = this.GetCurrentColumnValue <int>("Mes"); RentasSucursalDS dataSource = this.Report.DataSource as RentasSucursalDS; var row = dataSource.Meses.First(x => x.Mes == mes); xrtMesAnio.Text = row.Nombre + " - " + row.Anio; }
/// <summary> /// Evento Ejecutado para calcular el nombre del modelo a presentar /// </summary> private void xrtNombreModelo_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { var modeloId = this.GetCurrentColumnValue <int>("ModeloID"); RentasSucursalDS dataSource = this.Report.DataSource as RentasSucursalDS; var row = dataSource.Modelos.First(x => x.ModeloID == modeloId); xrtNombreModelo.Text = row.Nombre; }
/// <summary> /// Evento ejecutado para obtener el nombre del Mes /// </summary> private void xrtMesNombre_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { var mes = this.GetCurrentColumnValue <int>("Mes"); RentasSucursalDS dataSource = this.DataSource as RentasSucursalDS; var meses = dataSource.Meses.First(x => x.Mes == mes); xrtMesNombre.Text = meses.Nombre; }
/// <summary> /// Evento Ejecutado para calcular los resultados por dias en el mes solicitado /// </summary> private void grpFTotales_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { var mes = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Mes") : Mes.Value; Int32?sucursal = 0; if (UsarSucursal.Value) { sucursal = this.GetCurrentColumnValue <int>("SucursalID"); } var anio = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Anio") : Anio.Value; var diasMes = this.GetDaysInMonth(mes, anio); RentasSucursalDS data = this.DataSource as RentasSucursalDS; XRTableRow tableRowTotalFlota = this.xrTTotales.Rows.LastRow; XRTableRow tableRowTotalRentados = this.xrtTotalRentados.Rows.LastRow; XRTableRow tableRowTotalDisponibles = this.xrtTotalDisponibles.Rows.LastRow; XRTableRow tableRowTotalPorcentaje = this.xrtPorcentajeTotal.Rows.LastRow; var totalFlotaRentados = 0; List <Int32> totalFlotaList = new List <Int32>(); List <Int32> totalRentadosList = new List <Int32>(); for (int i = 1; i < diasMes + 1; i++) { var cellTotalFlota = tableRowTotalFlota.Cells[String.Format("xrtHeaderDayCell{0}", i)] as XRTableCell; var cellTotalRentado = tableRowTotalRentados.Cells[String.Format("xrtTotalRentadosDay{0}", i)] as XRTableCell; var cellTotalDisponibles = tableRowTotalDisponibles.Cells[String.Format("xrtTotalDisponiblesDay{0}", i)] as XRTableCell; var cellTotalPorcentaje = tableRowTotalPorcentaje.Cells[String.Format("xrtPorcentajeTotalDay{0}", i)] as XRTableCell; var dia = i; if (dia > 0) { if (sucursal != 0) { var dataRow = data.SubTotalXDia.FirstOrDefault(x => x.Mes == mes && x.Dia == dia && x.SucursalID == sucursal); if (dataRow != null) { cellTotalFlota.Text = dataRow.TotalFlota.ToString(); cellTotalRentado.Text = dataRow.TotalRentados.ToString(); cellTotalDisponibles.Text = dataRow.TotalDisponible.ToString(); cellTotalPorcentaje.Text = dataRow.PorcentajeUtilizacionFlota.ToString(); totalFlotaRentados += dataRow.TotalRentados; } } else { var dataRow = data.SubTotalXDia.Where(x => x.Mes == mes && x.Dia == dia).ToList(); if (dataRow != null && dataRow.Count > 0) { var sumaTotalFlota = Decimal.Parse(dataRow.Sum(x => x.TotalFlota).ToString()); var sumaTotalRentados = Decimal.Parse(dataRow.Sum(x => x.TotalRentados).ToString()); var sumaTotalDisponibles = Decimal.Parse(dataRow.Sum(x => x.TotalDisponible).ToString()); var sumaTotalPorcentaje = sumaTotalFlota != 0 ? sumaTotalRentados / sumaTotalFlota : 0M; cellTotalFlota.Text = (sumaTotalFlota).ToString(); cellTotalRentado.Text = (sumaTotalRentados).ToString(); cellTotalDisponibles.Text = (sumaTotalDisponibles).ToString(); cellTotalPorcentaje.Text = Math.Round(sumaTotalPorcentaje * 100).ToString(); totalFlotaRentados += (Int32)sumaTotalRentados; totalFlotaList.Add((Int32)sumaTotalFlota); totalRentadosList.Add((Int32)sumaTotalRentados); } } } else { cellTotalFlota.Text = "-1"; cellTotalRentado.Text = "-1"; cellTotalDisponibles.Text = "-1"; cellTotalPorcentaje.Text = "-1"; } } totalFlotaRentados = totalFlotaRentados != 0 ? Int32.Parse(Math.Round(((Decimal)totalFlotaRentados / (Decimal)diasMes)).ToString()) : 0; this.xrPromedioTotalRentados.Text = totalFlotaRentados.ToString(); if (sucursal != 0) { List <RentasSucursalDS.SubTotalXDiaRow> listaDias = data.SubTotalXDia.Where(x => x.Mes == mes && x.SucursalID == sucursal.Value).ToList(); var totalFlota = listaDias.Last().TotalFlota; this.xrTPromedio.Text = totalFlota.ToString(); this.xrPromedioDisponibles.Text = (totalFlota - totalFlotaRentados).ToString(); this.xrPromedioUtilizacion.Text = PorcentajeTotal.ToString(); this.ModificarGrafica(mes, sucursal.Value, data, diasMes, new List <Int32>(), new List <Int32>()); } else { var totalFlota = totalFlotaList.Last(); this.xrTPromedio.Text = totalFlota.ToString(); this.xrPromedioDisponibles.Text = (totalFlota - totalFlotaRentados).ToString(); this.xrPromedioUtilizacion.Text = PorcentajeTotal.ToString(); this.ModificarGrafica(mes, 0, data, diasMes, totalFlotaList, totalRentadosList); } }
/// <summary> /// Evento ejecutado para calcular los totales por dia en el mes que se esta presentando. /// </summary> private void GroupFooter1_BeforePrint(object sender, PrintEventArgs e) { var mes = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Mes") : Mes.Value; var anio = Anio.Value; Int32?sucursal = 0; if (UsarSucursal.Value) { sucursal = this.GetCurrentColumnValue <int>("SucursalID"); } var diasEnMes = GetDaysInMonth(mes, anio); RentasSucursalDS data = this.DataSource as RentasSucursalDS; XRTableRow tableRowTotales = this.xrTable4.Rows.LastRow; for (int i = 1; i < diasEnMes + 1; i++) { var cellTotal = tableRowTotales.Cells[String.Format("xrtTotalFlotaDayCell{0}", i)] as XRTableCell; var dia = i; //if(dia > 0) //{ var dataRowTotal = sucursal != 0 ? data.ModelosXDia.Where(x => x.Mes == mes && x.Dia == dia && x.SucursalID == sucursal).ToList() : data.ModelosXDia.Where(x => x.Mes == mes && x.Dia == dia).ToList(); if (dataRowTotal != null && dataRowTotal.Count > 0) { cellTotal.Text = dataRowTotal.Sum(x => x.UnidadesRentadas).ToString(); } //if(sucursal != 0) //{ // var rowTotal = data.ModelosXDia.Where(x => x.Mes == mes && x.Dia == dia && x.SucursalID == sucursal).ToList(); // cellTotal.Text = rowTotal.Sum(x => x.UnidadesRentadas).ToString(); //} //else //{ // var rowTotal = data.ModelosXDia.Where(x => x.Mes == mes && x.Dia == dia).ToList(); // cellTotal.Text = rowTotal.Sum(x => x.UnidadesRentadas).ToString(); //} //} //else //{ // cellTotal.Text = "-1"; //} } #region Calculo Totales List <RentasSucursalDS.SubTotalXModeloRow> lista = sucursal != 0 ? data.SubTotalXModelo.Where(x => x.Mes == mes && x.SucursalID == sucursal).ToList() : data.SubTotalXModelo.Where(x => x.Mes == mes).ToList(); var diasRenta = Decimal.Parse(lista.Sum(x => x.DiasRenta).ToString()); var diasUnidad = Decimal.Parse(lista.Sum(x => x.DiasXUnidad).ToString()); var diasObjetivo = Decimal.Parse(lista.Sum(x => x.DiasObjetivo).ToString()); Int32 porcentajeTotal = 0; if (diasUnidad != 0) { var resultado = Math.Round((diasRenta / diasUnidad) * 100); porcentajeTotal = (Int32)resultado; } xrTTotalPorcentajeUtilizacion.Text = porcentajeTotal.ToString(); this.xrTTotalDiasObjetivo.Text = diasObjetivo.ToString(); this.xrTTotalDiasXUnidad.Text = diasUnidad.ToString(); this.xrTTotalDiasRenta.Text = diasRenta.ToString(); #endregion RentaDiariaGeneralSucursalModeloPSLRPT reporte = (this.sbrptTotalesMes.ReportSource = new RentaDiariaGeneralSucursalModeloPSLRPT()) as RentaDiariaGeneralSucursalModeloPSLRPT; reporte.diasMesWidth = diasMesEncabezadosSize; reporte.Mes = mes; reporte.Anio = anio; reporte.PorcentajeTotal = porcentajeTotal; reporte.UsarSucursal = UsarSucursal; reporte.CreateNewColumns(); if (this.DataMember == "Modelos") { reporte.DataMember = "Modelos"; reporte.DataSource = this.DataSource; } }
/// <summary> /// Evento ejecutado antes de que se pinte el detalle para calcular resultados por dia /// </summary> private void Detail_BeforePrint(object sender, PrintEventArgs e) { var modeloId = this.GetCurrentColumnValue <int>("ModeloID"); var mes = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Mes") : Mes.Value; var anio = UsarSucursal.Value == true?this.GetCurrentColumnValue <int>("Anio") : Anio.Value; Int32?sucursal = 0; if (UsarSucursal.Value) { sucursal = this.GetCurrentColumnValue <int>("SucursalID"); } var diasEnMes = GetDaysInMonth(mes, anio); RentasSucursalDS data = this.DataSource as RentasSucursalDS; var row = data.Modelos.First(x => x.ModeloID == modeloId); xrtNombreModelo.Text = row.Nombre; XRTableRow tableRow = this.xrTable3.Rows.LastRow; for (int i = 1; i < diasEnMes + 1; i++) { var cell = tableRow.Cells[String.Format("xrtHeaderDayCell{0}", i)] as XRTableCell; var dia = i; if (dia > 0) { if (sucursal != 0) { var dataRow = data.ModelosXDia.FirstOrDefault(x => x.Mes == mes && x.Dia == dia && x.ModeloID == modeloId && x.SucursalID == sucursal); if (dataRow != null) { cell.Text = dataRow.UnidadesRentadas.ToString(); } } else { var dataRow = data.ModelosXDia.Where(x => x.Mes == mes && x.Dia == dia && x.ModeloID == modeloId).ToList(); if (dataRow != null && dataRow.Count > 0) { cell.Text = dataRow.Sum(x => x.UnidadesRentadas).ToString(); } } } else { cell.Text = "-1"; } } if (sucursal != 0) { var subtotalSucursal = data.SubTotalXModelo.FirstOrDefault(x => x.Mes == mes && x.SucursalID == sucursal && x.ModeloID == modeloId); this.xrtDiasXUnidad.Text = subtotalSucursal.DiasXUnidad.ToString(); this.xrtDiasObjetivo.Text = subtotalSucursal.DiasObjetivo.ToString(); this.xrtDiasRenta.Text = subtotalSucursal.DiasRenta.ToString(); this.xrtPorcentajeUtilizacion.Text = subtotalSucursal.PorcentajeUtilizacion.ToString(); } else { var subTotalMes = data.SubTotalXModelo.Where(x => x.Mes == mes && x.ModeloID == modeloId).ToList(); Decimal sumaDiasRenta = Decimal.Parse(subTotalMes.Sum(x => x.DiasRenta).ToString()); Decimal sumaDiasObjetivo = Decimal.Parse(subTotalMes.Sum(x => x.DiasObjetivo).ToString()); Decimal sumaDiasXUnidad = Decimal.Parse(subTotalMes.Sum(x => x.DiasXUnidad).ToString()); Decimal porcentaje = sumaDiasXUnidad != 0M ? sumaDiasRenta / sumaDiasXUnidad : 0M; this.xrtDiasXUnidad.Text = sumaDiasXUnidad.ToString(); this.xrtDiasObjetivo.Text = sumaDiasObjetivo.ToString(); this.xrtDiasRenta.Text = sumaDiasRenta.ToString(); this.xrtPorcentajeUtilizacion.Text = Math.Round(porcentaje * 100).ToString(); } }