コード例 #1
0
 internal int Guardar(DeteccionInfo deteccionGrabar)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxDeteccionDAL.ObtenerParametrosGrabar(deteccionGrabar);
         int result = Create("DeteccionGanado_GrabarDeteccion", parameters);
         return(result);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #2
0
ファイル: AuxDeteccionDAL.cs プロジェクト: vijaydairyf/Prueba
        internal static Dictionary <string, object> ObtenerParametrosGrabar(DeteccionInfo deteccionGrabar)
        {
            try
            {
                Logger.Info();
                List <SintomaInfo>  Sintomas  = null;
                List <ProblemaInfo> Problemas = null;
                Sintomas  = deteccionGrabar.Sintomas;
                Problemas = deteccionGrabar.Problemas;
                var xml =
                    new XElement("ROOT",
                                 new XElement("DeteccionGrabar",
                                              new XElement("CorralCodigo", deteccionGrabar.CorralCodigo),
                                              new XElement("CorralID", deteccionGrabar.CorralID),
                                              new XElement("Arete", deteccionGrabar.Arete),
                                              new XElement("AreteMetalico", deteccionGrabar.AreteMetalico),
                                              new XElement("Observaciones", deteccionGrabar.Observaciones),
                                              new XElement("LoteID", deteccionGrabar.LoteID),
                                              new XElement("GradoID", deteccionGrabar.GradoID),
                                              new XElement("TipoDeteccionID", deteccionGrabar.GrupoCorral),
                                              new XElement("OperadorID", deteccionGrabar.OperadorID),
                                              new XElement("FotoDeteccion", deteccionGrabar.FotoDeteccion),
                                              new XElement("NoFierro", deteccionGrabar.NoFierro),
                                              new XElement("Observaciones", deteccionGrabar.Observaciones),
                                              new XElement("DescripcionGanado", deteccionGrabar.DescripcionGanado),
                                              new XElement("DescripcionGanadoID", deteccionGrabar.DescripcionGanadoID),
                                              new XElement("UsuarioCreacionID", deteccionGrabar.UsuarioCreacionID),
                                              new XElement("Sintomas",
                                                           from sintoma in Sintomas
                                                           select
                                                           new XElement("SintomasNodo",
                                                                        new XElement("SintomaID", sintoma.SintomaID)
                                                                        )

                                                           ),
                                              new XElement("Problemas",
                                                           from problema in Problemas
                                                           select
                                                           new XElement("ProblemasNodo",
                                                                        new XElement("ProblemaID", problema.ProblemaID)
                                                                        )
                                                           )
                                              )
                                 );

                var parametros =
                    new Dictionary <string, object>
                {
                    { "@XmlDeteccion", xml.ToString() }
                };
                return(parametros);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
コード例 #3
0
        internal int GuardarDetalle(GrupoVentaGanadoInfo venta)
        {
            var animalBL = new AnimalBL();
            var corralBl = new CorralBL();
            var loteBl   = new LoteBL();

            try
            {
                Logger.Info();
                int retorno;
                using (var transaccion = new TransactionScope())
                {
                    var ventaGanadoDetalleDAL = new VentaGanadoDetalleDAL();

                    //Obtener Corral y Lote
                    var corral = corralBl.ObtenerCorralPorCodigo(venta.OrganizacionId, venta.CodigoCorral);
                    var lote   = loteBl.ObtenerPorCorralCerrado(venta.OrganizacionId, corral.CorralID);

                    if (venta.TipoVenta == Info.Enums.TipoVentaEnum.Propio)
                    {
                        //Validar si tenemos animales que pertenezcan a la carga inicial
                        var listaCargaInicial = venta.VentaGandadoDetalle.Where(animal => animal.Animal.CargaInicial).ToList();
                        if (listaCargaInicial != null && listaCargaInicial.Any())
                        {
                            foreach (var animal in listaCargaInicial)
                            {
                                var animalInventario = animalBL.ObtenerAnimalPorArete(animal.Arete, venta.OrganizacionId);
                                var deteccionGrabar  = new DeteccionInfo
                                {
                                    CorralID          = corral.CorralID,
                                    LoteID            = lote.LoteID,
                                    UsuarioCreacionID = venta.VentaGanado.UsuarioModificacionID
                                };

                                // Se intercambian aretes por encontrarse el animal en un corral distinto y ser carga inicial
                                animalBL.ReemplazarAretes(animalInventario, deteccionGrabar);
                            }
                        }
                    }

                    retorno = ventaGanadoDetalleDAL.GuardarDetalle(venta);

                    // Se cierral la transaccion
                    transaccion.Complete();
                }
                return(retorno);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
コード例 #4
0
ファイル: MuerteBL.cs プロジェクト: vijaydairyf/Prueba
        /// <summary>
        /// Guarda la informacion de un arete muerto
        /// </summary>
        /// <param name="muerte"></param>
        /// <param name="esCargaInicial"></param>
        /// <param name="animal"></param>
        /// <returns></returns>
        internal int GuardarMuerte(MuerteInfo muerte, FlagCargaInicial esCargaInicial, AnimalInfo animal)
        {
            try
            {
                Logger.Info();
                int resultado;

                using (var transaccion = new TransactionScope())
                {
                    if (animal != null)
                    {
                        var animalBL = new AnimalBL();
                        // Se valida el flag de EsCargaInicial
                        switch (esCargaInicial)
                        {
                        case FlagCargaInicial.EsCargaInicial:
                            var deteccionGrabar = new DeteccionInfo
                            {
                                CorralID          = muerte.CorralId,
                                LoteID            = muerte.LoteId,
                                UsuarioCreacionID = muerte.UsuarioCreacionID
                            };
                            // Se intercambian aretes por encontrarse el animal en un corral distinto y ser carga inicial
                            animalBL.ReemplazarAretes(animal, deteccionGrabar);
                            break;

                        case FlagCargaInicial.EsAreteNuevo:
                            // Se Reemplaza arete nuevo sobre uno existente del lote
                            animalBL.ReemplazarAreteMismoCorral(animal);
                            break;
                        }
                    }
                    if (muerte.Corral.GrupoCorral != GrupoCorralEnum.Recepcion.GetHashCode() &&
                        string.IsNullOrWhiteSpace(muerte.Arete))
                    {
                        muerte.Arete = GenerarAreteGenerico(muerte);
                    }
                    var muerteDal = new MuerteDAL();
                    resultado = muerteDal.GuardarMuerte(muerte);
                    // Se cierral la transaccion
                    transaccion.Complete();
                }
                return(resultado);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
コード例 #5
0
 /// <summary>
 /// Obtiene el animal que este muerto
 /// </summary>
 /// <param name="animal"></param>
 /// <param name="deteccionGrabar"></param>
 /// <returns></returns>
 public void ReemplazarAretes(AnimalInfo animal, DeteccionInfo deteccionGrabar)
 {
     try
     {
         Logger.Info();
         var animalBL = new AnimalBL();
         animalBL.ReemplazarAretes(animal, deteccionGrabar);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #6
0
ファイル: EnfermeriaPL.cs プロジェクト: vijaydairyf/Prueba
 /// <summary>
 /// Elimina la deteccion
 /// </summary>
 /// <param name="deteccion"></param>
 /// <returns></returns>
 public int EliminarDeteccion(DeteccionInfo deteccion)
 {
     try
     {
         Logger.Info();
         var programacionCorteBl = new EnfermeriaBL();
         return(programacionCorteBl.EliminarDeteccion(deteccion));
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #7
0
ファイル: DeteccionBL.cs プロジェクト: vijaydairyf/Prueba
        internal int Guardar(DeteccionInfo deteccionGrabar, FlagCargaInicial esCargaInicial, AnimalInfo animal)
        {
            try
            {
                Logger.Info();
                int resultado;
                var transactionOption = new TransactionOptions();
                transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
                using (var transaction = new TransactionScope(TransactionScopeOption.Required, transactionOption))
                {
                    if (animal != null)
                    {
                        var animalBL = new AnimalBL();
                        // Se valida el flag de EsCargaInicial
                        switch (esCargaInicial)
                        {
                        case FlagCargaInicial.EsCargaInicial:
                            // Se intercambian aretes por encontrarse el animal en un corral distinto y ser carga inicial
                            animalBL.ReemplazarAretes(animal, deteccionGrabar);
                            break;

                        case FlagCargaInicial.EsAreteNuevo:
                            // Se Reemplaza arete nuevo sobre uno existente del lote
                            animalBL.ReemplazarAreteMismoCorral(animal);
                            break;
                        }
                    }
                    var deteccionDAL = new DeteccionDAL();
                    resultado = deteccionDAL.Guardar(deteccionGrabar);
                    // Se cierral la transaccion
                    transaction.Complete();
                }
                return(resultado);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
コード例 #8
0
        internal int GuardarAnimalSalida(List <AnimalInfo> listaAnimales, ProgramacionSacrificioGuardadoInfo programacionSacrificioGuardadoInfo)
        {
            int result;

            try
            {
                Logger.Info();
                var loteBL = new LoteBL();
                using (var transaccion = new TransactionScope())
                {
                    var loteInfo        = loteBL.ObtenerPorID(programacionSacrificioGuardadoInfo.LoteID);
                    var deteccionGrabar = new DeteccionInfo
                    {
                        CorralID          = loteInfo.CorralID,
                        LoteID            = loteInfo.LoteID,
                        UsuarioCreacionID = programacionSacrificioGuardadoInfo.UsuarioID
                    };

                    foreach (var animal in listaAnimales)
                    {
                        if (animal != null && animal.CargaInicial)
                        {
                            // Se intercambian aretes por encontrarse el animal en un corral distinto y ser carga inicial
                            var animalBL = new AnimalBL();
                            animalBL.ReemplazarAretes(animal, deteccionGrabar);
                        }
                    }

                    var programacionSacrificio = new ProgramacionSacrificioDAL();
                    result = programacionSacrificio.GuardarAnimalSalida(listaAnimales, programacionSacrificioGuardadoInfo);
                    transaccion.Complete();
                }
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }
コード例 #9
0
ファイル: DeteccionPL.cs プロジェクト: vijaydairyf/Prueba
 public int GuardarDeteccion(DeteccionInfo deteccionGrabar, FlagCargaInicial esCargaInicial, AnimalInfo animal)
 {
     try
     {
         Logger.Info();
         var deteccionBl = new DeteccionBL();
         int result      = deteccionBl.Guardar(deteccionGrabar, esCargaInicial, animal);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #10
0
        /// <summary>
        /// Elimina la deteccion
        /// </summary>
        /// <param name="deteccion"></param>
        /// <returns></returns>
        internal int EliminarDeteccion(DeteccionInfo deteccion)
        {
            int result;

            try
            {
                Logger.Info();
                var enfermeriDal = new EnfermeriaDAL();
                result = enfermeriDal.EliminarDeteccion(deteccion);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }
コード例 #11
0
 /// <summary>
 /// Elimina una deteccion
 /// </summary>
 /// <param name="deteccion"></param>
 /// <returns></returns>
 internal int EliminarDeteccion(DeteccionInfo deteccion)
 {
     try
     {
         Logger.Info();
         var parametros = AuxEnfermeriaDAL.ObtenerParametrosEliminarDeteccion(deteccion);
         return(Create("Deteccion_EliminarDeteccion", parametros));
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #12
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);
        }
コード例 #13
0
 /// <summary>
 /// Obtiene los parametros necesarios para eliminar una deteccion
 /// </summary>
 /// <param name="deteccion"></param>
 /// <returns></returns>
 internal static Dictionary <string, object> ObtenerParametrosEliminarDeteccion(DeteccionInfo deteccion)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@DeteccionID", deteccion.DeteccionID },
             { "@Arete", deteccion.Arete },
             { "@UsuarioModificacion", deteccion.UsuarioCreacionID },
             { "@Estatus", (int)EstatusEnum.Inactivo }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
コード例 #14
0
        /// <summary>
        /// Guardar entrada enfermeria
        /// </summary>
        internal EntradaGanadoEnfermeriaInfo GuardarEntradaEnfermeria(EntradaGanadoEnfermeriaInfo entradaGanadoEnfermeria)
        {
            entradaGanadoEnfermeria.Resultado = false;
            try
            {
                var resultadoCabezas  = new CabezasActualizadasInfo();
                var transactionOption = new TransactionOptions();
                transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
                using (var transaction = new TransactionScope(TransactionScopeOption.Required, transactionOption))
                {
                    var animalDal          = new AnimalDAL();
                    var animalMovimientoBL = new AnimalMovimientoBL();
                    var corralBL           = new CorralBL();
                    var loteBL             = new LoteBL();

                    bool actualizaAreteDeteccion = entradaGanadoEnfermeria.Deteccion.ActualizarAreteDeteccion;
                    bool animalRecaido           = entradaGanadoEnfermeria.AnimalRecaido;

                    if (entradaGanadoEnfermeria.CambiarTipoGanado &&
                        entradaGanadoEnfermeria.Deteccion.Animal.AnimalID > 0 &&
                        entradaGanadoEnfermeria.Deteccion.Animal.TipoGanadoID != entradaGanadoEnfermeria.Animal.TipoGanadoID)
                    {
                        entradaGanadoEnfermeria.Animal.AnimalID = entradaGanadoEnfermeria.Deteccion.Animal.AnimalID;
                        entradaGanadoEnfermeria.Animal.UsuarioModificacionID = entradaGanadoEnfermeria.UsuarioId;
                    }
                    if (entradaGanadoEnfermeria.Animal.AnimalID == 0)
                    {
                        entradaGanadoEnfermeria.Animal.AnimalID       = entradaGanadoEnfermeria.Deteccion.Animal.AnimalID;
                        entradaGanadoEnfermeria.Animal.AplicaBitacora = entradaGanadoEnfermeria.Deteccion.Animal.AplicaBitacora;
                    }
                    AnimalInfo animalInfo = animalDal.GuardarAnimal(entradaGanadoEnfermeria.Animal);
                    if (actualizaAreteDeteccion)
                    {
                        //Si el flag esta activo se actualiza el arete en la deteccion de ganado cuando solo traen fotos
                        var deteccionBl = new DeteccionBL();
                        deteccionBl.ActualizarDeteccionConFoto(entradaGanadoEnfermeria.Deteccion);
                    }
                    /* Si esta activo el flag de recaido generar la deteccion */
                    if (animalRecaido)
                    {
                        entradaGanadoEnfermeria.Deteccion.DeteccionID = GenerarDeteccionAnimalGenerica(entradaGanadoEnfermeria);
                    }

                    if (animalInfo != null && animalInfo.AnimalID > 0)
                    {
                        entradaGanadoEnfermeria.Animal = animalInfo;
                        entradaGanadoEnfermeria.Movimiento.AnimalID = animalInfo.AnimalID;
                        if (entradaGanadoEnfermeria.LoteDestino.LoteID == 0)
                        {
                            entradaGanadoEnfermeria.LoteDestino.LoteID = loteBL.GuardaLote(entradaGanadoEnfermeria.LoteDestino);
                            entradaGanadoEnfermeria.Movimiento.LoteID  = entradaGanadoEnfermeria.LoteDestino.LoteID;
                        }
                        //Se almacena el movimiento
                        AnimalMovimientoInfo animalMovimientoInfo =
                            animalMovimientoBL.GuardarAnimalMovimiento(entradaGanadoEnfermeria.Movimiento);
                        if (animalMovimientoInfo != null && animalMovimientoInfo.AnimalMovimientoID > 0)
                        {
                            if (entradaGanadoEnfermeria.Tratamientos.Any(registro => registro.Seleccionado))
                            {
                                var almacenpl = new AlmacenBL();
                                entradaGanadoEnfermeria.AlmacenMovimiento.AnimalMovimientoID =
                                    animalMovimientoInfo.AnimalMovimientoID;
                                entradaGanadoEnfermeria.AlmacenMovimiento.AnimalID = animalInfo.AnimalID;
                                almacenpl.GuardarDescontarTratamientos(entradaGanadoEnfermeria.Tratamientos,
                                                                       entradaGanadoEnfermeria.AlmacenMovimiento);
                            }
                            entradaGanadoEnfermeria.Deteccion.AnimalMovimiento = animalMovimientoInfo;
                            GurdarDeteccion(entradaGanadoEnfermeria.Deteccion, entradaGanadoEnfermeria.ListaProblemas);

                            /* Se desactiva la deteccion */
                            var deteccion = new DeteccionInfo
                            {
                                DeteccionID       = entradaGanadoEnfermeria.Deteccion.DeteccionID,
                                UsuarioCreacionID = entradaGanadoEnfermeria.UsuarioId,
                                Arete             = entradaGanadoEnfermeria.Animal.Arete
                            };
                            EliminarDeteccion(deteccion);
                            #region LOTE
                            //Se decrementan las cabezas del lote
                            if (entradaGanadoEnfermeria.LoteDestino.LoteID != entradaGanadoEnfermeria.LoteOrigen.LoteID)
                            {
                                entradaGanadoEnfermeria.LoteDestino = loteBL.ObtenerPorID(entradaGanadoEnfermeria.LoteDestino.LoteID);
                                var animalBL = new AnimalBL();
                                List <AnimalInfo> animalesDestino =
                                    animalBL.ObtenerAnimalesPorLote(entradaGanadoEnfermeria.LoteOrigen.OrganizacionID,
                                                                    entradaGanadoEnfermeria.LoteDestino.LoteID);
                                if (animalesDestino != null && animalesDestino.Any())
                                {
                                    entradaGanadoEnfermeria.LoteDestino.Cabezas = animalesDestino.Count;
                                }
                                //Una vez insertado el lote y el animal se incrementan las cabezas de lote
                                entradaGanadoEnfermeria.LoteDestino.Cabezas =
                                    entradaGanadoEnfermeria.LoteDestino.Cabezas + 1;
                                if (entradaGanadoEnfermeria.LoteDestino.Cabezas > entradaGanadoEnfermeria.LoteDestino.CabezasInicio)
                                {
                                    entradaGanadoEnfermeria.LoteDestino.CabezasInicio =
                                        entradaGanadoEnfermeria.LoteDestino.CabezasInicio + 1;
                                }
                                entradaGanadoEnfermeria.LoteDestino.UsuarioModificacionID =
                                    entradaGanadoEnfermeria.Movimiento.UsuarioCreacionID;
                                // ------ //
                                entradaGanadoEnfermeria.LoteOrigen.Cabezas =
                                    entradaGanadoEnfermeria.LoteOrigen.Cabezas - 1;

                                List <AnimalInfo> animales =
                                    animalBL.ObtenerAnimalesPorLote(entradaGanadoEnfermeria.LoteOrigen.OrganizacionID,
                                                                    entradaGanadoEnfermeria.LoteOrigen.LoteID);
                                if (animales != null && animales.Any())
                                {
                                    entradaGanadoEnfermeria.LoteOrigen.Cabezas = animales.Count;
                                }
                                //Se actualizan las cabezas que tiene el lote
                                var filtro = new FiltroActualizarCabezasLote
                                {
                                    CabezasProcesadas     = 1,
                                    LoteIDDestino         = entradaGanadoEnfermeria.LoteDestino.LoteID,
                                    LoteIDOrigen          = entradaGanadoEnfermeria.LoteOrigen.LoteID,
                                    UsuarioModificacionID = entradaGanadoEnfermeria.Movimiento.UsuarioCreacionID
                                };

                                resultadoCabezas = loteBL.ActualizarCabezasProcesadas(filtro);
                            }
                            #endregion LOTE
                            //Si ya no tenemos cabezas en el lote se actualizanb los pesos llegada
                            if (resultadoCabezas.CabezasOrigen <= 0)
                            {
                                //Se obtiene el Corral para ver Si es de Recepcion
                                CorralInfo corralInfo = corralBL.ObtenerCorralPorCodigo(entradaGanadoEnfermeria.LoteOrigen.OrganizacionID,
                                                                                        entradaGanadoEnfermeria.LoteOrigen.Corral.Codigo);
                                if (corralInfo.GrupoCorral == (int)GrupoCorralEnum.Recepcion)
                                {
                                    /* Si el corral es de Recepcion */
                                    var corteGanadoPl = new CorteGanadoBL();
                                    corteGanadoPl.ObtenerPesosOrigenLlegada(entradaGanadoEnfermeria.LoteOrigen.OrganizacionID,
                                                                            entradaGanadoEnfermeria.LoteOrigen.CorralID,
                                                                            entradaGanadoEnfermeria.LoteOrigen.LoteID);
                                }
                            }
                            transaction.Complete();
                            entradaGanadoEnfermeria.Resultado = true;
                        }
                    }
                }
            }
            catch (ExcepcionGenerica ex)
            {
                Logger.Error(ex);
                entradaGanadoEnfermeria.Resultado = false;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                entradaGanadoEnfermeria.Resultado = false;
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(entradaGanadoEnfermeria);
        }