/// <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;
            }
        }
예제 #3
0
        /// <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;
        }
예제 #5
0
        /// <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();
            }
        }