internal static Expression <Func <InventoryTransaction, InventoryTransactionReturn> > Select(ILotUnitOfWork lotUnitOfWork) { var lotKey = LotProjectors.SelectLotKey <Lot>(); var product = LotProjectors.SelectDerivedProduct(); var location = LocationProjectors.SelectLocation(); var treatment = InventoryTreatmentProjectors.SelectInventoryTreatment(); var packaging = ProductProjectors.SelectPackagingProduct(); return(Projector <InventoryTransaction> .To(t => new InventoryTransactionReturn { EmployeeName = t.Employee.UserName, TimeStamp = t.TimeStamp, TransactionType = t.TransactionType, SourceReference = t.SourceReference, Quantity = t.Quantity, Weight = t.Quantity * t.PackagingProduct.Weight, ToteKey = t.ToteKey, SourceLotVendorName = new [] { t.SourceLot.Vendor }.Where(v => v != null).Select(v => v.Name).FirstOrDefault(), SourceLotPurchaseOrderNumber = t.SourceLot.PurchaseOrderNumber, SourceLotShipperNumber = t.SourceLot.ShipperNumber, SourceLotPackagingReceived = packaging.Invoke(t.SourceLot.ReceivedPackaging), Product = product.Invoke(t.SourceLot), Packaging = packaging.Invoke(t.PackagingProduct), Location = location.Invoke(t.Location), Treatment = treatment.Invoke(t.Treatment), SourceLotKeyReturn = lotKey.Invoke(t.SourceLot), DestinationLotKeyReturn = new[] { t.DestinationLot }.Where(l => l != null).Select(l => lotKey.Invoke(l)).FirstOrDefault() })); }
internal static Expression <Func <PickedInventoryItem, ProductionBatch, PickedForBatchTransactionReturn> > SelectTransaction(ILotUnitOfWork lotUnitOfWork) { var lotKey = LotProjectors.SelectLotKey <Lot>(); var batchLotKey = LotProjectors.SelectLotKey <ProductionBatch>(); var packScheduleKey = PackScheduleProjectors.SelectKey(); var product = LotProjectors.SelectDerivedProduct(); var location = LocationProjectors.SelectLocation(); var treatment = InventoryTreatmentProjectors.SelectInventoryTreatment(); var packaging = ProductProjectors.SelectPackagingProduct(); return(Projector <PickedInventoryItem, ProductionBatch> .To((i, b) => new PickedForBatchTransactionReturn { EmployeeName = i.PickedInventory.Employee.UserName, TimeStamp = i.PickedInventory.TimeStamp, TransactionType = InventoryTransactionType.PickedForBatch, Quantity = -i.Quantity, Weight = -i.Quantity * i.PackagingProduct.Weight, ToteKey = i.ToteKey, SourceLotVendorName = new[] { i.Lot.Vendor }.Where(v => v != null).Select(v => v.Name).FirstOrDefault(), SourceLotPurchaseOrderNumber = i.Lot.PurchaseOrderNumber, SourceLotShipperNumber = i.Lot.ShipperNumber, Product = product.Invoke(i.Lot), Packaging = packaging.Invoke(i.PackagingProduct), Location = location.Invoke(i.FromLocation), Treatment = treatment.Invoke(i.Treatment), SourceLotKeyReturn = lotKey.Invoke(i.Lot), DestinationLotKeyReturn = batchLotKey.Invoke(b), PackScheduleKeyReturn = packScheduleKey.Invoke(b.PackSchedule) })); }
internal static Expression <Func <PickedInventoryItem, PickedInventoryItemReturn> > SelectMillAndWetdownPickedItem(ILotUnitOfWork lotUnitOfWork) { if (lotUnitOfWork == null) { throw new ArgumentNullException("lotUnitOfWork"); } var pickedInventoryItemKey = SelectKey(); var inventoryKey = SelectInventoryKey(); var lotKey = LotProjectors.SelectLotKey <Lot>(); var lotProduct = LotProjectors.SelectDerivedProduct(); var packagingProduct = ProductProjectors.SelectPackagingProduct(); var location = LocationProjectors.SelectLocation(); return(i => new PickedInventoryItemReturn { PickedInventoryItemKeyReturn = pickedInventoryItemKey.Invoke(i), InventoryKeyReturn = inventoryKey.Invoke(i), LotKeyReturn = lotKey.Invoke(i.Lot), LotDateCreated = i.LotDateCreated, ToteKey = i.ToteKey, QuantityPicked = i.Quantity, CustomerLotCode = i.CustomerLotCode, CustomerProductCode = i.CustomerProductCode, TotalWeightPicked = (int)(i.PackagingProduct.Weight * i.Quantity), LotProduct = lotProduct.Invoke(i.Lot), PackagingProduct = packagingProduct.Invoke(i.PackagingProduct), Location = location.Invoke(i.FromLocation) }); }
internal static IEnumerable <Expression <Func <PickedInventoryItem, InventoryShipmentOrderItemAnalysisReturn> > > SplitSelectCOAItem() { var lotKey = LotProjectors.SelectLotKey <Lot>(); var loBac = LotProjectors.SelectLoBac(); var lotProduct = LotProjectors.SelectDerivedProduct(); var treatment = InventoryTreatmentProjectors.SelectInventoryTreatment(); var attribute = LotAttributeProjectors.Select(); return(new Projectors <PickedInventoryItem, InventoryShipmentOrderItemAnalysisReturn> { i => new InventoryShipmentOrderItemAnalysisReturn { LotKeyReturn = lotKey.Invoke(i.Lot), TreatmentReturn = treatment.Invoke(i.Treatment), Attributes = i.Lot.Attributes.Select(a => attribute.Invoke(a)), Notes = i.Lot.Notes }, i => new InventoryShipmentOrderItemAnalysisReturn { ProductionDate = new [] { i.Lot.ChileLot }.Where(c => c != null && c.Production != null && c.Production.Results != null) .Select(c => (DateTime?)c.Production.Results.ProductionEnd).FirstOrDefault(), }, i => new InventoryShipmentOrderItemAnalysisReturn { LoBac = loBac.Invoke(i.Lot), LotProduct = lotProduct.Invoke(i.Lot), } }); }
internal static IEnumerable <Expression <Func <PickedInventoryItem, PickSheetItemReturn> > > SplitSelectPickSheetItem() { var key = SelectKey(); var lotKey = LotProjectors.SelectLotKey <Lot>(); var locationKey = LocationProjectors.SelectLocationKey(); var loBac = LotProjectors.SelectLoBac(); var lotProduct = LotProjectors.SelectDerivedProduct(); var packagingProduct = ProductProjectors.SelectPackagingProduct(); var treatment = InventoryTreatmentProjectors.SelectInventoryTreatment(); return(new Projectors <PickedInventoryItem, PickSheetItemReturn> { i => new PickSheetItemReturn { LocationKeyReturn = locationKey.Invoke(i.FromLocation), Description = i.FromLocation.Description, PickedInventoryItemKeyReturn = key.Invoke(i), LotKeyReturn = lotKey.Invoke(i.Lot), Quantity = i.Quantity, LoBac = loBac.Invoke(i.Lot), CustomerProductCode = i.CustomerProductCode }, i => new PickSheetItemReturn { LotProduct = lotProduct.Invoke(i.Lot), InventoryTreatment = treatment.Invoke(i.Treatment) }, i => new PickSheetItemReturn { PackagingProduct = packagingProduct.Invoke(i.PackagingProduct), NetWeight = i.Quantity * i.PackagingProduct.Weight } }); }
public static Expression <Func <Facility, InventoryCycleCountReturn> > SelectInventoryCycleCount(string groupName) { var lotKey = LotProjectors.SelectLotKey <Lot>(); var lotProduct = LotProjectors.SelectDerivedProduct(); var packaging = ProductProjectors.SelectPackagingProduct(); var treatment = InventoryTreatmentProjectors.SelectInventoryTreatment(); return(Projector <Facility> .To(f => new InventoryCycleCountReturn { FacilityName = f.Name, GroupName = groupName, LocationsSelect = f.Locations .Where(l => l.Description.Contains(groupName)) .Select(l => new InventoryCycleCountLocationSelect { Location = l.Description, InventorySelect = l.Inventory.Select(i => new InventoryCycleCountInventorySelect { LotKeyReturn = lotKey.Invoke(i.Lot), ProductionDate = new [] { i.Lot.ChileLot }.Where(c => c != null && c.Production != null && c.Production.Results != null) .Select(c => c.Production.Results.ProductionEnd).DefaultIfEmpty(i.LotDateCreated).FirstOrDefault(), ProductSelect = lotProduct.Invoke(i.Lot), PackagingSelect = packaging.Invoke(i.PackagingProduct), TreatmentSelect = treatment.Invoke(i.Treatment), Quantity = i.Quantity, Weight = i.Quantity * i.PackagingProduct.Weight }).Concat(l.PickedInventoryItems.Where(p => !p.PickedInventory.Archived).Select(p => new InventoryCycleCountInventorySelect { LotKeyReturn = lotKey.Invoke(p.Lot), ProductionDate = new[] { p.Lot.ChileLot }.Where(c => c != null && c.Production != null && c.Production.Results != null) .Select(c => c.Production.Results.ProductionEnd).DefaultIfEmpty(p.LotDateCreated).FirstOrDefault(), ProductSelect = lotProduct.Invoke(p.Lot), PackagingSelect = packaging.Invoke(p.PackagingProduct), TreatmentSelect = treatment.Invoke(p.Treatment), Quantity = p.Quantity, Weight = p.Quantity *p.PackagingProduct.Weight })) }) })); }
internal static Expression <Func <InventoryAdjustmentItem, InventoryAdjustmentItemReturn> > Select(ILotUnitOfWork lotUnitOfWork) { var key = SelectKey(); var inventoryProduct = LotProjectors.SelectDerivedProduct(); var lotKey = LotProjectors.SelectLotKey <Lot>(); var warehouseLocation = LocationProjectors.SelectLocation(); var packagingProduct = ProductProjectors.SelectPackagingProduct(); var treatment = InventoryTreatmentProjectors.SelectInventoryTreatment(); return(i => new InventoryAdjustmentItemReturn { InventoryAdjustmentItemKeyReturn = key.Invoke(i), AdjustmentQuantity = i.QuantityAdjustment, InventoryProduct = inventoryProduct.Invoke(i.Lot), LotKeyReturn = lotKey.Invoke(i.Lot), Location = warehouseLocation.Invoke(i.Location), PackagingProduct = packagingProduct.Invoke(i.PackagingProduct), InventoryTreatment = treatment.Invoke(i.Treatment), ToteKey = i.ToteKey }); }