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); }