public IHttpActionResult DeleteProductoCompra(BorrarProdCompraDTO prodCompra) { var productoInDB = productoXCompraBL.GetProductoXCompraIndividualById(prodCompra); if (productoInDB == null) { log.Error("Producto no encontrado en la base de datos con ID: " + prodCompra.ProductoID); return(NotFound()); } //Referenciamos producto que borraremos con UOW var prodABorrar = _UOWCompra.ProductosXCompraRepository.GetByID(productoInDB.ID); var importeTotalProducto = productoInDB.Total; //restamos stock //Producto producto = productoBL.GetProductoById(prodCompra.ProductoID); //Stock stock = stockBL.ValidarStockProducto(prodCompra.ProductoID, prodCompra.TipoDeUnidadID); Stock stock = _UOWCompra.StockRepository.GetAll() .Where(s => s.ProductoID == prodCompra.ProductoID && s.TipoDeUnidadID == prodCompra.TipoDeUnidadID) .SingleOrDefault(); log.Info("Producto a Borrar con ID: " + prodCompra.ProductoID); if (stock != null) { log.Info("Stock Producto a Eliminar: " + stock.Cantidad); stock.Cantidad = stock.Cantidad - prodCompra.Cantidad; //stockBL.UpdateStock(stock); _UOWCompra.StockRepository.Update(stock); log.Info("Stock Producto Actualizado: " + stock.Cantidad); } //Actualizamos el total de la venta //var compraInDB = compraBL.GetCompraById(prodCompra.CompraID); Compra compraInDB = _UOWCompra.CompraRepository.GetByID(prodCompra.CompraID); compraInDB.TotalGastos = compraInDB.TotalGastos - importeTotalProducto; log.Info("Total gastos de Compra ID " + compraInDB.ID + " actualizado. Nuevo valor: " + compraInDB.TotalGastos); //compraBL.UpdateCompra(compraInDB); _UOWCompra.CompraRepository.Update(compraInDB); //productoXCompraBL.RemoveProductoXCompra(productoInDB); _UOWCompra.ProductosXCompraRepository.Delete(prodABorrar); _UOWCompra.Save(); log.Info("Producto eliminado de la compra satisfactoriamente."); return(Ok()); }
public bool DeleteProductosParaUpdate(Compra compra) { var productosCompra = _UOWCompra.ProductosXCompraRepository.GetAll().Where(p => p.CompraID == compra.ID).ToList(); //Iteramos todos los productos que vamos a borrar foreach (var prodCompra in productosCompra) { BorrarProdCompraDTO idsDeCompra = new BorrarProdCompraDTO { ProductoID = prodCompra.ProductoID, CompraID = compra.ID }; //var productoInDB = productoXVentaBL.GetProductoXVentaIndividualById(idsDeVenta); var productoInDB = _UOWCompra.ProductosXCompraRepository.GetAll() .Include(p => p.Producto) .Include(t => t.TipoDeUnidad) .Include(v => v.Compra) .Where(c => c.CompraID == prodCompra.CompraID && c.ProductoID == prodCompra.ProductoID).SingleOrDefault(); if (productoInDB == null) { log.Error("No se ha encontrado Producto en la base de datos con ID:" + productoInDB); return(false); } //Referenciamos producto que borraremos con UOW var prodABorrar = _UOWCompra.ProductosXCompraRepository.GetByID(productoInDB.ID); //Devolvemos Stock //Producto producto = productoBL.GetProductoById(prodCompra.ProductoID); //Stock stock = stockBL.ValidarStockProducto(prodCompra.ProductoID, prodCompra.TipoDeUnidadID); Stock stock = _UOWCompra.StockRepository .GetAll() .Where(s => s.ProductoID == prodCompra.ProductoID && s.TipoDeUnidadID == prodCompra.TipoDeUnidadID) .SingleOrDefault(); log.Info("Producto a Borrar con ID: " + productoInDB.ID); if (stock != null) { log.Info("Stock Producto a Eliminar: " + stock.Cantidad); stock.Cantidad = stock.Cantidad - prodCompra.Cantidad; //stockBL.UpdateStock(stock); _UOWCompra.StockRepository.Update(stock); log.Info("Stock Producto Actualizado: " + stock.Cantidad); } _UOWCompra.ProductosXCompraRepository.Delete(prodABorrar); //_UOWVentaMayorista.Save(); log.Info("Producto de la compra borrado exitosamente."); } //Si el borrado total de productos fue exitoso, devolvemos true return(true); }
public ProductoXCompra GetProductoXCompraIndividualById(BorrarProdCompraDTO prodCompra) { return(ProductoXCompraRP .GetAll() .Include(p => p.Producto) .Include(t => t.TipoDeUnidad) .Include(v => v.Compra) .Where(c => c.CompraID == prodCompra.CompraID && c.ProductoID == prodCompra.ProductoID && c.Total == prodCompra.TotalProducto) .Distinct() .SingleOrDefault()); }