/// <summary>
        /// Validar los tipos de ganados contenidos en el archivo
        /// </summary>
        /// <param name="tipoGanado"></param>
        /// <returns></returns>
        private bool ValidarTiposDeGanado(string tipoGanado)
        {
            bool existenTipos = true;

            string[] split = tipoGanado.Split(new[] { '|' });

            TipoGanadoBL tipoGanadoBL = new TipoGanadoBL();

            int            tipoID;
            TipoGanadoInfo tipoGanadoInfo;

            foreach (string tipoGanadoID in split.Where(s => s.Trim() != ""))
            {
                if (int.TryParse(tipoGanadoID, out tipoID))
                {
                    tipoGanadoInfo = tipoGanadoBL.ObtenerPorID(tipoID);
                    if (tipoGanadoInfo == null)
                    {
                        //Tipo No existe
                        existenTipos = false;
                    }
                }
                else
                {
                    //Biene como string
                    existenTipos = false;
                }
            }

            return(existenTipos);
        }
        /// <summary>
        /// Agregar la pestaña de tipo de aganado como catalogo y ayuda en el excel
        /// </summary>
        /// <param name="pck"></param>
        private void AgregarPestañaTipoGanado(ExcelPackage pck)
        {
            try
            {
                // get the handle to the existing worksheet
                var wsData = pck.Workbook.Worksheets.Add(ResourceServices.ConfigurarFormula_PestañaTipoGanado);

                wsData.Cells["A1"].Value = ResourceServices.ConfigurarFormula_PestañaTipoGanado;

                using (ExcelRange r = wsData.Cells["A1:B1"])
                {
                    r.Merge = true;
                    r.Style.Font.SetFromFont(new Font("Arial Bold", 16, FontStyle.Regular));
                    r.Style.Font.Color.SetColor(Color.White);
                    r.Style.HorizontalAlignment = ExcelHorizontalAlignment.CenterContinuous;
                    r.Style.Fill.PatternType    = ExcelFillStyle.Solid;
                    r.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 178, 34, 34));
                    //FromArgb(100, 0, 150)
                }

                IList <TipoGanadoInfo> tipoGanadoList = new List <TipoGanadoInfo>();
                TipoGanadoBL           tipoGanadoBL   = new TipoGanadoBL();
                tipoGanadoList = tipoGanadoBL.ObtenerTodos();

                //var i = 0;
                var dataRange = wsData.Cells["A2"].LoadFromCollection(

                    from s in tipoGanadoList
                    orderby s.TipoGanadoID
                    select new
                {
                    //Identificador = i++,
                    Identificador = s.TipoGanadoID,
                    Descripcion   = s.Descripcion
                },
                    true, TableStyles.None);

                using (ExcelRange r = wsData.Cells["A2:B2"])
                {
                    r.Style.VerticalAlignment   = ExcelVerticalAlignment.Center;
                    r.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                    r.Style.Font.SetFromFont(new Font("Arial Bold", 11, FontStyle.Regular));
                    r.Style.Font.Color.SetColor(Color.White);
                    r.Style.Fill.PatternType = ExcelFillStyle.Solid;
                    r.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(255, 178, 34, 34));
                }

                dataRange.AutoFitColumns();
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
 /// <summary>
 /// Obtiene el listado de organizaciones que se han registrado del dia
 /// </summary>
 /// <returns></returns>
 internal List <InterfaceSalidaTraspasoInfo> ObtenerListaInterfaceSalidaTraspaso()
 {
     try
     {
         var interfaceSalidaTraspaspBl = new InterfaceSalidaTraspasoDAL();
         var listado = interfaceSalidaTraspaspBl.ObtenerListaInterfaceSalidaTraspaso();
         if (listado != null)
         {
             foreach (var interfaceSalidaTraspasoInfo in listado)
             {
                 if (interfaceSalidaTraspasoInfo.OrganizacionDestino != null)
                 {
                     var organizacionBl = new OrganizacionBL();
                     interfaceSalidaTraspasoInfo.OrganizacionDestino =
                         organizacionBl.ObtenerPorID(
                             interfaceSalidaTraspasoInfo.OrganizacionDestino.OrganizacionID);
                 }
                 if (interfaceSalidaTraspasoInfo.Formula != null)
                 {
                     var formulaBl = new FormulaBL();
                     interfaceSalidaTraspasoInfo.Formula = formulaBl.ObtenerPorID(interfaceSalidaTraspasoInfo.Formula.FormulaId);
                 }
                 if (interfaceSalidaTraspasoInfo.TipoGanado != null)
                 {
                     var tipoGanadoBl = new TipoGanadoBL();
                     interfaceSalidaTraspasoInfo.TipoGanado =
                         tipoGanadoBl.ObtenerPorID(interfaceSalidaTraspasoInfo.TipoGanado.TipoGanadoID);
                     interfaceSalidaTraspasoInfo.Sexo = interfaceSalidaTraspasoInfo.TipoGanado.Sexo;
                 }
             }
         }
         return(listado);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        ///     Obtiene una Interface de Salida por SalidaID y OrganizacionID
        /// </summary>
        /// <param name="entradaGanado"></param>
        /// <returns></returns>
        internal EntradaGanadoCosteoInfo ObtenerPorSalidaOrganizacion(EntradaGanadoInfo entradaGanado)
        {
            var entradaGanadoCosteo = new EntradaGanadoCosteoInfo();

            try
            {
                Logger.Info();
                var interfaceSalidaDAL   = new InterfaceSalidaDAL();
                var interfacesSalidaInfo = interfaceSalidaDAL.ObtenerPorSalidaOrganizacion(entradaGanado);
                entradaGanadoCosteo.ListaEntradaDetalle = new List <EntradaDetalleInfo>();
                entradaGanadoCosteo.ListaCostoEntrada   = new List <EntradaGanadoCostoInfo>();

                var diasEstancia = new List <double>();

                var listaEntradaGanadoCostoAuxiliar = new List <EntradaGanadoCostoInfo>();

                var tipoGanadoBL = new TipoGanadoBL();

                List <TipoGanadoInfo> tiposGanado = tipoGanadoBL.ObtenerTodos();

                if (interfacesSalidaInfo == null)
                {
                    return(entradaGanadoCosteo);
                }
                interfacesSalidaInfo.ListaInterfaceDetalle.ForEach(det =>
                {
                    var entradaGanadoDetalle = new EntradaDetalleInfo
                    {
                        TipoGanado           = det.TipoGanado,
                        Cabezas              = det.Cabezas,
                        Importe              = det.Importe,
                        PrecioKilo           = det.PrecioKG,
                        PesoOrigen           = det.ListaInterfaceSalidaAnimal.Sum(ani => ani.PesoOrigen),
                        ListaTiposGanado     = tiposGanado,
                        FechaSalidaInterface = interfacesSalidaInfo.FechaSalida,
                    };
                    entradaGanadoCosteo.ListaEntradaDetalle.Add(entradaGanadoDetalle);
                    if (det.ListaInterfaceSalidaAnimal != null)
                    {
                        det.ListaInterfaceSalidaAnimal.ForEach(animal =>
                        {
                            if (animal.ListaSalidaCostos != null)
                            {
                                var listaCostosAnimal = (from costo in animal.ListaSalidaCostos

                                                         select new EntradaGanadoCostoInfo
                                {
                                    Costo = costo.Costo,
                                    Importe = costo.Importe,
                                    TieneCuenta = true,
                                    //CuentaProvision = claveContable.Valor,
                                    //DescripcionCuenta = claveContable.Descripcion
                                });
                                listaEntradaGanadoCostoAuxiliar.AddRange(listaCostosAnimal);

                                var span = interfacesSalidaInfo.FechaSalida - animal.FechaCompra;
                                diasEstancia.Add(span.TotalDays);
                            }
                        });
                    }
                });

                var costosAgrupados = (from costos in listaEntradaGanadoCostoAuxiliar
                                       group costos by costos.Costo.CostoID
                                       into costoAgrupado
                                       let interfaceSalidaCostoInfo = costoAgrupado.FirstOrDefault()
                                                                      let claveContable =
                                           ObtenerCuentaInventario(interfaceSalidaCostoInfo.Costo,
                                                                   entradaGanado.
                                                                   OrganizacionOrigenID, ClaveCuenta.CuentaInventarioTransito)
                                           where interfaceSalidaCostoInfo != null
                                           select new EntradaGanadoCostoInfo
                {
                    Costo = interfaceSalidaCostoInfo.Costo,
                    TieneCuenta = true,
                    Importe = costoAgrupado.Sum(cos => cos.Importe),
                    CuentaProvision = claveContable.Valor,
                    DescripcionCuenta = claveContable.Descripcion,
                    Origen = true
                }).ToList();

                entradaGanadoCosteo.ListaCostoEntrada.AddRange(costosAgrupados);
                entradaGanadoCosteo.DiasEstancia = Convert.ToInt32(diasEstancia.Average());
            }
            catch (ExcepcionGenerica)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(entradaGanadoCosteo);
        }