Пример #1
0
        public List <AnimalInfo> ObtenerAnimalesPorLote(int organizacionID, int loteID)
        {
            List <AnimalInfo> result;

            try
            {
                Logger.Info();
                var animalBL = new AnimalBL();
                result = animalBL.ObtenerAnimalesPorLote(organizacionID, loteID);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(result);
        }
        //Metodo que guarda el movimiento
        private void GuardarMovimientoTraspasoGanadoCorrales(List <AnimalInfo> aretesTotal, CorralInfo corralInfo, UsuarioInfo usuarioInfo)
        {
            //var animalInfo = new AnimalInfo();
            int loteOrigenID       = 0;
            int loteDestinoID      = 0;
            var loteBl             = new LoteBL();
            var animalBL           = new AnimalBL();
            var animalMovimientoBL = new AnimalMovimientoBL();
            var tipoProcesoBl      = new TipoProcesoBL();
            var fechaBL            = new FechaBL();
            var loteProyeccionBL   = new LoteProyeccionBL();

            List <AnimalMovimientoInfo> ultimosMovimientos = animalBL.ObtenerUltimoMovimientoAnimalXML(aretesTotal,
                                                                                                       usuarioInfo.
                                                                                                       Organizacion.
                                                                                                       OrganizacionID);

            if (ultimosMovimientos == null)
            {
                ultimosMovimientos = new List <AnimalMovimientoInfo>();
            }

            var resultadoLoteBl = loteBl.ObtenerLotesActivos(usuarioInfo.Organizacion.OrganizacionID,
                                                             Convert.ToInt32(corralInfo.CorralID));

            var tipoProcesoResult =
                tipoProcesoBl.ObtenerPorOrganizacion(usuarioInfo.Organizacion.OrganizacionID);

            var fechaServidor = fechaBL.ObtenerFechaActual();

            IList <LoteInfo> lotesCorrales = loteBl.ObtenerPorOrganizacionEstatus(
                usuarioInfo.Organizacion.OrganizacionID, EstatusEnum.Activo);

            if (lotesCorrales == null)
            {
                lotesCorrales = new List <LoteInfo>();
            }

            IList <LoteProyeccionInfo> lotesProyeccion =
                loteProyeccionBL.ObtenerPorLoteXML(usuarioInfo.Organizacion.OrganizacionID, lotesCorrales);


            var resultadoLote = -1;

            using (var transaction = new TransactionScope())
            {
                if (resultadoLoteBl == null)
                {
                    var loteCrear    = new LoteBL();
                    var loteInfoLote = new LoteInfo
                    {
                        Activo               = EstatusEnum.Activo,
                        Cabezas              = Convert.ToInt32(0),
                        CabezasInicio        = Convert.ToInt32(0),
                        CorralID             = corralInfo.CorralID,
                        DisponibilidadManual = false,
                        OrganizacionID       = usuarioInfo.Organizacion.OrganizacionID,
                        TipoCorralID         = corralInfo.TipoCorral.TipoCorralID,
                        TipoProcesoID        = tipoProcesoResult,
                        UsuarioCreacionID    = usuarioInfo.UsuarioID
                    };
                    resultadoLote = loteCrear.GuardaLote(loteInfoLote);
                    if ((corralInfo.TipoCorral != null &&
                         corralInfo.TipoCorral.TipoCorralID != TipoCorral.Enfermeria.GetHashCode()) ||
                        (corralInfo.TipoCorralId > 0 &&
                         corralInfo.TipoCorralId != TipoCorral.Enfermeria.GetHashCode()))
                    {
                        loteBl.ActualizaFechaCierre(resultadoLote, usuarioInfo.UsuarioID);
                    }
                }

                foreach (var animalInfo in aretesTotal)
                {
                    var animalMovimientoInfo = new AnimalMovimientoInfo();

                    animalInfo.OrganizacionIDEntrada = usuarioInfo.Organizacion.OrganizacionID;
                    //Obtener ultimo movimiento del animal
                    var ultimoMovimientoInfo =
                        ultimosMovimientos.FirstOrDefault(ani => ani.AnimalID == animalInfo.AnimalID);
                    if (ultimoMovimientoInfo != null)
                    {
                        animalMovimientoInfo.OrganizacionID = usuarioInfo.Organizacion.OrganizacionID;
                        animalMovimientoInfo.AnimalID       = animalInfo.AnimalID;

                        animalMovimientoInfo.CorralID = corralInfo.CorralID;
                        animalMovimientoInfo.LoteID   = resultadoLoteBl != null ? resultadoLoteBl.LoteID : resultadoLote;
                        DateTime diaHoy = fechaServidor.FechaActual.Date;
                        animalMovimientoInfo.FechaMovimiento   = diaHoy.Date;
                        animalMovimientoInfo.Peso              = ultimoMovimientoInfo.Peso;
                        animalMovimientoInfo.Temperatura       = ultimoMovimientoInfo.Temperatura;
                        animalMovimientoInfo.TipoMovimientoID  = (int)TipoMovimiento.TraspasoDeGanado;
                        animalMovimientoInfo.TrampaID          = ultimoMovimientoInfo.TrampaID;
                        animalMovimientoInfo.OperadorID        = ultimoMovimientoInfo.OperadorID;
                        animalMovimientoInfo.Observaciones     = String.Empty;
                        animalMovimientoInfo.Activo            = EstatusEnum.Activo;
                        animalMovimientoInfo.UsuarioCreacionID = usuarioInfo.UsuarioID;

                        //Se manda a guardar el registro en base de datos
                        animalMovimientoInfo = animalMovimientoBL.GuardarAnimalMovimiento(animalMovimientoInfo);
                        if (animalMovimientoInfo == null || animalMovimientoInfo.AnimalMovimientoID <= 0)
                        {
                            return;
                        }

                        var resultadoLoteOrigen  = loteBl.ObtenerPorID(ultimoMovimientoInfo.LoteID);
                        var resultadoLoteDestino = loteBl.ObtenerPorID(animalMovimientoInfo.LoteID);

                        if (resultadoLoteDestino != null)
                        {
                            resultadoLoteDestino.UsuarioModificacionID = usuarioInfo.UsuarioID;
                        }

                        //Incrementar y Decrementar cabezas
                        if (resultadoLoteOrigen != null && resultadoLoteDestino != null)
                        {
                            loteOrigenID  = resultadoLoteOrigen.LoteID;
                            loteDestinoID = resultadoLoteDestino.LoteID;

                            resultadoLoteDestino.Cabezas       = resultadoLoteDestino.Cabezas + 1;
                            resultadoLoteDestino.CabezasInicio = resultadoLoteDestino.CabezasInicio + 1;
                            resultadoLoteOrigen.Cabezas        = resultadoLoteOrigen.Cabezas - 1;

                            //Verificar si el Lote tiene cabezas en 0 para inactivarlo
                            resultadoLoteOrigen = loteBl.ObtenerPorID(ultimoMovimientoInfo.LoteID);
                            if (resultadoLoteOrigen.Cabezas != 0)
                            {
                                continue;
                            }
                        }
                    }
                }

                var loteOrigenInfo  = loteBl.ObtenerPorID(loteOrigenID);
                var loteDestinoInfo = loteBl.ObtenerPorID(loteDestinoID);

                if (lotesProyeccion != null && lotesProyeccion.Any())
                {
                    LoteProyeccionInfo proyeccionOrigen =
                        lotesProyeccion.FirstOrDefault(lote => lote.LoteID == loteOrigenInfo.LoteID);
                    LoteProyeccionInfo proyeccionDestino =
                        lotesProyeccion.FirstOrDefault(lote => lote.LoteID == loteDestinoInfo.LoteID);
                    if (proyeccionOrigen != null && proyeccionDestino == null)
                    {
                        proyeccionOrigen.LoteProyeccionID = 0;
                        int      diasEngordaOrigen = proyeccionOrigen.DiasEngorda;
                        DateTime fechaInicioLote   = loteOrigenInfo.FechaInicio;
                        int      diasEngordaReales =
                            new TimeSpan(DateTime.Now.Ticks - fechaInicioLote.Ticks).Days;

                        if ((diasEngordaOrigen - diasEngordaReales) <= 0)
                        {
                            proyeccionOrigen.DiasEngorda = 0;
                        }
                        else
                        {
                            proyeccionOrigen.DiasEngorda = diasEngordaOrigen - diasEngordaReales;
                        }

                        proyeccionOrigen.LoteID            = loteDestinoInfo.LoteID;
                        proyeccionOrigen.UsuarioCreacionID = usuarioInfo.UsuarioID;
                        loteProyeccionBL.Guardar(proyeccionOrigen);

                        var loteDAL = new LoteDAL();
                        var filtroDisponibilidad = new FiltroDisponilidadInfo
                        {
                            UsuarioId = usuarioInfo.UsuarioID,
                            ListaLoteDisponibilidad =
                                new List <DisponibilidadLoteInfo>
                            {
                                new DisponibilidadLoteInfo
                                {
                                    LoteId = loteDestinoInfo.LoteID,
                                    FechaDisponibilidad  = loteOrigenInfo.FechaDisponibilidad,
                                    DisponibilidadManual = loteOrigenInfo.DisponibilidadManual
                                }
                            }
                        };
                        loteDAL.ActualizarLoteDisponibilidad(filtroDisponibilidad);
                    }
                }


                List <AnimalInfo> animalesOrigen =
                    animalBL.ObtenerAnimalesPorLote(usuarioInfo.Organizacion.OrganizacionID,
                                                    loteOrigenID);
                if (animalesOrigen != null && animalesOrigen.Any())
                {
                    loteOrigenInfo.Cabezas = animalesOrigen.Count;
                }

                List <AnimalInfo> animalesDestino =
                    animalBL.ObtenerAnimalesPorLote(usuarioInfo.Organizacion.OrganizacionID,
                                                    loteDestinoID);
                if (animalesDestino != null && animalesDestino.Any())
                {
                    loteDestinoInfo.Cabezas = animalesDestino.Count;
                }
                //Se actualizan las cabezas que tiene el lote
                var filtro = new FiltroActualizarCabezasLote
                {
                    CabezasProcesadas     = aretesTotal.Count,
                    LoteIDDestino         = loteDestinoInfo.LoteID,
                    LoteIDOrigen          = loteOrigenInfo.LoteID,
                    UsuarioModificacionID = usuarioInfo.UsuarioID
                };

                loteBl.ActualizarCabezasProcesadas(filtro);

                transaction.Complete();
            }
        }
Пример #3
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);
        }
Пример #4
0
        /// <summary>
        /// Valida el corral que se le validara el reimplante
        /// </summary>
        /// <param name="corral">
        /// The corral.
        /// </param>
        /// <returns>
        /// The <see cref="ResultadoValidacion"/>.
        /// </returns>
        /// <exception cref="ExcepcionDesconocida">
        /// </exception>
        internal ResultadoValidacion ValidarCorral(CorralInfo corral)
        {
            try
            {
                var        resultado       = new ResultadoValidacion();
                var        corralBl        = new CorralBL();
                CorralInfo corralResultado = corralBl.ObtenerCorralPorCodigo(corral.OrganizacionId, corral.Codigo);
                var        revisionActual  = new RevisionImplanteInfo();
                if (corralResultado == null)
                {
                    resultado.Resultado = false;
                    resultado.Mensaje   = ResourceServices.RevisionImplante_msgCorralNoExiste;
                    return(resultado);
                }

                revisionActual.Corral = corralResultado;
                var loteBl   = new LoteBL();
                var loteInfo = new LoteInfo
                {
                    OrganizacionID = corral.OrganizacionId,
                    CorralID       = corralResultado.CorralID
                };

                var loteResultado = loteBl.ObtenerPorCorralID(loteInfo);
                if (loteResultado == null)
                {
                    resultado.Resultado = false;
                    resultado.Mensaje   = ResourceServices.RevisionImplante_msgLoteInactivo;
                    return(resultado);
                }
                revisionActual.Lote = loteResultado;

                if (loteResultado.TipoCorralID != (int)TipoCorral.Produccion)
                {
                    resultado.Resultado = false;
                    resultado.Mensaje   = ResourceServices.RevisionImplante_msgCorralNoProductivo;
                    return(resultado);
                }

                var animalBl = new AnimalBL();
                List <AnimalInfo> animales = animalBl.ObtenerAnimalesPorLote(corral.OrganizacionId, loteResultado.LoteID);

                if (animales == null)
                {
                    resultado.Resultado = false;
                    resultado.Mensaje   = ResourceServices.RevisionImplante_msgCorralSinMovimientos;
                    return(resultado);
                }

                if (animales.Count == 0)
                {
                    resultado.Resultado = false;
                    resultado.Mensaje   = ResourceServices.RevisionImplante_msgCorralSinMovimientos;
                    return(resultado);
                }

                resultado.Resultado = true;
                resultado.Control   = revisionActual;
                return(resultado);
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
Пример #5
0
        /// <summary>
        /// Obteneri dias de engorda 70
        /// </summary>
        /// <param name="lote"></param>
        /// <returns></returns>
        internal int ObtnerDiasEngorda70(LoteInfo lote)
        {
            try
            {
                Logger.Info();

                var loteBL = new LoteBL();

                LoteInfo loteAnterior = loteBL.ObtenerLoteAnteriorAnimal(lote.LoteID);

                var animalBL     = new AnimalBL();
                var animalesLote = animalBL.ObtenerAnimalesPorLote(lote.OrganizacionID,
                                                                   lote.LoteID);

                if (animalesLote == null)
                {
                    return(0);
                }

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

                var diferenciaFechas = DateTime.Now - average;

                int diasEngordaLote = Convert.ToInt32(diferenciaFechas.TotalDays);
                //Si los dias de engorda son mayor de 115, automaticamente se dejan 101 dias de Engorda en Grano
                if (diasEngordaLote > 115)
                {
                    return(101);
                }

                var loteFiltro = new LoteInfo
                {
                    LoteID         = 0,
                    OrganizacionID = lote.OrganizacionID
                };

                List <DiasEngordaGranoModel> diasEngorda = loteBL.ObtenerDiasEngordaGrano(loteFiltro); //Obtiene todos los Lotes



                //var repartoDal = new RepartoDAL();
                //var repartoDetalle = repartoDal.ObtenerDetalleRepartoPorLote(lote);
                int diasEngorda70 = 0;

                if (loteAnterior != null && loteAnterior.LoteID > 0)
                {
                    DiasEngordaGranoModel diasEngordaLoteAnterior =
                        diasEngorda.FirstOrDefault(dias => dias.LoteID == loteAnterior.LoteID);
                    if (diasEngordaLoteAnterior != null)
                    {
                        diasEngorda70 += diasEngordaLoteAnterior.DiasGrano;
                    }
                }

                DiasEngordaGranoModel diasEngordaLoteActual =
                    diasEngorda.FirstOrDefault(dias => dias.LoteID == lote.LoteID);
                if (diasEngordaLoteActual != null)
                {
                    diasEngorda70 += diasEngordaLoteActual.DiasGrano;
                }

                //if (repartoDetalle != null)
                //{
                //    var fechaActual = DateTime.Now;


                //    var listaVespertino = repartoDetalle.Where(repartoDetalleInfo => repartoDetalleInfo.TipoServicioID == (int)TipoServicioEnum.Vespertino).ToList();
                //    var listaMatutino = repartoDetalle.Where(repartoDetalleInfo => repartoDetalleInfo.TipoServicioID == (int) TipoServicioEnum.Matutino).ToList();
                //    var diasFormula = listaMatutino.Sum(detalleMatutino => listaVespertino.Count(detalleVespertino => detalleMatutino.RepartoID == detalleVespertino.RepartoID && detalleMatutino.FormulaIDServida == detalleVespertino.FormulaIDServida));

                //    var diferenciaFechasDiasEngorda = fechaActual - lote.FechaInicio;
                //    var diasEngorda = diferenciaFechasDiasEngorda.Days;

                //    if (diasEngorda > 0 && diasFormula > 0)
                //    {
                //        diasEngorda70 = (int) (((float)diasFormula / (float)diasEngorda) * 100);
                //    }

                //}
                return(diasEngorda70);
            }
            catch (ExcepcionGenerica ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }