public static bool CanOrderItemBeRemovedFromCollection(CollectionDataDO collection, CollectionOrderItem collectionOrderItem)
        {
            if (collection == null)
            {
                return false;
            }

            if (collectionOrderItem == null)
            {
                return false;
            }

            if (collectionOrderItem.StatusCode != OrderItemStatus.Found.ToString() && collectionOrderItem.StatusCode != OrderItemStatus.NotFound.ToString())
            {
                return false;
            }

            if (collection.NotFoundItemList.Select(x => x.ID).Contains(collectionOrderItem.OrderItemID) == false && collection.FoundItemList.Select(x => x.ID).Contains(collectionOrderItem.OrderItemID) == false)
            {
                return false;
            }

            return true;
        }
        public static void AddOrderItemToNotFoundList(OrderItemDO orderItemDO, int locationId, int userId)
        {
            CollectionDataDO collectionDataDO = CollectionDataBL.CreateCollectionDataIfNotExist(locationId, userId);

            ValidateLocation(locationId, collectionDataDO.Location.ID);

            CheckoutDataContextProvider dcp = CheckoutDataContextProvider.Instance;

            OrderItemDO orderItem = CheckoutBL.GetOrderItemById(orderItemDO.ID);

            if (SupplyRuleEngine.CanOrderItemBeAddedToNotFoundList(collectionDataDO, orderItem))
            {
                Repository<CollectionOrderItem> rep = new Repository<CollectionOrderItem>(dcp);
                CollectionOrderItem collectionOrderItem = new CollectionOrderItem();
                collectionOrderItem.OrderItemID = orderItemDO.ID;
                collectionOrderItem.StatusCode = OrderItemStatus.NotFound.ToString();
                collectionOrderItem.CollectionDataID = collectionDataDO.ID;
                collectionOrderItem.NotFoundReasonID = orderItemDO.NotFoundReasonID;
                rep.InsertOnSubmit(collectionOrderItem);
                dcp.CommitChanges(userId);
            }
        }
        public static void AddOrderItemListToFoundList(List<int> orderItemIdList, int locationId, int userId)
        {
            CollectionDataDO collectionDataDO = CollectionDataBL.CreateCollectionDataIfNotExist(locationId, userId);
            ValidateLocation(locationId, collectionDataDO.Location.ID);
            CheckoutDataContextProvider dcp = CheckoutDataContextProvider.Instance;
            List<OrderItemDO> orderItemList = CheckoutBL.GetOrderItemListByIdList(orderItemIdList);

            foreach (var orderItem in orderItemList)
            {
                if (SupplyRuleEngine.CanOrderItemBeAddedToFoundList(collectionDataDO, orderItem))
                {
                    Repository<CollectionOrderItem> rep = new Repository<CollectionOrderItem>(dcp);
                    CollectionOrderItem collectionOrderItem = new CollectionOrderItem();
                    collectionOrderItem.OrderItemID = orderItem.ID;
                    collectionOrderItem.StatusCode = OrderItemStatus.Found.ToString();
                    collectionOrderItem.CollectionDataID = collectionDataDO.ID;
                    rep.InsertOnSubmit(collectionOrderItem);
                }
            }

            dcp.CommitChanges(userId);
        }