public void GivenSalesOrderOnHold_WhenOrderIsContinued_ThenOrderIsSelectedForShipment() { var assessable = new VatRegimes(this.DatabaseSession).Assessable; var vatRate0 = new VatRateBuilder(this.DatabaseSession).WithRate(0).Build(); assessable.VatRate = vatRate0; var good = new GoodBuilder(this.DatabaseSession) .WithSku("10101") .WithVatRate(vatRate0) .WithName("good1") .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .Build(); var inventory = new NonSerializedInventoryItemBuilder(this.DatabaseSession).WithGood(good).Build(); var mechelen = new CityBuilder(this.DatabaseSession).WithName("Mechelen").Build(); var mechelenAddress = new PostalAddressBuilder(this.DatabaseSession).WithGeographicBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var shipToMechelen = new PartyContactMechanismBuilder(this.DatabaseSession) .WithContactMechanism(mechelenAddress) .WithContactPurpose(new ContactMechanismPurposes(this.DatabaseSession).ShippingAddress) .WithUseAsDefault(true) .Build(); var customer = new PersonBuilder(this.DatabaseSession).WithLastName("customer").WithPartyContactMechanism(shipToMechelen).Build(); var internalOrganisation = Singleton.Instance(this.DatabaseSession).DefaultInternalOrganisation; new CustomerRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer).WithInternalOrganisation(internalOrganisation).Build(); this.DatabaseSession.Derive(true); var order = new SalesOrderBuilder(this.DatabaseSession) .WithBillToCustomer(customer) .WithShipToCustomer(customer) .WithVatRegime(assessable) .WithShipToAddress(new PostalAddressBuilder(this.DatabaseSession).WithGeographicBoundary(mechelen).WithAddress1("Haverwerf 15").Build()) .Build(); var item = new SalesOrderItemBuilder(this.DatabaseSession) .WithProduct(good) .WithQuantityOrdered(10) .WithActualUnitPrice(5) .Build(); order.AddSalesOrderItem(item); this.DatabaseSession.Derive(true); order.Confirm(); this.DatabaseSession.Derive(true); order.Hold(); this.DatabaseSession.Derive(true); Assert.AreEqual(new SalesOrderObjectStates(this.DatabaseSession).OnHold, order.CurrentObjectState); Assert.AreEqual(0, item.QuantityPendingShipment); Assert.AreEqual(10, item.QuantityShortFalled); inventory.AddInventoryItemVariance(new InventoryItemVarianceBuilder(this.DatabaseSession).WithQuantity(100).WithReason(new VarianceReasons(this.DatabaseSession).Unknown).Build()); this.DatabaseSession.Derive(true); Assert.AreEqual(new SalesOrderObjectStates(this.DatabaseSession).OnHold, order.CurrentObjectState); Assert.AreEqual(0, item.QuantityPendingShipment); Assert.AreEqual(10, item.QuantityRequestsShipping); Assert.AreEqual(0, item.QuantityShortFalled); order.Continue(); this.DatabaseSession.Derive(true); Assert.AreEqual(new SalesOrderObjectStates(this.DatabaseSession).InProcess, order.CurrentObjectState); Assert.AreEqual(10, item.QuantityPendingShipment); Assert.AreEqual(0, item.QuantityRequestsShipping); Assert.AreEqual(0, item.QuantityShortFalled); }