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