Exemple #1
0
        private List <Entidades.ListaProductoVenta> BuscarPromociones(List <Entidades.ListaProductoVenta> listaProductosEspejo)
        {
            double totalDescuento = 0;
            List <Entidades.ListaProductoVenta> listaDescuentos = new List <Entidades.ListaProductoVenta>();

            foreach (var producto in listaProductosEspejo)
            {
                if (producto.Cantidad > 0)
                {
                    List <Ofertas> promociones = Ventas.BuscarPromociones("", producto.idProducto, 2).OrderBy(x => x.PrecioCombo).ToList();
                    foreach (var item in promociones)
                    {
                        if (item.Productos.Count == 1)
                        {
                            int cantidad = producto.Cantidad / item.Productos.First().Unidades;
                            if (cantidad != 0)
                            {
                                double descuento_promocion             = Convert.ToDouble((producto.PrecioVenta * (cantidad * item.Productos.First().Unidades)) - (cantidad * item.PrecioCombo));
                                Entidades.ListaProductoVenta descuento = new Entidades.ListaProductoVenta();
                                descuento.idOferta         = item.idOferta;
                                descuento.PrecioVentaFinal = Convert.ToDecimal(-descuento_promocion);
                                descuento.NombreProducto   = "DESCUENTO APLICADO POR " + item.NombreOferta;
                                descuento.Cantidad         = cantidad;
                                descuento.PrecioUnitario   = item.PrecioCombo;
                                descuento.MontoDescuento   = item.MontoDescuento;
                                listaDescuentos.Add(descuento);
                                totalDescuento    = totalDescuento + descuento_promocion;
                                producto.Cantidad = producto.Cantidad - (cantidad * item.Productos.First().Unidades);
                            }
                        }
                        else
                        {
                            if (!listaDescuentos.Exists(e => e.idOferta == item.idOferta))
                            {
                                double totalProductosPromocion = 0;
                                int    cantidadPromociones     = 10000;
                                bool   promocionCompleta       = true;
                                foreach (var itemNEW in item.Productos)
                                {
                                    Entidades.ListaProductoVenta productoVenta = listaProductosEspejo.Find(e => e.idProducto == itemNEW.idProducto);
                                    if (productoVenta != null)
                                    {
                                        if ((productoVenta.Cantidad / itemNEW.Unidades) == 0)
                                        {
                                            promocionCompleta = false;
                                            break;
                                        }
                                        else
                                        {
                                            int posiblesPromociones = productoVenta.Cantidad / itemNEW.Unidades;
                                            cantidadPromociones     = cantidadPromociones > posiblesPromociones ? posiblesPromociones : cantidadPromociones;
                                            totalProductosPromocion = totalProductosPromocion + Convert.ToDouble(productoVenta.PrecioVenta);
                                        }
                                    }
                                    else
                                    {
                                        promocionCompleta = false;
                                        break;
                                    }
                                }
                                if (promocionCompleta)
                                {
                                    if (!listaDescuentos.Exists(e => e.idOferta == item.idOferta))
                                    {
                                        Entidades.ListaProductoVenta descuento = new Entidades.ListaProductoVenta();
                                        double descuento_promocion             = ((cantidadPromociones * totalProductosPromocion) - (cantidadPromociones * Convert.ToDouble(item.PrecioCombo)));
                                        descuento.idOferta         = item.idOferta;
                                        descuento.PrecioVentaFinal = Convert.ToDecimal(-descuento_promocion);
                                        descuento.NombreProducto   = "DESCUENTO APLICADO POR " + item.NombreOferta;
                                        descuento.Cantidad         = cantidadPromociones;
                                        descuento.PrecioUnitario   = item.PrecioCombo;
                                        descuento.MontoDescuento   = item.MontoDescuento;
                                        listaDescuentos.Add(descuento);
                                        totalDescuento = totalDescuento + descuento_promocion;
                                        foreach (var item2 in item.Productos)
                                        {
                                            Entidades.ListaProductoVenta productoVenta = listaProductosEspejo.Find(e => e.idProducto == item2.idProducto);
                                            productoVenta.Cantidad = productoVenta.Cantidad - (cantidadPromociones * item2.Unidades);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(listaDescuentos);
        }
Exemple #2
0
        private void FacturarVenta()
        {
            List <DetalleOferta> lista = new List <DetalleOferta>();

            if (listaProductos.Count > 0)
            {
                List <Entidades.ListaProductoVentaEspejo> listaProductosOriginal = new List <ListaProductoVentaEspejo>();
                foreach (var item in listaProductos)
                {
                    Entidades.ListaProductoVentaEspejo ProductosOriginal = new Entidades.ListaProductoVentaEspejo();
                    ProductosOriginal.Cantidad       = item.Cantidad;
                    ProductosOriginal.CodigoProducto = item.CodigoProducto;

                    ProductosOriginal.Fecha    = item.Fecha;
                    ProductosOriginal.idOferta = item.idOferta;

                    ProductosOriginal.idProducto     = item.idProducto;
                    ProductosOriginal.NombreProducto = item.NombreProducto;

                    ProductosOriginal.PrecioUnitario = item.PrecioUnitario;
                    ProductosOriginal.PrecioVenta    = item.PrecioVenta;

                    ProductosOriginal.PrecioVentaFinal = item.PrecioVentaFinal;
                    ProductosOriginal.ProductoEspecial = item.ProductoEspecial;
                    listaProductosOriginal.Add(ProductosOriginal);
                }
                listaProductosConDescuentos = BuscarPromociones(listaProductos);
                if (listaProductosConDescuentos.Count > 0)
                {
                    int     contarDescuentos = 1;
                    decimal PrecioVentaOrig  = Convert.ToDecimal(lblTotalPagarReal.Text);
                    foreach (var item in listaProductosConDescuentos)
                    {
                        if (contarDescuentos == 1)
                        {
                            PrecioFinal      = PrecioVentaOrig + item.PrecioVentaFinal;
                            contarDescuentos = contarDescuentos + 1;
                        }
                        else
                        {
                            PrecioFinal      = PrecioFinal + item.PrecioVentaFinal;
                            contarDescuentos = contarDescuentos + 1;
                        }

                        DetalleOferta detalle = new DetalleOferta();
                        detalle.Descripcion    = item.NombreProducto;
                        detalle.PrecioOferta   = item.PrecioUnitario;
                        detalle.MontoDescuento = item.MontoDescuento;
                        lista.Add(detalle);
                    }
                    List <Entidades.ListaProductoVenta> listaProductos = new List <ListaProductoVenta>();

                    foreach (var item in listaProductosOriginal)
                    {
                        Entidades.ListaProductoVenta Productos = new Entidades.ListaProductoVenta();
                        Productos.Cantidad       = item.Cantidad;
                        Productos.CodigoProducto = item.CodigoProducto;

                        Productos.Fecha    = item.Fecha;
                        Productos.idOferta = item.idOferta;

                        Productos.idProducto     = item.idProducto;
                        Productos.NombreProducto = item.NombreProducto;

                        Productos.PrecioUnitario = item.PrecioUnitario;
                        Productos.PrecioVenta    = item.PrecioVenta;

                        Productos.PrecioVentaFinal = PrecioFinal;
                        Productos.ProductoEspecial = item.ProductoEspecial;
                        listaProductos.Add(Productos);
                    }
                    listaOfertas = lista;
                    VentaCerrada = true;
                    int idusuarioLogueado = Sesion.UsuarioLogueado.IdUsuario;
                    int idusuario         = idusuarioLogueado;
                    listaProductos[0].PrecioVentaFinal = PrecioFinal;
                    idVenta = Negocio.Ventas.RegistrarVenta(listaProductos, idusuario);
                    bool AplicaDescuento = true;
                    BloquearPantalla();
                    VueltoNuevoWF _vuelto = new VueltoNuevoWF(listaProductos[0].PrecioVentaFinal, AplicaDescuento, idVenta, listaProductos, listaOfertas);
                    _vuelto.Show();
                    //Tkt(idVenta, listaProductos);
                    //DesbloquearPantalla();
                    lblBack.Visible = true;
                }
                else
                {
                    VentaCerrada = true;
                    int idusuarioLogueado = Sesion.UsuarioLogueado.IdUsuario;
                    int idusuario         = idusuarioLogueado;
                    listaProductos[0].PrecioVentaFinal = Convert.ToDecimal(lblTotalPagarReal.Text);
                    //bool Exito = Negocio.Ventas.RegistrarVenta(listaProductos, idusuario);
                    idVenta = Negocio.Ventas.RegistrarVenta(listaProductos, idusuario);
                    bool AplicaDescuento = false;
                    BloquearPantalla();
                    VueltoNuevoWF _vuelto = new VueltoNuevoWF(listaProductos[0].PrecioVentaFinal, AplicaDescuento, idVenta, listaProductos, listaOfertas);
                    _vuelto.Show();
                    //Tkt(idVenta, listaProductos);
                    //DesbloquearPantalla();
                    lblBack.Visible = true;
                }
            }
        }