/// <summary>
        /// Carga la informacion del arete en pantalla
        /// </summary>
        private void LlenarDatosArete()
        {
            MuerteInfo areteMuerto = null;
            var        pl          = new MuertePL();
            var        animalPL    = new AnimalPL();
            var        corralPL    = new CorralPL();

            try
            {
                var seguridad      = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                var organizacionID = seguridad.Usuario.Organizacion.OrganizacionID;
                if (seguridad != null)
                {
                    //Se obtiene el Corral para ver Si es de Recepcion
                    corralInfo = corralPL.ObtenerCorralPorCodigo(organizacionID, corralInfo.Codigo);

                    if (corralInfo.GrupoCorral == (int)GrupoCorralEnum.Recepcion)
                    {
                        /* Si el corral es de Recepcion */
                        areteMuerto = pl.ObtenerGanadoMuertoPorAreteRecepcion(organizacionID, numeroArete);
                    }
                    else
                    {
                        /* Si el corral es de Enfermeria o produccion */
                        areteMuerto = pl.ObtenerGanadoMuertoPorArete(organizacionID, numeroArete);
                        if (areteMuerto != null && areteMuerto.AnimalId > 0)
                        {
                            areteMuerto.Peso = animalPL.ObtenerUltimoMovimientoAnimal(new AnimalInfo()
                            {
                                AnimalID = areteMuerto.AnimalId, OrganizacionIDEntrada = organizacionID
                            }).Peso;
                        }
                        else
                        {
                            if (areteMuerto == null)
                            {
                                areteMuerto = new MuerteInfo {
                                    Arete = numeroArete, CorralCodigo = corralInfo.Codigo
                                };
                            }
                            var lote   = new LoteInfo();
                            var lotePl = new LotePL();
                            lote = lotePl.ObtenerPorCorral(organizacionID, corralInfo.CorralID);
                            if (lote != null)
                            {
                                var listaAnimales = animalPL.ObtenerAnimalesPorLoteID(lote);
                                if (listaAnimales != null)
                                {
                                    var listaMovimientosActivos = (from animal in listaAnimales
                                                                   let movimiento = new AnimalMovimientoInfo()
                                                                                    select animalPL.ObtenerUltimoMovimientoAnimal(animal)).ToList();

                                    if (listaMovimientosActivos.Count > 0)
                                    {
                                        areteMuerto.Peso = listaMovimientosActivos.Sum(registro => registro.Peso) /
                                                           listaMovimientosActivos.Count;
                                    }
                                }
                            }
                        }
                    }

                    if (areteMuerto != null)
                    {
                        hdMuerteId.Value = areteMuerto.MuerteId.ToString();
                        hdAnimalId.Value = areteMuerto.AnimalId.ToString();
                        hdCorralId.Value = areteMuerto.CorralId.ToString();
                        hdLoteId.Value   = areteMuerto.LoteId.ToString();

                        if (areteMuerto.MuerteId == 0)
                        {
                            hdMuerteId.Value = muerteId.ToString();
                        }

                        txtCorral.Text            = areteMuerto.CorralCodigo;
                        txtPeso.Text              = areteMuerto.Peso.ToString();
                        txtAreteMetalico.Text     = areteMuerto.AreteMetalico;
                        txtNumeroArete.Text       = areteMuerto.Arete;
                        txtNombreResponsable.Text = seguridad.Usuario.Nombre;
                        lblFechaSalida.Text      += " " + DateTime.Now.ToShortDateString();
                        lblHoraSalida.Text       += " " + DateTime.Now.ToShortTimeString();

                        var parametros = ObtenerParametrosRutaImagenes(seguridad.Usuario.Organizacion.OrganizacionID);
                        imgFotoDeteccion.Visible = false;
                        if (parametros != null && areteMuerto.FotoDeteccion != string.Empty)
                        {
                            imgFotoDeteccion.Visible  = true;
                            imgFotoDeteccion.ImageUrl = parametros.Valor + areteMuerto.FotoDeteccion;
                        }
                    }
                    else
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "myScript", "MostrarFalloCargarDatos();", true);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
        }
Пример #2
0
        //Metodo que valida que corral destino tenga capacidad y no este cerrado
        private bool ValidarCorralDestino()
        {
            var corralValido = true;
            //Verificar que corral sea grupo enfermeria
            var corralInfo = new CorralInfo
            {
                Codigo       = txtCorralDestino.Text,
                GrupoCorral  = corralInfoOrigen.GrupoCorral,
                Organizacion = new OrganizacionInfo {
                    OrganizacionID = organizacionID
                }
            };
            var corralPL = new CorralPL();

            corralInfoDestino = corralPL.ObtenerPorCodigoGrupoCorral(corralInfo);
            if (corralInfoDestino != null)
            {
                if (corralInfoDestino.TipoCorral.TipoCorralID == TipoCorral.CronicoVentaMuerte.GetHashCode())
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.TraspasoGanadoCorrales_CorralCronico,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    corralValido = false;
                }
                var lotePL        = new LotePL();
                var resultadoLote = lotePL.ObtenerPorCorral(organizacionID, corralInfoDestino.CorralID);
                if (resultadoLote != null)
                {
                    //Verificar capacidad de corral destino
                    if (!(resultadoLote.Cabezas < corralInfoDestino.Capacidad))
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.CorteTransferenciaGanado_NoCapacidadCorral,
                                          MessageBoxButton.OK, MessageImage.Warning);
                        corralValido = false;
                    }
                }
                else
                {
                    var resultadoLoteCerrado = lotePL.ObtenerPorCorralCerrado(organizacionID, corralInfoDestino.CorralID);
                    if (resultadoLoteCerrado != null)
                    {
                        //Corral destino cerrado
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.CorteTransferenciaGanado_CorralDestinoCerrado,
                                          MessageBoxButton.OK, MessageImage.Warning);
                        corralValido = false;
                    }
                }
            }
            else
            {
                if (corralInfoOrigen.GrupoCorral == GrupoCorralEnum.Enfermeria.GetHashCode())
                {
                    //Corral no es de grupo enfermeria
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.TraspasoGanadoCorral_CorralNoEsEnfermeria,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    corralValido = false;
                }
                else if (corralInfoOrigen.GrupoCorral == GrupoCorralEnum.Produccion.GetHashCode())
                {
                    //Corral no es de grupo produccion
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.TraspasoGanadoCorral_CorralNoEsProduccion,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    corralValido = false;
                }
                else if (corralInfoOrigen.GrupoCorral == GrupoCorralEnum.Recepcion.GetHashCode())
                {
                    //Corral no es de grupo recepcion
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.TraspasoGanadoCorral_CorralNoEsRecepcion,
                                      MessageBoxButton.OK, MessageImage.Warning);
                    corralValido = false;
                }
            }
            return(corralValido);
        }
Пример #3
0
        //Metodo que valida que corral destino tenga capacidad
        private bool ValidarCapacidadCorralDestino(bool todosDerecha)
        {
            var corralConCapacidad = true;
            int sumatoriaCabezas;
            var aretesSeleccionadosOrigen = lisBoxCorralOrigen.SelectedItems;
            var aretesTotalOrigen         = lisBoxCorralOrigen.Items.Count;
            var aretesDestino             = lisBoxCorralDestino.Items.Count;

            //Corral grupo enfermeria
            var lotePL        = new LotePL();
            var resultadoLote = lotePL.ObtenerPorCorral(organizacionID, corralInfoDestino.CorralID);

            if (resultadoLote != null)
            {
                if (todosDerecha)
                {
                    sumatoriaCabezas = resultadoLote.Cabezas + aretesDestino + aretesTotalOrigen;
                    if (!((sumatoriaCabezas) <= corralInfoDestino.Capacidad))
                    {
                        //Corral no tiene capacidad
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.CorteTransferenciaGanado_NoCapacidadCorral,
                                          MessageBoxButton.OK, MessageImage.Warning);
                        corralConCapacidad = false;
                    }
                }
                else
                {
                    sumatoriaCabezas = resultadoLote.Cabezas + aretesDestino + aretesSeleccionadosOrigen.Count;
                    if (!((sumatoriaCabezas) <= corralInfoDestino.Capacidad))
                    {
                        //Corral no tiene capacidad
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.CorteTransferenciaGanado_NoCapacidadCorral,
                                          MessageBoxButton.OK, MessageImage.Warning);
                        corralConCapacidad = false;
                    }
                }
            }
            else
            {
                if (todosDerecha)
                {
                    sumatoriaCabezas = aretesDestino + aretesTotalOrigen;
                    if (!((sumatoriaCabezas) <= corralInfoDestino.Capacidad))
                    {
                        //Corral no tiene capacidad
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.CorteTransferenciaGanado_NoCapacidadCorral,
                                          MessageBoxButton.OK, MessageImage.Warning);
                        corralConCapacidad = false;
                    }
                }
                else
                {
                    sumatoriaCabezas = aretesDestino + aretesSeleccionadosOrigen.Count;
                    if (!((sumatoriaCabezas) <= corralInfoDestino.Capacidad))
                    {
                        //Corral no tiene capacidad
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.CorteTransferenciaGanado_NoCapacidadCorral,
                                          MessageBoxButton.OK, MessageImage.Warning);
                        corralConCapacidad = false;
                    }
                }
            }
            return(corralConCapacidad);
        }
Пример #4
0
        public static List <CorralInfo> ObtenerCorralDestinoAnimal(string arete)
        {
            var corrales = new List <CorralInfo>();

            try
            {
                //var animalPL = new AnimalPL();
                var animalMovimientoPL = new AnimalMovimientoPL();
                var seguridad          = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                int organizacionId     = seguridad.Usuario.Organizacion.OrganizacionID;

                //animal = animalPL.ObtenerAnimalPorArete(arete, organizacionId);

                List <AnimalMovimientoInfo> movimientosArete =
                    animalMovimientoPL.ObtenerMovimientosPorArete(organizacionId, arete);

                var    movimientoEnfermeria    = new AnimalMovimientoInfo();
                var    movimientoCorralOrigen  = new AnimalMovimientoInfo();
                var    parametroOrganizacionPL = new ParametroOrganizacionPL();
                var    deteccionAnimalBL       = new DeteccionAnimalBL();
                var    corralPL       = new CorralPL();
                double diasEnfermeria = 0;
                if (movimientosArete != null && movimientosArete.Any())
                {
                    movimientosArete = movimientosArete.OrderByDescending(mov => mov.AnimalMovimientoID).ToList();
                    foreach (var animalMovimientoInfo in movimientosArete)
                    {
                        if (animalMovimientoInfo.GrupoCorralID == GrupoCorralEnum.Enfermeria.GetHashCode())
                        {
                            var movimientosDiferenteEnfermeria =
                                movimientosArete.Any(
                                    mov => mov.GrupoCorralID != GrupoCorralEnum.Enfermeria.GetHashCode());

                            if (!movimientosDiferenteEnfermeria)
                            {
                                var primerMovimientoEnfermeria = movimientosArete.LastOrDefault();

                                if (primerMovimientoEnfermeria != null)
                                {
                                    movimientoEnfermeria = primerMovimientoEnfermeria;

                                    DeteccionAnimalInfo deteccionAnimal =
                                        deteccionAnimalBL.ObtenerPorAnimalMovimientoID(
                                            movimientoEnfermeria.AnimalMovimientoID);

                                    if (deteccionAnimal != null)
                                    {
                                        animalMovimientoInfo.GrupoCorralEnum = (GrupoCorralEnum)deteccionAnimal.GrupoCorralID;
                                        movimientoCorralOrigen = animalMovimientoInfo;
                                        TimeSpan diferencia = DateTime.Now - movimientoEnfermeria.FechaMovimiento;
                                        diasEnfermeria = diferencia.TotalDays;
                                        break;
                                    }
                                }
                            }
                            movimientoEnfermeria = animalMovimientoInfo;
                            continue;
                        }
                        if (animalMovimientoInfo.GrupoCorralID != GrupoCorralEnum.Enfermeria.GetHashCode())
                        {
                            //Validar que el corral no sea el de Sobrantes
                            ParametroOrganizacionInfo parametroOrganizacionSobrante =
                                parametroOrganizacionPL.ObtenerPorOrganizacionIDClaveParametro(organizacionId,
                                                                                               ParametrosEnum.CORRALSOBRANTE.ToString());

                            if (parametroOrganizacionSobrante != null &&
                                !string.IsNullOrWhiteSpace(parametroOrganizacionSobrante.Valor))
                            {
                                var corralSobrante = new CorralInfo
                                {
                                    Codigo       = parametroOrganizacionSobrante.Valor,
                                    Organizacion = new OrganizacionInfo
                                    {
                                        OrganizacionID = organizacionId
                                    }
                                };

                                corralSobrante = corralPL.ObtenerPorCodicoOrganizacionCorral(corralSobrante);
                                var lotePL = new LotePL();
                                if (corralSobrante != null)
                                {
                                    LoteInfo loteOrigenSobrante = lotePL.ObtenerPorCorral(organizacionId,
                                                                                          corralSobrante.CorralID);
                                    TimeSpan diferencia;
                                    if (loteOrigenSobrante != null)
                                    {
                                        if (loteOrigenSobrante.LoteID == animalMovimientoInfo.LoteID)
                                        {
                                            DeteccionAnimalInfo deteccionAnimal =
                                                deteccionAnimalBL.ObtenerPorAnimalMovimientoID(
                                                    movimientoEnfermeria.AnimalMovimientoID);

                                            if (deteccionAnimal != null)
                                            {
                                                animalMovimientoInfo.GrupoCorralEnum =
                                                    (GrupoCorralEnum)animalMovimientoInfo.GrupoCorralID;
                                                movimientoCorralOrigen        = animalMovimientoInfo;
                                                movimientoCorralOrigen.LoteID = deteccionAnimal.Lote.LoteID;
                                                diferencia     = DateTime.Now - movimientoEnfermeria.FechaMovimiento;
                                                diasEnfermeria = diferencia.TotalDays;
                                                break;
                                            }
                                        }
                                    }

                                    animalMovimientoInfo.GrupoCorralEnum =
                                        (GrupoCorralEnum)animalMovimientoInfo.GrupoCorralID;
                                    movimientoCorralOrigen = animalMovimientoInfo;
                                    diferencia             = DateTime.Now - movimientoEnfermeria.FechaMovimiento;
                                    diasEnfermeria         = diferencia.TotalDays;
                                    break;
                                }
                            }
                        }
                    }
                }
                int diasRecuperacion = 0;



                ParametroOrganizacionInfo parametroOrganizacion =
                    parametroOrganizacionPL.ObtenerPorOrganizacionIDClaveParametro(organizacionId,
                                                                                   ParametrosEnum.DiasRecuperacion.
                                                                                   ToString());

                if (parametroOrganizacion != null)
                {
                    int.TryParse(parametroOrganizacion.Valor, out diasRecuperacion);
                }

                if (diasRecuperacion == 0)
                {
                    diasRecuperacion = 7; //Valor por default, si no se encuentra el parámetro de la organización
                }



                if (movimientoCorralOrigen.TipoCorralID == TipoCorral.CorraletaRecuperado.GetHashCode() ||
                    movimientoCorralOrigen.TipoCorralID == TipoCorral.CorraletaRecuperadosPartida.GetHashCode())
                {
                    var tipoCorralRecuperado = new TipoCorralInfo
                    {
                        TipoCorralID = TipoCorral.CorraletaRecuperado.GetHashCode()
                    };
                    List <CorralInfo> corralesRecuperados = corralPL.ObtenerCorralesPorTipoCorral(tipoCorralRecuperado, organizacionId);
                    if (corralesRecuperados != null && corralesRecuperados.Any())
                    {
                        corrales.AddRange(corralesRecuperados);
                        return(corrales);
                    }
                }
                switch (movimientoCorralOrigen.GrupoCorralEnum)
                {
                case GrupoCorralEnum.Produccion:
                    if (diasEnfermeria < diasRecuperacion)
                    {
                        var lotePL = new LotePL();
                        //var corralPL = new CorralPL();
                        LoteInfo loteOriginal = lotePL.ObtenerPorId(movimientoCorralOrigen.LoteID);
                        if (loteOriginal != null && loteOriginal.Activo == EstatusEnum.Activo)
                        {
                            corrales.Add(loteOriginal.Corral);
                        }
                        else
                        {
                            var tipoCorralRecuperado = new TipoCorralInfo
                            {
                                TipoCorralID = TipoCorral.CorraletaRecuperado.GetHashCode()
                            };
                            List <CorralInfo> corralesRecuperados = corralPL.ObtenerCorralesPorTipoCorral(tipoCorralRecuperado, organizacionId);
                            if (corralesRecuperados != null && corralesRecuperados.Any())
                            {
                                corrales.AddRange(corralesRecuperados);
                            }
                        }
                    }
                    else
                    {
                        //var corralPL = new CorralPL();
                        var tipoCorralRecuperado = new TipoCorralInfo
                        {
                            TipoCorralID = TipoCorral.CorraletaRecuperado.GetHashCode()
                        };
                        List <CorralInfo> corralesRecuperados = corralPL.ObtenerCorralesPorTipoCorral(tipoCorralRecuperado, organizacionId);
                        if (corralesRecuperados != null && corralesRecuperados.Any())
                        {
                            corrales.AddRange(corralesRecuperados);
                        }
                    }
                    break;

                case GrupoCorralEnum.Recepcion:
                    if (diasEnfermeria < diasRecuperacion)
                    {
                        //var corralPL = new CorralPL();

                        var tipoCorralRecuperadoPartida = new TipoCorralInfo
                        {
                            TipoCorralID = TipoCorral.CorraletaRecuperadosPartida.GetHashCode()
                        };
                        List <CorralInfo> corralesRecuperados = corralPL.ObtenerCorralesPorTipoCorral(tipoCorralRecuperadoPartida, organizacionId);
                        if (corralesRecuperados != null && corralesRecuperados.Any())
                        {
                            corrales.AddRange(corralesRecuperados);
                        }
                    }
                    else
                    {
                        //var corralPL = new CorralPL();
                        var tipoCorralRecuperado = new TipoCorralInfo
                        {
                            TipoCorralID = TipoCorral.CorraletaRecuperado.GetHashCode()
                        };
                        List <CorralInfo> corralesRecuperados = corralPL.ObtenerCorralesPorTipoCorral(tipoCorralRecuperado, organizacionId);
                        if (corralesRecuperados != null && corralesRecuperados.Any())
                        {
                            corrales.AddRange(corralesRecuperados);
                        }
                    }
                    break;
                }

                if (!corrales.Any())
                {
                    var tipoCorralRecuperado = new TipoCorralInfo
                    {
                        TipoCorralID = TipoCorral.CorraletaRecuperado.GetHashCode()
                    };
                    List <CorralInfo> corralesRecuperados = corralPL.ObtenerCorralesPorTipoCorral(tipoCorralRecuperado, organizacionId);
                    if (corralesRecuperados != null && corralesRecuperados.Any())
                    {
                        corrales.AddRange(corralesRecuperados);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(corrales);
        }