/// <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(ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow source) { bool enFlota = true; int limit1 = 1; int limit2 = this.GetDaysInMonth(); if (source == null) { source = (this.GetCurrentRow() as DataRowView).Row as ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow; if (source == null) { throw new Exception(String.Format("La fila de datos actual no corresponde a una fila de tipo {0}", typeof(ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow))); } } 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> /// Evento que se ejecuta cuando se obtiene el porcentaje de utilización de un equipo /// </summary> /// <param name="sender">Objeto que genero el evento</param> /// <param name="e">Argumentos asociados al evento</param> public void PorcentajeUtilizacion_GetValue(object sender, DevExpress.XtraReports.UI.GetValueEventArgs e) { ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow source = (e.Row as DataRowView).Row as ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow; Double rentados = this.CountFromHistorial(source, EEstatusHistorial.Rentado); Double diasObjetivo = this.EnFlota(source) ? this.GetDaysInMonth() - this.CountFromHistorial(source, EEstatusHistorial.FueraFlota) : this.CountFromHistorial(source, EEstatusHistorial.Rentado) + this.CountFromHistorial(source, EEstatusHistorial.Disponible); e.Value = diasObjetivo > 0 ? Math.Round((rentados / diasObjetivo) * 100.00) : 0.00; }
/// <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> /// <param name="dayOfMonth">Día del mes a procesar, si se omite se procesa todo el mes</param> /// <returns>Conteo de unidades tomando como base su estatus de historial</returns> private int CountFromHistorial(ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow 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 ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow; if (source == null) { throw new Exception(String.Format("La fila de datos actual no corresponde a una fila de tipo {0}", typeof(ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow))); } } for (int i = limit1; i <= limit2; i++) { String index = String.Format("EstatusHistorial_{0}", i); if (source.IsNull(index)) { continue; } EEstatusHistorial?estatus = (EEstatusHistorial)Enum.ToObject(typeof(EEstatusHistorial), (int)source[index]); if (estatusToCompare.HasValue) { if (estatus == estatusToCompare) { result++; } } else { if (estatus != EEstatusHistorial.FueraFlota) { result++; } } } return(result); }
/// <summary> /// Evento que se ejecuta cuando se obtiene el número de días objetivo de un equipo /// </summary> /// <param name="sender">Objeto que genero el evento</param> /// <param name="e">Argumentos asociados al evento</param> public void DiasObjetivo_GetValue(object sender, DevExpress.XtraReports.UI.GetValueEventArgs e) { ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow source = (e.Row as DataRowView).Row as ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow; //Dias del mes menos los dias fuera de flota ó los dias de renta mas los dias disponibles e.Value = this.EnFlota(source) ? this.GetDaysInMonth() - this.CountFromHistorial(source, EEstatusHistorial.FueraFlota) : this.CountFromHistorial(source, EEstatusHistorial.Rentado) + this.CountFromHistorial(source, EEstatusHistorial.Disponible); }
/// <summary> /// Evento que se ejecuta cuando se obtiene el número de días en taller de un equipo /// </summary> /// <param name="sender">Objeto que genero el evento</param> /// <param name="e">Argumentos asociados al evento</param> public void DiasTaller_GetValue(object sender, DevExpress.XtraReports.UI.GetValueEventArgs e) { ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow source = (e.Row as DataRowView).Row as ConsultarDetalladoRDSucursalDS.ConsultarDetalladoRDSucursalRow; e.Value = this.CountFromHistorial(source, EEstatusHistorial.EnTaller); }
/// <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)); }