internal static Expression <Func <InventoryShipmentOrder, InventoryShipmenOrderSummaryReturn> > SelectInventoryShipmentOrderSummary()
        {
            var pickOrder       = InventoryPickOrderProjectors.SelectSummary();
            var pickedInventory = PickedInventoryProjectors.SelectSummary();
            var shipmentInfo    = ShipmentInformationProjectors.SelectSummary();

            return(SelectShipmentOrderBase().Merge(i => new InventoryShipmenOrderSummaryReturn
            {
                PickOrder = pickOrder.Invoke(i.InventoryPickOrder),
                PickedInventory = pickedInventory.Invoke(i.PickedInventory),
                Shipment = shipmentInfo.Invoke(i.ShipmentInformation)
            }));
        }
        private static IEnumerable <Expression <Func <SalesOrder, CustomerPickOrderReturn> > > SplitSelectPickOrderDetail()
        {
            var key = InventoryPickOrderProjectors.SelectKey();

            return(new Projectors <SalesOrder, CustomerPickOrderReturn>
            {
                o => new CustomerPickOrderReturn
                {
                    InventoryPickOrderKeyReturn = key.Invoke(o.InventoryShipmentOrder.InventoryPickOrder)
                },
                { SalesOrderItemProjectors.SplitSelect(), p => o => new CustomerPickOrderReturn
                  {
                      PickOrderItems = o.SalesOrderItems.Select(i => p.Invoke(i))
                  } }
            });
        }
        internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderDetailReturn> > > SplitSelectInventoryShipmentOrderDetail(IInventoryUnitOfWork inventoryUnitOfWork, DateTime currentDate, InventoryOrderEnum inventoryOrder)
        {
            if (inventoryUnitOfWork == null)
            {
                throw new ArgumentNullException("inventoryUnitOfWork");
            }

            var pickOrder = InventoryPickOrderProjectors.SplitSelectDetails();

            return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderDetailReturn>
            {
                { SplitSelectInventoryShipmentOrderDetailBase(inventoryUnitOfWork, currentDate, inventoryOrder), p => p.Translate().To <InventoryShipmentOrderDetailReturn>() },
                { pickOrder, s => i => new InventoryShipmentOrderDetailReturn
                  {
                      PickOrder = s.Invoke(i.InventoryPickOrder),
                  } }
            });
        }