/// <summary>
        /// Determina si la unidad sigue en la flota de la sucursal durante el transcurso del mes
        /// </summary>
        /// <param name="source">Fuente de Datos de la Unidad</param>
        /// <returns>Es TRUE si aun sigue en la flota de la sucursal</returns>
        private bool EnFlota(ConsultarDetalladoPSLSucursalDS.ConsultarDetalladoPSLSucursalRow source)
        {
            bool enFlota = true;

            int limit1 = 1;
            int limit2 = this.GetDaysInMonth();

            if (source == null)
            {
                source = (this.GetCurrentRow() as DataRowView).Row as ConsultarDetalladoPSLSucursalDS.ConsultarDetalladoPSLSucursalRow;
                if (source == null)
                {
                    throw new Exception(String.Format("La fila de datos actual no corresponde a una fila de tipo {0}", typeof(ConsultarDetalladoPSLSucursalDS.ConsultarDetalladoPSLSucursalRow)));
                }
            }

            for (int i = limit1; i <= limit2; i++)
            {
                String index = String.Format("EstatusHistorial_{0}", i);
                if (source.IsNull(index) && i == 1)
                {
                    return(enFlota);
                }
                else
                {
                    if (source.IsNull(index) && i > 1)
                    {
                        EEstatusHistorial?estatusAnterior = (EEstatusHistorial)Enum.ToObject(typeof(EEstatusHistorial), (int)source[String.Format("EstatusHistorial_{0}", i - 1)]);
                        return(estatusAnterior != EEstatusHistorial.FueraFlota);
                    }
                }
            }

            return(enFlota);
        }
        /// <summary>
        /// Realiza un conteo de unidades por modelo tomando como base el estatus de historial de una unidad
        /// </summary>
        /// <param name="source">Fila de datos a evaluar</param>
        /// <param name="estatusToCompare">Estatus de Historial a comparar, si se omiten se cuentan todas las unidades</param>
        /// <param name="dayOfMonth">Día del mes a procesar, si se omite se procesa todo el mes</param>
        /// <returns>Conteo de unidades por modelo tomando como base su estatus de historial</returns>
        private int CountFromModelo(ConsultarDetalladoPSLSucursalDS.ModeloRow source, EEstatusHistorial?estatusToCompare, int?dayOfMonth)
        {
            int result = 0;
            int limit1 = 0;
            int limit2 = 0;

            if (dayOfMonth.HasValue)
            {
                limit1 = dayOfMonth.Value;
                limit2 = dayOfMonth.Value;
            }
            else
            {
                limit1 = 1;
                limit2 = this.GetDaysInMonth();
            }

            if (source == null)
            {
                source = (this.GetCurrentRow() as DataRowView).Row as ConsultarDetalladoPSLSucursalDS.ModeloRow;
                if (source == null)
                {
                    throw new Exception(String.Format("La fila de datos actual no corresponde a una fila de tipo {0}", typeof(ConsultarDetalladoPSLSucursalDS.ModeloRow)));
                }
            }

            ConsultarDetalladoPSLSucursalDS.ConsultarDetalladoPSLSucursalRow[] detallesRow = source.GetConsultarDetalladoPSLSucursalRows();
            foreach (ConsultarDetalladoPSLSucursalDS.ConsultarDetalladoPSLSucursalRow detalleRow in detallesRow)
            {
                for (int i = limit1; i <= limit2; i++)
                {
                    String rowIndex = String.Format("EstatusHistorial_{0}", i);
                    if (detalleRow.IsNull(rowIndex))
                    {
                        continue;
                    }

                    EEstatusHistorial?estatusHistorial = (EEstatusHistorial)Enum.ToObject(typeof(EEstatusHistorial), detalleRow[rowIndex]);
                    if (estatusToCompare.HasValue)
                    {
                        if (estatusHistorial == estatusToCompare)
                        {
                            result++;
                        }
                    }
                    else
                    {
                        if (estatusHistorial != EEstatusHistorial.FueraFlota)
                        {
                            result++;
                        }
                    }
                }
            }

            return(result);
        }
 /// <summary>
 /// Realiza un conteo de unidades por modelo tomando como base el estatus de historial de una unidad
 /// </summary>
 /// <param name="estatusToCompare">Estatus de Historial a comparar, si se omiten se cuentan todas las unidades</param>
 /// <param name="dayOfMonth">Día del mes a procesar, si se omite se procesa todo el mes</param>
 /// <returns>Conteo de unidades por modelo tomando como base su estatus de historial</returns>
 private int CountFromModelo(EEstatusHistorial?estatusToCompare, int?dayOfMonth)
 {
     return(this.CountFromModelo(null, estatusToCompare, dayOfMonth));
 }
 /// <summary>
 /// Realiza un conteo de unidades por modelo tomando como base el estatus de historial de una unidad
 /// </summary>
 /// <param name="estatusToCompare">Estatus de Historial a comparar, si se omiten se cuentan todas las unidades</param>
 /// <returns>Conteo de unidades por modelo tomando como base su estatus de historial</returns>
 private int CountFromModelo(EEstatusHistorial?estatusToCompare)
 {
     return(this.CountFromModelo(null, estatusToCompare, null));
 }
        /// <summary>
        /// Prepara una celda que representa una sumatoria para un estatus de un historial de un día del mes
        /// </summary>
        /// <param name="cell">Celda a inicializar</param>
        /// <param name="weight">Tamaño de la celda</param>
        /// <param name="dayOfMonth">Día del mes</param>
        /// <param name="month">Mes en curso</param>
        /// <param name="year">Año en curso</param>
        /// <param name="monthDays">Total de días del mes</param>
        /// <param name="estatus">Estatus usado para filtrar la sumatoria</param>
        /// <param name="level">Número para diferenciar una sumatoria de otra, cuando estas se repiten</param>
        private void InitializeTotalStatusCell(XRTableCell cell, double weight, int dayOfMonth, int month, int year, int monthDays, EEstatusHistorial?estatus, int level)
        {
            String estatusTxt = estatus.HasValue ? Enum.GetName(typeof(EEstatusHistorial), estatus.Value) : "All";

            cell.Name   = String.Format("xrtTotal{0}Cell{1}{2}", estatusTxt, level, dayOfMonth);
            cell.WidthF = (float)weight;

            if (new DateTime(year, month, dayOfMonth).DayOfWeek == DayOfWeek.Sunday && (cell.BackColor == Color.Transparent && cell.Parent.BackColor == Color.Transparent))
            {
                cell.BackColor = Color.LightGray;
            }

            cell.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
                new DevExpress.XtraReports.UI.XRBinding("Text", null, "Modelo.ModeloID")
            });

            XRSummary summary = new XRSummary();

            summary.Func    = SummaryFunc.Custom;
            summary.Running = SummaryRunning.Report;
            cell.Summary    = summary;

            String index = String.Format("{0}_{1}_{2}", estatusTxt, level, dayOfMonth);

            cell.SummaryReset += (object sender, EventArgs e) =>
            {
                this.Sumatorias[index] = 0;
            };

            cell.SummaryRowChanged += (object sender, EventArgs e) =>
            {
                ConsultarDetalladoPSLSucursalDS.ModeloRow modeloRow = (this.GetCurrentRow() as DataRowView).Row as ConsultarDetalladoPSLSucursalDS.ModeloRow;
                this.Sumatorias[index] += this.CountFromModelo(modeloRow, estatus, dayOfMonth);
            };

            cell.SummaryGetResult += (object sender, SummaryGetResultEventArgs e) =>
            {
                e.Result  = this.Sumatorias[index];
                e.Handled = true;
            };
        }
Exemplo n.º 6
0
 /// <summary>
 /// Realiza un conteo de unidades sobre una fila de registro de estatus de historial de una unidad
 /// </summary>
 /// <param name="source">Fila de datos a evaluar</param>
 /// <param name="estatusToCompare">Estatus de Historial a comparar, si se omiten se cuentan todas las unidades</param>
 /// <returns>Conteo de unidades tomando como base su estatus de historial</returns>
 private int CountFromHistorial(ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow source, EEstatusHistorial?estatusToCompare)
 {
     return(this.CountFromHistorial(source, estatusToCompare, null));
 }