internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderBillOfLadingReturn> > > SplitSelectBillOfLading()
        {
            var key      = SelectKey();
            var item     = PickedInventoryItemProjectors.SplitSelectPackingListItem();
            var shipment = ShipmentInformationProjectors.SelectShipmentInformation();

            return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderBillOfLadingReturn>
            {
                o => new InventoryShipmentOrderBillOfLadingReturn
                {
                    OrderType = o.OrderType,
                    SourceFacilityLabelName = o.SourceFacility.ShippingLabelName,
                    SourceFacilityAddress = o.SourceFacility.Address,
                    InventoryShipmentOrderKeyReturn = key.Invoke(o),
                    MoveNum = o.MoveNum,
                    ShipmentInformation = shipment.Invoke(o.ShipmentInformation),
                    PurchaseOrderNumber = o.PurchaseOrderNumber
                },
                o => new InventoryShipmentOrderBillOfLadingReturn
                {
                    TotalQuantity = o.PickedInventory.Items.Any() ? o.PickedInventory.Items.Sum(i => i.Quantity) : 0,
                    PalletWeight = o.PickedInventory.Items.Any() ? o.PickedInventory.Items.Sum(i => i.Quantity * (i.PackagingProduct.PalletWeight)) : 0,
                    TotalGrossWeight = o.PickedInventory.Items.Any() ? o.PickedInventory.Items.Sum(i => i.Quantity * (i.PackagingProduct.Weight + i.PackagingProduct.PackagingWeight)) : 0,
                    TotalNetWeight = o.PickedInventory.Items.Any() ? o.PickedInventory.Items.Sum(i => i.Quantity * i.PackagingProduct.Weight) : 0,
                },
                { item, p => Projector <InventoryShipmentOrder> .To(o => new InventoryShipmentOrderBillOfLadingReturn
                    {
                        Items = o.PickedInventory.Items.Select(i => p.Invoke(i))
                    }) }
            });
        }
        internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderPackingListReturn> > > SplitSelectPackingList()
        {
            var key  = SelectKey();
            var item = PickedInventoryItemProjectors.SplitSelectPackingListItem();

            return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderPackingListReturn>
            {
                o => new InventoryShipmentOrderPackingListReturn
                {
                    OrderType = o.OrderType,
                    InventoryShipmentOrderKeyReturn = key.Invoke(o),
                    MovementNumber = o.MoveNum,
                    ShipmentDate = o.ShipmentInformation.ShipmentDate,
                    PurchaseOrderNumber = o.PurchaseOrderNumber,
                    ShipFromOrSoldToShippingLabel = o.ShipmentInformation.ShipFrom,
                    ShipToShippingLabel = o.ShipmentInformation.ShipTo
                },
                o => new InventoryShipmentOrderPackingListReturn
                {
                    TotalQuantity = o.PickedInventory.Items.Any() ? o.PickedInventory.Items.Sum(i => i.Quantity) : 0,
                    PalletQuantity = o.ShipmentInformation.PalletQuantity,
                    PalletWeight = o.ShipmentInformation.PalletWeight,
                    ItemSumPalletWeight = o.PickedInventory.Items.Any() ? o.PickedInventory.Items.Sum(i => i.Quantity * (i.PackagingProduct.PalletWeight)) : 0,
                    TotalGrossWeight = o.PickedInventory.Items.Any() ? o.PickedInventory.Items.Sum(i => i.Quantity * (i.PackagingProduct.Weight + i.PackagingProduct.PackagingWeight)) : 0,
                    TotalNetWeight = o.PickedInventory.Items.Any() ? o.PickedInventory.Items.Sum(i => i.Quantity * i.PackagingProduct.Weight) : 0,
                },
                { item, p => Projector <InventoryShipmentOrder> .To(o => new InventoryShipmentOrderPackingListReturn
                    {
                        Items = o.PickedInventory.Items.Select(i => p.Invoke(i))
                    }) }
            });
        }