private void GeneraLineasDetalle(GanadoIntensivoInfo muerteIntesiva)
        {
            EntradaGanadoInfo entradaGanado = muerteIntesiva.EntradaGanado;

            var     pesoMuertePromedio = Math.Round((entradaGanado.PesoBruto - entradaGanado.PesoTara) / entradaGanado.CabezasRecibidas, 0);
            int     cantidadCabezas    = muerteIntesiva.Cabezas;
            decimal importe            = muerteIntesiva.Importe;

            var concepto = muerteIntesiva.EntradaGanadoCosteo.ListaEntradaDetalle.Select(des => des.TipoGanado.Descripcion).FirstOrDefault();


            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            PolizaDetalleModel detalleModel;

            detalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = cantidadCabezas.ToString("F0"),
                TipoGanado      = concepto,
                PesoTotal       = (pesoMuertePromedio * cantidadCabezas).ToString("F0"),
                PesoPromedio    = pesoMuertePromedio.ToString("F0"),
                PrecioPromedio  = Math.Abs(importe / cantidadCabezas).ToString("N2"),
                ImportePromedio = Math.Abs(importe).ToString("N2"),
                //PrecioVenta = (detalle.Precio).ToString("N2"),
                //ImporteVenta =
                //    ((detalle.Precio * (Math.Round(detalle.Peso * detalle.Cabezas, 0)))).ToString
                //    ("N2"),
                Corral = muerteIntesiva.Corral.Codigo,
                Lote   = muerteIntesiva.Lote.Lote
            };
            PolizaModel.Detalle.Add(detalleModel);

            polizaImpresion.GenerarDetalles("Detalle");
        }
예제 #2
0
        private void GenerarLineasDetalle(List <PolizaEntradaSalidaPorAjusteModel> ajustesDeInventario)
        {
            IList <ProductoInfo>       productos = ObtenerProductos();
            IList <UnidadMedicionInfo> unidades  = ObtenerUnidadesMedicion();

            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            PolizaDetalleModel polizaModel;

            for (int indexInventario = 0; indexInventario < ajustesDeInventario.Count; indexInventario++)
            {
                ProductoInfo producto =
                    productos.FirstOrDefault(prod => prod.ProductoId == ajustesDeInventario[indexInventario].ProductoID);
                if (producto == null)
                {
                    producto = new ProductoInfo();
                }
                polizaModel = new PolizaDetalleModel
                {
                    CantidadCabezas = producto.ProductoId.ToString(),
                    TipoGanado      = producto.ProductoDescripcion,
                    Lote            = ajustesDeInventario[indexInventario].Lote == 0 ? string.Empty : ajustesDeInventario[indexInventario].Lote.ToString(),
                    PesoOrigen      = Math.Abs(ajustesDeInventario[indexInventario].Cantidad).ToString("N0"),
                    PesoLlegada     = Math.Abs(ajustesDeInventario[indexInventario].Cantidad).ToString("N0"),
                    Corral          = unidades.Where(clave => clave.UnidadID == producto.UnidadId).Select(uni => uni.ClaveUnidad).FirstOrDefault(),
                    PrecioPromedio  = ajustesDeInventario[indexInventario].Precio.ToString("N2"),
                    ImportePromedio = Math.Abs(Math.Round(ajustesDeInventario[indexInventario].Cantidad * ajustesDeInventario[indexInventario].Precio, 2)).ToString("N2"),
                };
                PolizaModel.Detalle.Add(polizaModel);
            }
        }
        /// <summary>
        /// Genera linea de totales para detalle
        /// </summary>
        /// <param name="salidaProducto"></param>
        private void GeneraLineaTotalDetalle(SalidaProductoInfo salidaProducto)
        {
            PolizaModel.Detalle = new List <PolizaDetalleModel>();

            decimal cantidad           = salidaProducto.PesoBruto - salidaProducto.PesoTara;
            var     polizaDetalleModel = new PolizaDetalleModel
            {
                PrecioVenta  = (salidaProducto.Importe / cantidad).ToString("N2"),
                ImporteVenta = salidaProducto.Importe.ToString("N2"),
            };

            PolizaModel.Detalle.Add(polizaDetalleModel);
        }
예제 #4
0
        private void GeneraLineaTotalDetalle(List <PolizaEntradaSalidaPorAjusteModel> ajustesDeInventario)
        {
            decimal total = ajustesDeInventario.Sum(imp => Math.Abs(Math.Round(imp.Cantidad * imp.Precio, 2)));

            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            var polizaModel = new PolizaDetalleModel
            {
                ImportePromedio = total.ToString("N2"),
                PesoTotal       = total.ToString("N2"),
                ImporteVenta    = total.ToString("N2"),
            };

            PolizaModel.Detalle.Add(polizaModel);
            polizaImpresion.GenerarDetalles("Detalle");
        }
        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);
            }
        }
예제 #6
0
        /// <summary>
        /// Genera las Lineas del Detalle
        /// </summary>
        /// <param name="traspasoMp"></param>
        private void GeneraLineasDetalle(TraspasoMpPaMedInfo traspasoMp)
        {
            PolizaModel.Detalle = new List <PolizaDetalleModel>();

            var detalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = traspasoMp.ProductoOrigen.ProductoId.ToString(CultureInfo.InvariantCulture),
                PesoPromedio    = string.Empty,
                TipoGanado      = traspasoMp.ProductoOrigen.ProductoDescripcion,
                PesoTotal       = string.Format("{0} {1}.", traspasoMp.CantidadTraspasarOrigen.ToString("N0"), traspasoMp.ProductoOrigen.UnidadMedicion.ClaveUnidad),
                ImportePromedio = traspasoMp.PrecioTraspasoOrigen.ToString("N2"),
                PrecioVenta     = traspasoMp.ImporteTraspaso.ToString("N2"),
            };

            PolizaModel.Detalle.Add(detalleModel);

            polizaImpresion.GenerarDetalles("Detalle");
        }
예제 #7
0
        /// <summary>
        /// Genera los totales por Detalle
        /// </summary>
        /// <param name="traspasoMp"></param>
        private void GeneraLineaTotales(TraspasoMpPaMedInfo traspasoMp)
        {
            var sumaImporte = traspasoMp.ImporteTraspaso;

            PolizaModel.Detalle = new List <PolizaDetalleModel>();

            var detalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = string.Empty,
                PesoPromedio    = string.Empty,
                TipoGanado      = string.Empty,
                PesoTotal       = string.Empty,
                ImportePromedio = string.Empty,
                PrecioVenta     = sumaImporte.ToString("N2", CultureInfo.CurrentCulture),
            };

            PolizaModel.Detalle.Add(detalleModel);
        }
예제 #8
0
        /// <summary>
        /// Genera los totales por Detalle
        /// </summary>
        /// <param name="solicitud"></param>
        private void GeneraLineaTotales(SolicitudProductoInfo solicitud)
        {
            var sumaImporte = Math.Round(solicitud.Detalle.Sum(det => det.Cantidad * det.PrecioPromedio), 2);

            PolizaModel.Detalle = new List <PolizaDetalleModel>();

            var detalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = string.Empty,
                PesoPromedio    = string.Empty,
                TipoGanado      = string.Empty,
                PesoTotal       = string.Empty,
                ImportePromedio = string.Empty,
                PrecioVenta     = sumaImporte.ToString("N2", CultureInfo.CurrentCulture),
            };

            PolizaModel.Detalle.Add(detalleModel);
        }
예제 #9
0
        /// <summary>
        /// Genera las Lineas del Detalle
        /// </summary>
        /// <param name="solicitudProducto"></param>
        private void GeneraLineasDetalle(SolicitudProductoInfo solicitudProducto)
        {
            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            PolizaDetalleModel detalleModel;

            foreach (var detalle in solicitudProducto.Detalle)
            {
                detalleModel = new PolizaDetalleModel
                {
                    CantidadCabezas = detalle.Producto.ProductoId.ToString(CultureInfo.InvariantCulture),
                    PesoPromedio    = string.Empty,
                    TipoGanado      = detalle.Producto.Descripcion,
                    PesoTotal       = string.Format("{0} {1}.", detalle.Cantidad.ToString("N0"), detalle.Producto.UnidadMedicion.ClaveUnidad),
                    ImportePromedio = detalle.PrecioPromedio.ToString("N2"),
                    PrecioVenta     = Math.Round(detalle.Cantidad * detalle.PrecioPromedio, 2).ToString("N2"),
                };
                PolizaModel.Detalle.Add(detalleModel);
            }
            polizaImpresion.GenerarDetalles("Detalle");
        }
예제 #10
0
        /// <summary>
        /// Genera los totales por Detalle
        /// </summary>
        /// <param name="detalles"></param>
        private void GeneraLineaTotales(IEnumerable <AlmacenInventarioLoteInfo> detalles)
        {
            var sumaImporte = Math.Round(detalles.Sum(importe => importe.Importe), 2);

            PolizaModel.Detalle = new List <PolizaDetalleModel>();

            var detalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = string.Empty,
                PesoPromedio    = string.Empty,
                TipoGanado      = string.Empty,
                Lote            = string.Empty,
                PesoTotal       = string.Empty,
                ImportePromedio = sumaImporte.ToString("N2", CultureInfo.CurrentCulture),
                PrecioVenta     = string.Empty,
                ImporteVenta    = string.Empty,
                Corral          = string.Empty
            };

            PolizaModel.Detalle.Add(detalleModel);
        }
예제 #11
0
        /// <summary>
        /// Genera los totales por Detalle
        /// </summary>
        /// <param name="produccionFormula"></param>
        private void GeneraLineaTotales(ProduccionFormulaInfo produccionFormula)
        {
            var sumaImporte = Math.Round(produccionFormula.ProduccionFormulaDetalle.Sum(importe => importe.CantidadProducto * importe.PrecioPromedio), 2);

            PolizaModel.Detalle = new List <PolizaDetalleModel>();

            var detalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = string.Empty,
                PesoPromedio    = string.Empty,
                TipoGanado      = string.Empty,
                Lote            = string.Empty,
                PesoTotal       = string.Empty,
                ImportePromedio = string.Empty,
                PrecioVenta     = sumaImporte.ToString("N2", CultureInfo.CurrentCulture),
                ImporteVenta    = string.Empty,
                Corral          = string.Empty
            };

            PolizaModel.Detalle.Add(detalleModel);
        }
        /// <summary>
        /// Genera los detalles de la salida
        /// </summary>
        /// <param name="salidaProducto"></param>
        private void GeneraLineaDetalle(SalidaProductoInfo salidaProducto)
        {
            PolizaModel.Detalle = new List <PolizaDetalleModel>();

            if (unidades == null)
            {
                unidades = ObtenerUnidadesMedicion();
            }
            if (productos == null)
            {
                productos = ObtenerProductos();
            }
            ProductoInfo producto =
                productos.FirstOrDefault(clave => clave.ProductoId == salidaProducto.Producto.ProductoId);

            if (producto == null)
            {
                producto = new ProductoInfo();
            }
            decimal cantidad           = salidaProducto.PesoBruto - salidaProducto.PesoTara;
            var     polizaDetalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = producto.ProductoId.ToString(),
                TipoGanado      = producto.ProductoDescripcion,
                PesoOrigen      = cantidad.ToString("N0"),
                PesoLlegada     = cantidad.ToString("N0"),
                Corral          =
                    unidades.Where(
                        clave => clave.UnidadID == producto.UnidadId).Select
                        (uni => uni.ClaveUnidad).FirstOrDefault(),
                Lote            = salidaProducto.AlmacenInventarioLote.Lote.ToString(),
                PrecioPromedio  = (salidaProducto.Importe / cantidad).ToString("N2"),
                ImportePromedio = salidaProducto.Importe.ToString("N2"),
                PrecioVenta     = (salidaProducto.Importe / cantidad).ToString("N2"),
                ImporteVenta    = salidaProducto.Importe.ToString("N2"),
            };

            PolizaModel.Detalle.Add(polizaDetalleModel);
        }
예제 #13
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");
        }
예제 #14
0
        /// <summary>
        /// Genera las Lineas del Detalle
        /// </summary>
        /// <param name="listaAlmacenInventario"></param>
        private void GeneraLineasDetalle(List <AlmacenInventarioLoteInfo> listaAlmacenInventario)
        {
            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            PolizaDetalleModel detalleModel;

            foreach (var detalle in listaAlmacenInventario.Where(alm => alm.AlmacenInventario.Producto.SubfamiliaId != SubFamiliasEnum.AlimentoFormulado.GetHashCode()))
            {
                detalleModel = new PolizaDetalleModel
                {
                    CantidadCabezas = detalle.AlmacenInventario.Producto.ProductoId.ToString(CultureInfo.InvariantCulture),
                    PesoPromedio    = string.Empty,
                    TipoGanado      = detalle.AlmacenInventario.Producto.ProductoDescripcion,
                    Lote            = detalle.Lote.ToString(CultureInfo.InvariantCulture),
                    PesoTotal       = string.Format("{0} KGS.", detalle.Cantidad),
                    ImportePromedio = detalle.Importe.ToString("N2"),
                    PrecioVenta     = detalle.Importe.ToString("N2"),
                    ImporteVenta    = "0.00",
                    Corral          = "0.00"
                };
                PolizaModel.Detalle.Add(detalleModel);
            }
            polizaImpresion.GenerarDetalles("Detalle");
        }
예제 #15
0
        private void GeneraLineaDetalle(List <RecepcionProductoDetalleInfo> detallesProducto)
        {
            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            PolizaDetalleModel           polizaDetalleModel;
            RecepcionProductoDetalleInfo detalle;

            for (int indexPoliza = 0; indexPoliza < detallesProducto.Count; indexPoliza++)
            {
                detalle            = detallesProducto[indexPoliza];
                polizaDetalleModel = new PolizaDetalleModel
                {
                    CantidadCabezas = detalle.Producto.ProductoId.ToString(),
                    TipoGanado      = detalle.Producto.Descripcion,
                    PesoOrigen      = detalle.Cantidad.ToString("N0"),
                    PesoLlegada     = detalle.Cantidad.ToString("N0"),
                    Corral          = string.Empty,
                    PrecioPromedio  = (detalle.Importe / detalle.Cantidad).ToString("N2"),
                    ImportePromedio = detalle.Importe.ToString("N2"),
                    PrecioVenta     = (detalle.Importe / detalle.Cantidad).ToString("N2"),
                    ImporteVenta    = detalle.Importe.ToString("N2"),
                };
                PolizaModel.Detalle.Add(polizaDetalleModel);
            }
        }
예제 #16
0
        /// <summary>
        /// Genera las Lineas del Detalle
        /// </summary>
        /// <param name="tiposGanado"></param>
        /// <param name="costosAnimal"> </param>
        /// <param name="ventasGanado"> </param>
        private void GeneraLineasDetalle(IList <ContenedorTipoGanadoPoliza> tiposGanado
                                         , List <AnimalCostoInfo> costosAnimal, List <ContenedorVentaGanado> ventasGanado)
        {
            var detalles = (from tg in tiposGanado
                            from ca in costosAnimal
                            from vg in ventasGanado
                            where tg.Animal.AnimalID == ca.AnimalID &&
                            ca.AnimalID == vg.VentaGanadoDetalle.Animal.AnimalID
                            select new
            {
                TipoGanado = tg.Animal.TipoGanado.Descripcion,
                vg.VentaGanado.PesoBruto,
                vg.VentaGanado.PesoTara,
                vg.CausaPrecio.Precio,
                ca.Importe,
                tg.Lote.Lote,
                tg.Lote.Corral.Codigo
            }).ToList();
            var tiposMovimiento = tiposGanado.GroupBy(tipo => tipo.Animal.TipoGanado.Descripcion)
                                  .Select(tipo => new
            {
                Descripcion = tipo.Key
            }).Distinct().ToList();
            var detalleAgrupado = detalles.GroupBy(desc => desc.TipoGanado)
                                  .Select(datos => new
            {
                Cabezas     = tiposMovimiento.Count(tipo => tipo.Descripcion.Equals(datos.Key)),
                TipoGanado  = datos.Key,
                PesoVenta   = datos.Sum(pb => pb.PesoBruto - pb.PesoTara),
                PrecioVenta = datos.Select(pre => pre.Precio).FirstOrDefault(),
                Corral      = datos.Select(corr => corr.Codigo).FirstOrDefault(),
                Lote        = datos.Select(lote => lote.Lote).FirstOrDefault(),
                //ImporteCosto = datos.Sum(imp => imp.Importe)
            });
            decimal importe = costosAnimal.Sum(imp => imp.Importe);

            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            PolizaDetalleModel detalleModel;

            List <AnimalInfo> animales = costosAnimal.Select(ani => new AnimalInfo
            {
                AnimalID = ani.AnimalID
            }).ToList();
            List <AnimalMovimientoInfo> animalesMovimiento = ObtenerUltimoMovimiento(animales);

            foreach (var detalle in detalleAgrupado)
            {
                int peso =
                    animalesMovimiento.Where(tipo => tipo.TipoMovimientoID == TipoMovimiento.Muerte.GetHashCode()).
                    Sum(ultimoPeso => ultimoPeso.Peso);
                if (peso == 0)
                {
                    peso = 1;
                }
                detalleModel = new PolizaDetalleModel
                {
                    CantidadCabezas = detalle.Cabezas.ToString("N").Replace(".00", string.Empty),
                    TipoGanado      = detalle.TipoGanado,
                    PesoTotal       = peso.ToString("N").Replace(".00", string.Empty),
                    PesoPromedio    =
                        (peso / detalle.Cabezas).ToString("N").Replace(".00", string.Empty),
                    PrecioPromedio  = (importe / peso).ToString("N2"),
                    ImportePromedio = importe.ToString("N2"),
                    Corral          = detalle.Corral,
                    Lote            = detalle.Lote
                };
                PolizaModel.Detalle.Add(detalleModel);
            }
            polizaImpresion.GenerarDetalles("Detalle");
        }