コード例 #1
0
        public void RestaurarStock(long IdPxv)
        {
            List <LoteVendido> lotesv = new List <LoteVendido>();
            LoteVendido        lotev;
            LoteNegocio        negL = new LoteNegocio();
            Lote     lote;
            AccesoDB conexion = null;

            try
            {
                conexion = new AccesoDB();
                conexion.SetearConsulta("SELECT IDLOTE, CANTIDAD FROM LOTES_X_VENTA WHERE IDPXV = @idpxv");
                conexion.Comando.Parameters.Clear();
                conexion.Comando.Parameters.AddWithValue("@idpxv", IdPxv);

                conexion.AbrirConexion();
                conexion.EjecutarConsulta();

                while (conexion.Lector.Read())
                {
                    lotev = new LoteVendido
                    {
                        IdPxv    = IdPxv,
                        IdLote   = (long)conexion.Lector[0],
                        Cantidad = (int)conexion.Lector[1]
                    };
                    lotesv.Add(lotev);
                }

                foreach (LoteVendido lv in lotesv)
                {
                    lote            = negL.ObtenerLote(lv.IdLote);
                    lote.UnidadesE += lv.Cantidad;
                    negL.ModificarStock(lote.IdLote, lote.UnidadesE);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conexion.CheckearConexion() == true)
                {
                    conexion.CerrarConexion();
                }
            }
        }
コード例 #2
0
        public void AnularVenta(Venta v)
        {
            ProductoVendidoNegocio negPV = new ProductoVendidoNegocio();
            LoteNegocio            negL  = new LoteNegocio();

            try
            {
                List <ProductoVendido> productos = negPV.Listar(v.IdVenta, 1);
                EliminarLogico(v.IdVenta);

                foreach (ProductoVendido pv in productos)
                {
                    negPV.EliminarLogico(pv.IdPxv);
                    negPV.RestaurarStock(pv.IdPxv);
                    negL.ActualizarStock(pv.Producto.IdProducto);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #3
0
        public bool AnularCompra(Compra c)
        {
            LoteNegocio negL  = new LoteNegocio();
            List <Lote> lotes = negL.Listar(c.IdCompra, 1);

            foreach (Lote l in lotes)
            {
                if (l.UnidadesE != l.UnidadesP)
                {
                    return(false);
                }
            }

            EliminarLogico(c.IdCompra);

            foreach (Lote l in lotes)
            {
                negL.EliminarLogico(l.IdLote);
                negL.ActualizarStock(l.Producto.IdProducto);
            }

            return(true);
        }
コード例 #4
0
        public List <Producto> Listar(int Id)
        {
            Producto        aux;
            LoteNegocio     negL         = new LoteNegocio();
            List <Producto> lstProductos = new List <Producto>();
            AccesoDB        conexion     = null;

            try
            {
                conexion = new AccesoDB();
                if (Id == 0)
                {
                    conexion.SetearConsulta("SELECT P.IDPRODUCTO, P.DESCRIPCION, M.DESCRIPCION, TP.DESCRIPCION, P.STOCKMIN, P.GANANCIA, P.IDMARCA, P.IDTIPOPRODUCTO, P.STOCK FROM PRODUCTOS AS P " +
                                            "INNER JOIN MARCAS AS M ON P.IDMARCA = M.IDMARCA " +
                                            "INNER JOIN TIPOSPRODUCTO AS TP ON P.IDTIPOPRODUCTO = TP.IDTIPOPRODUCTO " +
                                            "WHERE P.ACTIVO = 1 " +
                                            "ORDER BY P.DESCRIPCION ASC");
                }
                else
                {
                    conexion.SetearConsulta("SELECT P.IDPRODUCTO, P.DESCRIPCION, M.DESCRIPCION, TP.DESCRIPCION, P.STOCKMIN, P.GANANCIA, P.IDMARCA, P.IDTIPOPRODUCTO, P.STOCK FROM PRODUCTOS AS P " +
                                            "INNER JOIN PRODUCTOS_X_PROVEEDOR AS PXP ON PXP.IDPRODUCTO = P.IDPRODUCTO " +
                                            "INNER JOIN MARCAS AS M ON P.IDMARCA = M.IDMARCA " +
                                            "INNER JOIN TIPOSPRODUCTO AS TP ON P.IDTIPOPRODUCTO = TP.IDTIPOPRODUCTO " +
                                            "WHERE P.ACTIVO = 1 AND PXP.IDPROVEEDOR = @id " +
                                            "ORDER BY P.DESCRIPCION ASC");
                    conexion.Comando.Parameters.Clear();
                    conexion.Comando.Parameters.AddWithValue("@id", Id);
                }

                conexion.AbrirConexion();
                conexion.EjecutarConsulta();

                while (conexion.Lector.Read())
                {
                    aux = new Producto
                    {
                        IdProducto   = (int)conexion.Lector["IDPRODUCTO"],
                        Marca        = new Marca(),
                        TipoProducto = new TipoProducto(),
                        Descripcion  = (string)conexion.Lector["DESCRIPCION"],
                        StockMin     = (int)conexion.Lector["STOCKMIN"],
                        Ganancia     = (float)Convert.ToDouble(conexion.Lector["GANANCIA"]),
                        Stock        = (int)conexion.Lector["STOCK"]
                    };
                    aux.Marca.IdMarca               = (int)conexion.Lector["IDMARCA"];
                    aux.Marca.Descripcion           = (string)conexion.Lector[2];
                    aux.TipoProducto.IdTipoProducto = (int)conexion.Lector["IDTIPOPRODUCTO"];
                    aux.TipoProducto.Descripcion    = (string)conexion.Lector[3];

                    lstProductos.Add(aux);
                }

                return(lstProductos);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conexion.CheckearConexion() == true)
                {
                    conexion.CerrarConexion();
                }
            }
        }
コード例 #5
0
        public void DescontarStock(ProductoVendido pv)
        {
            Lote        lote;
            int         stockTotal = 0, cantidad;
            LoteNegocio negL     = new LoteNegocio();
            List <Lote> lstLotes = new List <Lote>();
            AccesoDB    conexion = null;

            try
            {
                conexion = new AccesoDB();
                conexion.SetearConsulta("SELECT L.IDLOTE, L.UNIDADESE FROM LOTES AS L " +
                                        "INNER JOIN COMPRAS AS C ON C.IDCOMPRA = L.IDCOMPRA " +
                                        "WHERE L.IDPRODUCTO = @idproducto AND L.ACTIVO = 1 " +
                                        "ORDER BY C.FECHACOMPRA DESC");
                conexion.Comando.Parameters.Clear();
                conexion.Comando.Parameters.AddWithValue("@idproducto", pv.Producto.IdProducto);

                conexion.AbrirConexion();
                conexion.EjecutarConsulta();

                while (conexion.Lector.Read())
                {
                    lote = new Lote
                    {
                        IdLote    = (long)conexion.Lector[0],
                        UnidadesE = (int)conexion.Lector[1]
                    };
                    stockTotal += lote.UnidadesE;
                    lstLotes.Add(lote);
                }

                if (stockTotal >= pv.Cantidad)
                {
                    int cantV = pv.Cantidad, i = 0;
                    while (cantV > 0)
                    {
                        if (cantV <= lstLotes[i].UnidadesE)
                        {
                            cantidad = cantV;
                            lstLotes[i].UnidadesE -= cantV;
                            cantV = 0;
                        }
                        else
                        {
                            cantidad = lstLotes[i].UnidadesE;
                            cantV   -= lstLotes[i].UnidadesE;
                            lstLotes[i].UnidadesE = 0;
                        }
                        ActualizarStock(lstLotes[i]);
                        negL.ActualizarStock(pv.Producto.IdProducto);
                        RegistrarMovimiento(pv.IdPxv, lstLotes[i].IdLote, cantidad);
                        i++;
                    }
                }
                return;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conexion.CheckearConexion() == true)
                {
                    conexion.CerrarConexion();
                }
            }
        }