/// <summary>
 /// Método para obtener el reporte de consumo de material
 /// </summary>
 /// <param name="Conexion">Cadena de conexión a la BD</param>
 /// <param name="IDSucursal">Identificador de la sucursal a la que se generará el reporte</param>
 /// <param name="FechaInicio">Fecha de inicio del período</param>
 /// <param name="FechaFin">Fecha de término del período</param>
 /// <returns>Retorna una lista con el detalle de consumo de material de la sucursal seleccionada.</returns>
 public List <ReporteConsumoMaterialDetalle> ObtenerReporteConsumoMaterial(string Conexion, string IDSucursal, DateTime FechaInicio, DateTime FechaFin)
 {
     try
     {
         object[] Parametros = { IDSucursal, FechaInicio, FechaFin };
         List <ReporteConsumoMaterialDetalle> Lista = new List <ReporteConsumoMaterialDetalle>();
         ReporteConsumoMaterialDetalle        Item;
         SqlDataReader Dr = SqlHelper.ExecuteReader(Conexion, "Reportes.spCSLDB_get_ReporteConsumoMaterial", Parametros);
         while (Dr.Read())
         {
             Item                = new ReporteConsumoMaterialDetalle();
             Item.Tipo           = !Dr.IsDBNull(Dr.GetOrdinal("Tipo")) ? Dr.GetInt32(Dr.GetOrdinal("Tipo")) : 0;
             Item.IDGeneral      = !Dr.IsDBNull(Dr.GetOrdinal("IDGeneral")) ? Dr.GetString(Dr.GetOrdinal("IDGeneral")) : string.Empty;
             Item.Nombre         = !Dr.IsDBNull(Dr.GetOrdinal("Nombre")) ? Dr.GetString(Dr.GetOrdinal("Nombre")) : string.Empty;
             Item.IDProducto     = !Dr.IsDBNull(Dr.GetOrdinal("IDProducto")) ? Dr.GetString(Dr.GetOrdinal("IDProducto")) : string.Empty;
             Item.NombreProducto = !Dr.IsDBNull(Dr.GetOrdinal("Producto")) ? Dr.GetString(Dr.GetOrdinal("Producto")) : string.Empty;
             Item.Clave          = !Dr.IsDBNull(Dr.GetOrdinal("Clave")) ? Dr.GetString(Dr.GetOrdinal("Clave")) : string.Empty;
             Item.Fecha          = !Dr.IsDBNull(Dr.GetOrdinal("Fecha")) ? Dr.GetDateTime(Dr.GetOrdinal("Fecha")) : DateTime.MinValue;
             Item.Produccion     = !Dr.IsDBNull(Dr.GetOrdinal("Produccion")) ? Dr.GetBoolean(Dr.GetOrdinal("Produccion")) : false;
             Item.CumpleMetrica  = !Dr.IsDBNull(Dr.GetOrdinal("CumpleMetrica")) ? Dr.GetBoolean(Dr.GetOrdinal("CumpleMetrica")) : false;
             Lista.Add(Item);
         }
         Dr.Close();
         return(Lista);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        /// <summary>
        /// Metodo con el cual se obtiene la infor referente a un reporte especifico
        /// </summary>
        /// <param name="Conexion">Cadena de conexion con la base de datos</param>
        /// <param name="IDReporte">identiicaador del reporte</param>
        /// <returns></returns>
        public ReporteConsumoMaterial ObtenerDetalleReporteConsumoMaterial(string Conexion, int IDReporte)
        {
            try
            {
                ReporteConsumoMaterial Resultado = new ReporteConsumoMaterial();
                DataSet Ds = SqlHelper.ExecuteDataset(Conexion, "Reportes.spCSLDB_get_ReporteConsumoMaterialXID", IDReporte);
                if (Ds != null)
                {
                    if (Ds.Tables.Count == 2)
                    {
                        DataTableReader Dr = Ds.Tables[0].CreateDataReader();
                        while (Dr.Read())
                        {
                            Resultado.FechaInicio = !Dr.IsDBNull(Dr.GetOrdinal("fechaInicio")) ? Dr.GetDateTime(Dr.GetOrdinal("fechaInicio")) : DateTime.MinValue;
                            Resultado.FechaFin    = !Dr.IsDBNull(Dr.GetOrdinal("fechaFin")) ? Dr.GetDateTime(Dr.GetOrdinal("fechaFin")) : DateTime.MinValue;
                            Resultado.Sucursal    = !Dr.IsDBNull(Dr.GetOrdinal("Sucursal")) ? Dr.GetString(Dr.GetOrdinal("Sucursal")) : string.Empty;
                            break;
                        }
                        Dr.Close();

                        List <ReporteConsumoMaterialDetalle> Lista = new List <ReporteConsumoMaterialDetalle>();
                        ReporteConsumoMaterialDetalle        Item;
                        DataTableReader Dr2 = Ds.Tables[1].CreateDataReader();
                        while (Dr2.Read())
                        {
                            Item                = new ReporteConsumoMaterialDetalle();
                            Item.Tipo           = !Dr2.IsDBNull(Dr2.GetOrdinal("Tipo")) ? Dr2.GetInt32(Dr2.GetOrdinal("Tipo")) :0;
                            Item.IDGeneral      = !Dr2.IsDBNull(Dr2.GetOrdinal("IDGeneral")) ? Dr2.GetString(Dr2.GetOrdinal("IDGeneral")) : string.Empty;
                            Item.Nombre         = !Dr2.IsDBNull(Dr2.GetOrdinal("Nombre")) ? Dr2.GetString(Dr2.GetOrdinal("Nombre")) : string.Empty;
                            Item.IDProducto     = !Dr2.IsDBNull(Dr2.GetOrdinal("IDProducto")) ? Dr2.GetString(Dr2.GetOrdinal("IDProducto")) : string.Empty;
                            Item.NombreProducto = !Dr2.IsDBNull(Dr2.GetOrdinal("Producto")) ? Dr2.GetString(Dr2.GetOrdinal("Producto")) : string.Empty;
                            Item.Clave          = !Dr2.IsDBNull(Dr2.GetOrdinal("Clave")) ? Dr2.GetString(Dr2.GetOrdinal("Clave")) : string.Empty;
                            Item.Fecha          = !Dr2.IsDBNull(Dr2.GetOrdinal("Fecha")) ? Dr2.GetDateTime(Dr2.GetOrdinal("Fecha")) : DateTime.MinValue;
                            Item.Produccion     = !Dr2.IsDBNull(Dr2.GetOrdinal("Produccion")) ? Dr2.GetBoolean(Dr2.GetOrdinal("Produccion")) : false;
                            Item.CumpleMetrica  = !Dr2.IsDBNull(Dr2.GetOrdinal("CumpleMetrica")) ? Dr2.GetBoolean(Dr2.GetOrdinal("CumpleMetrica")) : false;
                            Lista.Add(Item);
                        }
                        Dr2.Close();

                        Resultado.Detalle  = Lista;
                        Resultado.Completo = true;
                    }
                }
                return(Resultado);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }