public IResult <IInventoryShipmentOrderPackingListReturn> GetInventoryShipmentOrderPackingList(string orderKey)
        {
            var orderKeyResult = KeyParserHelper.ParseResult <IInventoryShipmentOrderKey>(orderKey);

            if (!orderKeyResult.Success)
            {
                return(orderKeyResult.ConvertTo <IInventoryShipmentOrderPackingListReturn>());
            }

            var predicate = orderKeyResult.ResultingObject.ToInventoryShipmentOrderKey().FindByPredicate;
            var select    = InventoryShipmentOrderProjectors.SplitSelectPackingList();

            var order = _inventoryShipmentOrderUnitOfWork.InventoryShipmentOrderRepository.Filter(predicate).SplitSelect(select).FirstOrDefault();

            if (order == null)
            {
                return(new InvalidResult <IInventoryShipmentOrderPackingListReturn>(null, string.Format(UserMessages.InventoryShipmentOrderNotFound, orderKey)));
            }

            if (order.OrderType == InventoryShipmentOrderTypeEnum.SalesOrder)
            {
                var customerOrderKey = new SalesOrderKey(orderKeyResult.ResultingObject);
                var customerOrder    = _inventoryShipmentOrderUnitOfWork.SalesOrderRepository.FindByKey(customerOrderKey);
                if (customerOrder == null)
                {
                    return(new InvalidResult <IInventoryShipmentOrderPackingListReturn>(null, string.Format(UserMessages.SalesOrderNotFound, customerOrder)));
                }

                order.ShipFromOrSoldToShippingLabel = customerOrder.SoldTo;
            }

            return(new SuccessResult <IInventoryShipmentOrderPackingListReturn>(order));
        }