コード例 #1
0
        internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InventoryShipmentOrderPickSheetReturn> > > SplitSelectPickSheet()
        {
            var key           = SelectKey();
            var item          = PickedInventoryItemProjectors.SplitSelectPickSheetItem().Merge(); //Necessary to avoid likely EF-Split bug in subsequent group selection. -RI 2015/04/15
            var customerNotes = CustomerProjectors.SelectNotes();
            var shipment      = ShipmentInformationProjectors.SelectShipmentInformation();

            return(new Projectors <InventoryShipmentOrder, InventoryShipmentOrderPickSheetReturn>
            {
                o => new InventoryShipmentOrderPickSheetReturn
                {
                    OrderType = o.OrderType,
                    InventoryShipmentOrderKeyReturn = key.Invoke(o),
                    MovementNumber = o.MoveNum,
                    PurchaseOrderNumber = o.PurchaseOrderNumber,
                    ShipmentInformation = shipment.Invoke(o.ShipmentInformation)
                },
                o => new InventoryShipmentOrderPickSheetReturn
                {
                    CustomerNotes = o.InventoryPickOrder.Items.Select(i => i.Customer).Distinct()
                                    .Where(c => c != null && c.Notes.Any())
                                    .Select(c => customerNotes.Invoke(c))
                },
                o => new InventoryShipmentOrderPickSheetReturn
                {
                    Items = o.PickedInventory.Items.Select(i => item.Invoke(i))
                }
            });
        }
コード例 #2
0
        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))
                    }) }
            });
        }
コード例 #3
0
        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)
                }
            });
        }
コード例 #4
0
        public static Expression <Func <SalesQuote, SalesQuoteDetailReturn> > SelectDetail()
        {
            var key      = SelectKey();
            var shipment = ShipmentInformationProjectors.SelectDetail(InventoryOrderEnum.Unknown);
            var facility = FacilityProjectors.Select(false, false);
            var company  = CompanyProjectors.SelectSummary();
            var item     = SalesQuoteItemProjectors.Select();

            return(Projector <SalesQuote> .To(q => new SalesQuoteDetailReturn
            {
                SalesQuoteKeyReturn = key.Invoke(q),
                QuoteNumber = q.QuoteNum,
                QuoteDate = q.QuoteDate,
                DateReceived = q.DateReceived,
                CalledBy = q.CalledBy,
                TakenBy = q.TakenBy,
                PaymentTerms = q.PaymentTerms,
                ShipFromReplace = q.SoldTo,
                Shipment = shipment.Invoke(q.ShipmentInformation),

                SourceFacility = new[] { q.SourceFacility }.Where(f => f != null).Select(f => facility.Invoke(f)).FirstOrDefault(),
                Customer = new[] { q.Customer }.Where(c => c != null).Select(c => company.Invoke(c.Company)).FirstOrDefault(),
                Broker = new[] { q.Broker }.Where(b => b != null).Select(b => company.Invoke(b)).FirstOrDefault(),
                Items = q.Items.Select(i => item.Invoke(i))
            }));
        }
コード例 #5
0
        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)
            }));
        }
コード例 #6
0
        internal static IEnumerable <Expression <Func <InventoryShipmentOrder, InternalOrderAcknowledgementReturn> > > SplitSelectAcknowledgement(IQueryable <SalesOrder> salesOrders)
        {
            var key           = SelectKey();
            var shipment      = ShipmentInformationProjectors.SelectShipmentInformation();
            var pickOrderItem = InventoryPickOrderItemProjectors.SplitSelect();
            var customerNotes = CustomerProjectors.SelectNotes();
            var salesOrder    = SalesOrderProjectors.SelectWarehouseAcknowlegement();

            return(new Projectors <InventoryShipmentOrder, InternalOrderAcknowledgementReturn>
            {
                o => new InternalOrderAcknowledgementReturn
                {
                    InventoryShipmentOrderKeyReturn = key.Invoke(o),
                    MovementNumber = o.MoveNum,
                    OrderType = o.OrderType,
                    PurchaseOrderNumber = o.PurchaseOrderNumber,
                    DateReceived = o.DateReceived,
                    RequestedBy = o.RequestedBy,
                    TakenBy = o.TakenBy,
                    OriginFacility = o.SourceFacility.Name
                },
                o => new InternalOrderAcknowledgementReturn
                {
                    ShipmentInformation = shipment.Invoke(o.ShipmentInformation)
                },
                { pickOrderItem, p => Projector <InventoryShipmentOrder> .To(o => new InternalOrderAcknowledgementReturn
                    {
                        PickOrderItems = o.InventoryPickOrder.Items.Select(i => p.Invoke(i))
                    }) },
                o => new InternalOrderAcknowledgementReturn
                {
                    TotalQuantity = o.InventoryPickOrder.Items.Select(i => i.Quantity).DefaultIfEmpty(0).Sum(),
                    NetWeight = o.InventoryPickOrder.Items.Select(i => i.Quantity * i.PackagingProduct.Weight).DefaultIfEmpty(0).Sum(),
                    TotalGrossWeight = o.InventoryPickOrder.Items.Select(i => i.Quantity * (i.PackagingProduct.Weight + i.PackagingProduct.PackagingWeight)).DefaultIfEmpty(0).Sum(),
                    PalletWeight = o.InventoryPickOrder.Items.Select(i => i.Quantity * (i.PackagingProduct.PalletWeight)).DefaultIfEmpty(0).Sum(),
                    EstimatedShippingWeight = o.InventoryPickOrder.Items.Select(i => i.Quantity * (i.PackagingProduct.Weight + i.PackagingProduct.PackagingWeight + i.PackagingProduct.PalletWeight)).DefaultIfEmpty(0).Sum()
                },
                o => new InternalOrderAcknowledgementReturn
                {
                    CustomerNotes = o.InventoryPickOrder.Items.Select(i => i.Customer).Distinct()
                                    .Where(c => c != null && c.Notes.Any())
                                    .Select(c => customerNotes.Invoke(c))
                },
                o => new InternalOrderAcknowledgementReturn
                {
                    SalesOrder = salesOrders.Where(c => c.DateCreated == o.DateCreated && c.Sequence == o.Sequence)
                                 .Select(c => salesOrder.Invoke(c)).FirstOrDefault()
                }
            });
        }
コード例 #7
0
        internal static IEnumerable <Expression <Func <SalesOrder, SalesOrderAcknowledgementReturn> > > SplitSelectAcknowledgement()
        {
            var key           = SelectKey();
            var shipment      = ShipmentInformationProjectors.SelectShipmentInformation();
            var pickOrderItem = SalesOrderItemProjectors.SplitSelect();

            return(new Projectors <SalesOrder, SalesOrderAcknowledgementReturn>
            {
                o => new SalesOrderAcknowledgementReturn
                {
                    SalesOrderKeyReturn = key.Invoke(o),
                    MovementNumber = o.InventoryShipmentOrder.MoveNum,

                    PurchaseOrderNumber = o.InventoryShipmentOrder.PurchaseOrderNumber,
                    DateReceived = o.InventoryShipmentOrder.DateReceived,
                    RequestedBy = o.InventoryShipmentOrder.RequestedBy,
                    TakenBy = o.InventoryShipmentOrder.TakenBy,
                    PaymentTerms = o.PaymentTerms,
                    Broker = new[] { o.Broker }.Select(b => b.Name).FirstOrDefault(),
                    SoldToShippingLabel = o.SoldTo,
                    OriginFacility = o.InventoryShipmentOrder.SourceFacility.Name
                },
                o => new SalesOrderAcknowledgementReturn
                {
                    ShipmentInformation = shipment.Invoke(o.InventoryShipmentOrder.ShipmentInformation)
                },
                { pickOrderItem, p => Projector <SalesOrder> .To(o => new SalesOrderAcknowledgementReturn
                    {
                        PickOrderItems = o.SalesOrderItems.Select(i => p.Invoke(i))
                    }) },
                o => new SalesOrderAcknowledgementReturn
                {
                    TotalQuantity = o.InventoryShipmentOrder.InventoryPickOrder.Items.Any() ? o.InventoryShipmentOrder.InventoryPickOrder.Items.Sum(i => i.Quantity) : 0,
                    NetWeight = o.InventoryShipmentOrder.InventoryPickOrder.Items.Any() ? o.InventoryShipmentOrder.InventoryPickOrder.Items.Sum(i => i.Quantity * i.PackagingProduct.Weight) : 0,
                    TotalGrossWeight = o.InventoryShipmentOrder.InventoryPickOrder.Items.Any() ? o.InventoryShipmentOrder.InventoryPickOrder.Items.Sum(i => i.Quantity * (i.PackagingProduct.Weight + i.PackagingProduct.PackagingWeight)) : 0,
                    PalletWeight = o.InventoryShipmentOrder.InventoryPickOrder.Items.Any() ? o.InventoryShipmentOrder.InventoryPickOrder.Items.Sum(i => i.Quantity * (i.PackagingProduct.PalletWeight)) : 0,
                    EstimatedShippingWeight = o.InventoryShipmentOrder.InventoryPickOrder.Items.Any() ? o.InventoryShipmentOrder.InventoryPickOrder.Items.Sum(i => i.Quantity * (i.PackagingProduct.Weight + i.PackagingProduct.PackagingWeight + i.PackagingProduct.PalletWeight)) : 0,
                }
            });
        }