public void Update(ReturnedSaleDTO dto, int userId) { //var sale = new SaleDalFacade().GetSale(dto.SaleId); var workPlaceId = new UserDalFacade().GetAccountUser(userId).WorkPlace.Id.Value; var existingReturnedSale = GetReturnedSale(dto.Id); var dasd = existingReturnedSale.Quantity - existingReturnedSale.DefectedQuantity; var diff = (dto.Quantity - dto.DefectedQuantity) - dasd; // quantity - deffectedQuantity !!!(So quantity is general for both) var productInStockFrom = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(workPlaceId, dto.ProductId); productInStockFrom.Quantity += diff; new ProductStockDalFacade().Update(productInStockFrom); new ReturnedSaleDalFacade().Update(dto); // var existingReturnSale = new ReturnedSaleBL().GetReturnedSale(dto.Id); var lostInMoneyInInsert = existingReturnSale.ReturnedPrice * existingReturnSale.Quantity; var lostInMoneyInUpdate = dto.ReturnedPrice * dto.Quantity; var lostInMoney = lostInMoneyInInsert - lostInMoneyInUpdate; var quantity = existingReturnSale.Quantity - dto.Quantity; //var sale2 = new SaleDalFacade().GetSale(dto.SaleId); //sale2.SalesPrice -= lostInMoney; //sale2.Quantity -= quantity; //new SaleDalFacade().Update(sale2); //var order = new OrderDalFacade().GetClientOrder(sale.OrderId); //order.OverallPrice -= lostInMoney; //order.PaymentByCash -= lostInMoney; //new OrderDalFacade().Update(order); }
// To Keep up-to-Date with Movements and sales public void UpdateProductStock(InnerMovementDTO dto) { var productInStockMinus = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.FromWorkPlaceId, dto.ProductId); if (dto.Quantity > productInStockMinus.Quantity) { throw new ArgumentOutOfRangeException( $"Not Enough Product ({productInStockMinus.ProductId}-{productInStockMinus.ProductName}) in ProductStock to complete transaction"); } productInStockMinus.Quantity -= dto.Quantity; new ProductStockDalFacade().Update(productInStockMinus); var productInStockAdd = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.ToWorkPlaceId, dto.ProductId); if (productInStockAdd == null) { AddProductStock(dto); } else { productInStockAdd.Quantity += dto.Quantity; new ProductStockDalFacade().Update(productInStockAdd); } }
public void UpdateProductStocks(SaleDTO sale, int userId) { var errorMessage = string.Empty; var workplaceId = new UserDalFacade().GetAccountUser(userId).WorkPlace.Id.Value; var productStock = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(workplaceId, sale.ProductId); if (sale.Quantity > productStock.Quantity) { errorMessage += $"Not Enough Product ({productStock.ProductId}-{productStock.ProductName}) in ProductStock to complete transaction."; } if (!string.IsNullOrEmpty(errorMessage)) { errorMessage += Environment.NewLine; } if (!string.IsNullOrEmpty(errorMessage)) { throw new ArgumentOutOfRangeException(errorMessage); } var productInStockMinus = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(workplaceId, sale.ProductId); productInStockMinus.Quantity -= sale.Quantity; new ProductStockDalFacade().Update(productInStockMinus); }
public void Delete(int?id, int userId) { var workPlaceId = new UserDalFacade().GetAccountUser(userId).WorkPlace.Id; var existedStock = new ProductStockDalFacade().GetProductStock(id); var quantity = existedStock.Quantity * -1; var income = CreateLogIncome(userId, existedStock.ProductId, quantity, workPlaceId); new IncomeDalFacade().AddIncome(income); new ProductStockDalFacade().Delete(id); }
public void Update(ProductStockDTO stock, int userId) { var workPlaceId = new UserDalFacade().GetAccountUser(userId).WorkPlace.Id; var existedStock = new ProductStockDalFacade().GetProductStock(stock.Id); var quantity = stock.Quantity - existedStock.Quantity; var income = CreateLogIncome(userId, existedStock.ProductId, quantity, workPlaceId); new IncomeDalFacade().AddIncome(income); new ProductStockDalFacade().Update(stock); }
public void Update(InnerMovementDTO[] dtos, int userId) { string exMsg = null; foreach (var dto in dtos) { var inMovement = new InnerMovementDalFacade().GetInnerMovement(dto.Id.Value); var diff = dto.Quantity - inMovement.Quantity; // should-Be - was var productInStockFrom = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.FromWorkPlaceId, dto.ProductId); var productInStockTo = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.ToWorkPlaceId, dto.ProductId); if (diff != 0 && productInStockFrom.Quantity > diff && (productInStockTo.Quantity + diff) >= 0) { productInStockFrom.Quantity -= diff;// dto.Quantity - inMovement.Quantity; new ProductStockDalFacade().Update(productInStockFrom); productInStockTo.Quantity += diff; new ProductStockDalFacade().Update(productInStockTo); } else if (diff == 0) { } else { exMsg = $"Not Enough Product ({dto.ProductId}-{dto.ProductName}) in ProductStock to complete transaction."; } } if (exMsg != null) { throw new ArgumentOutOfRangeException(exMsg); } foreach (var dto in dtos) { var inMovement = new InnerMovementDalFacade().GetInnerMovement(dto.Id.Value); var quantity = inMovement.Quantity - dto.Quantity; var incomeProducts = new List <IncomeProductDTO>(); incomeProducts.Add(new IncomeProductDTO() { ProductId = dto.ProductId, Quantity = quantity }); var incomeDTO = new IncomeDTO() { FromWorkplaceId = dto.FromWorkPlaceId, ToWorkplaceId = dto.ToWorkPlaceId, IncomeProducts = incomeProducts, IsProductStock = false, UserId = userId }; new IncomeDalFacade().AddIncome(incomeDTO); new InnerMovementDalFacade().Update(dto); } }
public void Delete(int id, int userId) { var workPlaceId = new UserDalFacade().GetAccountUser(userId).WorkPlace.Id.Value; var existing = GetReturnedSale(id); var existingDiff = existing.Quantity - existing.DefectedQuantity; var productInStockFrom = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(workPlaceId, existing.ProductId); productInStockFrom.Quantity -= existingDiff; new ProductStockDalFacade().Update(productInStockFrom); new ReturnedSaleDalFacade().Delete(id); }
public void UpdateProductStock(ReturnedSaleDTO dto, int userId) { var workplaceId = new UserDalFacade().GetAccountUser(userId).WorkPlace.Id.Value; var productInStockAdd = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(workplaceId, dto.ProductId, true); if (productInStockAdd == null) { AddProductStock(workplaceId, dto.ProductId, dto.Quantity - dto.DefectedQuantity); } else { productInStockAdd.Quantity += dto.Quantity - dto.DefectedQuantity; new ProductStockDalFacade().Update(productInStockAdd); } }
public void UpdateProductStocks(List <InnerMovementDTO> dtos) { var errorMessage = string.Empty; foreach (var dto in dtos) { var productInStockMinus = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.FromWorkPlaceId, dto.ProductId); if (dto.Quantity > productInStockMinus.Quantity) { errorMessage += $"Not Enough Product ({productInStockMinus.ProductId}-{productInStockMinus.ProductName}) in ProductStock to complete transaction."; } if (!string.IsNullOrEmpty(errorMessage)) { errorMessage += Environment.NewLine; } } if (!string.IsNullOrEmpty(errorMessage)) { throw new ArgumentOutOfRangeException(errorMessage); } foreach (var dto in dtos) { var productInStockMinus = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.FromWorkPlaceId, dto.ProductId); productInStockMinus.Quantity -= dto.Quantity; new ProductStockDalFacade().Update(productInStockMinus); var productInStockAdd = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(dto.ToWorkPlaceId, dto.ProductId, true); if (productInStockAdd == null) { AddProductStock(dto); } else { productInStockAdd.Quantity += dto.Quantity; new ProductStockDalFacade().Update(productInStockAdd); } } }
public void Update(SaleDTO sale, int userId) { var saleOld = new SaleDalFacade().GetSale(sale.Id); var workPlaceId = new UserDalFacade().GetAccountUser(userId).WorkPlace.Id.Value; var diff = sale.Quantity - saleOld.Quantity; // should-Be - was var productInStockFrom = new ProductStockDalFacade().GetProductStockByPlaceAndProduct(workPlaceId, sale.ProductId); if (productInStockFrom.Quantity > diff) { productInStockFrom.Quantity -= diff;// dto.Quantity - inMovement.Quantity; new ProductStockDalFacade().Update(productInStockFrom); } else if (diff == 0) { //do nothing } else { throw new ArgumentOutOfRangeException($"Not Enough Product ({saleOld.ProductId}-{saleOld.ProductName}) in ProductStock to complete transaction."); } new SaleDalFacade().Update(saleOld); }
//// public void AuditDailyBalance() { var dtos = new ProductStockDalFacade().GetAllDailyBalanceDTO(); Add(dtos); }