Пример #1
0
        /// <summary>
        /// Valida si el tipo de corral destino esta configurado como invalido.
        /// </summary>
        /// <returns>Regresa True si el tipoCorralID esta configurado como invalido en el parametro</returns>
        private bool ValidarValorParametroCorralDestino()
        {
            if (ValidarParametroCorralDestino())
            {
                ParametroOrganizacionInfo parametroValor = new ParametroOrganizacionPL().ObtenerPorOrganizacionIDClaveParametro(int.Parse(Application.Current.Properties["OrganizacionID"].ToString()), ParametrosEnum.CORRALDESTINOORGANIZACION.ToString());

                string[] TiposCorralConfigurados = parametroValor.Valor.Split('|');
                bool     encontrado = false;
                foreach (string tipoCorral in TiposCorralConfigurados)
                {
                    if (tipoCorral == this.corralInfoOrigen.TipoCorral.TipoCorralID.ToString())
                    {
                        encontrado = true;
                    }
                }

                if (encontrado)
                {
                    imgloading.Visibility = Visibility.Hidden;
                    txtCorralDestino.Focus();
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.TraspasoGanadoCorrales_MsgCorralNoConfigurado, MessageBoxButton.OK,
                                      MessageImage.Stop);
                    txtCorralDestino.Clear();
                    txtCorralDestino.IsEnabled = true;
                    corralInfoDestino          = new CorralInfo();

                    //
                    CorralPL   corralpl   = new CorralPL();
                    CorralInfo corral     = corralpl.ObtenerCorralActivoPorCodigo(organizacionID, txtCorralOrigen.Text.Trim());
                    var        corralInfo = new CorralInfo
                    {
                        Codigo       = txtCorralOrigen.Text,
                        GrupoCorral  = corral.GrupoCorral,
                        Organizacion = new OrganizacionInfo {
                            OrganizacionID = organizacionID
                        },
                    };
                    corralInfoOrigen = corralInfo;
                    var animalPL = new AnimalPL();
                    listaAnimales = animalPL.ObtenerAnimalesPorCodigoCorral(corralInfo);
                    if (listaAnimales != null)
                    {
                        lisBoxCorralDestino.ItemsSource = null;
                        lisBoxCorralOrigen.ItemsSource  = listaAnimales;
                        txtCorralDestino.IsEnabled      = true;
                    }
                    else
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.TraspasoGanadoCorral_CorralNoTieneLoteActivo,
                                          MessageBoxButton.OK,
                                          MessageImage.Warning);
                    }
                    btnGuardar.IsEnabled = false;
                    //
                }
                return(encontrado);
            }
            return(false);
        }
Пример #2
0
        public static AnimalInfo ValidaEsAnimalDeCargaInicial(AnimalInfo animalInfo)
        {
            AnimalInfo animal = null;

            try{
                var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

                int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;

                var animalPl = new AnimalPL();

                /* Validar Si el arete existe en el inventario */
                animal = animalPl.ObtenerAnimalPorArete(animalInfo.Arete, organizacionId);
                if (!(animal != null && animal.CargaInicial))
                {
                    animal = null;
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                //throw;
            }
            return(animal);
        }
        public static CorralInfo ObtenerCorral(string arete)
        {
            AnimalInfo           animal           = null;
            AnimalMovimientoInfo animalMovimiento = null;
            CorralInfo           corral           = null;
            int respuesta = 0;

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

                animal = animalPL.ObtenerAnimalPorArete(arete, organizacionId);

                animalMovimiento = animalPL.ObtenerUltimoMovimientoAnimal(animal);

                corral = corralPL.ObtenerPorId(animalMovimiento.CorralID);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(corral);
        }
Пример #4
0
        public static AnimalInfo ObtenerExisteArete(string arete)
        {
            AnimalInfo animal = null;

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

                animal = animalPL.ObtenerAnimalPorArete(arete, organizacionId);

                if (animal != null)
                {
                    MuerteInfo muerto = muertePL.ObtenerMuertoPorArete(organizacionId, arete);
                    if (muerto != null)
                    {
                        animal.AnimalID = -1;
                    }
                }

                //ObtenerCorralDestinoAnimal(arete);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(animal);
        }
        private void ObtenerDatosCalculados()
        {
            try
            {
                var animalBL = new AnimalPL();
                var lotePL   = new LotePL();
                if (Contexto.LoteProyeccion != null)
                {
                    if (Contexto.Lote.FechaDisponibilidad.Date.Year > 2000)
                    {
                        Contexto.FechaDisponible = Contexto.Lote.FechaDisponibilidad;
                    }
                    else
                    {
                        Contexto.FechaDisponible = Contexto.Lote.FechaInicio.AddDays(Contexto.LoteProyeccion.DiasEngorda);
                    }
                }
                else
                {
                    Contexto.FechaDisponible = DateTime.Now;
                }
                modificacionCodigo = true;
                dtpFechaDisponible.SelectedDate = Contexto.FechaDisponible;
                var animalesLote = animalBL.ObtenerAnimalesPorLote(Contexto.Corral.Organizacion.OrganizacionID,
                                                                   Contexto.Lote.LoteID);


                if (animalesLote == null)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.ConfiguracionReimplante_LoteSinAnimales, MessageBoxButton.OK, MessageImage.Warning);
                    return;
                }

                var    count = animalesLote.Count;
                double temp  = 0D;
                for (int i = 0; i < count; i++)
                {
                    temp += animalesLote[i].FechaEntrada.Ticks / (double)count;
                }
                var average = new DateTime((long)temp);

                Contexto.PesoOrigen  = Convert.ToInt32(animalesLote.Average(ani => ani.PesoCompra));
                Contexto.TipoGanado  = lotePL.ObtenerTipoGanadoCorral(Contexto.Lote);
                Contexto.DiasEngorda = Convert.ToInt32((DateTime.Now - average).TotalDays);

                if (Contexto.Lote.AplicaCierreLote && Contexto.DiasEngorda < 21)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      Properties.Resources.ConfiguracionReimplante_LoteMenor21, MessageBoxButton.OK, MessageImage.Warning);
                    Limpiar();
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.ConfiguracionReimplante_ErrorCalcularDatos, MessageBoxButton.OK, MessageImage.Error);
            }
        }
        public static List <AnimalInfo> ObtenerAnimalesPorCodigoCorral(string corralCodigo)
        {
            List <AnimalInfo> lista = null;

            try
            {
                SeguridadInfo seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

                int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;

                var animalPl = new AnimalPL();
                var corralPl = new CorralPL();

                CorralInfo corral = null;

                corral = corralPl.ObtenerCorralPorCodigo(organizacionId, corralCodigo);
                corral.Organizacion = new OrganizacionInfo {
                    OrganizacionID = organizacionId
                };

                return(animalPl.ObtenerAnimalesPorCorral(corral, organizacionId));
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(lista);
        }
Пример #7
0
        private void TxtAreteMetalicoNuevo_OnLostFocus(object sender, RoutedEventArgs e)
        {
            try
            {
                var text          = (System.Windows.Controls.TextBox)sender;
                var elementoArete = Contexto.ListaAretes.FirstOrDefault(are => are.AreteMetalicoCorte.Equals(text.Text)); //(FiltroAnimalesReemplazoArete)dgAretes.Items
                if (elementoArete == null)
                {
                    return;
                }
                var animalPL = new AnimalPL();
                if (string.IsNullOrWhiteSpace(elementoArete.AreteMetalicoCorte))
                {
                    elementoArete.AreteMetalicoCorte = elementoArete.AreteMetalicoCentro;
                    return;
                }

                AnimalInfo animal = animalPL.ObtenerAnimalPorAreteTestigo(elementoArete.AreteMetalicoCorte,
                                                                          Contexto.EntradaGanado.OrganizacionID);
                if (animal != null)
                {
                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                      string.Format(Properties.Resources.ReemplazoArete_ExisteArete, animal.FolioEntrada), MessageBoxButton.OK, MessageImage.Warning);
                    elementoArete.AreteMetalicoCorte = elementoArete.AreteMetalicoCentro;
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.ReemplazoArete_ErrorValidarArete, MessageBoxButton.OK, MessageImage.Error);
            }
        }
Пример #8
0
        public static List <AnimalInfo> ObtenerAretes(CorralInfo corralInfo)
        {
            List <AnimalInfo> listaAnimales = null;

            try
            {
                var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];

                if (seguridad != null)
                {
                    bool esPartida      = false;
                    int  organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;

                    var        corralPl = new CorralPL();
                    CorralInfo corral   = corralPl.ObtenerCorralPorCodigo(organizacionId, corralInfo.Codigo);
                    if (corral.GrupoCorral == GrupoCorralEnum.Recepcion.GetHashCode())
                    {
                        esPartida = true;
                    }
                    var animalPL = new AnimalPL();
                    listaAnimales = animalPL.ObtenerAnimalesPorCorralDeteccion(corral.CorralID, esPartida);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(listaAnimales);
        }
Пример #9
0
        public static CorralInfo ObtenerCorralAreteTestigo(string areteTestigo)
        {
            CorralInfo corral = null;

            try
            {
                var seguridad      = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                int organizacionId = 0;

                if (seguridad != null)
                {
                    organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;
                }

                var animalPl   = new AnimalPL();
                var corralPl   = new CorralPL();
                var animalInfo = animalPl.ObtenerAnimalPorAreteTestigo(areteTestigo, organizacionId);

                if (animalInfo != null)
                {
                    var ultimoMovimiento = animalPl.ObtenerUltimoMovimientoAnimal(animalInfo);
                    if (ultimoMovimiento != null)
                    {
                        corral = corralPl.ObtenerPorId(ultimoMovimiento.CorralID);
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }

            return(corral);
        }
Пример #10
0
        public static Respuesta Inactivar_Animal(Peticion <long> req)
        {
            var feedBack = new Respuesta {
                Mensaje = string.Empty, Resultado = false
            };

            try
            {
                var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                var pl        = new AnimalPL();
                var info      = new AnimalInfo
                {
                    Activo   = false,
                    AnimalID = req.Datos,
                    UsuarioModificacionID = seguridad.Usuario.UsuarioID
                };

                pl.InactivarAnimal(info);
                feedBack.Resultado = true;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                feedBack.Mensaje = string.Format("Ocurrió un error al inactivar el animal.");
            }

            return(feedBack);
        }
 private void txtCorralDestino_KeyDown(object sender, KeyEventArgs e)
 {
     if (e.Key == Key.Enter || e.Key == Key.Tab)
     {
         if (String.IsNullOrWhiteSpace(txtCorralOrigen.Text))
         {
             txtCorralOrigen.Focus();
             e.Handled = true;
         }
         else
         {
             //Validar si el corral destino es de tipo enfermeria
             var corralPl   = new CorralPL();
             var corralInfo = new CorralInfo
             {
                 Codigo     = txtCorralDestino.Text,
                 TipoCorral = new TipoCorralInfo {
                     TipoCorralID = (int)TipoCorral.Enfermeria,
                 },
                 Organizacion = new OrganizacionInfo {
                     OrganizacionID = _organizacionId
                 }
             };
             corralInfo = corralPl.ObtenerPorCodigoCorral(corralInfo);
             if (corralInfo == null)
             {
                 SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                   Properties.Resources.TraspasoGanadoCorral_CorralInvalido,
                                   MessageBoxButton.OK,
                                   MessageImage.Warning);
                 txtCorralDestino.Focus();
                 return;
             }
             else
             {
                 corralPl   = new CorralPL();
                 corralInfo = new CorralInfo
                 {
                     Codigo       = txtCorralDestino.Text,
                     Organizacion = new OrganizacionInfo {
                         OrganizacionID = _organizacionId
                     },
                     TipoCorral = new TipoCorralInfo {
                         TipoCorralID = (int)TipoCorral.Enfermeria,
                     }
                 };
                 var animalPL = new AnimalPL();
                 _Animales = animalPL.ObtenerAnimalesPorCodigoCorral(corralInfo);
                 LlenarAretesDestino(_Animales);
                 EstablecerControlesTrue();
                 lisBoxCorralOrigen.SelectionMode  = SelectionMode.Multiple;
                 lisBoxCorralDestino.SelectionMode = SelectionMode.Multiple;
                 txtCorralDestino.IsEnabled        = false;
             }
         }
     }
 }
Пример #12
0
 private void TxtCorralLostFocus(object sender, RoutedEventArgs e)
 {
     try
     {
         if (!string.IsNullOrWhiteSpace(Contexto.CorralInfo.Codigo))
         {
             var lotePL = new LotePL();
             IEnumerable <LoteInfo> lotes =
                 lotePL.ObtenerPorCodigoCorralOrganizacionID(Contexto.OrganizacionId, Contexto.CorralInfo.Codigo);
             bool valido = ValidarCorral(lotes);
             if (valido)
             {
                 var      animalPL = new AnimalPL();
                 LoteInfo lote     = lotes.ToList().FirstOrDefault(activo => activo.Activo == EstatusEnum.Activo);
                 if (lote != null)
                 {
                     List <AnimalInfo> animales =
                         animalPL.ObtenerAnimalesPorLote(Contexto.OrganizacionId, lote.LoteID);
                     Contexto.LoteInfo   = lote;
                     Contexto.CorralInfo = lote.Corral;
                     ObtenerValoresGanado(animales);
                     ObtenerPesos();
                     ObtenerFormula();
                     ObtenerDiasEngorda(animales);
                 }
                 if (!listadoDeTraspaso.Any())
                 {
                     chkTraspasoGanado.IsEnabled   = true;
                     chkSacrificioGanado.IsEnabled = true;
                 }
             }
             else
             {
                 if (Contexto.LoteInfo.Corral == null)
                 {
                     Contexto.LoteInfo.Corral = new CorralInfo();
                 }
                 Contexto.LoteInfo.Corral.Codigo = string.Empty;
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                           Properties.Resources.TraspasoGanadoGordo_MensajeErrorConsultarCorral,
                           MessageBoxButton.OK, MessageImage.Error);
     }
 }
        public static ResultadoInfo <CorralInfo> ExisteCorraletaDeSacrificioConfigurada(string arete)
        {
            ResultadoInfo <CorralInfo> corraletas = null;

            try
            {
                var animalPL     = new AnimalPL();
                var tipoGanadoPL = new TipoGanadoPL();
                var parametroOrg = new ParametroOrganizacionPL();
                var corralPL     = new CorralPL();

                var seguridad      = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;

                // Se obtiene el animal
                var animal = animalPL.ObtenerAnimalPorArete(arete, organizacionId);

                if (animal != null)
                {
                    // Obtener el tipo de ganado
                    animal.TipoGanado = tipoGanadoPL.ObtenerPorID(animal.TipoGanadoID);
                    // Se obtiene el tipo de corraletaSacrificio a Buscar
                    var paramTipoCorraletaSacrificio = animal.TipoGanado.Sexo == Sexo.Macho ?
                                                       ParametrosEnum.CorraletaSacrificioMacho : ParametrosEnum.CorraletaSacrificioHembra;
                    var parametroOrganizacionInfo =
                        parametroOrg.ObtenerPorOrganizacionIDClaveParametro(organizacionId, paramTipoCorraletaSacrificio.ToString());
                    // Si se tiene configurado el parametro
                    if (parametroOrganizacionInfo != null)
                    {
                        //Obtener info de las corraletas configuradas
                        corraletas =
                            corralPL.ObtenerInformacionCorraletasDisponiblesSacrificio(organizacionId, parametroOrganizacionInfo.Valor);
                        if (corraletas != null && corraletas.Lista.Count > 0)
                        {
                            var corral = new CorralInfo {
                                Codigo = "Seleccione", CorralID = 0
                            };
                            corraletas.Lista.Insert(0, corral);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(corraletas);
        }
Пример #14
0
        public static Respuesta <Reemplazo_Arete_Model> Reemplazo_Arete(Peticion <Reemplazo_Arete_Request> req)
        {
            var feedBack = new Respuesta <Reemplazo_Arete_Model> {
                Mensaje = string.Empty, Resultado = false
            };

            try
            {
                var seguridad       = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                var fechaSacrificio = String.Format("{0:u}", req.Datos.FechaSacrificio);
                var pl       = new LotePL();
                var animalPl = new AnimalPL();
                var loteInfo = pl.ObtenerPorId(req.Datos.LoteID);

                if (loteInfo != null)
                {
                    var aretesScp = pl.ObtenerLoteConAnimalesScp(seguridad.Usuario.OrganizacionID, loteInfo.Lote, loteInfo.Corral.Codigo, fechaSacrificio);
                    if (aretesScp.Any())
                    {
                        if (!pl.ExistenAretesRepetidos(aretesScp))
                        {
                            //var animalId = animalPl.PlancharAretes(aretesScp,req.Datos.AnimalID,req.Datos.LoteID,seguridad.Usuario.UsuarioID);
                            //feedBack.Datos.AnimalID = animalId;
                            feedBack.Resultado = true;
                        }
                        else
                        {
                            feedBack.Mensaje = string.Format("Existen aretes duplicados en el Control de Piso para el corral {0}, lote {1}, fecha de producción {2}.", loteInfo.Corral.Codigo, loteInfo.Lote, fechaSacrificio);
                        }
                    }
                    else
                    {
                        feedBack.Mensaje = string.Format("No se encontraron aretes en el Control de Piso para el corral {0}, lote {1}, fecha de producción {2}, por lo tanto no se puede realizar el reemplazo.", loteInfo.Corral.Codigo, loteInfo.Lote, fechaSacrificio);
                    }
                }
                else
                {
                    feedBack.Mensaje = string.Format("No se encontró el lote ni el corral para obtener los aretes del Control de Piso.");
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                feedBack.Mensaje = string.Format("Ocurrió un error al reemplazar el arete.");
            }

            return(feedBack);
        }
Пример #15
0
        /// <summary>
        /// Comprueba si el arete o arete metalico no se encuentra registrado.
        /// </summary>
        /// <param name="arete"></param>
        /// <param name="areteMetalico"></param>
        /// <returns></returns>
        private ResultadoValidacion ComprobarAreteRegistrado(string arete, string areteMetalico)
        {
            var animalPl  = new AnimalPL();
            var resultado = new ResultadoValidacion();

            try
            {
                resultado.Resultado = animalPl.VerificarExistenciaArete(arete, areteMetalico, organizacionID);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
            return(resultado);
        }
Пример #16
0
        public static List <AnimalInfo> ObtenerAnimalesPorCodigoCorral(string corralCodigo)
        {
            List <AnimalInfo> lista = null;

            try
            {
                SeguridadInfo seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

                int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;

                var        corralPl = new CorralPL();
                CorralInfo corral   = corralPl.ObtenerCorralPorCodigo(organizacionId, corralCodigo);
                corral.Organizacion = new OrganizacionInfo {
                    OrganizacionID = organizacionId
                };
                if (corral.GrupoCorral == (int)GrupoCorralEnum.Recepcion)
                {
                    lista = new List <AnimalInfo>();
                    var interfaz = new InterfaceSalidaAnimalPL();

                    var anim = interfaz.ObtenerAretesInterfazSalidaAnimal(corralCodigo, organizacionId);
                    if (anim != null)
                    {
                        foreach (InterfaceSalidaAnimalInfo interfaceAnimal in anim)
                        {
                            var animal = new AnimalInfo {
                                Arete = interfaceAnimal.Arete
                            };
                            lista.Add(animal);
                        }
                    }
                }
                else
                {
                    var animalPl = new AnimalPL();
                    lista = animalPl.ObtenerAnimalesPorCorral(corral, organizacionId);
                }
                return(lista);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(lista);
        }
 /// <summary>
 /// Evento del check para cuando se chekea
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ckbCompensacion_Checked(object sender, RoutedEventArgs e)
 {
     if (ValdiarCamposObligatoriosEnBlanco())
     {
         //Obtener animales del corral destino
         var animalPl = new AnimalPL();
         var animales = animalPl.ObtenerAnimalesPorCorral(corralDestino, organizacionID);
         if (animales != null)
         {
             dgAretesDelCorral.ItemsSource = animales;
         }
         grbAretesCorral.Visibility = Visibility.Visible;
         // dgAretesDelCorral
     }
     else
     {
         ckbCompensacion.IsChecked = false;
     }
 }
Пример #18
0
        /// <summary>
        /// Metodo para mostrar los animales duplicados
        /// </summary>
        private void AnimalesDuplicados()
        {
            try
            {
                var animalPl = new AnimalPL();
                // Se manda abrir el dialogo de los animales duplicados
                var trazabilidadAnimalDuplicado = new TrazabilidadAnimalDuplicado(Contexto.AnimalesDuplicados)
                {
                    Left  = (ActualWidth - Width) / 2,
                    Top   = ((ActualHeight - Height) / 2) + 132,
                    Owner = Application.Current.Windows[ConstantesVista.WindowPrincipal]
                };
                trazabilidadAnimalDuplicado.ShowDialog();
                if (trazabilidadAnimalDuplicado.AnimalSeleccionado != null)
                {
                    Contexto.Animal = trazabilidadAnimalDuplicado.AnimalSeleccionado;

                    if (Contexto.Animal != null && Contexto.Animal.AnimalID > 0)
                    {
                        //Se busca la trazabilidad de animal seleccionado
                        Contexto = animalPl.ObtenerTrazabilidadAnimal(Contexto, false);

                        if (Contexto.Animal != null && Contexto.Animal.AnimalID > 0)
                        {
                            DgMovimientoAnimal.ItemsSource = Contexto.Animal.ListaAnimalesMovimiento;
                            Habilitar(true);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.TrazabilidadAnimal_ErrorMostrarAretesDuplicados,
                                  MessageBoxButton.OK,
                                  MessageImage.Error);
            }
        }
        public static AnimalInfo ObtenerExisteArete(string arete)
        {
            AnimalInfo animal = null;

            try
            {
                var animalPL       = new AnimalPL();
                var seguridad      = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                int organizacionId = seguridad.Usuario.Organizacion.OrganizacionID;
                int pesoProyectado = 0;
                animal = animalPL.ObtenerAnimalPorArete(arete, organizacionId);

                pesoProyectado = animalPL.ObtenerPesoProyectado(arete, organizacionId);

                animal.PesoAlCorte = pesoProyectado;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(animal);
        }
        public static List <ConfiguracionFormulaInfo> ConsultarConfiguracionFormula(int LoteID)
        {
            List <ConfiguracionFormulaInfo> resultado = null;
            LoteInfo          lote       = null;
            TipoGanadoInfo    tipoGanado = null;
            List <AnimalInfo> animales   = null;
            CorralInfo        corral     = null;

            LotePL   lotePL   = new LotePL();
            AnimalPL animalPL = new AnimalPL();
            ConfiguracionFormulaPL configuracionFormulaPL = new ConfiguracionFormulaPL();

            try
            {
                lote = lotePL.ObtenerPorId(LoteID);
                if (lote != null)
                {
                    animales = animalPL.ObtenerAnimalesPorLoteID(lote);

                    if (animales != null)
                    {
                        tipoGanado = lotePL.ObtenerSoloTipoGanadoCorral(animales, lote);

                        if (tipoGanado != null)
                        {
                            resultado = configuracionFormulaPL.ObtenerFormulaPorTipoGanado(tipoGanado, lote.OrganizacionID);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                resultado = null;
            }

            return(resultado);
        }
Пример #21
0
        public static Respuesta <List <ControlSacrificioInfo.SincronizacionSIAP> > Planchado_AreteLote(Peticion <ControlSacrificioInfo.Planchado_AreteLote_Request> req)
        {
            var feedBack = new Respuesta <List <ControlSacrificioInfo.SincronizacionSIAP> > {
                Mensaje = string.Empty, Resultado = false
            };

            try
            {
                var pl        = new AnimalPL();
                var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                //pl.ActualizarArete(req.Datos.AnimalID,req.Datos.Arete,seguridad.Usuario.UsuarioID);
                feedBack.Datos = pl.PlancharAretes(req.Datos, seguridad.Usuario.UsuarioID, seguridad.Usuario.OrganizacionID);

                feedBack.Resultado = true;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                feedBack.Mensaje   = string.Format("Ocurrió un error al planchar arete." + ex.Message);
                feedBack.Resultado = false;
            }

            return(feedBack);
        }
        public static List <AnimalInfo> ObtenerAnimalesPorLoteID(int loteID)
        {
            List <AnimalInfo> lista = null;

            try
            {
                var seguridad      = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                var organizacionID = seguridad.Usuario.Organizacion.OrganizacionID;
                var animalPl       = new AnimalPL();

                var loteInfo = new LoteInfo
                {
                    LoteID         = loteID,
                    OrganizacionID = organizacionID
                };

                lista = animalPl.ObtenerAnimalesPorLoteID(loteInfo);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(lista);
        }
        public static AnimalInfo ObtenerExistenciaAnimal(string arete, int loteID)
        {
            var seguridad = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
            var programacionSacrificioPL = new ProgramacionSacrificioPL();
            var animalInfo = new AnimalInfo {
                Arete = arete,
                OrganizacionIDEntrada = seguridad.Usuario.Organizacion.OrganizacionID
            };

            var resultado = programacionSacrificioPL.ObtenerExistenciaAnimal(animalInfo, loteID);

            if (resultado == null)
            {
                var animalPl = new AnimalPL();
                /* Validar Si el arete existe en el inventario Como Carga Inicial*/
                var animalCargaInicial = animalPl.ObtenerAnimalPorArete(arete, seguridad.Usuario.Organizacion.OrganizacionID);
                if (animalCargaInicial != null && animalCargaInicial.CargaInicial)
                {
                    resultado = animalCargaInicial;
                }
            }

            return(resultado);
        }
Пример #24
0
        public static int GuardarDeteccion(DeteccionInfo deteccion)
        {
            int retValue = 0;

            try
            {
                CorralInfo corral   = new CorralInfo();
                CorralPL   corralPL = new CorralPL();
                corral = ObtenerCorral(deteccion.CorralCodigo);
                var           seguridad       = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                LoteInfo      lote            = ObtenerLotesCorral(corral.CorralID);
                AnimalPL      animalPL        = new AnimalPL();
                AnimalInfo    animal          = null;
                var           esCargaInicial  = FlagCargaInicial.Default;
                string        areteSalida     = string.Empty;
                int           salida          = 0;
                int           organizacionID  = 0;
                DeteccionInfo deteccionGrabar = null;
                //informacion del la organzacion y usuario
                if (seguridad != null)
                {
                    organizacionID = seguridad.Usuario.Organizacion.OrganizacionID;
                    var deteccionPl = new DeteccionPL();

                    string areteDeteccion = animalPL.obtenerExisteDeteccion(deteccion.Arete);
                    if (!string.IsNullOrWhiteSpace(areteDeteccion))
                    {
                        return(3);
                    }
                    string areteDeteccionMetalico = animalPL.obtenerExisteDeteccionTestigo(deteccion.AreteMetalico);
                    if (!string.IsNullOrWhiteSpace(areteDeteccionMetalico))
                    {
                        return(3);
                    }

                    if (corral.GrupoCorral != (int)GrupoCorralEnum.Recepcion)
                    {
                        if (deteccion.Arete != string.Empty && deteccion.AreteMetalico == string.Empty)
                        {
                            var animalPl = new AnimalPL();
                            var animales = animalPl.ObtenerAnimalesPorCorral(corral, organizacionID);
                            if (animales != null)
                            {
                                for (int i = 0; i < animales.Count; i++)
                                {
                                    if (deteccion.Arete == animales[i].Arete)
                                    {
                                        esCargaInicial = FlagCargaInicial.SeEncuentraEnCorral;
                                        break;
                                    }
                                }
                            }
                            /* Validar Si el arete existe en el inventario */
                            animal = animalPl.ObtenerAnimalPorArete(deteccion.Arete, organizacionID);
                            if (animal != null && animal.CargaInicial && esCargaInicial == FlagCargaInicial.Default)
                            {
                                esCargaInicial = FlagCargaInicial.EsCargaInicial;
                            }
                            else if (animal == null)
                            {
                                animal = new AnimalInfo()
                                {
                                    Arete                 = deteccion.Arete,
                                    AreteMetalico         = deteccion.AreteMetalico,
                                    LoteID                = lote.LoteID,
                                    CorralID              = corral.CorralID,
                                    UsuarioModificacionID = seguridad.Usuario.UsuarioID,
                                };
                                // Este arete se dara de alta en el corral
                                esCargaInicial = FlagCargaInicial.EsAreteNuevo;
                            }
                        }

                        if (deteccion.AreteMetalico != string.Empty && deteccion.Arete == string.Empty)
                        {
                            animal = animalPL.ObtenerAnimalPorAreteTestigo(deteccion.AreteMetalico, organizacionID);
                        }
                    }
                    else
                    {
                        if (deteccion.AreteMetalico == string.Empty && deteccion.Arete != string.Empty)
                        {
                            var interfaceSalidaAnimalPl = new InterfaceSalidaAnimalPL();
                            InterfaceSalidaAnimalInfo interfaceSalidaAnimalInfo = interfaceSalidaAnimalPl.ObtenerNumeroAreteIndividual(deteccion.Arete, organizacionID);

                            if (interfaceSalidaAnimalInfo != null)
                            {
                                deteccion.AreteMetalico = interfaceSalidaAnimalInfo.AreteMetalico;
                            }
                        }
                        else if (deteccion.AreteMetalico != string.Empty && deteccion.Arete == string.Empty)
                        {
                            var interfaceSalidaAnimalPl = new InterfaceSalidaAnimalPL();
                            InterfaceSalidaAnimalInfo interfaceSalidaAnimalInfo = interfaceSalidaAnimalPl.ObtenerNumeroAreteMetalico(deteccion.Arete, organizacionID);

                            if (interfaceSalidaAnimalInfo != null)
                            {
                                deteccion.Arete = interfaceSalidaAnimalInfo.Arete;
                            }
                        }
                    }

                    string foto = string.Empty;
                    if (deteccion.FotoDeteccion != string.Empty)
                    {
                        foto = TipoFoto.Enfermo.ToString() + '/' + deteccion.FotoDeteccion;
                    }

                    if (animal != null)
                    {
                        deteccionGrabar = new DeteccionInfo()
                        {
                            LoteID              = lote.LoteID,
                            CorralID            = corral.CorralID,
                            FotoDeteccion       = foto,
                            Observaciones       = deteccion.Observaciones,
                            Arete               = animal.Arete,
                            AreteMetalico       = animal.AreteMetalico,
                            OperadorID          = seguridad.Usuario.Operador.OperadorID,
                            UsuarioCreacionID   = seguridad.Usuario.UsuarioID,
                            DescripcionGanado   = deteccion.DescripcionGanado,
                            Problemas           = deteccion.Problemas,
                            Sintomas            = deteccion.Sintomas,
                            GradoID             = deteccion.GradoID,
                            NoFierro            = deteccion.NoFierro,
                            GrupoCorral         = corral.GrupoCorral,
                            DescripcionGanadoID = deteccion.DescripcionGanadoID,
                            Activo              = 1
                        };
                    }
                    else
                    {
                        deteccionGrabar = new DeteccionInfo()
                        {
                            LoteID              = lote.LoteID,
                            CorralID            = corral.CorralID,
                            FotoDeteccion       = foto,
                            Observaciones       = deteccion.Observaciones,
                            Arete               = deteccion.Arete,
                            AreteMetalico       = deteccion.AreteMetalico,
                            OperadorID          = seguridad.Usuario.Operador.OperadorID,
                            UsuarioCreacionID   = seguridad.Usuario.UsuarioID,
                            DescripcionGanado   = deteccion.DescripcionGanado,
                            Problemas           = deteccion.Problemas,
                            Sintomas            = deteccion.Sintomas,
                            GradoID             = deteccion.GradoID,
                            NoFierro            = deteccion.NoFierro,
                            GrupoCorral         = corral.GrupoCorral,
                            DescripcionGanadoID = deteccion.DescripcionGanadoID,
                            Activo              = 1
                        };
                    }

                    if (corral.TipoCorral.TipoCorralID == (int)TipoCorral.CorraletaSacrificio)
                    {
                        deteccionGrabar.LoteID = animalPL.ObtenerLoteSalidaAnimal(deteccionGrabar.Arete, deteccionGrabar.AreteMetalico, organizacionID);
                        corral = corralPL.ObtenerCorralPorLoteID(deteccionGrabar.LoteID, organizacionID);
                        deteccionGrabar.GrupoCorral = corral.GrupoCorral;
                    }


                    if (corral.GrupoCorral == (int)GrupoCorralEnum.Recepcion)
                    {
                        if (deteccionGrabar.GradoID == GradoEnfermedadEnum.Level1.GetHashCode() ||
                            deteccionGrabar.GradoID == GradoEnfermedadEnum.Level2.GetHashCode())
                        {
                            return(2); //Error de Ganado Grado 2 en corral de Recepcion
                        }
                    }

                    var resultado = deteccionPl.GuardarDeteccion(deteccionGrabar,
                                                                 esCargaInicial,
                                                                 animal);
                    if (resultado == 1)
                    {
                        retValue = resultado;
                    }
                }
                else
                {
                    retValue = 0;
                }
            }
            catch (Exception ex)
            {
                retValue = -1;
            }
            return(retValue);
        }
Пример #25
0
        public static int GuardarMuerte(MuerteInfo muerte)
        {
            int retValue = 0;

            try
            {
                CorralInfo corral   = new CorralInfo();
                CorralPL   corralPL = new CorralPL();
                AnimalPL   animalPL = new AnimalPL();
                LotePL     lotePL   = new LotePL();
                corral = ObtenerCorral(muerte.CorralCodigo);
                var        seguridad      = (SeguridadInfo)HttpContext.Current.Session["Seguridad"];
                LoteInfo   lote           = ObtenerLotesCorral(corral.CorralID);
                int        organizacionID = 0;
                AnimalInfo animal         = null;
                MuerteInfo muerteGrabar   = null;
                // 1 se encuentra en corral 2 Carga Inicial
                var esCargaInicial = FlagCargaInicial.Default;
                //informacion del la organzacion y usuario
                if (seguridad != null)
                {
                    organizacionID = seguridad.Usuario.Organizacion.OrganizacionID;
                    var deteccionPl = new DeteccionPL();

                    if (corral.GrupoCorral != (int)GrupoCorralEnum.Recepcion)
                    {
                        if (muerte.Arete != string.Empty && muerte.AreteMetalico == string.Empty)
                        {
                            var animalPl = new AnimalPL();
                            var animales = animalPl.ObtenerAnimalesPorCorral(corral, organizacionID);
                            if (animales != null)
                            {
                                for (int i = 0; i < animales.Count; i++)
                                {
                                    if (muerte.Arete == animales[i].Arete)
                                    {
                                        esCargaInicial = FlagCargaInicial.SeEncuentraEnCorral;
                                        break;
                                    }
                                }
                            }
                            /* Validar Si el arete existe en el inventario */
                            animal = animalPl.ObtenerAnimalPorArete(muerte.Arete, organizacionID);
                            if (animal != null && animal.CargaInicial && esCargaInicial == FlagCargaInicial.Default)
                            {
                                esCargaInicial = FlagCargaInicial.EsCargaInicial;
                            }
                            else if (animal == null)
                            {
                                animal = new AnimalInfo()
                                {
                                    Arete                 = muerte.Arete,
                                    AreteMetalico         = muerte.AreteMetalico,
                                    LoteID                = lote.LoteID,
                                    CorralID              = corral.CorralID,
                                    UsuarioModificacionID = seguridad.Usuario.UsuarioID,
                                };
                                // Este arete se dara de alta en el corral
                                esCargaInicial = FlagCargaInicial.EsAreteNuevo;
                            }
                        }
                        if (muerte.AreteMetalico != string.Empty && muerte.Arete == string.Empty)
                        {
                            animal = animalPL.ObtenerAnimalPorAreteTestigo(muerte.AreteMetalico, organizacionID);
                        }
                    }
                    var    guardarPl = new MuertePL();
                    string foto      = string.Empty;
                    if (muerte.FotoDeteccion != string.Empty)
                    {
                        foto = TipoFoto.Muerte.ToString() + '/' + muerte.FotoDeteccion;
                    }

                    if (animal != null)
                    {
                        muerteGrabar = new MuerteInfo
                        {
                            LoteId              = lote.LoteID,
                            CorralId            = corral.CorralID,
                            OrganizacionId      = seguridad.Usuario.Organizacion.OrganizacionID,
                            FotoDeteccion       = foto,
                            Observaciones       = muerte.Observaciones,
                            Arete               = animal.Arete,
                            AreteMetalico       = animal.AreteMetalico,
                            OperadorDeteccionId = seguridad.Usuario.Operador.OperadorID,
                            UsuarioCreacionID   = seguridad.Usuario.UsuarioID,
                            EstatusId           = (int)EstatusMuertes.Detectado
                        };
                    }
                    else
                    {
                        muerteGrabar = new MuerteInfo
                        {
                            LoteId              = lote.LoteID,
                            CorralId            = corral.CorralID,
                            OrganizacionId      = seguridad.Usuario.Organizacion.OrganizacionID,
                            FotoDeteccion       = foto,
                            Observaciones       = muerte.Observaciones,
                            Arete               = muerte.Arete,
                            AreteMetalico       = muerte.AreteMetalico,
                            OperadorDeteccionId = seguridad.Usuario.Operador.OperadorID,
                            UsuarioCreacionID   = seguridad.Usuario.UsuarioID,
                            EstatusId           = (int)EstatusMuertes.Detectado
                        };
                    }

                    if (corral.TipoCorral.TipoCorralID == (int)TipoCorral.CorraletaSacrificio)
                    {
                        muerteGrabar.LoteId = animalPL.ObtenerLoteSalidaAnimal(muerteGrabar.Arete, muerteGrabar.AreteMetalico, organizacionID);
                    }

                    if (muerteGrabar != null)
                    {
                        muerteGrabar.Corral = corral;
                        var resultado = guardarPl.GuardarMuerte(muerteGrabar,
                                                                esCargaInicial,
                                                                animal);
                        retValue = resultado;
                    }
                }
                else
                {
                    retValue = 0;
                }
            }
            catch (Exception ex)
            {
                retValue = -1;
            }
            return(retValue);
        }
Пример #26
0
        public static int ObtenerExisteAreteTestigo(string corralCodigo, string arete, string areteTestigo, bool validarDeteccion)
        {
            int    retorno = 0;
            string areteDeteccion = string.Empty, areteMuerte = string.Empty;

            try
            {
                SeguridadInfo      seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                IList <AnimalInfo> animales  = null;
                int organizacionId           = seguridad.Usuario.Organizacion.OrganizacionID;

                var animalPl = new AnimalPL();
                var corralPl = new CorralPL();

                AnimalInfo animal = new AnimalInfo();
                CorralInfo corral = null;

                corral = corralPl.ObtenerCorralPorCodigo(organizacionId, corralCodigo);
                corral.Organizacion = new OrganizacionInfo {
                    OrganizacionID = organizacionId
                };

                if (validarDeteccion)
                {
                    areteDeteccion = animalPl.obtenerExisteDeteccionTestigo(areteTestigo);
                }

                if (areteDeteccion == string.Empty)
                {
                    areteMuerte = animalPl.obtenerExisteMuerteTestigo(areteTestigo);
                    if (areteMuerte == string.Empty)
                    {
                        if (corral.TipoCorral.TipoCorralID != (int)TipoCorral.Recepcion && corral.TipoCorral.TipoCorralID != (int)TipoCorral.CorraletaSacrificio)
                        {
                            animales = animalPl.ObtenerAnimalesPorCorral(corral, organizacionId);
                            if (animales != null)
                            {
                                for (int i = 0; i < animales.Count; i++)
                                {
                                    if (areteTestigo == animales[i].AreteMetalico)
                                    {
                                        if (arete != string.Empty)
                                        {
                                            if (arete == animales[i].Arete)
                                            {
                                                retorno = 1; //Si corresponde
                                                break;
                                            }
                                            else
                                            {
                                                retorno = 2; //No corresponde
                                            }
                                        }
                                        else
                                        {
                                            retorno = 1; //No trae arete
                                        }
                                    }
                                }
                            }
                        }
                        else if (corral.TipoCorral.TipoCorralID == (int)TipoCorral.CorraletaSacrificio)
                        {
                            animal = animalPl.ObtenerAnimalPorAreteTestigo(areteTestigo, organizacionId);
                            if (animal != null)
                            {
                                if (animalPl.ObtenerExisteSalida(animal.AnimalID) > 0 && (arete == animal.Arete || arete == ""))
                                {
                                    retorno = 1;
                                }
                            }
                        }
                        else
                        {
                            retorno = 1;//No se valida si es recepcion
                        }
                    }
                    else
                    {
                        retorno = 3;//Muerto
                    }
                }
                else
                {
                    retorno = 2;//Detectado
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(retorno);
        }
Пример #27
0
        public static int ObtenerExisteArete(string corralCodigo, string arete, bool validarDeteccion)
        {
            int    retorno = 0;
            string areteDeteccion = string.Empty, areteMuerte = string.Empty;

            try
            {
                SeguridadInfo      seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                IList <AnimalInfo> animales  = null;
                int organizacionId           = seguridad.Usuario.Organizacion.OrganizacionID;

                var animalPl = new AnimalPL();
                var corralPl = new CorralPL();
                var lotePL   = new LotePL();

                AnimalInfo animal = null;
                CorralInfo corral = null;
                LoteInfo   lote   = null;

                corral = corralPl.ObtenerCorralPorCodigo(organizacionId, corralCodigo);
                corral.Organizacion = new OrganizacionInfo {
                    OrganizacionID = organizacionId
                };

                if (validarDeteccion)
                {
                    areteDeteccion = animalPl.obtenerExisteDeteccion(arete);
                }

                if (areteDeteccion == string.Empty)
                {
                    areteMuerte = animalPl.obtenerExisteMuerte(arete);
                    if (areteMuerte == string.Empty)
                    {
                        if (corral.TipoCorral.TipoCorralID != (int)TipoCorral.Recepcion &&
                            corral.TipoCorral.TipoCorralID != (int)TipoCorral.CorraletaSacrificio)
                        {
                            animales = animalPl.ObtenerAnimalesPorCorral(corral, organizacionId);
                            if (animales != null)
                            {
                                for (int i = 0; i < animales.Count; i++)
                                {
                                    if (arete == animales[i].Arete)
                                    {
                                        return(1);
                                    }
                                }
                            }
                            /* Validar Si el arete existe en el inventario  y es carga inicial */
                            var animalInventario = animalPl.ObtenerAnimalPorArete(arete, organizacionId);
                            if (animalInventario == null)
                            {
                                retorno = 0;
                            }
                        }
                        else if (corral.TipoCorral.TipoCorralID == (int)TipoCorral.CorraletaSacrificio)
                        {
                            animal = animalPl.ObtenerAnimalPorArete(arete, organizacionId);
                            if (animal != null)
                            {
                                if (animalPl.ObtenerExisteSalida(animal.AnimalID) > 0)
                                {
                                    retorno = 1;
                                }
                            }
                        }
                        else
                        {
                            var entrada = new EntradaGanadoPL();
                            lote = lotePL.ObtenerLotesActivos(organizacionId, corral.CorralID);

                            if (lote != null)
                            {
                                var datosEntrada = entrada.ObtenerEntradaPorLote(lote);

                                if (datosEntrada != null)
                                {
                                    if (datosEntrada.TipoOrganizacionOrigenId != (int)TipoOrganizacion.CompraDirecta)
                                    {
                                        int salida = corralPl.ObtenerExisteInterfaceSalida(organizacionId, corralCodigo, arete);
                                        if (salida > 0)
                                        {
                                            retorno = 1; // Existe arete en la interface
                                        }
                                        else
                                        {
                                            retorno = 0;//Valido, pero aqui va la validacion de interfaz salida
                                        }
                                    }
                                    else
                                    {
                                        /* Si es compra directa validar q el arete no exista en el inventario */
                                        var animalInventario = animalPl.ObtenerAnimalPorArete(arete, organizacionId);
                                        if (animalInventario != null)
                                        {
                                            retorno = 0;// el arete ya existe en el inventario
                                        }
                                        else
                                        {
                                            retorno = 1;//Valido, es compra directa y no existe en el inventario
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        retorno = 3;//Muerto
                    }
                }
                else
                {
                    retorno = 2;//Detectado
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(retorno);
        }
Пример #28
0
        //Evento KeyDown de txtCorralOrigen
        private void txtCorralOrigen_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter || e.Key == Key.Tab)
            {
                if (String.IsNullOrWhiteSpace(txtCorralOrigen.Text))
                {
                    e.Handled = true;
                }
                else
                {
                    LimpiarPantalla(false);

                    //Verificar existencia del corral
                    var corralPl  = new CorralPL();
                    var resultado = corralPl.ObtenerExistenciaCorral(organizacionID, txtCorralOrigen.Text);
                    if (resultado == null)
                    {
                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                          Properties.Resources.TraspasoGanadoCorral_CorralNoExiste,
                                          MessageBoxButton.OK,
                                          MessageImage.Warning);
                        e.Handled = true;
                    }
                    else
                    {
                        //Verificar si corral es de enfermeria
                        var corralInfo = new CorralInfo
                        {
                            Codigo       = txtCorralOrigen.Text,
                            GrupoCorral  = (int)GrupoCorralEnum.Enfermeria,
                            Organizacion = new OrganizacionInfo {
                                OrganizacionID = organizacionID
                            }
                        };
                        corralInfo = corralPl.ObtenerPorCodigoGrupoCorral(corralInfo);
                        if (corralInfo == null)
                        {
                            //Verificar si corral es de recepcion
                            corralInfo = new CorralInfo
                            {
                                Codigo       = txtCorralOrigen.Text,
                                GrupoCorral  = (int)GrupoCorralEnum.Produccion,
                                Organizacion = new OrganizacionInfo {
                                    OrganizacionID = organizacionID
                                }
                            };

                            corralInfo = corralPl.ObtenerPorCodigoGrupoCorral(corralInfo);
                            if (corralInfo == null)
                            {
                                corralInfo = new CorralInfo
                                {
                                    Codigo       = txtCorralOrigen.Text,
                                    GrupoCorral  = (int)GrupoCorralEnum.Recepcion,
                                    Organizacion = new OrganizacionInfo {
                                        OrganizacionID = organizacionID
                                    }
                                };

                                corralInfo = corralPl.ObtenerPorCodigoGrupoCorral(corralInfo);
                                if (corralInfo == null)
                                {
                                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                                      Properties.Resources.TraspasoGanadoCorral_CorralNoEsEnfermeria,
                                                      MessageBoxButton.OK,
                                                      MessageImage.Warning);
                                    e.Handled = true;
                                }
                                else
                                {
                                    corralInfoOrigen = corralInfo;
                                    corralInfoOrigen.OrganizacionId = organizacionID;
                                    var animalPL = new AnimalPL();
                                    listaAnimales = animalPL.ObtenerAnimalesRecepcionPorCodigoCorral(corralInfo);
                                    if (listaAnimales != null)
                                    {
                                        lisBoxCorralOrigen.ItemsSource = listaAnimales;
                                        txtCorralDestino.IsEnabled     = true;
                                    }
                                    else
                                    {
                                        SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                                          Properties.Resources.TraspasoGanadoCorral_CorralNoTieneLoteActivo,
                                                          MessageBoxButton.OK,
                                                          MessageImage.Warning);
                                        e.Handled = true;
                                    }
                                }
                            }
                            else
                            {
                                corralInfoOrigen = corralInfo;
                                corralInfoOrigen.OrganizacionId = organizacionID;
                                var animalPL = new AnimalPL();
                                listaAnimales = animalPL.ObtenerAnimalesPorCodigoCorral(corralInfo);
                                if (listaAnimales != null)
                                {
                                    lisBoxCorralOrigen.ItemsSource = listaAnimales;
                                    txtCorralDestino.IsEnabled     = true;
                                }
                                else
                                {
                                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                                      Properties.Resources.TraspasoGanadoCorral_CorralNoTieneLoteActivo,
                                                      MessageBoxButton.OK,
                                                      MessageImage.Warning);
                                    e.Handled = true;
                                }
                            }
                        }
                        else
                        {
                            if (corralInfo.TipoCorral.TipoCorralID == (int)TipoCorral.CronicoVentaMuerte)
                            {
                                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                                  Properties.Resources.TraspasoGanadoCorral_CorralEsCronicoVentaMuerte,
                                                  MessageBoxButton.OK,
                                                  MessageImage.Warning);
                                e.Handled = true;
                            }
                            else
                            {
                                //Obtener animales para mostrar Arete en list
                                var animalPL = new AnimalPL();
                                listaAnimales    = animalPL.ObtenerAnimalesPorCodigoCorral(corralInfo);
                                corralInfoOrigen = corralInfo;
                                corralInfoOrigen.OrganizacionId = organizacionID;
                                if (listaAnimales != null)
                                {
                                    lisBoxCorralOrigen.ItemsSource = listaAnimales;
                                    txtCorralDestino.IsEnabled     = true;
                                }
                                else
                                {
                                    SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                                      Properties.Resources.TraspasoGanadoCorral_CorralNoTieneLoteActivo,
                                                      MessageBoxButton.OK,
                                                      MessageImage.Warning);
                                    e.Handled = true;
                                }
                            }
                        }
                    }
                }
            }
        }
        /// <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;
            }
        }
        public static int ObtenerUltimoMovimiento(string arete)
        {
            AnimalInfo             animal           = null;
            AnimalMovimientoInfo   animalMovimiento = null;
            CorralInfo             corral           = null;
            List <TratamientoInfo> tratamientos     = null;

            int respuesta = 0;

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

                animal = animalPL.ObtenerAnimalPorArete(arete, organizacionId);

                animalMovimiento = animalPL.ObtenerUltimoMovimientoAnimal(animal);

                int animalSalida = animalPL.ObtenerExisteSalida(animal.AnimalID);

                var tratamiento = new CorteTransferenciaGanadoPL();

                tratamientos = tratamiento.ObtenerTratamientosAplicados(animal, -1);
                if (tratamientos != null)
                {
                    tratamientos =
                        tratamientos.Where(
                            tipo =>
                            tipo.TipoTratamientoInfo.TipoTratamientoID == TipoTratamiento.Enfermeria.GetHashCode() ||
                            tipo.TipoTratamientoInfo.TipoTratamientoID ==
                            TipoTratamiento.EnfermeriaAlCorte.GetHashCode()).
                        ToList();
                    for (var i = 0; i < tratamientos.Count; i++)
                    {
                        TimeSpan dias = DateTime.Now - tratamientos[i].FechaAplicacion;
                        if (dias.TotalDays < 30)
                        {
                            respuesta = 4; //No han pasado los treinta dias despues de ultimo tratamiento
                        }
                    }
                }

                if (respuesta == 0)
                {
                    if (animalSalida == 0)
                    {
                        //if (animalMovimiento.TipoMovimientoID == (int) TipoMovimiento.EntradaEnfermeria)
                        //{
                        corral = corralPL.ObtenerPorId(animalMovimiento.CorralID);
                        if (corral.TipoCorral.TipoCorralID == (int)TipoCorral.Enfermeria ||
                            corral.TipoCorral.TipoCorralID == (int)TipoCorral.CronicoRecuperacion ||
                            corral.TipoCorral.TipoCorralID == (int)TipoCorral.CronicoVentaMuerte)
                        {
                            if (corral.TipoCorral.TipoCorralID != (int)TipoCorral.CronicoVentaMuerte)
                            {
                                respuesta = 1;     //El arete es valido
                            }
                            else
                            {
                                respuesta = 2;     //El arete es de tipo cronico
                            }
                        }
                        else
                        {
                            respuesta = 0;     //El arete no se encuentra en enfermeria
                        }
                        //}
                        //else
                        //{
                        //    respuesta = 0; //El arete no se encuentra en enfermeria
                        //}
                    }
                    else
                    {
                        respuesta = 3; //El arete ya tiene una salida
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(respuesta);
        }