public void Creates_new_Inventory_record_as_expected_if_Adjustment_quantity_is_positive_and_Inventory_record_does_not_previously_exist() { //Arrange const int adjustmentQuantity = 12; const string toteKey = ""; var userToken = TestUser.UserName; var lotKey = new LotKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <Lot>(l => l.EmptyLot())); var packagingProductKey = new PackagingProductKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <PackagingProduct>()); var warehouseLocationKey = new LocationKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <Location>()); var treatmentKey = new InventoryTreatmentKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <InventoryTreatment>()); var inventoryKey = new InventoryKey(lotKey, packagingProductKey, warehouseLocationKey, treatmentKey, toteKey); //Act var result = Service.CreateInventoryAdjustment(new Params { UserToken = userToken, InventoryAdjustments = new List <IInventoryAdjustmentParameters> { new Params.ParamsItem(inventoryKey) { Adjustment = adjustmentQuantity } } }); //Assert result.AssertSuccess(); Assert.AreEqual(adjustmentQuantity, RVCUnitOfWork.InventoryRepository.FindByKey(inventoryKey).Quantity); }
public void Returns_non_successful_result_if_any_Quantity_is_less_than_or_equal_to_0() { //Arrange const int quantity = 0; var orderKey = CreateKeyFromOrder(TestHelper.CreateObjectGraphAndInsertIntoDatabase <TOrder>(InitializeOrder, o => o.InventoryPickOrder.Items = new List <InventoryPickOrderItem> { TestHelper.CreateObjectGraph <InventoryPickOrderItem>(i => i.InventoryPickOrder = null), TestHelper.CreateObjectGraph <InventoryPickOrderItem>(i => i.InventoryPickOrder = null), TestHelper.CreateObjectGraph <InventoryPickOrderItem>(i => i.InventoryPickOrder = null) })); var chileProductKey = new ChileProductKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileProduct>()).KeyValue; var packagingProductKey = new PackagingProductKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <PackagingProduct>()).KeyValue; var treatmentKey = new InventoryTreatmentKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <InventoryTreatment>()).KeyValue; Assert.IsNotEmpty(RVCUnitOfWork.InventoryPickOrderItemRepository.All()); //Act var result = GetResult(new SetInventoryPickOrderParameters(orderKey.KeyValue) { UserToken = TestUser.UserName, InventoryPickOrderItems = new List <ISetInventoryPickOrderItemParameters> { new SetInventoryPickOrderItemParameters { ProductKey = chileProductKey, PackagingKey = packagingProductKey, TreatmentKey = treatmentKey, Quantity = quantity } } }); //Assert result.AssertNotSuccess(); }
public void Will_set_InventoryPickOrderItems_in_database_as_expected() { //Arrange var order = TestHelper.CreateObjectGraphAndInsertIntoDatabase <TOrder>(InitializeOrder, o => GetPickOrderFromOrder(o).Items = null); var orderKey = CreateKeyFromOrder(order); TestHelper.CreateObjectGraphAndInsertIntoDatabase <InventoryPickOrderItem>(i => i.InventoryPickOrder = null, i => ConstrainItemToOrder(i, GetPickOrderFromOrder(order))); var chileProductKey0 = new ChileProductKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileProduct>()).KeyValue; var packagingProductKey0 = new PackagingProductKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <PackagingProduct>()).KeyValue; var treatmentKey0 = new InventoryTreatmentKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <InventoryTreatment>()).KeyValue; const int expectedQuantity0 = 10; var chileProductKey1 = new ChileProductKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <ChileProduct>()).KeyValue; var packagingProductKey1 = new PackagingProductKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <PackagingProduct>()).KeyValue; var treatmentKey1 = new InventoryTreatmentKey(TestHelper.CreateObjectGraphAndInsertIntoDatabase <InventoryTreatment>()).KeyValue; const int expectedQuantity1 = 20; //Act var testParams = new SetInventoryPickOrderParameters(orderKey.KeyValue) { UserToken = TestUser.UserName, InventoryPickOrderItems = new List <ISetInventoryPickOrderItemParameters> { new SetInventoryPickOrderItemParameters { ProductKey = chileProductKey0, PackagingKey = packagingProductKey0, TreatmentKey = treatmentKey0, Quantity = expectedQuantity0 }, new SetInventoryPickOrderItemParameters { ProductKey = chileProductKey1, PackagingKey = packagingProductKey1, TreatmentKey = treatmentKey1, Quantity = expectedQuantity1 } } }; var result = GetResult(testParams); //Assert result.AssertSuccess(); var items = RVCUnitOfWork.InventoryPickOrderRepository.Filter(i => true, i => i.Items).Single().Items.ToList(); Assert.AreEqual(testParams.InventoryPickOrderItems.Count(), items.Count); testParams.InventoryPickOrderItems.ForEach(i => items.Single(r => i.ProductKey == new ProductKey((IProductKey)r).KeyValue&& i.PackagingKey == new PackagingProductKey(r).KeyValue&& i.TreatmentKey == new InventoryTreatmentKey(r).KeyValue&& i.Quantity == r.Quantity)); }
internal static Expression <Func <InventoryTransaction, bool> > ByInventoryKey(IInventoryKey inventoryKey) { var lot = new LotKey(inventoryKey).FindByPredicate; var location = new LocationKey(inventoryKey).FindByPredicate; var packaging = new PackagingProductKey(inventoryKey).FindByPredicate; var treatment = new InventoryTreatmentKey(inventoryKey).FindByPredicate; return(Projector <InventoryTransaction> .To(i => lot.Invoke(i.SourceLot) && location.Invoke(i.Location) && packaging.Invoke(i.PackagingProduct) && treatment.Invoke(i.Treatment) && i.ToteKey == inventoryKey.InventoryKey_ToteKey)); }
public CreateTreatmentOrderConductorParameters(TParams parameters) : base(parameters) { if (Result.Success) { if (parameters.TreatmentKey != null) { var treatmentKeyResult = KeyParserHelper.ParseResult <IInventoryTreatmentKey>(parameters.TreatmentKey); if (!treatmentKeyResult.Success) { Result = treatmentKeyResult; return; } TreatmentKey = treatmentKeyResult.ResultingObject.ToInventoryTreatmentKey(); } } }
internal void Initialize() { var pickedItems = PickedItemSelect.GroupBy(i => new { productKey = i.LotSelect.ProductKey, packagingKey = new PackagingProductKey(i.Item), treatmentKey = new InventoryTreatmentKey(i.Item) }, i => i.Item.Quantity) .ToDictionary(g => g.Key, g => g.Sum()); foreach (var item in Items.Cast <PendingPickOrderItem>()) { var productKey = new ProductKey((IProductKey)item.DataModel); var packagingKey = new PackagingProductKey(item.DataModel); var treatmentKey = new InventoryTreatmentKey(item.DataModel); var noMatch = false; while (item.QuantityPicked < item.QuantityOrdered && !noMatch) { var key = pickedItems.Keys.FirstOrDefault(k => k.productKey.Equals(productKey) && k.packagingKey.Equals(packagingKey) && k.treatmentKey.Equals(treatmentKey)); if (key == null) { noMatch = true; } else { var pick = Math.Min(pickedItems[key], item.QuantityOrdered - item.QuantityPicked); item.QuantityPicked += pick; pickedItems[key] -= pick; if (pickedItems[key] == 0) { pickedItems.Remove(key); } } } } }