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(); } } }
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; } }
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); }
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(); } } }
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(); } } }