Пример #1
0
        public ReturnBuilder RemoveReturnItem(RmaReturnItem returnItem, decimal returnQuantity)
        {
            if (returnItem == null)
            {
                throw new ArgumentNullException("returnItem");
            }

            returnItem.RmaLineItems[0].ReturnQuantity -= returnQuantity;
            if (returnItem.RmaLineItems[0].ReturnQuantity <= 0)
            {
                RmaRequest.RmaReturnItems.Remove(returnItem);
                RmaReturnItems.Remove(returnItem);
            }

            var availableLineItem = AvailableForReturnLineItems.FirstOrDefault(x => x.LineItemId == returnItem.RmaLineItems[0].LineItemId);

            if (availableLineItem == null)
            {
                availableLineItem = _deletedLineItemList.FirstOrDefault(x => x.LineItemId == returnItem.RmaLineItems[0].LineItemId);
                // undelete
                AvailableForReturnLineItems.Add(availableLineItem);
            }

            availableLineItem.AvailableQuantity += returnQuantity;

            Recalculate();
            return(this);
        }
Пример #2
0
        public ReturnBuilder AddReturnItem(ReturnLineItem lineItem, decimal returnQuantity, string returnReason)
        {
            if (lineItem == null)
            {
                throw new ArgumentNullException("lineItem");
            }

            var returnItem = RmaReturnItems.FirstOrDefault(x => x.RmaLineItems[0].LineItemId == lineItem.LineItemId && x.ReturnReason == returnReason);

            if (returnItem == null)
            {
                var rmaLineItem = CreateEntity <RmaLineItem>();
                rmaLineItem.LineItemId = lineItem.LineItemId;
                rmaLineItem.LineItem   = lineItem.LineItem;

                returnItem = CreateEntity <RmaReturnItem>();
                returnItem.RmaLineItems.Add(rmaLineItem);
                returnItem.ItemState    = RmaLineItemState.AwaitingReturn.ToString();
                returnItem.ReturnReason = returnReason;

                RmaRequest.RmaReturnItems.Add(returnItem);
                RmaReturnItems.Add(returnItem);
            }

            returnItem.RmaLineItems[0].ReturnQuantity += returnQuantity;
            lineItem.AvailableQuantity -= returnQuantity;

            if (lineItem.AvailableQuantity == 0)
            {
                _deletedLineItemList.Add(lineItem);
                AvailableForReturnLineItems.Remove(lineItem);
            }

            Recalculate();

            return(this);
        }