Beispiel #1
0
        /// <summary>
        /// Obtiene los datos de los animales que se encuentran enfermos de un corral determinado
        /// </summary>
        /// <param name="ds">Data set</param>
        /// <param name="organizacionId">Identificador </param>
        /// <returns>Lista de animales enfermos de un corral determinado</returns>
        internal static IList <AnimalDeteccionInfo> ObtenerAnimalesEnfermeriaPorCorralSinActivo(DataSet ds, int organizacionId)
        {
            IList <AnimalDeteccionInfo> animalEnfermeriaInfo;

            try
            {
                Logger.Info();

                var configuracionParametrosDal = new ConfiguracionParametrosDAL();
                var parametro = new ConfiguracionParametrosInfo
                {
                    OrganizacionID = organizacionId,
                    TipoParametro  = (int)TiposParametrosEnum.Imagenes,
                    Clave          = ParametrosEnum.ubicacionFotos.ToString()
                };
                var operadorDal = new OperadorDAL();
                var problemas   = new ProblemaDAL();
                var corralDal   = new CorralDAL();
                var parRuta     = configuracionParametrosDal.ObtenerPorOrganizacionTipoParametroClave(parametro);
                var dt          = ds.Tables[ConstantesDAL.DtDatos];
                animalEnfermeriaInfo = (from info in dt.AsEnumerable()
                                        select new AnimalDeteccionInfo
                {
                    DeteccionID = info.Field <int>("DeteccionID"),
                    RutaFotoDeteccion = parRuta.Valor + info.Field <string>("FotoDeteccion"),
                    Problemas = problemas.ObtenerProblemasDeteccionSinActivo(new AnimalDeteccionInfo {
                        DeteccionID = info.Field <int>("DeteccionID"), EstatusDeteccion = 0
                    }, null),
                    GradoEnfermedad = new GradoInfo {
                        Descripcion = info.Field <string>("DescripcionGrado"), GradoID = info.Field <int>("GradoID"), NivelGravedad = info.Field <string>("NivelGravedad")
                    },
                    NombreDetector = info.Field <string>("NombreDetector"),
                    DescripcionGanado = new DescripcionGanadoInfo
                    {
                        DescripcionGanadoID = info.Field <int>("DescripcionGanadoID"),
                        Descripcion = info.Field <string>("DescripcionGanado")
                    },
                    Detector = operadorDal.ObtenerPorID(info.Field <int>("OperadorID")),
                    FechaDeteccion = info.Field <DateTime>("FechaDeteccion"),
                    Animal = new AnimalInfo
                    {
                        Arete = info["Arete"] == DBNull.Value ? null : info.Field <string>("Arete"),
                        AreteMetalico = info["AreteMetalico"] == DBNull.Value ? null : info.Field <string>("AreteMetalico")
                    },
                    EnfermeriaCorral = info["CorralID"] == DBNull.Value ? null : new EnfermeriaInfo
                    {
                        FolioEntrada = info["FolioEntrada"] == DBNull.Value ? 0 : info.Field <int>("FolioEntrada"),
                        Corral = info["CorralID"] == DBNull.Value ? null : corralDal.ObtenerPorId(info.Field <int>("CorralID"))
                    },
                }).ToList();
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(animalEnfermeriaInfo);
        }
Beispiel #2
0
        /// <summary>
        /// Obtiene el detalle de la orden sacrificio
        /// </summary>
        /// <param name="ds">Data set con los datos</param>
        /// <param name="activo">Indica si el registro del detalle se puede editar</param>
        /// <returns></returns>
        internal static IList <OrdenSacrificioDetalleInfo> ObtenerDetalleOrdenSacrificio(DataSet ds, bool activo)
        {
            IList <OrdenSacrificioDetalleInfo> listaOrdenSacrificio = null;

            try
            {
                Logger.Info();
                DataTable dt         = ds.Tables[ConstantesDAL.DtDatos];
                var       usuarioDAL = new UsuarioDAL();
                var       corralDal  = new CorralDAL();
                var       loteDal    = new LoteDAL();
                listaOrdenSacrificio = (from detalle in dt.AsEnumerable()
                                        select new OrdenSacrificioDetalleInfo
                {
                    OrdenSacrificioDetalleID = detalle.Field <int>("OrdenSacrificioDetalleID"),
                    OrdenSacrificioID = detalle.Field <int>("OrdenSacrificioID"),
                    FolioOrdenSacrificio = detalle.Field <int>("FolioSalida"),
                    Corraleta = corralDal.ObtenerPorId(detalle.Field <int>("CorraletaID")),
                    Lote = loteDal.ObtenerPorID(detalle.Field <int>("LoteID")),
                    CorraletaCodigo = detalle.Field <string>("CorraletaCodigo"),
                    Cabezas = detalle.Field <int>("CabezasLote"),
                    DiasEngordaGrano = detalle.Field <int>("DiasEngordaGrano"),
                    DiasRetiro = detalle.Field <int>("DiasRetiro"),
                    CabezasASacrificar = detalle.Field <int>("CabezasSacrificio"),
                    Turno = (TurnoEnum)detalle.Field <int>("Turno"),
                    Proveedor = new ProveedorInfo {
                        Descripcion = detalle.Field <string>("Proveedor")
                    },
                    Clasificacion = detalle.Field <string>("Clasificacion"),
                    Orden = detalle.Field <int>("Orden"),
                    Turnos = Enum.GetValues(typeof(TurnoEnum)).Cast <TurnoEnum>().ToList(),
                    Usuario = usuarioDAL.ObtenerPorID(detalle.Field <int>("UsuarioCreacion")),
                    Activo = activo,
                    CabezasActuales = detalle.Field <int>("CabezasActuales"),
                    Seleccionable = true
                }).ToList();

                if (listaOrdenSacrificio != null)
                {
                    foreach (var ordenDetalle in listaOrdenSacrificio)
                    {
                        ordenDetalle.Corral = corralDal.ObtenerPorId(ordenDetalle.Lote.CorralID);
                        //if(ordenDetalle.Corral.TipoCorral.TipoCorralID != TipoCorral.Intensivo.GetHashCode() && ordenDetalle.CabezasActuales == 0)
                        //{
                        //    ordenDetalle.Seleccionable = false;
                        //}
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(listaOrdenSacrificio);
        }
        private void GeneraLineasDetalle(SalidaGanadoEnTransitoInfo salidaMuerte)
        {
            try
            {
                //salidaMuerte.LoteID;
                //var corralOrganizacion = CorralBL.ObtenerCorralesPorOrganizacionID(salidaMuerte.OrganizacionID).FirstOrDefault(corral => corral.LoteID == salidaMuerte.LoteID);

                var corralDal = new CorralDAL();
                var loteDal   = new LoteDAL();

                //corralMuerte = corralDal.ObtenerPorId(corralOrganizacion.CorralID);
                loteMuerte   = loteDal.ObtenerPorID(salidaMuerte.LoteID);
                corralMuerte = corralDal.ObtenerPorId(salidaMuerte.CorralID);

                var entradaGanado = new EntradaGanadoTransitoInfo();
                if (loteMuerte != null)
                {
                    entradaGanado.Lote = loteMuerte;
                }

                PolizaModel.Detalle = new List <PolizaDetalleModel>();
                {
                    //var pesoMuertePromedio = corralOrganizacion.PesoPromedio;
                    var detalleModel = new PolizaDetalleModel
                    {
                        CantidadCabezas = salidaMuerte.NumCabezas.ToString(CultureInfo.InvariantCulture),
                        TipoGanado      = CONCEPTO,
                        PesoTotal       = salidaMuerte.Kilos.ToString("N"),
                        PesoPromedio    = (salidaMuerte.Kilos / salidaMuerte.NumCabezas).ToString("N"),
                        //PrecioPromedio = Math.Abs(salidaMuerte.Importe / salidaMuerte.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                        //PrecioPromedio = Math.Abs(salidaMuerte.Importe / corralOrganizacion.PesoPromedio/salidaMuerte.NumCabezas).ToString("N2", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                        PrecioPromedio = (salidaMuerte.Importe / (salidaMuerte.Kilos / salidaMuerte.NumCabezas) / salidaMuerte.NumCabezas).ToString("N2", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                        //precio promedio por kilo=costo total/Peso total
                        //precio promedio kilo*peso total*num cabezas=importe
                        ImportePromedio = (salidaMuerte.Importe).ToString("N2", CultureInfo.CurrentCulture),    //estaba en :"N2"
                        Corral          = corralMuerte.Codigo,
                        Lote            = entradaGanado.Lote.Lote
                    };
                    PolizaModel.Detalle.Add(detalleModel);
                }
                polizaImpresion.GenerarDetalles("Detalle");
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Beispiel #4
0
        /// <summary>
        /// metodo que genera el encabezado
        /// </summary>
        /// <param name="salidaVenta">objeto de la venta</param>
        private void GeneraLineasDetalle(SalidaGanadoEnTransitoInfo salidaVenta)
        {
            //var corralOrganizacion = CorralBL.ObtenerCorralesPorOrganizacionID(salidaVenta.OrganizacionID).FirstOrDefault(corral => corral.LoteID == salidaVenta.LoteID);

            var corralDal = new CorralDAL();
            var loteDal   = new LoteDAL();


            corralVenta = corralDal.ObtenerPorId(salidaVenta.CorralID);
            loteVenta   = loteDal.ObtenerPorID(salidaVenta.LoteID);


            var entradaGanado = new EntradaGanadoTransitoInfo();

            if (loteVenta != null)
            {
                entradaGanado.Lote = loteVenta;
            }

            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            {
                var detalleModel = new PolizaDetalleModel
                {
                    CantidadCabezas = salidaVenta.NumCabezas.ToString("F0"),
                    TipoGanado      = CONCEPTO,
                    PesoTotal       = (salidaVenta.Kilos).ToString("F0"),
                    PesoPromedio    = (salidaVenta.Kilos / salidaVenta.NumCabezas).ToString("F0"),
                    PrecioPromedio  = (salidaVenta.DetallesSalida.Sum(costo => costo.ImporteCosto) / (salidaVenta.Kilos / salidaVenta.NumCabezas) / salidaVenta.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                    ImportePromedio = Math.Abs(salidaVenta.DetallesSalida.Sum(costo => costo.ImporteCosto)).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),

                    Corral       = corralVenta.Codigo,
                    PrecioVenta  = Math.Abs(salidaVenta.Importe / salidaVenta.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                    ImporteVenta = Math.Abs(salidaVenta.Importe).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                    Lote         = entradaGanado.Lote.Lote
                };
                PolizaModel.Detalle.Add(detalleModel);
            }
            polizaImpresion.GenerarDetalles("Detalle");
        }
        /// <summary>
        /// Obtiene la lista de tratamientos para los los corrales disponibles para programar reimplante
        /// </summary>
        /// <param name="organizacionId">Organizacionid</param>
        /// <returns></returns>
        internal ResultadoInfo <OrdenReimplanteInfo> ObtenerLotesDisponiblesReimplante(int organizacionId)
        {
            ResultadoInfo <OrdenReimplanteInfo> lista = null;

            try
            {
                Logger.Info();
                var dal = new ProgramacionReimplanteDAL();
                lista = dal.ObtenerLotesDisponiblesReimplante(organizacionId);
                var tratamientoBl = new TratamientoBL();
                var dalCorrales   = new CorralDAL();

                if (lista.Lista != null)
                {
                    foreach (var orden in lista.Lista)
                    {
                        orden.CorralOrigen = dalCorrales.ObtenerPorId(orden.IdCorralOrigen);

                        var trat = new TratamientoInfo
                        {
                            OrganizacionId = organizacionId,
                            Sexo           = orden.TipoGanado.Sexo,
                            Peso           = orden.KilosProyectados
                        };

                        //obtenemos los tratamientos
                        var tratamientos = tratamientoBl.ObtenerTratamientosPorTipoReimplante(trat);
                        //de los tratamientos recuperamos sus productos en igual de buscarlos en la bd
                        var subFamilia             = (int)SubFamiliasEnum.ImplantesYReimplantes;//int.Parse(ConfigurationManager.AppSettings["subFamiliaProductosReimplante"]);
                        var listaAuxiliarProductos = (from tratamiento in tratamientos
                                                      from producto in tratamiento.Productos
                                                      where producto.SubfamiliaId == subFamilia
                                                      select producto
                                                      ).ToList();
                        orden.Productos = new List <ProductoInfo>();
                        foreach (ProductoInfo producto in listaAuxiliarProductos)
                        {
                            if (!orden.Productos.Contains(producto))
                            {
                                orden.Productos.Add(producto);
                            }
                        }

                        /* Se quito para no ir a buscar de nuevo a la bd
                         * if (tratamientos != null)
                         * {
                         *  var listaAuxiliarProductos = tratamientoBl.ObtenerProductosPorTratamiento(tratamientos);
                         *  var subFamilia = int.Parse(ConfigurationManager.AppSettings["subFamiliaProductosReimplante"]);
                         *  orden.Productos = listaAuxiliarProductos.Where(prod => prod.SubfamiliaId == subFamilia).ToList();
                         * }
                         * /*
                         * IList<CorralInfo> corralesDestino = dalCorrales.ObtenerParaProgramacionReimplanteDestino(organizacionId);
                         *
                         * orden.CorralesDestino = new List<CorralInfo> {orden.CorralOrigen};
                         * foreach (var corralInfo in corralesDestino)
                         * {
                         *  orden.CorralesDestino.Add(corralInfo);
                         * }
                         */
                        //REgla del siguiente dia
                        var reimplante = new DateTime(orden.FechaReimplante.Year, orden.FechaReimplante.Month, orden.FechaReimplante.Day);
                        var fechax     = DateTime.Now.AddDays(1d);
                        var siguiente  = new DateTime(fechax.Year, fechax.Month, fechax.Day);
                        if (reimplante.CompareTo(siguiente) == 0) //son la misma fecha
                        {
                            orden.Seleccionado = true;
                            orden.EsEditable   = false;
                        }
                    }
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(lista);
        }
        private void GenerarRepartoAlimentoDetalle(List <GridRepartosModel> repartoDetalle, List <RepartoAlimentoDetalleInfo> listaRepartosAlimentoDetalle, int organizacionID, int repartoAlimentoID)
        {
            IList <RepartoAlimentoDetalleInfo> listaDetallesGuardadas = new List <RepartoAlimentoDetalleInfo>();

            if (repartoAlimentoID > 0)
            {
                var repartoAlimentoDetalleDAL = new RepartoAlimentoDetalleDAL();
                listaDetallesGuardadas =
                    repartoAlimentoDetalleDAL.ObtenerPorRepartoAlimentoID(repartoAlimentoID);
            }
            var codigosCorral = new List <string>();

            repartoDetalle.ForEach(rep =>
            {
                codigosCorral.Add(rep.CorralInicio.Trim().PadLeft(3, '0'));
                codigosCorral.Add(rep.CorralFinal.Trim().PadLeft(3, '0'));
            });
            var corralDAL = new CorralDAL();
            List <CorralInfo> corrales = corralDAL.ObtenerCorralesPorCodigosCorral(codigosCorral, organizacionID);

            if (corrales == null)
            {
                return;
            }
            foreach (var detalle in repartoDetalle)
            {
                if (listaDetallesGuardadas != null && listaDetallesGuardadas.Any())
                {
                    RepartoAlimentoDetalleInfo detalleExiste =
                        listaDetallesGuardadas.FirstOrDefault(
                            deta =>
                            deta.FolioReparto == detalle.Reparto && deta.FormulaIDRacion == detalle.RacionFormula);
                    if (detalleExiste != null)
                    {
                        continue;
                    }
                }
                var repartoAlimentoDetalle = new RepartoAlimentoDetalleInfo();
                repartoAlimentoDetalle.FolioReparto    = detalle.Reparto;
                repartoAlimentoDetalle.FormulaIDRacion = detalle.RacionFormula;
                repartoAlimentoDetalle.Tolva           = detalle.NumeroTolva.ToString(CultureInfo.InvariantCulture);
                repartoAlimentoDetalle.KilosEmbarcados = detalle.KilosEmbarcados;
                repartoAlimentoDetalle.KilosRepartidos = detalle.KilosRepartidos;
                repartoAlimentoDetalle.Sobrante        = detalle.Sobrante;
                repartoAlimentoDetalle.PesoFinal       = detalle.PesoFinal;

                CorralInfo corralInicio =
                    corrales.FirstOrDefault(
                        cor => cor.Codigo.ToUpper().Trim().Equals(detalle.CorralInicio.ToUpper().Trim().PadLeft(3, '0')));
                if (corralInicio == null)
                {
                    continue;
                }
                repartoAlimentoDetalle.CorralIDInicio = corralInicio.CorralID;
                CorralInfo corralFinal =
                    corrales.FirstOrDefault(
                        cor => cor.Codigo.ToUpper().Trim().Equals(detalle.CorralFinal.ToUpper().Trim().PadLeft(3, '0')));
                if (corralFinal == null)
                {
                    continue;
                }
                repartoAlimentoDetalle.CorralIDFinal     = corralFinal.CorralID;
                repartoAlimentoDetalle.HoraRepartoInicio = detalle.HoraInicioReparto;
                repartoAlimentoDetalle.HoraRepartoFinal  = detalle.HoraFinalReparto;
                repartoAlimentoDetalle.Observaciones     = detalle.Observaciones;

                listaRepartosAlimentoDetalle.Add(repartoAlimentoDetalle);
            }
        }