internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderDetailBaseReturn> > > SplitSelectInventoryShipmentOrderDetailBase(IInventoryUnitOfWork inventoryUnitOfWork, DateTime currentDate, InventoryOrderEnum inventoryOrder, ISalesUnitOfWork salesUnitOfWork = null)
        {
            if (inventoryUnitOfWork == null)
            {
                throw new ArgumentNullException("inventoryUnitOfWork");
            }

            var pickedInventory = PickedInventoryProjectors.SplitSelectDetail(inventoryUnitOfWork, currentDate, salesUnitOfWork);
            var shipmentInfo    = ShipmentInformationProjectors.SelectDetail(inventoryOrder);

            return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderDetailBaseReturn>
            {
                SelectShipmentOrderBase().Merge(o => new InventoryShipmentOrderDetailBaseReturn
                {
                    PurchaseOrderNumber = o.PurchaseOrderNumber,
                    DateOrderReceived = o.DateReceived,
                    OrderRequestedBy = o.RequestedBy,
                    OrderTakenBy = o.TakenBy
                }),
                { pickedInventory, s => i => new InventoryShipmentOrderDetailBaseReturn
                  {
                      PickedInventory = s.Invoke(i.PickedInventory)
                  } },
                i => new InventoryShipmentOrderDetailBaseReturn
                {
                    Shipment = shipmentInfo.Invoke(i.ShipmentInformation)
                }
            });
        }
예제 #2
0
        internal static Expression <Func <IntraWarehouseOrder, IntraWarehouseOrderReturn> > SelectSummary()
        {
            var pickedInventory = PickedInventoryProjectors.SelectSummary();

            return(SelectBase().Merge(o => new IntraWarehouseOrderReturn
            {
                PickedInventorySummary = pickedInventory.Invoke(o.PickedInventory)
            }));
        }
        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)
            }));
        }
예제 #4
0
        internal static IEnumerable <Expression <Func <ProductionBatch, ProductionBatchDetailReturn> > > SplitSelectDetail(Data.Interfaces.UnitsOfWork.IProductionUnitOfWork productionUnitOfWork, DateTime currentDate)
        {
            if (productionUnitOfWork == null)
            {
                throw new ArgumentNullException("productionUnitOfWork");
            }

            var packScheduleKey      = PackScheduleProjectors.SelectKey();
            var productKey           = ProductProjectors.SelectProductKey();
            var chileProduct         = ProductProjectors.SelectChileProductWithIngredients();
            var workType             = WorkTypeProjectors.Select();
            var notebook             = NotebookProjectors.Select();
            var pickedChile          = PickedInventoryProjectors.SelectPickedChileInventoryItem(productionUnitOfWork);
            var pickedPackaging      = PickedInventoryProjectors.SelectPickedPackagingInventoryItem(productionUnitOfWork);
            var pickedAdditve        = PickedInventoryProjectors.SelectPickedAdditiveInventoryItem(productionUnitOfWork);
            var pickedItemProjectors = PickedInventoryItemProjectors.SplitSelect(productionUnitOfWork, currentDate);

            return(new[]
            {
                SelectSummary().Merge(b => new ProductionBatchDetailReturn
                {
                    HasProductionBeenCompleted = b.ProductionHasBeenCompleted,
                }).ExpandAll(),
                Projector <ProductionBatch> .To(b => new ProductionBatchDetailReturn
                {
                    PackScheduleKeyReturn = packScheduleKey.Invoke(b.PackSchedule),
                    ChileProductKeyReturn = productKey.Invoke(b.Production.ResultingChileLot.ChileProduct.Product),
                    ChileProductName = b.Production.ResultingChileLot.ChileProduct.Product.Name,
                    ChileProductWithIngredients = chileProduct.Invoke(b.Production.ResultingChileLot.ChileProduct)
                }),
                Projector <ProductionBatch> .To(b => new ProductionBatchDetailReturn
                {
                    WorkType = workType.Invoke(b.PackSchedule.WorkType),
                    InstructionsNotebook = notebook.Invoke(b.InstructionNotebook)
                }),
                Projector <ProductionBatch> .To(b => new ProductionBatchDetailReturn
                {
                    PickedChileItems = pickedChile.Invoke(b.Production.PickedInventory),
                    PickedPackagingItems = pickedPackaging.Invoke(b.Production.PickedInventory),
                    PickedAdditiveItems = pickedAdditve.Invoke(b.Production.PickedInventory)
                })
            }.ToAppendedList(pickedItemProjectors.Select(p => Projector <ProductionBatch> .To(b => new ProductionBatchDetailReturn
            {
                PickedInventoryItems = b.Production.PickedInventory.Items.Select(i => p.Invoke(i))
            }))));
        }
예제 #5
0
        internal static IEnumerable <Expression <Func <IntraWarehouseOrder, IntraWarehouseOrderReturn> > > SplitSelectDetail(IInventoryUnitOfWork inventoryUnitOfWork, DateTime currentDate)
        {
            if (inventoryUnitOfWork == null)
            {
                throw new ArgumentNullException("inventoryUnitOfWork");
            }

            var pickedInventory = PickedInventoryProjectors.SplitSelectDetail(inventoryUnitOfWork, currentDate);

            return(new Projectors <IntraWarehouseOrder, IntraWarehouseOrderReturn>
            {
                SelectBase().Merge(o => new IntraWarehouseOrderReturn
                {
                    MovementDate = o.MovementDate
                }),
                {
                    pickedInventory, s => o => new IntraWarehouseOrderReturn
                    {
                        PickedInventoryDetail = s.Invoke(o.PickedInventory),
                    }
                }
            });
        }