예제 #1
0
        /// <summary>
        /// Obtiene el detalle de la orden sacrificio
        /// </summary>
        /// <param name="ds">Data set con los datos</param>
        /// <param name="activo">Indica si el registro del detalle se puede editar</param>
        /// <returns></returns>
        internal static IList <OrdenSacrificioDetalleInfo> ObtenerDetalleOrdenSacrificio(DataSet ds, bool activo)
        {
            IList <OrdenSacrificioDetalleInfo> listaOrdenSacrificio = null;

            try
            {
                Logger.Info();
                DataTable dt         = ds.Tables[ConstantesDAL.DtDatos];
                var       usuarioDAL = new UsuarioDAL();
                var       corralDal  = new CorralDAL();
                var       loteDal    = new LoteDAL();
                listaOrdenSacrificio = (from detalle in dt.AsEnumerable()
                                        select new OrdenSacrificioDetalleInfo
                {
                    OrdenSacrificioDetalleID = detalle.Field <int>("OrdenSacrificioDetalleID"),
                    OrdenSacrificioID = detalle.Field <int>("OrdenSacrificioID"),
                    FolioOrdenSacrificio = detalle.Field <int>("FolioSalida"),
                    Corraleta = corralDal.ObtenerPorId(detalle.Field <int>("CorraletaID")),
                    Lote = loteDal.ObtenerPorID(detalle.Field <int>("LoteID")),
                    CorraletaCodigo = detalle.Field <string>("CorraletaCodigo"),
                    Cabezas = detalle.Field <int>("CabezasLote"),
                    DiasEngordaGrano = detalle.Field <int>("DiasEngordaGrano"),
                    DiasRetiro = detalle.Field <int>("DiasRetiro"),
                    CabezasASacrificar = detalle.Field <int>("CabezasSacrificio"),
                    Turno = (TurnoEnum)detalle.Field <int>("Turno"),
                    Proveedor = new ProveedorInfo {
                        Descripcion = detalle.Field <string>("Proveedor")
                    },
                    Clasificacion = detalle.Field <string>("Clasificacion"),
                    Orden = detalle.Field <int>("Orden"),
                    Turnos = Enum.GetValues(typeof(TurnoEnum)).Cast <TurnoEnum>().ToList(),
                    Usuario = usuarioDAL.ObtenerPorID(detalle.Field <int>("UsuarioCreacion")),
                    Activo = activo,
                    CabezasActuales = detalle.Field <int>("CabezasActuales"),
                    Seleccionable = true
                }).ToList();

                if (listaOrdenSacrificio != null)
                {
                    foreach (var ordenDetalle in listaOrdenSacrificio)
                    {
                        ordenDetalle.Corral = corralDal.ObtenerPorId(ordenDetalle.Lote.CorralID);
                        //if(ordenDetalle.Corral.TipoCorral.TipoCorralID != TipoCorral.Intensivo.GetHashCode() && ordenDetalle.CabezasActuales == 0)
                        //{
                        //    ordenDetalle.Seleccionable = false;
                        //}
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(listaOrdenSacrificio);
        }
        private void GeneraLineasDetalle(SalidaGanadoEnTransitoInfo salidaMuerte)
        {
            try
            {
                //salidaMuerte.LoteID;
                //var corralOrganizacion = CorralBL.ObtenerCorralesPorOrganizacionID(salidaMuerte.OrganizacionID).FirstOrDefault(corral => corral.LoteID == salidaMuerte.LoteID);

                var corralDal = new CorralDAL();
                var loteDal   = new LoteDAL();

                //corralMuerte = corralDal.ObtenerPorId(corralOrganizacion.CorralID);
                loteMuerte   = loteDal.ObtenerPorID(salidaMuerte.LoteID);
                corralMuerte = corralDal.ObtenerPorId(salidaMuerte.CorralID);

                var entradaGanado = new EntradaGanadoTransitoInfo();
                if (loteMuerte != null)
                {
                    entradaGanado.Lote = loteMuerte;
                }

                PolizaModel.Detalle = new List <PolizaDetalleModel>();
                {
                    //var pesoMuertePromedio = corralOrganizacion.PesoPromedio;
                    var detalleModel = new PolizaDetalleModel
                    {
                        CantidadCabezas = salidaMuerte.NumCabezas.ToString(CultureInfo.InvariantCulture),
                        TipoGanado      = CONCEPTO,
                        PesoTotal       = salidaMuerte.Kilos.ToString("N"),
                        PesoPromedio    = (salidaMuerte.Kilos / salidaMuerte.NumCabezas).ToString("N"),
                        //PrecioPromedio = Math.Abs(salidaMuerte.Importe / salidaMuerte.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                        //PrecioPromedio = Math.Abs(salidaMuerte.Importe / corralOrganizacion.PesoPromedio/salidaMuerte.NumCabezas).ToString("N2", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                        PrecioPromedio = (salidaMuerte.Importe / (salidaMuerte.Kilos / salidaMuerte.NumCabezas) / salidaMuerte.NumCabezas).ToString("N2", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                        //precio promedio por kilo=costo total/Peso total
                        //precio promedio kilo*peso total*num cabezas=importe
                        ImportePromedio = (salidaMuerte.Importe).ToString("N2", CultureInfo.CurrentCulture),    //estaba en :"N2"
                        Corral          = corralMuerte.Codigo,
                        Lote            = entradaGanado.Lote.Lote
                    };
                    PolizaModel.Detalle.Add(detalleModel);
                }
                polizaImpresion.GenerarDetalles("Detalle");
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
예제 #3
0
        /// <summary>
        /// metodo que genera el encabezado
        /// </summary>
        /// <param name="salidaVenta">objeto de la venta</param>
        private void GeneraLineasDetalle(SalidaGanadoEnTransitoInfo salidaVenta)
        {
            //var corralOrganizacion = CorralBL.ObtenerCorralesPorOrganizacionID(salidaVenta.OrganizacionID).FirstOrDefault(corral => corral.LoteID == salidaVenta.LoteID);

            var corralDal = new CorralDAL();
            var loteDal   = new LoteDAL();


            corralVenta = corralDal.ObtenerPorId(salidaVenta.CorralID);
            loteVenta   = loteDal.ObtenerPorID(salidaVenta.LoteID);


            var entradaGanado = new EntradaGanadoTransitoInfo();

            if (loteVenta != null)
            {
                entradaGanado.Lote = loteVenta;
            }

            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            {
                var detalleModel = new PolizaDetalleModel
                {
                    CantidadCabezas = salidaVenta.NumCabezas.ToString("F0"),
                    TipoGanado      = CONCEPTO,
                    PesoTotal       = (salidaVenta.Kilos).ToString("F0"),
                    PesoPromedio    = (salidaVenta.Kilos / salidaVenta.NumCabezas).ToString("F0"),
                    PrecioPromedio  = (salidaVenta.DetallesSalida.Sum(costo => costo.ImporteCosto) / (salidaVenta.Kilos / salidaVenta.NumCabezas) / salidaVenta.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                    ImportePromedio = Math.Abs(salidaVenta.DetallesSalida.Sum(costo => costo.ImporteCosto)).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),

                    Corral       = corralVenta.Codigo,
                    PrecioVenta  = Math.Abs(salidaVenta.Importe / salidaVenta.NumCabezas).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                    ImporteVenta = Math.Abs(salidaVenta.Importe).ToString("N", CultureInfo.CurrentCulture).Replace("$", string.Empty),
                    Lote         = entradaGanado.Lote.Lote
                };
                PolizaModel.Detalle.Add(detalleModel);
            }
            polizaImpresion.GenerarDetalles("Detalle");
        }