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)) } }); }
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, 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) } }); }
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)) })); }
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) })); }
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() } }); }
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, } }); }