示例#1
0
 /// <summary>
 /// Obtiene una lista con los datos del reporte
 /// de venta de ganado
 /// </summary>
 /// <param name="organizacionID"></param>
 /// <param name="fechaInicial"></param>
 /// <param name="fechaFinal"></param>
 /// <returns></returns>
 internal ReporteVentaGanadoDatos GenerarReporteVentaGanado(int organizacionID, DateTime fechaInicial, DateTime fechaFinal)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxReporteVentaGanadoDAL.ObtenerParametrosReporte(
             organizacionID, fechaInicial, fechaFinal);
         DataSet ds = Retrieve("ReporteVentaGanado_Obtener", parameters);
         ReporteVentaGanadoDatos result = null;
         if (ValidateDataSet(ds))
         {
             result = MapReporteVentaGanadoDAL.ObtenerDatosReporte(ds);
         }
         return(result);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
示例#2
0
        /// <summary>
        /// Obtiene una lista con los datos del reporte
        /// de venta de ganado
        /// </summary>
        /// <param name="organizacionID"></param>
        /// <param name="fechaInicial"></param>
        /// <param name="fechaFinal"></param>
        /// <returns></returns>
        public List <ReporteVentaGanado> GenerarReporteVentaGanado(int organizacionID, DateTime fechaInicial, DateTime fechaFinal)
        {
            List <ReporteVentaGanado> lista = null;

            try
            {
                Logger.Info();
                var reporteVentaGanadoDAL            = new ReporteVentaGanadoDAL();
                ReporteVentaGanadoDatos datosReporte = reporteVentaGanadoDAL.GenerarReporteVentaGanado(organizacionID,
                                                                                                       fechaInicial,
                                                                                                       fechaFinal);
                if (datosReporte != null)
                {
                    lista = GenerarReporte(datosReporte);
                    lista = lista.Where(tipo => !string.IsNullOrWhiteSpace(tipo.TipoGanado)).ToList();
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(lista);
        }
示例#3
0
        /// <summary>
        /// Obtiene los datos que seran
        /// mostrados en el reporte
        /// </summary>
        /// <param name="datosReporte"></param>
        /// <returns></returns>
        private List <ReporteVentaGanado> GenerarReporte(ReporteVentaGanadoDatos datosReporte)
        {
            var resultado = new List <ReporteVentaGanado>();

            var foliosVentaPeso = datosReporte.Animales
                                  .GroupBy(grp => grp.FolioTicket)
                                  .Select(dato => new
            {
                FolioTicket = dato.Key,
                PesoAnimal  =
                    Convert.ToInt32(Math.Round(
                                        Convert.ToDecimal(dato.Select(peso => peso.Peso).FirstOrDefault() / dato.Count()),
                                        0, MidpointRounding.AwayFromZero))
            }).ToList();

            datosReporte.MovimientosSalida.ForEach(salida =>
            {
                var repoteVenta = new ReporteVentaGanado
                {
                    Enfermeria   = salida.Enfermeria,
                    LugarDestino = salida.Corral,
                    Fecha        = salida.FechaMovimiento.ToShortDateString()
                };
                repoteVenta.Codigo =
                    datosReporte.MovimientosProduccion.Where(
                        condicion => condicion.AnimalID == salida.AnimalID).
                    Select(destino => destino.Corral).FirstOrDefault();

                ReporteVentaGanadoAnimal animal =
                    datosReporte.Animales.FirstOrDefault(condicion => condicion.AnimalID == salida.AnimalID);
                if (animal != null)
                {
                    repoteVenta.TipoGanado = animal.TipoGanado;
                    repoteVenta.Arete      = animal.Arete;
                    repoteVenta.Sexo       = animal.Sexo;
                    repoteVenta.Causa      = animal.CausaSalida;
                    repoteVenta.Partida    = animal.FolioEntrada;
                    repoteVenta.Peso       =
                        foliosVentaPeso.Where(
                            folioTicket =>
                            folioTicket.FolioTicket == animal.FolioTicket)
                        .Select(peso => peso.PesoAnimal).FirstOrDefault();

                    ReporteVentaGanadoFolio folio =
                        datosReporte.Folios.FirstOrDefault(
                            condicion =>
                            condicion.FolioEntrada == animal.FolioEntrada &&
                            condicion.AnimalID == animal.AnimalID);
                    if (folio != null)
                    {
                        repoteVenta.FechaLlegada =
                            folio.FechaEntrada.ToShortDateString();
                        TimeSpan diasEngorda = salida.FechaMovimiento -
                                               folio.FechaEntrada;
                        repoteVenta.DiasEngorda = diasEngorda.Days;
                        var tipoOrganizacion    =
                            (TipoOrganizacion)folio.TipoOrganizacionID;
                        switch (tipoOrganizacion)
                        {
                        case TipoOrganizacion.CompraDirecta:
                            repoteVenta.Origen = folio.Proveedor;
                            break;

                        case TipoOrganizacion.Centro:
                        case TipoOrganizacion.Praderas:
                        case TipoOrganizacion.Descanso:
                        case TipoOrganizacion.Cadis:
                            repoteVenta.Origen = folio.Organizacion;
                            break;
                        }
                    }
                    List <ReporteVentaGanadoTratamiento> tratamientos =
                        datosReporte.Tratamientos.Where(
                            condicion =>
                            condicion.AnimalID == salida.AnimalID).
                        Select(
                            tratamiento => tratamiento)
                        .ToList();
                    if (tratamientos.Any())
                    {
                        AsignarTratamientos(tratamientos, repoteVenta);
                    }
                }
                repoteVenta.LugarDestino = salida.Corral;

                resultado.Add(repoteVenta);
            });
            if (resultado.Any())
            {
                resultado = resultado.OrderBy(registro => registro.Fecha).ToList();
            }
            return(resultado);
        }
        /// <summary>
        /// Obtiene una clase con los
        /// datos necesarios para generar
        /// el reporte de venta de ganado
        /// </summary>
        /// <param name="ds"></param>
        /// <returns></returns>
        internal static ReporteVentaGanadoDatos ObtenerDatosReporte(DataSet ds)
        {
            ReporteVentaGanadoDatos resultado;

            try
            {
                Logger.Info();
                DataTable dtMovimientosEnfermeria   = ds.Tables[ConstantesDAL.DtMovimientosEnfermeria];
                DataTable dtMovimientosProduccion   = ds.Tables[ConstantesDAL.DtMovimientosProduccion];
                DataTable dtMovimientosTratamientos = ds.Tables[ConstantesDAL.DtTratamientos];
                DataTable dtFolios   = ds.Tables[ConstantesDAL.DtFolios];
                DataTable dtAnimales = ds.Tables[ConstantesDAL.DtAnimalesReporteVenta];

                resultado = new ReporteVentaGanadoDatos
                {
                    MovimientosProduccion = (from movs in dtMovimientosProduccion.AsEnumerable()
                                             select new ReporteVentaGanadoMovimientosProduccion
                    {
                        AnimalID = movs.Field <long>("AnimalID"),
                        AnimalMovimientoID =
                            movs.Field <long>("AnimalMovimientoID"),
                        Corral =
                            movs.Field <string>("CorralProduccion"),
                        FechaMovimiento =
                            movs.Field <DateTime>("FechaMovimiento")
                    }).ToList(),
                    Folios = (from movs in dtFolios.AsEnumerable()
                              select new ReporteVentaGanadoFolio
                    {
                        FolioEntrada = movs.Field <int>("FolioEntrada"),
                        Organizacion = movs.Field <string>("Organizacion"),
                        EntradaGanadoID = movs.Field <int>("EntradaGanadoID"),
                        FechaEntrada = movs.Field <DateTime>("FechaEntrada"),
                        OrganizacionOrigenID =
                            movs.Field <int>("OrganizacionOrigenID"),
                        Proveedor = movs.Field <string>("Proveedor"),
                        TipoOrganizacionID = movs.Field <int>("TipoOrganizacionID"),
                        AnimalID = movs.Field <int>("AnimalID")
                    }).ToList(),
                    Tratamientos = (from movs in dtMovimientosTratamientos.AsEnumerable()
                                    select new ReporteVentaGanadoTratamiento
                    {
                        AnimalID = movs.Field <long>("AnimalID"),
                        AnimalMovimientoID =
                            movs.Field <long>("AnimalMovimientoID"),
                        FechaMovimiento =
                            movs.Field <DateTime>("FechaMovimiento"),
                        CodigoTratamiento =
                            movs.Field <int>("CodigoTratamiento"),
                        Producto = movs.Field <string>("Producto"),
                    }).ToList(),
                    Animales = (from movs in dtAnimales.AsEnumerable()
                                select new ReporteVentaGanadoAnimal
                    {
                        AnimalID = movs.Field <long>("AnimalID"),
                        Arete = movs.Field <string>("Arete"),
                        CausaSalida = movs.Field <string>("CausaSalida"),
                        FolioEntrada = movs.Field <long>("FolioEntrada"),
                        OrganizacionIDEntrada =
                            movs.Field <int>("OrganizacionIDEntrada"),
                        Sexo = movs.Field <string>("Sexo"),
                        TipoGanado = movs.Field <string>("TipoGanado"),
                        TipoGanadoID = movs.Field <int>("TipoGanadoID"),
                        Peso = movs.Field <int>("Peso"),
                        FolioTicket = movs.Field <int>("FolioTicket")
                    }).ToList(),
                    MovimientosSalida = (from movs in dtMovimientosEnfermeria.AsEnumerable()
                                         select new ReporteVentaGanadoMovimientosSalida
                    {
                        AnimalID = movs.Field <long>("AnimalID"),
                        AnimalMovimientoID = movs.Field <long>("AnimalMovimientoID"),
                        Corral = movs.Field <string>("Corral"),
                        Enfermeria = movs.Field <string>("Enfermeria"),
                        FechaMovimiento = movs.Field <DateTime>("FechaMovimiento"),
                    }).ToList()
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultado);
        }