private async Task UpdateQuantityReturned(CreditMemoLineItem lineItem, AdjustmentType adjustmentType) { var orderLineItem = await FetchLineItem(lineItem.OrderLineItemId); var tempQuantityReturned = orderLineItem.QuantityReturned; orderLineItem.QuantityReturned = adjustmentType == AdjustmentType.Add ? orderLineItem.QuantityReturned + lineItem.Quantity : orderLineItem.QuantityReturned - lineItem.Quantity; // Quantity returned cannot be more than original order quantity if (orderLineItem.QuantityReturned > orderLineItem.Quantity) { var errorBuilder = new StringBuilder("Quantity returned cannot be more than the quantity ordered.<br />"); if (tempQuantityReturned != 0) { errorBuilder.Append($"{orderLineItem.Item.Name} of order {orderLineItem.Order.Code} already has {tempQuantityReturned}/{orderLineItem.Quantity} returned."); } else { errorBuilder.Append($"{orderLineItem.Item.Name} of order {orderLineItem.Order.Code} only has {orderLineItem.Quantity} quantity ordered."); } throw new QuantityReturnedException(errorBuilder.ToString()); } }
private async Task UpdateCreditMemoItemHistory(CreditMemoLineItem creditMemoLineItem, AdjustmentType adjustmentType, string remarks) { var itemHistory = await context .ItemHistories .FirstOrDefaultAsync(a => a.CreditMemoLineItemId == creditMemoLineItem.Id); if (itemHistory == null) { var newItemHistory = CreateItemHistory( creditMemoLineItem.ItemId, adjustmentType, creditMemoLineItem.Quantity, remarks); creditMemoLineItem.TransactionHistory = newItemHistory; context.Entry(newItemHistory).State = EntityState.Added; } else { if (adjustmentType == AdjustmentType.Deduct) { DeleteItemHistory(itemHistory); } else if (adjustmentType == AdjustmentType.Add) { UpdateItemHistory(itemHistory, creditMemoLineItem.Quantity, adjustmentType, remarks); } } }