Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
 }