public void GivenPartyWithOpenOrders_WhenDeriving_ThenOpenOrderAmountIsUpdated() { var store = this.Session.Extent <Store>().First; store.IsImmediatelyPicked = false; var organisation = new OrganisationBuilder(this.Session).WithName("customer").Build(); var customerRelationship = new CustomerRelationshipBuilder(this.Session).WithCustomer(organisation).Build(); this.Session.Derive(); var partyFinancial = organisation.PartyFinancialRelationshipsWhereParty.First(v => Equals(v.InternalOrganisation, customerRelationship.InternalOrganisation)); var mechelen = new CityBuilder(this.Session).WithName("Mechelen").Build(); var postalAddress = new PostalAddressBuilder(this.Session) .WithAddress1("Kleine Nieuwedijkstraat 2") .WithGeographicBoundary(mechelen) .Build(); var good = new Goods(this.Session).FindBy(M.Good.Name, "good1"); this.Session.Derive(); var salesOrder1 = new SalesOrderBuilder(this.Session).WithBillToCustomer(organisation).WithShipToAddress(postalAddress).WithComment("salesorder1").Build(); var orderItem1 = new SalesOrderItemBuilder(this.Session) .WithProduct(good) .WithQuantityOrdered(10) .WithActualUnitPrice(10) .Build(); salesOrder1.AddSalesOrderItem(orderItem1); this.Session.Derive(); var salesOrder2 = new SalesOrderBuilder(this.Session).WithBillToCustomer(organisation).WithShipToAddress(postalAddress).WithComment("salesorder2").Build(); var orderItem2 = new SalesOrderItemBuilder(this.Session) .WithProduct(good) .WithQuantityOrdered(10) .WithActualUnitPrice(10) .Build(); salesOrder2.AddSalesOrderItem(orderItem2); this.Session.Derive(); var salesOrder3 = new SalesOrderBuilder(this.Session).WithBillToCustomer(organisation).WithShipToAddress(postalAddress).WithComment("salesorder3").Build(); var orderItem3 = new SalesOrderItemBuilder(this.Session) .WithProduct(good) .WithQuantityOrdered(10) .WithActualUnitPrice(10) .Build(); salesOrder3.AddSalesOrderItem(orderItem3); salesOrder3.Cancel(); this.Session.Derive(); Assert.Equal(242M, partyFinancial.OpenOrderAmount); }
public void GivenOrder_WhenDeriving_ThenRequiredRelationsMustExist() { var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); new SupplierRelationshipBuilder(this.DatabaseSession).WithSupplier(supplier).WithInternalOrganisation(internalOrganisation).Build(); var mechelen = new CityBuilder(this.DatabaseSession).WithName("Mechelen").Build(); ContactMechanism takenViaContactMechanism = new PostalAddressBuilder(this.DatabaseSession).WithGeographicBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var supplierContactMechanism = new PartyContactMechanismBuilder(this.DatabaseSession) .WithContactMechanism(takenViaContactMechanism) .WithUseAsDefault(true) .WithContactPurpose(new ContactMechanismPurposes(this.DatabaseSession).OrderAddress) .Build(); supplier.AddPartyContactMechanism(supplierContactMechanism); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var builder = new PurchaseOrderBuilder(this.DatabaseSession); builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithTakenViaSupplier(supplier); builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); builder.WithTakenViaContactMechanism(takenViaContactMechanism); builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void WorkTask_StateCompleted() { var customer = new OrganisationBuilder(this.Session).WithName("Org1").Build(); var internalOrganisation = new Organisations(this.Session).Extent().First(o => o.IsInternalOrganisation); new CustomerRelationshipBuilder(this.Session).WithCustomer(customer).WithInternalOrganisation(internalOrganisation).Build(); var workTask = new WorkTaskBuilder(this.Session).WithName("Activity").WithCustomer(customer).WithTakenBy(internalOrganisation).Build(); this.Session.Derive(); workTask.Complete(); this.Session.Derive(); Assert.Equal(new WorkEffortStates(this.Session).Completed, workTask.WorkEffortState); User user = this.Administrator; this.Session.SetUser(user); var acl = new AccessControlLists(this.Administrator)[workTask]; Assert.True(acl.CanExecute(M.WorkEffort.Invoice)); Assert.False(acl.CanExecute(M.WorkEffort.Cancel)); Assert.False(acl.CanExecute(M.WorkEffort.Reopen)); Assert.False(acl.CanExecute(M.WorkEffort.Complete)); }
public void GivenSubContractorRelationship_WhenDeriving_ThenSubAccountNumberMustBeUniqueWithinInternalOrganisation() { var belgium = new Countries(this.Session).CountryByIsoCode["BE"]; var euro = belgium.Currency; var bank = new BankBuilder(this.Session).WithCountry(belgium).WithName("ING België").WithBic("BBRUBEBB").Build(); var ownBankAccount = new OwnBankAccountBuilder(this.Session) .WithDescription("BE23 3300 6167 6391") .WithBankAccount(new BankAccountBuilder(this.Session).WithBank(bank).WithCurrency(euro).WithIban("BE23 3300 6167 6391").WithNameOnAccount("Koen").Build()) .Build(); var internalOrganisation2 = new OrganisationBuilder(this.Session) .WithIsInternalOrganisation(true) .WithName("internalOrganisation2") .WithDefaultCollectionMethod(ownBankAccount) .Build(); this.Session.Derive(); var subcontractor2 = internalOrganisation2.CreateSubContractor(this.Session.Faker()); this.Session.Derive(); var subContractorRelationship2 = subcontractor2.SubContractorRelationshipsWhereSubContractor.First(); this.Session.Derive(); var partyFinancial2 = subcontractor2.PartyFinancialRelationshipsWhereParty.First(v => Equals(v.InternalOrganisation, internalOrganisation2)); partyFinancial2.SubAccountNumber = 19; Assert.False(this.Session.Derive(false).HasErrors); }
public void Default() { var existingOrganisation = new OrganisationBuilder(this.Session).WithName("existing organisation").Build(); this.Session.Derive(true); this.Session.Commit(); var sessions = new ISession[] { this.Session }; foreach (var session in sessions) { session.Commit(); var cachedOrganisation = new Organisations(session).Sticky[existingOrganisation.UniqueId]; Assert.Equal(existingOrganisation.UniqueId, cachedOrganisation.UniqueId); Assert.Same(session, cachedOrganisation.Strategy.Session); var newOrganisation = new OrganisationBuilder(session).WithName("new organisation").Build(); cachedOrganisation = new Organisations(session).Sticky[newOrganisation.UniqueId]; Assert.Equal(newOrganisation.UniqueId, cachedOrganisation.UniqueId); Assert.Same(session, cachedOrganisation.Strategy.Session); session.Rollback(); } }
public void GivenOrder_WhenDeriving_ThenLocaleMustExist() { var englischLocale = new Locales(this.DatabaseSession).EnglishGreatBritain; var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); new SupplierRelationshipBuilder(this.DatabaseSession).WithSupplier(supplier).WithInternalOrganisation(internalOrganisation).Build(); var mechelen = new CityBuilder(this.DatabaseSession).WithName("Mechelen").Build(); ContactMechanism takenViaContactMechanism = new PostalAddressBuilder(this.DatabaseSession).WithGeographicBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var supplierContactMechanism = new PartyContactMechanismBuilder(this.DatabaseSession) .WithContactMechanism(takenViaContactMechanism) .WithUseAsDefault(true) .WithContactPurpose(new ContactMechanismPurposes(this.DatabaseSession).OrderAddress) .Build(); supplier.AddPartyContactMechanism(supplierContactMechanism); var order = new PurchaseOrderBuilder(this.DatabaseSession) .WithTakenViaSupplier(supplier) .WithShipToBuyer(internalOrganisation) .Build(); this.DatabaseSession.Derive(true); Assert.AreEqual(englischLocale, order.Locale); }
private void CustomOnPostSetup() { new OrganisationBuilder(this.session).WithName("Acme").Build(); new PersonBuilder(this.session).WithFirstName("John").WithLastName("Doe").WithUserName("*****@*****.**").Build(); new PersonBuilder(this.session).WithFirstName("Jane").WithLastName("Doe").WithUserName("*****@*****.**").Build(); // Create cycles between Organisation and Person var cycleOrganisation1 = new OrganisationBuilder(this.session).WithName("Organisatin Cycle One").Build(); var cycleOrganisation2 = new OrganisationBuilder(this.session).WithName("Organisatin Cycle Two").Build(); var cyclePerson1 = new PersonBuilder(this.session).WithFirstName("Person Cycle").WithLastName("One").WithUserName("*****@*****.**").Build(); var cyclePerson2 = new PersonBuilder(this.session).WithFirstName("Person Cycle").WithLastName("Two").WithUserName("*****@*****.**").Build(); // One cycleOrganisation1.CycleOne = cyclePerson1; cyclePerson1.CycleOne = cycleOrganisation1; cycleOrganisation2.CycleOne = cyclePerson2; cyclePerson2.CycleOne = cycleOrganisation2; // Many cycleOrganisation1.AddCycleMany(cyclePerson1); cycleOrganisation1.AddCycleMany(cyclePerson2); cycleOrganisation1.AddCycleMany(cyclePerson1); cycleOrganisation1.AddCycleMany(cyclePerson2); cyclePerson1.AddCycleMany(cycleOrganisation1); cyclePerson1.AddCycleMany(cycleOrganisation2); cyclePerson2.AddCycleMany(cycleOrganisation1); cyclePerson2.AddCycleMany(cycleOrganisation2); }
public void CreateMinimal() { var before = new Organisations(this.Session).Extent().ToArray(); var expected = new OrganisationBuilder(this.Session).WithDefaults().Build(); this.Session.Derive(); var expectedName = expected.Name; var organisationCreate = this.organisationListPage .CreateOrganisation() .Build(expected, true); this.Session.Rollback(); organisationCreate.SAVE.Click(); this.Driver.WaitForAngular(); this.Session.Rollback(); var after = new Organisations(this.Session).Extent().ToArray(); Assert.Equal(after.Length, before.Length + 1); var actual = after.Except(before).First(); Assert.Equal(expectedName, actual.Name); Assert.False(actual.ExistTaxNumber); Assert.False(actual.ExistLegalForm); Assert.False(actual.ExistLocale); Assert.False(actual.ExistIndustryClassifications); Assert.False(actual.ExistIndustryClassifications); Assert.False(actual.IsManufacturer); Assert.False(actual.ExistComment); }
public void GivenPurchaseShipment_WhenDeriving_ThenRequiredRelationsMustExist() { var supplier = new OrganisationBuilder(this.Session).WithName("supplier").Build(); this.Session.Commit(); var builder = new PurchaseShipmentBuilder(this.Session); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithShipmentMethod(new ShipmentMethods(this.Session).Ground); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithShipFromParty(supplier); builder.Build(); Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenOrganisation_WhenCurrentUserIsContactForOrganisation_ThenCustomerPermissionsAreGranted() { var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); var organisation = new OrganisationBuilder(this.DatabaseSession).WithName("organisation").Build(); var customer = new PersonBuilder(this.DatabaseSession).WithLastName("Customer").WithUserName("customer").Build(); new CustomerRelationshipBuilder(this.DatabaseSession).WithCustomer(organisation).WithInternalOrganisation(internalOrganisation).Build(); new OrganisationContactRelationshipBuilder(this.DatabaseSession).WithContact(customer).WithOrganisation(organisation).WithFromDate(DateTime.UtcNow).Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("customer", "Forms"), new string[0]); var acl = new AccessControlList(organisation, new Users(this.DatabaseSession).GetCurrentUser()); Assert.IsTrue(acl.CanRead(Organisations.Meta.Name)); Assert.IsTrue(acl.CanWrite(Organisations.Meta.Name)); Assert.IsTrue(acl.CanRead(Organisations.Meta.LegalForm)); Assert.IsTrue(acl.CanWrite(Organisations.Meta.LegalForm)); Assert.IsTrue(acl.CanRead(Organisations.Meta.LogoImage)); Assert.IsTrue(acl.CanWrite(Organisations.Meta.LogoImage)); Assert.IsTrue(acl.CanRead(Organisations.Meta.Locale)); Assert.IsTrue(acl.CanWrite(Organisations.Meta.Locale)); Assert.IsFalse(acl.CanRead(Organisations.Meta.OwnerSecurityToken)); Assert.IsFalse(acl.CanWrite(Organisations.Meta.OwnerSecurityToken)); }
public void GivenEngagement_WhenDeriving_ThenDescriptionIsRequired() { var mechelen = new CityBuilder(this.DatabaseSession).WithName("Mechelen").Build(); var billToContactMechanism = new PostalAddressBuilder(this.DatabaseSession).WithGeographicBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var partyContactMechanism = new PartyContactMechanismBuilder(this.DatabaseSession) .WithContactMechanism(billToContactMechanism) .WithContactPurpose(new ContactMechanismPurposes(this.DatabaseSession).BillingAddress) .WithUseAsDefault(true) .Build(); var customer = new OrganisationBuilder(this.DatabaseSession).WithName("customer").WithPartyContactMechanism(partyContactMechanism).Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var builder = new EngagementBuilder(this.DatabaseSession); var customEngagementItem = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithDescription("Engagement"); customEngagementItem = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithBillToParty(customer); customEngagementItem = builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenOrderItem_WhenDeriving_ThenRequiredRelationsMustExist() { this.InstantiateObjects(this.Session); var buyer = new OrganisationBuilder(this.Session).WithName("buyer").Build(); var mechelen = new CityBuilder(this.Session).WithName("Mechelen").Build(); var shipToContactMechanism = new PostalAddressBuilder(this.Session).WithGeographicBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var partyContactMechanism = new PartyContactMechanismBuilder(this.Session).WithContactMechanism(shipToContactMechanism).Build(); var part = new NonUnifiedPartBuilder(this.Session) .WithProductIdentification(new PartNumberBuilder(this.Session) .WithIdentification("1") .WithProductIdentificationType(new ProductIdentificationTypes(this.Session).Part).Build()) .Build(); buyer.AddPartyContactMechanism(partyContactMechanism); this.Session.Derive(); this.Session.Commit(); var builder = new PurchaseOrderItemBuilder(this.Session); order.AddPurchaseOrderItem(builder.Build()); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithPart(part); order.AddPurchaseOrderItem(builder.Build()); Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenPurchaseShipment_WhenGettingShipmentNumberWithFormat_ThenFormattedShipmentNumberShouldBeReturned() { this.InternalOrganisation.PurchaseShipmentSequence = new PurchaseShipmentSequences(this.Session).EnforcedSequence; var supplier = new OrganisationBuilder(this.Session).WithName("supplier").Build(); new SupplierRelationshipBuilder(this.Session).WithSupplier(supplier).Build(); this.Session.Derive(); var shipment1 = new PurchaseShipmentBuilder(this.Session) .WithShipmentMethod(new ShipmentMethods(this.Session).Ground) .WithShipFromParty(supplier) .Build(); this.Session.Derive(); Assert.Equal("incoming shipmentno: 1", shipment1.ShipmentNumber); var shipment2 = new PurchaseShipmentBuilder(this.Session) .WithShipmentMethod(new ShipmentMethods(this.Session).Ground) .WithShipFromParty(supplier) .Build(); this.Session.Derive(); Assert.Equal("incoming shipmentno: 2", shipment2.ShipmentNumber); }
public void GivenPurchaseInvoice_WhenObjectStateIsCreated_ThenCheckTransitions() { var supplier = new OrganisationBuilder(this.Session).WithName("supplier").Build(); new SupplierRelationshipBuilder(this.Session).WithSupplier(supplier).Build(); this.Session.Derive(); this.Session.Commit(); User user = this.Administrator; this.Session.SetUser(user); var invoice = new PurchaseInvoiceBuilder(this.Session) .WithPurchaseInvoiceType(new PurchaseInvoiceTypes(this.Session).PurchaseInvoice) .WithBilledFrom(supplier) .Build(); this.Session.Derive(); var acl = new AccessControlLists(this.Session.GetUser())[invoice]; Assert.Equal(new PurchaseInvoiceStates(this.Session).Created, invoice.PurchaseInvoiceState); Assert.False(acl.CanExecute(M.PurchaseInvoice.Approve)); Assert.False(acl.CanExecute(M.PurchaseInvoice.Reject)); Assert.False(acl.CanExecute(M.PurchaseInvoice.Reopen)); Assert.False(acl.CanExecute(M.PurchaseInvoice.SetPaid)); Assert.False(acl.CanExecute(M.PurchaseInvoice.Revise)); Assert.False(acl.CanExecute(M.PurchaseInvoice.FinishRevising)); Assert.False(acl.CanExecute(M.PurchaseInvoice.CreateSalesInvoice)); }
public void GivenPurchaseInvoice_WhenGettingInvoiceNumberWithoutFormat_ThenInvoiceNumberShouldBeReturned() { this.InternalOrganisation.InvoiceSequence = new InvoiceSequences(this.Session).EnforcedSequence; var supplier = new OrganisationBuilder(this.Session).WithName("supplier").Build(); new SupplierRelationshipBuilder(this.Session).WithSupplier(supplier).Build(); this.Session.Derive(); var invoice1 = new PurchaseInvoiceBuilder(this.Session) .WithPurchaseInvoiceType(new PurchaseInvoiceTypes(this.Session).PurchaseInvoice) .WithBilledFrom(supplier) .Build(); this.Session.Derive(); Assert.Equal("incoming invoiceno: 1", invoice1.InvoiceNumber); var invoice2 = new PurchaseInvoiceBuilder(this.Session) .WithPurchaseInvoiceType(new PurchaseInvoiceTypes(this.Session).PurchaseInvoice) .WithBilledFrom(supplier) .Build(); this.Session.Derive(); Assert.Equal("incoming invoiceno: 2", invoice2.InvoiceNumber); }
public void GivenPurchaseShipment_WhenGettingShipmentNumberWithoutFormat_ThenShipmentNumberShouldBeReturned() { var supplier = new OrganisationBuilder(this.Session).WithName("supplier").Build(); new SupplierRelationshipBuilder(this.Session).WithSupplier(supplier).Build(); this.Session.Derive(); var internalOrganisation = this.InternalOrganisation; internalOrganisation.RemoveIncomingShipmentNumberPrefix(); var shipment1 = new PurchaseShipmentBuilder(this.Session) .WithShipmentMethod(new ShipmentMethods(this.Session).Ground) .WithShipFromParty(supplier) .Build(); this.Session.Derive(); Assert.Equal("1", shipment1.ShipmentNumber); var shipment2 = new PurchaseShipmentBuilder(this.Session) .WithShipmentMethod(new ShipmentMethods(this.Session).Ground) .WithShipFromParty(supplier) .Build(); this.Session.Derive(); Assert.Equal("2", shipment2.ShipmentNumber); }
public void GivenShipmentReceiptWhenDerivingThenOrderItemQuantityReceivedIsUpdated() { var supplier = new OrganisationBuilder(this.Session).WithName("supplier").Build(); new SupplierRelationshipBuilder(this.Session).WithSupplier(supplier).Build(); var good1 = new NonUnifiedGoods(this.Session).FindBy(M.Good.Name, "good1"); var order = new PurchaseOrderBuilder(this.Session).WithTakenViaSupplier(supplier).Build(); var item1 = new PurchaseOrderItemBuilder(this.Session).WithPart(good1.Part).WithQuantityOrdered(10).Build(); order.AddPurchaseOrderItem(item1); this.Session.Derive(); this.Session.Commit(); order.SetReadyForProcessing(); this.Session.Derive(); order.QuickReceive(); this.Session.Derive(); var shipment = (PurchaseShipment)item1.OrderShipmentsWhereOrderItem.First.ShipmentItem.ShipmentWhereShipmentItem; shipment.Receive(); this.Session.Derive(); Assert.Equal(10, item1.QuantityReceived); this.Session.Rollback(); }
public void GivenCommunication_WhenPartiesChange_ThenPartiesAreUpdated() { var owner = new PersonBuilder(this.Session).WithLastName("owner").Build(); var participant1 = new PersonBuilder(this.Session).WithLastName("participant1").Build(); var participant2 = new PersonBuilder(this.Session).WithLastName("participant1").Build(); var organisation = new OrganisationBuilder(this.Session).WithName("organisation").Build(); var contact = new PersonBuilder(this.Session).WithLastName("participant1").Build(); new OrganisationContactRelationshipBuilder(this.Session).WithContact(contact).WithOrganisation(organisation).Build(); var communication = new FaceToFaceCommunicationBuilder(this.Session) .WithOwner(owner) .WithFromParty(participant1) .WithToParty(contact) .WithSubject("Hello") .WithActualStart(this.Session.Now()) .Build(); this.Session.Derive(); Assert.Equal(4, communication.InvolvedParties.Count); Assert.Contains(owner, communication.InvolvedParties); Assert.Contains(participant1, communication.InvolvedParties); Assert.Contains(contact, communication.InvolvedParties); Assert.Contains(organisation, communication.InvolvedParties); communication.ToParty = participant2; this.Session.Derive(); Assert.Equal(3, communication.InvolvedParties.Count); Assert.Contains(owner, communication.InvolvedParties); Assert.Contains(participant1, communication.InvolvedParties); Assert.Contains(participant2, communication.InvolvedParties); }
public static async Task CreateAsync_CreatesOrganisationWithCorrectValues() { var expected = OrganisationBuilder.Create(1).WithAddress(AddressBuilder.Create().Build()).Build(); var calledBack = false; var mockOrganisationRepository = new Mock <IOrganisationRepository>(); mockOrganisationRepository.Setup(r => r.CreateOrganisationAsync(It.IsAny <Organisation>())) .Callback((Organisation actual) => { actual.Should().BeEquivalentTo(expected, c => c .Excluding(o => o.OrganisationId) .Using <DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, TimeSpan.FromSeconds(1))) .WhenTypeIs <DateTime>()); actual.OrganisationId.Should().NotBeEmpty(); calledBack = true; }); var service = new CreateOrganisationService(mockOrganisationRepository.Object, SetUpValidator(true)); await service.CreateAsync(SetUpRequest( expected.Name, expected.OdsCode, expected.PrimaryRoleId, expected.CatalogueAgreementSigned, expected.Address)); calledBack.Should().BeTrue(); }
public async void DeletedObject() { var administrator = new Users(this.Session).GetUser("administrator"); await this.SignIn(administrator); var organisation = new OrganisationBuilder(this.Session).Build(); this.Session.Commit(); var uri = new Uri(@"Database/Sync", UriKind.Relative); var syncRequest = new SyncRequest { Objects = new[] { organisation.Id.ToString() } }; var response = await this.PostAsJsonAsync(uri, syncRequest); organisation.Strategy.Delete(); this.Session.Commit(); response = await this.PostAsJsonAsync(uri, syncRequest); var syncResponse = await this.ReadAsAsync <SyncResponse>(response); Assert.Empty(syncResponse.Objects); }
public static async Task GetOrganisationsAsync_OrganisationExists_ReturnsOrganisationAndRelatedOrganisation() { Guid relatedOrganisationId = Guid.NewGuid(); var organisation = OrganisationBuilder.Create(1).WithAddress(Address1).WithRelatedOrganisation(relatedOrganisationId).Build(); var controller = OrganisationControllerBuilder .Create() .WithGetOrganisationWithRelatedOrganisations(organisation) .Build(); var result = await controller.GetRelatedOrganisationsAsync(organisation.OrganisationId); var expected = new List <RelatedOrganisationModel> { new() { OrganisationId = organisation.RelatedOrganisations.First().OrganisationId, Name = organisation.RelatedOrganisations.First().Name, OdsCode = organisation.RelatedOrganisations.First().OdsCode, }, }; result.Should().BeEquivalentTo(new ActionResult <List <RelatedOrganisationModel> >(expected)); }
public void GivenEngagement_WhenDeriving_ThenDescriptionIsRequired() { var mechelen = new CityBuilder(this.Session).WithName("Mechelen").Build(); var billToContactMechanism = new PostalAddressBuilder(this.Session).WithPostalAddressBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var partyContactMechanism = new PartyContactMechanismBuilder(this.Session) .WithContactMechanism(billToContactMechanism) .WithContactPurpose(new ContactMechanismPurposes(this.Session).BillingAddress) .WithUseAsDefault(true) .Build(); var customer = new OrganisationBuilder(this.Session).WithName("customer").WithPartyContactMechanism(partyContactMechanism).Build(); this.Session.Derive(); this.Session.Commit(); var builder = new EngagementBuilder(this.Session); var customEngagementItem = builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithDescription("Engagement"); customEngagementItem = builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithBillToParty(customer); customEngagementItem = builder.Build(); Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenShipmentReceiptForGoodWithoutSelectedInventoryItemWhenDerivingThenInventoryItemIsFromDefaultFacility() { var supplier = new OrganisationBuilder(this.Session).WithName("supplier").Build(); new SupplierRelationshipBuilder(this.Session).WithSupplier(supplier).Build(); var good1 = new NonUnifiedGoods(this.Session).FindBy(M.Good.Name, "good1"); var order = new PurchaseOrderBuilder(this.Session).WithTakenViaSupplier(supplier).Build(); var item1 = new PurchaseOrderItemBuilder(this.Session).WithPart(good1.Part).WithQuantityOrdered(1).Build(); order.AddPurchaseOrderItem(item1); this.Session.Derive(); this.Session.Commit(); order.SetReadyForProcessing(); this.Session.Derive(); order.QuickReceive(); this.Session.Derive(); var shipment = (PurchaseShipment)item1.OrderShipmentsWhereOrderItem.First.ShipmentItem.ShipmentWhereShipmentItem; shipment.Receive(); this.Session.Derive(); var receipt = item1.ShipmentReceiptsWhereOrderItem.Single(); Assert.Equal(new Facilities(this.Session).FindBy(M.Facility.FacilityType, new FacilityTypes(this.Session).Warehouse), receipt.InventoryItem.Facility); Assert.Equal(good1.Part.InventoryItemsWherePart[0], receipt.InventoryItem); this.Session.Rollback(); }
public void GivenCommunicationToOrganisation_WhenDerived_ThenCommunicationEventIsAddedToEachParty() { var owner = new PersonBuilder(this.Session).WithLastName("owner").Build(); var participant = new PersonBuilder(this.Session).WithLastName("participant1").Build(); var organisation = new OrganisationBuilder(this.Session).WithName("organisation").Build(); var contact = new PersonBuilder(this.Session).WithLastName("participant1").Build(); new OrganisationContactRelationshipBuilder(this.Session).WithContact(contact).WithOrganisation(organisation).Build(); var communication = new FaceToFaceCommunicationBuilder(this.Session) .WithOwner(owner) .WithFromParty(participant) .WithToParty(contact) .WithSubject("Hello") .WithActualStart(DateTime.UtcNow) .Build(); this.Session.Derive(); Assert.Equal(4, communication.PartiesWhereCommunicationEvent.Count); Assert.Contains(owner, communication.PartiesWhereCommunicationEvent); Assert.Contains(participant, communication.PartiesWhereCommunicationEvent); Assert.Contains(contact, communication.PartiesWhereCommunicationEvent); Assert.Contains(organisation, communication.PartiesWhereCommunicationEvent); }
public static async Task GetProfileDataAsync_GivenAnApplicationUserExistsWithOrganisationFunctionBuyer_ReturnsExpectedClaimList() { var expectedApplicationUser = ApplicationUserBuilder .Create() .WithEmailAddress("*****@*****.**") .WithFirstName("Bob") .WithLastName("Smith") .WithOrganisationFunction(OrganisationFunction.Buyer) .Build(); Mock <IUsersRepository> applicationUserRepositoryMock = new Mock <IUsersRepository>(); applicationUserRepositoryMock .Setup(r => r.GetByIdAsync(It.IsAny <string>())) .ReturnsAsync(expectedApplicationUser); var expectedOrganisation = OrganisationBuilder .Create() .Build(); Mock <IOrganisationRepository> organisationRepositoryMock = new Mock <IOrganisationRepository>(); organisationRepositoryMock .Setup(r => r.GetByIdAsync(It.IsAny <Guid>())) .ReturnsAsync(expectedOrganisation); var sut = ProfileServiceBuilder .Create() .WithUserRepository(applicationUserRepositoryMock.Object) .WithOrganisationRepository(organisationRepositoryMock.Object) .Build(); var profileDataRequestContext = ProfileDataRequestContextBuilder .Create() .WithSubjectId(expectedApplicationUser.Id) .Build(); await sut.GetProfileDataAsync(profileDataRequestContext); var expected = new List <(string, string)> { (Subject, expectedApplicationUser.Id), (PreferredUserName, expectedApplicationUser.UserName), (JwtRegisteredClaimNames.UniqueName, expectedApplicationUser.UserName), (GivenName, expectedApplicationUser.FirstName), (FamilyName, expectedApplicationUser.LastName), (Name, $"{expectedApplicationUser.FirstName} {expectedApplicationUser.LastName}"), (Email, expectedApplicationUser.Email), (EmailVerified, expectedApplicationUser.EmailConfirmed.ToString(CultureInfo.CurrentCulture).ToLowerInvariant()), (ApplicationClaimTypes.PrimaryOrganisationId, expectedApplicationUser.PrimaryOrganisationId.ToString()), (ApplicationClaimTypes.PrimaryOrganisationName, expectedOrganisation.Name), (ApplicationClaimTypes.OrganisationFunction, expectedApplicationUser.OrganisationFunction.DisplayName), (ApplicationClaimTypes.Ordering, Manage), (ApplicationClaimTypes.Organisation, View), }; var actual = profileDataRequestContext.IssuedClaims.Select(item => (item.Type, item.Value)); actual.Should().BeEquivalentTo(expected); }
public void GivenPurchaseShipmentWithShipToCustomerWithshippingAddress_WhenDeriving_ThenDerivedShipToCustomerAndDerivedShipToAddressMustExist() { var supplier = new OrganisationBuilder(this.Session).WithName("supplier").Build(); new SupplierRelationshipBuilder(this.Session).WithSupplier(supplier).Build(); this.Session.Derive(); var mechelen = new CityBuilder(this.Session).WithName("Mechelen").Build(); var shipToAddress = new PostalAddressBuilder(this.Session).WithAddress1("Haverwerf 15").WithPostalAddressBoundary(mechelen).Build(); var shippingAddress = new PartyContactMechanismBuilder(this.Session) .WithContactMechanism(shipToAddress) .WithContactPurpose(new ContactMechanismPurposes(this.Session).ShippingAddress) .WithUseAsDefault(true) .Build(); this.InternalOrganisation.AddPartyContactMechanism(shippingAddress); this.Session.Derive(); var order = new PurchaseShipmentBuilder(this.Session).WithShipmentMethod(new ShipmentMethods(this.Session).Ground).WithShipFromParty(supplier).Build(); this.Session.Derive(); Assert.Equal(shippingAddress.ContactMechanism, order.ShipToAddress); }
public void Edit() { // Arrange var organisation = new OrganisationBuilder(this.Session).Build(); this.Session.Derive(); this.Session.Commit(); var edit = new Edit { Id = organisation.Id.ToString(), Description = "Hello", Owner = new Select(), Werknemers = new MultipleSelect() }; var controller = new OrganisationController { AllorsSession = this.Session }; // Act var viewResult = (ViewResult)controller.Edit(edit, Command.Save); // Assert viewResult.TempData.Count.ShouldEqual(0); organisation.Description.ShouldEqual("Hello"); }
public void GivenTimeEntryWithFromAndThroughDates_WhenDeriving_ThenAmountOfTimeDerived() { // Arrange var frequencies = new TimeFrequencies(this.Session); var customer = new OrganisationBuilder(this.Session).WithName("Org1").Build(); var internalOrganisation = new Organisations(this.Session).Extent().First(o => o.IsInternalOrganisation); new CustomerRelationshipBuilder(this.Session).WithCustomer(customer).WithInternalOrganisation(internalOrganisation).Build(); var workOrder = new WorkTaskBuilder(this.Session).WithName("Task").WithCustomer(customer).WithTakenBy(internalOrganisation).Build(); var employee = new PersonBuilder(this.Session).WithFirstName("Good").WithLastName("Worker").Build(); new EmploymentBuilder(this.Session).WithEmployee(employee).WithEmployer(internalOrganisation).Build(); this.Session.Derive(true); var now = DateTimeFactory.CreateDateTime(this.Session.Now()); var later = DateTimeFactory.CreateDateTime(now.AddHours(4)); var timeEntry = new TimeEntryBuilder(this.Session) .WithRateType(new RateTypes(this.Session).StandardRate) .WithFromDate(now) .WithThroughDate(later) .WithTimeFrequency(frequencies.Hour) .WithWorkEffort(workOrder) .Build(); employee.TimeSheetWhereWorker.AddTimeEntry(timeEntry); // Act this.Session.Derive(true); // Assert Assert.Equal(4.00M, timeEntry.AmountOfTime); Assert.Equal(4.00M, timeEntry.ActualHours); //// Re-arrange ((TimeEntryDerivedRoles)timeEntry).RemoveAmountOfTime(); timeEntry.TimeFrequency = frequencies.Day; // Act this.Session.Derive(true); // Assert Assert.Equal(Math.Round(4.0M / 24.0M, M.TimeEntry.AmountOfTime.Scale ?? 2), timeEntry.AmountOfTime); Assert.Equal(4.00M, timeEntry.ActualHours); //// Re-arrange ((TimeEntryDerivedRoles)timeEntry).RemoveAmountOfTime(); timeEntry.TimeFrequency = frequencies.Minute; // Act this.Session.Derive(true); // Assert Assert.Equal(4.0M * 60.0M, timeEntry.AmountOfTime); Assert.Equal(4.00M, timeEntry.ActualHours); }
public void GivenOrderRequirementCommitment_WhenDeriving_ThenRequiredRelationsMustExist() { var shipToCustomer = new OrganisationBuilder(this.Session).WithName("shipToCustomer").Build(); var billToCustomer = new OrganisationBuilder(this.Session).WithName("billToCustomer").Build(); new CustomerRelationshipBuilder(this.Session) .WithCustomer(billToCustomer) .Build(); new CustomerRelationshipBuilder(this.Session) .WithCustomer(shipToCustomer) .Build(); var good = new Goods(this.Session).FindBy(M.Good.Name, "good1"); this.Session.Derive(); var salesOrder = new SalesOrderBuilder(this.Session) .WithShipToCustomer(shipToCustomer) .WithBillToCustomer(billToCustomer) .WithAssignedVatRegime(new VatRegimes(this.Session).ZeroRated) .Build(); var goodOrderItem = new SalesOrderItemBuilder(this.Session) .WithInvoiceItemType(new InvoiceItemTypes(this.Session).ProductItem) .WithProduct(good) .WithAssignedUnitPrice(1) .WithQuantityOrdered(1) .Build(); salesOrder.AddSalesOrderItem(goodOrderItem); var customerRequirement = new RequirementBuilder(this.Session).WithDescription("100 gizmo's").Build(); this.Session.Derive(); this.Session.Commit(); var builder = new OrderRequirementCommitmentBuilder(this.Session); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithOrderItem(goodOrderItem); builder.Build(); Assert.True(this.Session.Derive(false).HasErrors); this.Session.Rollback(); builder.WithRequirement(customerRequirement); var tsts = builder.Build(); Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenOrderRequirementCommitment_WhenDeriving_ThenRequiredRelationsMustExist() { var shipToCustomer = new OrganisationBuilder(this.DatabaseSession).WithName("shipToCustomer").Build(); var billToCustomer = new OrganisationBuilder(this.DatabaseSession).WithName("billToCustomer").Build(); new CustomerRelationshipBuilder(this.DatabaseSession) .WithCustomer(billToCustomer) .WithInternalOrganisation(Singleton.Instance(this.DatabaseSession).DefaultInternalOrganisation) .Build(); new CustomerRelationshipBuilder(this.DatabaseSession) .WithCustomer(shipToCustomer) .WithInternalOrganisation(Singleton.Instance(this.DatabaseSession).DefaultInternalOrganisation) .Build(); var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build(); var good = new GoodBuilder(this.DatabaseSession) .WithName("Gizmo") .WithSku("10101") .WithVatRate(vatRate21) .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); this.DatabaseSession.Derive(true); var salesOrder = new SalesOrderBuilder(this.DatabaseSession) .WithShipToCustomer(shipToCustomer) .WithBillToCustomer(billToCustomer) .WithVatRegime(new VatRegimes(this.DatabaseSession).Export) .Build(); var goodOrderItem = new SalesOrderItemBuilder(this.DatabaseSession).WithProduct(good).WithQuantityOrdered(1).Build(); salesOrder.AddSalesOrderItem(goodOrderItem); var customerRequirement = new CustomerRequirementBuilder(this.DatabaseSession).WithDescription("100 gizmo's").Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var builder = new OrderRequirementCommitmentBuilder(this.DatabaseSession); builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithOrderItem(goodOrderItem); builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithRequirement(customerRequirement); var tsts = builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public async Task GetAllAsync_Always_CallsGitHubRepositoryClient() { var organisation = OrganisationBuilder.GenerateValidOrganisation(); await _sut.GetAllAsync(organisation); _repositoriesClientMock.Verify(x => x.GetAllForOrg(organisation.Name), Times.Once); }
public void GivenWeeklyRepeatingSalesInvoice_WhenDeriving_ThenDayOfWeekMustExist() { var customer = new OrganisationBuilder(this.Session).WithName("customer").Build(); var contactMechanism = new PostalAddressBuilder(this.Session) .WithAddress1("Haverwerf 15") .WithLocality("Mechelen") .WithCountry(new Countries(this.Session).FindBy(M.Country.IsoCode, "BE")) .Build(); var homeAddress = new PostalAddressBuilder(this.Session) .WithAddress1("Sint-Lambertuslaan 78") .WithLocality("Muizen") .WithCountry(new Countries(this.Session).FindBy(M.Country.IsoCode, "BE")) .Build(); var billingAddress = new PartyContactMechanismBuilder(this.Session) .WithContactMechanism(homeAddress) .WithContactPurpose(new ContactMechanismPurposes(this.Session).BillingAddress) .WithUseAsDefault(true) .Build(); customer.AddPartyContactMechanism(billingAddress); new CustomerRelationshipBuilder(this.Session).WithFromDate(this.Session.Now()).WithCustomer(customer).Build(); this.Session.Derive(); var invoice = new SalesInvoiceBuilder(this.Session) .WithInvoiceNumber("1") .WithBillToCustomer(customer) .WithAssignedBillToContactMechanism(contactMechanism) .WithSalesInvoiceType(new SalesInvoiceTypes(this.Session).SalesInvoice) .Build(); var repeatingInvoice = new RepeatingSalesInvoiceBuilder(this.Session) .WithSource(invoice) .WithFrequency(new TimeFrequencies(this.Session).Week) .WithNextExecutionDate(this.Session.Now().AddDays(1)) .Build(); var validation = this.Session.Derive(false); Assert.True(validation.HasErrors); Assert.Single(validation.Errors); Assert.Contains(MetaRepeatingSalesInvoice.Instance.DayOfWeek, validation.Errors.First().RoleTypes); Assert.False(this.Session.Derive(false).HasErrors); var weekDay = repeatingInvoice.NextExecutionDate.DayOfWeek.ToString(); var daysOfWeek = new DaysOfWeek(this.Session).Extent(); daysOfWeek.Filter.AddEquals(M.Enumeration.Name, weekDay); var dayOfWeek = daysOfWeek.First; repeatingInvoice.DayOfWeek = dayOfWeek; Assert.False(this.Session.Derive(false).HasErrors); }
public void GivenOwnCreditCardForInternalOrganisationThatDoesAccounting_WhenDeriving_ThenEitherGeneralLedgerAccountOrJournalMustExist() { var supplier = new OrganisationBuilder(this.DatabaseSession) .WithName("supplier") .WithLocale(new Locales(this.DatabaseSession).EnglishGreatBritain) .Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); var supplierRelationship = new SupplierRelationshipBuilder(this.DatabaseSession) .WithSupplier(supplier) .WithInternalOrganisation(internalOrganisation) .WithFromDate(DateTime.UtcNow) .Build(); var generalLedgerAccount = new GeneralLedgerAccountBuilder(this.DatabaseSession) .WithAccountNumber("0001") .WithName("GeneralLedgerAccount") .WithBalanceSheetAccount(true) .Build(); var internalOrganisationGlAccount = new OrganisationGlAccountBuilder(this.DatabaseSession) .WithInternalOrganisation(internalOrganisation) .WithGeneralLedgerAccount(generalLedgerAccount) .Build(); var journal = new JournalBuilder(this.DatabaseSession).WithDescription("journal").Build(); var creditCard = new CreditCardBuilder(this.DatabaseSession) .WithCardNumber("4012888888881881") .WithExpirationYear(2016) .WithExpirationMonth(03) .WithNameOnCard("M.E. van Knippenberg") .WithCreditCardCompany(new CreditCardCompanyBuilder(this.DatabaseSession).WithName("Visa").Build()) .Build(); var paymentMethod = new OwnCreditCardBuilder(this.DatabaseSession) .WithCreditCard(creditCard) .WithCreditor(supplierRelationship) .Build(); this.DatabaseSession.Commit(); internalOrganisation.RemovePaymentMethods(); internalOrganisation.AddPaymentMethod(paymentMethod); internalOrganisation.DoAccounting = true; Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); paymentMethod.Journal = journal; Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); paymentMethod.RemoveJournal(); paymentMethod.GeneralLedgerAccount = internalOrganisationGlAccount; Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenTimeEntry_WhenDeriving_ThenRequiredRelationsMustExist() { // Arrange var customer = new OrganisationBuilder(this.Session).WithName("Org1").Build(); var internalOrganisation = new Organisations(this.Session).Extent().First(o => o.IsInternalOrganisation); new CustomerRelationshipBuilder(this.Session).WithCustomer(customer).WithInternalOrganisation(internalOrganisation).Build(); var timeEntry = new TimeEntryBuilder(this.Session) .WithRateType(new RateTypes(this.Session).StandardRate) .Build(); // Act var derivation = this.Session.Derive(false); var originalCount = derivation.Errors.Count(); // Assert Assert.True(derivation.HasErrors); //// Re-arrange var tomorrow = this.Session.Now().AddDays(1); timeEntry.ThroughDate = tomorrow; // Act derivation = this.Session.Derive(false); // Assert Assert.True(derivation.HasErrors); Assert.Equal(originalCount, derivation.Errors.Count()); //// Re-arrange var workOrder = new WorkTaskBuilder(this.Session).WithName("Work").WithCustomer(customer).WithTakenBy(internalOrganisation).Build(); timeEntry.WorkEffort = workOrder; // Act derivation = this.Session.Derive(false); // Assert Assert.True(derivation.HasErrors); Assert.Equal(originalCount - 1, derivation.Errors.Count()); //// Re-arrange var worker = new PersonBuilder(this.Session).WithFirstName("Good").WithLastName("Worker").Build(); new EmploymentBuilder(this.Session).WithEmployee(worker).WithEmployer(internalOrganisation).Build(); derivation = this.Session.Derive(false); worker.TimeSheetWhereWorker.AddTimeEntry(timeEntry); // Act derivation = this.Session.Derive(false); // Assert Assert.False(derivation.HasErrors); }
private void CustomOnPostSetup() { var genders = new Genders(this.session); var john = new PersonBuilder(this.session).WithFirstName("John").WithLastName("Doe").WithUserName("*****@*****.**").WithNormalizedUserName("*****@*****.**").WithGender(genders.Male).Build(); var jane = new PersonBuilder(this.session).WithFirstName("Jane").WithLastName("Doe").WithUserName("*****@*****.**").WithNormalizedUserName("*****@*****.**").WithGender(genders.Female).Build(); var jenny = new PersonBuilder(this.session).WithFirstName("Jenny").WithLastName("Doe").WithUserName("*****@*****.**").WithNormalizedUserName("*****@*****.**").WithGender(genders.Other).Build(); john.SetPassword("john"); jane.SetPassword("jane"); jenny.SetPassword("jenny"); var acme = new OrganisationBuilder(this.session) .WithName("Acme") .WithOwner(jane) .WithEmployee(john) .WithEmployee(jenny) .Build(); for (var i = 0; i < 100; i++) { new OrganisationBuilder(this.session) .WithName($"Organisation-{i}") .WithOwner(john) .WithEmployee(jenny) .WithEmployee(jane) .Build(); } new UserGroups(this.session).Administrators.AddMember(john); // Create cycles between Organisation and Person var cycleOrganisation1 = new OrganisationBuilder(this.session).WithName("Organisatin Cycle One").Build(); var cycleOrganisation2 = new OrganisationBuilder(this.session).WithName("Organisatin Cycle Two").Build(); var cyclePerson1 = new PersonBuilder(this.session).WithFirstName("Person Cycle").WithLastName("One").WithUserName("*****@*****.**").Build(); var cyclePerson2 = new PersonBuilder(this.session).WithFirstName("Person Cycle").WithLastName("Two").WithUserName("*****@*****.**").Build(); // One cycleOrganisation1.CycleOne = cyclePerson1; cyclePerson1.CycleOne = cycleOrganisation1; cycleOrganisation2.CycleOne = cyclePerson2; cyclePerson2.CycleOne = cycleOrganisation2; // Many cycleOrganisation1.AddCycleMany(cyclePerson1); cycleOrganisation1.AddCycleMany(cyclePerson2); cycleOrganisation1.AddCycleMany(cyclePerson1); cycleOrganisation1.AddCycleMany(cyclePerson2); cyclePerson1.AddCycleMany(cycleOrganisation1); cyclePerson1.AddCycleMany(cycleOrganisation2); cyclePerson2.AddCycleMany(cycleOrganisation1); cyclePerson2.AddCycleMany(cycleOrganisation2); }
public static OrganisationBuilder WithManufacturerDefaults(this OrganisationBuilder @this, Faker faker) { var company = faker.Company; @this.WithName(company.CompanyName()); @this.WithIsManufacturer(true); return(@this); }
public void WorkTask_StateFinished() { var mechelen = new CityBuilder(this.Session).WithName("Mechelen").Build(); var mechelenAddress = new PostalAddressBuilder(this.Session).WithPostalAddressBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var billToMechelen = new PartyContactMechanismBuilder(this.Session) .WithContactMechanism(mechelenAddress) .WithContactPurpose(new ContactMechanismPurposes(this.Session).BillingAddress) .WithUseAsDefault(true) .Build(); var customer = new OrganisationBuilder(this.Session).WithName("Org1").WithPartyContactMechanism(billToMechelen).Build(); var internalOrganisation = new Organisations(this.Session).Extent().First(o => o.IsInternalOrganisation); new CustomerRelationshipBuilder(this.Session).WithCustomer(customer).WithInternalOrganisation(internalOrganisation).Build(); var employee = new PersonBuilder(this.Session).WithFirstName("Good").WithLastName("Worker").Build(); new EmploymentBuilder(this.Session).WithEmployee(employee).WithEmployer(internalOrganisation).Build(); this.Session.Derive(); var workTask = new WorkTaskBuilder(this.Session).WithName("Activity").WithCustomer(customer).WithTakenBy(internalOrganisation).Build(); var timeEntry = new TimeEntryBuilder(this.Session) .WithRateType(new RateTypes(this.Session).StandardRate) .WithFromDate(DateTimeFactory.CreateDateTime(this.Session.Now())) .WithThroughDate(DateTimeFactory.CreateDateTime(this.Session.Now().AddHours(1))) .WithTimeFrequency(new TimeFrequencies(this.Session).Hour) .WithWorkEffort(workTask) .Build(); employee.TimeSheetWhereWorker.AddTimeEntry(timeEntry); this.Session.Derive(); workTask.Complete(); this.Session.Derive(); workTask.Invoice(); this.Session.Derive(); Assert.Equal(new WorkEffortStates(this.Session).Finished, workTask.WorkEffortState); User user = this.Administrator; this.Session.SetUser(user); var acl = new AccessControlLists(this.Administrator)[workTask]; Assert.False(acl.CanExecute(M.WorkEffort.Invoice)); Assert.False(acl.CanExecute(M.WorkEffort.Cancel)); Assert.False(acl.CanExecute(M.WorkEffort.Reopen)); Assert.False(acl.CanExecute(M.WorkEffort.Complete)); }
public void DeletedUserinterfaceable() { var organisation = new OrganisationBuilder(this.Session).Build(); var derivationLog = this.Session.Derive(); Assert.AreEqual(1, derivationLog.Errors.Length); var error = derivationLog.Errors[0]; Assert.AreEqual("Organisation.Name is required", error.Message); }
public void GivenPartyWithOpenOrders_WhenDeriving_ThenOpenOrderAmountIsUpdated() { var organisation = new OrganisationBuilder(this.DatabaseSession).WithName("customer").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); new CustomerRelationshipBuilder(this.DatabaseSession).WithCustomer(organisation).WithInternalOrganisation(internalOrganisation).Build(); var mechelen = new CityBuilder(this.DatabaseSession).WithName("Mechelen").Build(); var postalAddress = new PostalAddressBuilder(this.DatabaseSession) .WithAddress1("Kleine Nieuwedijkstraat 2") .WithGeographicBoundary(mechelen) .Build(); var good = new GoodBuilder(this.DatabaseSession) .WithSku("10101") .WithVatRate(new VatRateBuilder(this.DatabaseSession).WithRate(21).Build()) .WithName("good") .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); this.DatabaseSession.Derive(true); var salesOrder1 = new SalesOrderBuilder(this.DatabaseSession).WithBillToCustomer(organisation).WithShipToAddress(postalAddress).WithComment("salesorder1").Build(); var orderItem1 = new SalesOrderItemBuilder(this.DatabaseSession) .WithProduct(good) .WithQuantityOrdered(10) .WithActualUnitPrice(10) .Build(); salesOrder1.AddSalesOrderItem(orderItem1); var salesOrder2 = new SalesOrderBuilder(this.DatabaseSession).WithBillToCustomer(organisation).WithShipToAddress(postalAddress).WithComment("salesorder2").Build(); var orderItem2 = new SalesOrderItemBuilder(this.DatabaseSession) .WithProduct(good) .WithQuantityOrdered(10) .WithActualUnitPrice(10) .Build(); salesOrder2.AddSalesOrderItem(orderItem2); var salesOrder3 = new SalesOrderBuilder(this.DatabaseSession).WithBillToCustomer(organisation).WithShipToAddress(postalAddress).WithComment("salesorder3").Build(); var orderItem3 = new SalesOrderItemBuilder(this.DatabaseSession) .WithProduct(good) .WithQuantityOrdered(10) .WithActualUnitPrice(10) .Build(); salesOrder3.AddSalesOrderItem(orderItem3); salesOrder3.Cancel(); this.DatabaseSession.Derive(true); Assert.AreEqual(242M, organisation.OpenOrderAmount); }
public void GivenPurchaseShipmentBuilder_WhenBuild_ThenPostBuildRelationsMustExist() { var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); var shipment = new PurchaseShipmentBuilder(this.DatabaseSession).WithShipFromParty(supplier).Build(); this.DatabaseSession.Derive(true); Assert.AreEqual(new PurchaseShipmentObjectStates(this.DatabaseSession).Created, shipment.CurrentObjectState); Assert.AreEqual(internalOrganisation, shipment.ShipToParty); Assert.AreEqual(internalOrganisation.ShippingAddress, shipment.ShipToAddress); Assert.AreEqual(shipment.ShipToParty, shipment.ShipToParty); }
public void GivenCashPaymentMethodForInternalOrganisationThatDoesAccounting_WhenDeriving_ThenEitherGeneralLedgerAccountOrJournalMustExist() { var supplier = new OrganisationBuilder(this.DatabaseSession) .WithName("supplier") .WithLocale(new Locales(this.DatabaseSession).EnglishGreatBritain) .Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); var supplierRelationship = new SupplierRelationshipBuilder(this.DatabaseSession) .WithSupplier(supplier) .WithInternalOrganisation(internalOrganisation) .WithFromDate(DateTime.UtcNow) .Build(); var generalLedgerAccount = new GeneralLedgerAccountBuilder(this.DatabaseSession) .WithAccountNumber("0001") .WithName("GeneralLedgerAccount") .WithBalanceSheetAccount(true) .Build(); var internalOrganisationGlAccount = new OrganisationGlAccountBuilder(this.DatabaseSession) .WithInternalOrganisation(internalOrganisation) .WithGeneralLedgerAccount(generalLedgerAccount) .Build(); var journal = new JournalBuilder(this.DatabaseSession).WithDescription("journal").Build(); this.DatabaseSession.Commit(); var cash = new CashBuilder(this.DatabaseSession) .WithDescription("description") .WithCreditor(supplierRelationship) .Build(); internalOrganisation.RemovePaymentMethods(); internalOrganisation.AddPaymentMethod(cash); internalOrganisation.DoAccounting = true; Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); cash.Journal = journal; Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); cash.RemoveJournal(); cash.GeneralLedgerAccount = internalOrganisationGlAccount; Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenOrganisation_WhenDeriving_ThenRequiredRelationsMustExist() { var builder = new OrganisationBuilder(this.DatabaseSession); var organisation = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithName("Organisation"); organisation = builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenTaxDue_WhenDeriving_ThenRequiredRelationsMustExist() { var partyFrom = new OrganisationBuilder(this.DatabaseSession).WithName("party from").Build(); var partyTo = new OrganisationBuilder(this.DatabaseSession).WithName("party to").Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var builder = new TaxDueBuilder(this.DatabaseSession); var taxDue = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithDescription("taxdue"); taxDue = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithEntryDate(DateTime.UtcNow); taxDue = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithTransactionDate(DateTime.UtcNow.AddYears(1)); taxDue = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithFromParty(partyFrom); taxDue = builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithToParty(partyTo); taxDue = builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenPurchaseInvoice_WhenDeriving_ThenBilledFromPartyMustBeInSupplierRelationship() { var supplier2 = new OrganisationBuilder(this.DatabaseSession).WithName("supplier2").Build(); var invoice = new PurchaseInvoiceBuilder(this.DatabaseSession) .WithInvoiceNumber("1") .WithPurchaseInvoiceType(new PurchaseInvoiceTypes(this.DatabaseSession).PurchaseInvoice) .WithBilledFromParty(supplier2) .WithBilledToInternalOrganisation(new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation")) .Build(); Assert.AreEqual(ErrorMessages.PartyIsNotASupplier, this.DatabaseSession.Derive().Errors[0].Message); new SupplierRelationshipBuilder(this.DatabaseSession).WithSupplier(supplier2).WithInternalOrganisation(invoice.BilledToInternalOrganisation).Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenInternalOrganisationWithInvoiceSequenceFiscalYear_WhenCreatingInvoice_ThenInvoiceNumberFromFiscalYearMustBeUsed() { var store = new StoreBuilder(this.DatabaseSession).WithName("store") .WithDefaultFacility(new Warehouses(this.DatabaseSession).FindBy(Warehouses.Meta.Name, "facility")) .WithOwner(new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation")) .WithDefaultShipmentMethod(new ShipmentMethods(this.DatabaseSession).Ground) .WithDefaultCarrier(new Carriers(this.DatabaseSession).Fedex) .Build(); var customer = new OrganisationBuilder(this.DatabaseSession).WithName("customer").Build(); var contactMechanism = new PostalAddressBuilder(this.DatabaseSession) .WithAddress1("Haverwerf 15") .WithPostalBoundary(new PostalBoundaryBuilder(this.DatabaseSession) .WithLocality("Mechelen") .WithCountry(new Countries(this.DatabaseSession).FindBy(Countries.Meta.IsoCode, "BE")) .Build()) .Build(); var invoice1 = new SalesInvoiceBuilder(this.DatabaseSession) .WithStore(store) .WithBillToCustomer(customer) .WithBillToContactMechanism(contactMechanism) .WithSalesInvoiceType(new SalesInvoiceTypes(this.DatabaseSession).SalesInvoice) .WithBilledFromInternalOrganisation(new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation")) .Build(); new CustomerRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer).WithInternalOrganisation(Singleton.Instance(this.DatabaseSession).DefaultInternalOrganisation).Build(); Assert.IsFalse(store.ExistSalesInvoiceCounter); Assert.AreEqual(DateTime.UtcNow.Year, store.FiscalYearInvoiceNumbers.First.FiscalYear); Assert.AreEqual("1", invoice1.InvoiceNumber); var invoice2 = new SalesInvoiceBuilder(this.DatabaseSession) .WithStore(store) .WithBillToCustomer(customer) .WithBillToContactMechanism(contactMechanism) .WithSalesInvoiceType(new SalesInvoiceTypes(this.DatabaseSession).SalesInvoice) .WithBilledFromInternalOrganisation(new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation")) .Build(); Assert.IsFalse(store.ExistSalesInvoiceCounter); Assert.AreEqual(DateTime.UtcNow.Year, store.FiscalYearInvoiceNumbers.First.FiscalYear); Assert.AreEqual("2", invoice2.InvoiceNumber); }
public void GivenNewGoodCoredOnFinishedGood_WhenDeriving_ThenNonSerializedInventryItemIsCreatedForEveryFinishedGoodAndFacility() { var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); var secondFacility = new WarehouseBuilder(this.DatabaseSession).WithName("second facility").WithOwner(internalOrganisation).Build(); new SupplierRelationshipBuilder(this.DatabaseSession) .WithInternalOrganisation(internalOrganisation) .WithSupplier(supplier) .WithFromDate(DateTime.UtcNow) .Build(); var finishedGood = new FinishedGoodBuilder(this.DatabaseSession) .WithName("part") .Build(); var purchasePrice = new ProductPurchasePriceBuilder(this.DatabaseSession) .WithFromDate(DateTime.UtcNow) .WithCurrency(new Currencies(this.DatabaseSession).FindBy(Currencies.Meta.IsoCode, "EUR")) .WithPrice(1) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); var good = new GoodBuilder(this.DatabaseSession) .WithName("Good") .WithSku("10101") .WithFinishedGood(finishedGood) .WithVatRate(new VatRateBuilder(this.DatabaseSession).WithRate(21).Build()) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); new SupplierOfferingBuilder(this.DatabaseSession) .WithProduct(good) .WithSupplier(supplier) .WithProductPurchasePrice(purchasePrice) .WithFromDate(DateTime.UtcNow) .Build(); this.DatabaseSession.Derive(true); Assert.AreEqual(2, good.FinishedGood.InventoryItemsWherePart.Count); Assert.AreEqual(1, internalOrganisation.DefaultFacility.InventoryItemsWhereFacility.Count); Assert.AreEqual(1, secondFacility.InventoryItemsWhereFacility.Count); }
public void GivenShipmentReceiptForGoodWithoutSelectedInventoryItemWhenDerivingThenInventoryItemIsFromDefaultFacility() { var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); new SupplierRelationshipBuilder(this.DatabaseSession).WithSupplier(supplier).WithInternalOrganisation(internalOrganisation).Build(); var good = new GoodBuilder(this.DatabaseSession) .WithName("Good") .WithSku("10101") .WithVatRate(new VatRateBuilder(this.DatabaseSession).WithRate(21).Build()) .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); var order = new PurchaseOrderBuilder(this.DatabaseSession).WithTakenViaSupplier(supplier).Build(); var item1 = new PurchaseOrderItemBuilder(this.DatabaseSession).WithProduct(good).WithQuantityOrdered(1).Build(); order.AddPurchaseOrderItem(item1); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); order.Confirm(); var shipment = new PurchaseShipmentBuilder(this.DatabaseSession).WithShipFromParty(supplier).Build(); var shipmentItem = new ShipmentItemBuilder(this.DatabaseSession).WithGood(good).Build(); shipment.AddShipmentItem(shipmentItem); var receipt = new ShipmentReceiptBuilder(this.DatabaseSession) .WithQuantityAccepted(1M) .WithShipmentItem(shipmentItem) .WithOrderItem(item1) .Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); shipment.AppsComplete(); Assert.AreEqual(new Warehouses(this.DatabaseSession).FindBy(Warehouses.Meta.Name, "facility"), receipt.InventoryItem.Facility); Assert.AreEqual(good.InventoryItemsWhereGood[0], receipt.InventoryItem); this.DatabaseSession.Rollback(); }
public void GiveninvoiceItem_WhenCancelled_ThenInvoiceItemsAreCancelled() { var billToCustomer = new OrganisationBuilder(this.DatabaseSession).WithName("customer").Build(); var contactMechanism = new PostalAddressBuilder(this.DatabaseSession) .WithAddress1("Haverwerf 15") .WithPostalBoundary(new PostalBoundaryBuilder(this.DatabaseSession) .WithLocality("Mechelen") .WithCountry(new Countries(this.DatabaseSession).FindBy(Countries.Meta.IsoCode, "BE")) .Build()) .Build(); var good = new GoodBuilder(this.DatabaseSession) .WithSku("10101") .WithVatRate(new VatRateBuilder(this.DatabaseSession).WithRate(0).Build()) .WithName("good") .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var invoice = new SalesInvoiceBuilder(this.DatabaseSession) .WithBillToCustomer(billToCustomer) .WithBillToContactMechanism(contactMechanism) .WithSalesInvoiceItem(new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good).WithQuantity(1).WithActualUnitPrice(100M).WithSalesInvoiceItemType(new SalesInvoiceItemTypes(this.DatabaseSession).ProductItem).Build()) .WithSalesInvoiceItem(new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good).WithQuantity(1).WithActualUnitPrice(100M).WithSalesInvoiceItemType(new SalesInvoiceItemTypes(this.DatabaseSession).ProductItem).Build()) .Build(); new CustomerRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(invoice.BillToCustomer).WithInternalOrganisation(Singleton.Instance(this.DatabaseSession).DefaultInternalOrganisation).Build(); this.DatabaseSession.Derive(true); invoice.CancelInvoice(); this.DatabaseSession.Derive(true); Assert.AreEqual(new SalesInvoiceObjectStates(this.DatabaseSession).Cancelled, invoice.CurrentObjectState); Assert.AreEqual(new SalesInvoiceItemObjectStates(this.DatabaseSession).Cancelled, invoice.SalesInvoiceItems[0].CurrentObjectState); Assert.AreEqual(new SalesInvoiceItemObjectStates(this.DatabaseSession).Cancelled, invoice.SalesInvoiceItems[1].CurrentObjectState); }
public void DeniedPermissions() { var readOrganisationName = this.FindPermission(Organisations.Meta.Name, Operation.Read); var databaseRole = new RoleBuilder(this.DatabaseSession).WithName("Role").WithPermission(readOrganisationName).Build(); var person = new PersonBuilder(this.DatabaseSession).WithFirstName("John").WithLastName("Doe").Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); new AccessControlBuilder(this.DatabaseSession).WithRole(databaseRole).WithSubject(person).Build(); this.DatabaseSession.Commit(); var sessions = new ISession[] { this.DatabaseSession, this.CreateWorkspaceSession() }; foreach (var session in sessions) { session.Commit(); var organisation = new OrganisationBuilder(session).WithName("Organisation").Build(); var token = new SecurityTokenBuilder(session).Build(); organisation.AddSecurityToken(token); var role = (Role)session.Instantiate(new Roles(this.DatabaseSession).FindBy(Roles.Meta.Name, "Role")); var accessControl = (AccessControl)session.Instantiate(role.AccessControlsWhereRole.First); accessControl.AddObject(token); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); var accessList = new AccessControlList(organisation, person); Assert.IsTrue(accessList.CanRead(Organisations.Meta.Name)); organisation.AddDeniedPermission(readOrganisationName); accessList = new AccessControlList(organisation, person); Assert.IsFalse(accessList.CanRead(Organisations.Meta.Name)); session.Rollback(); } }
public void Conflicts() { var workspaceSession = this.CreateWorkspaceSession(); var organisation = new OrganisationBuilder(this.DatabaseSession).WithName("Acme Corp.").Build(); var disconnectedOrganisation = (Domain.Organisation)workspaceSession.Instantiate(organisation.Strategy.ObjectId); disconnectedOrganisation.Name = "Acme Ltd."; organisation.Name = "Acme Inc."; workspaceSession.DatabaseSession.Commit(); var conflicts = workspaceSession.Conflicts; Assert.AreEqual(1, conflicts.Length); var derivationLog = new Derivation(workspaceSession).Log; derivationLog.AddConflicts(conflicts); Assert.AreEqual(1, derivationLog.Errors.Length); }
public ActionResult Add(Add model, Command? command) { if (command == Command.Cancel) { return this.RedirectToRoute("Default", new { controller = "Organisation", action = "Index" }); } var organisation = (Organisation)this.AllorsSession.Instantiate(model.Id); if (command == Command.Save) { if (this.ModelState.IsValid) { if (organisation == null) { organisation = new OrganisationBuilder(this.AllorsSession).Build(); } organisation.Name = model.Name; var derivationLog = this.AllorsSession.Derive(); if (derivationLog.HasErrors) { foreach (var error in derivationLog.Errors) { this.ModelState.AddModelError(string.Empty, error.Message); } } else { this.AllorsSession.Commit(); this.ModelState.Clear(); return this.RedirectToAction("Index"); } } } this.Map(model, organisation); return this.View(model); }
public void Default() { var existingOrganisation = new OrganisationBuilder(this.DatabaseSession).WithName("existing organisation").Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var sessions = new ISession[] { this.DatabaseSession, this.CreateWorkspaceSession() }; foreach (var session in sessions) { session.Commit(); var cachedOrganisation = new Organisations(session).Cache.Get(existingOrganisation.UniqueId); Assert.AreEqual(existingOrganisation.UniqueId, cachedOrganisation.UniqueId); Assert.AreSame(session, cachedOrganisation.Strategy.Session); var newOrganisation = new OrganisationBuilder(session).WithName("new organisation").Build(); cachedOrganisation = new Organisations(session).Cache.Get(newOrganisation.UniqueId); Assert.AreEqual(newOrganisation.UniqueId, cachedOrganisation.UniqueId); Assert.AreSame(session, cachedOrganisation.Strategy.Session); session.Rollback(); } }
public void GivenShipmentReceiptForPartWithoutSelectedInventoryItemWhenDerivingThenInventoryItemIsFromDefaultFacility() { var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); new SupplierRelationshipBuilder(this.DatabaseSession).WithSupplier(supplier).WithInternalOrganisation(internalOrganisation).Build(); var part = new RawMaterialBuilder(this.DatabaseSession) .WithName("RawMaterial") .Build(); var order = new PurchaseOrderBuilder(this.DatabaseSession) .WithTakenViaSupplier(supplier) .WithVatRegime(new VatRegimes(this.DatabaseSession).Export) .Build(); var item1 = new PurchaseOrderItemBuilder(this.DatabaseSession).WithPart(part).WithQuantityOrdered(1).Build(); order.AddPurchaseOrderItem(item1); this.DatabaseSession.Derive(true); order.Confirm(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var shipment = new PurchaseShipmentBuilder(this.DatabaseSession).WithShipFromParty(supplier).Build(); var shipmentItem = new ShipmentItemBuilder(this.DatabaseSession).WithPart(part).Build(); shipment.AddShipmentItem(shipmentItem); var receipt = new ShipmentReceiptBuilder(this.DatabaseSession) .WithQuantityAccepted(1M) .WithShipmentItem(shipmentItem) .WithOrderItem(item1) .Build(); shipment.AppsComplete(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); Assert.AreEqual(new Warehouses(this.DatabaseSession).FindBy(Warehouses.Meta.Name, "facility"), receipt.InventoryItem.Facility); Assert.AreEqual(part.InventoryItemsWherePart[0], receipt.InventoryItem); this.DatabaseSession.Rollback(); }
public void GivenPurchaseOrder_WhenTakenViaSupplierChangesValue_ThenAccessPreviousSupplierIsDenied() { var supplierContact = new PersonBuilder(this.DatabaseSession).WithUserName("suppliercontact").WithLastName("suppliercontact").Build(); var supplierContact2 = new PersonBuilder(this.DatabaseSession).WithUserName("suppliercontact2").WithLastName("suppliercontact2").Build(); var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var supplier2 = new OrganisationBuilder(this.DatabaseSession).WithName("supplier2").Build(); new SupplierRelationshipBuilder(this.DatabaseSession) .WithSupplier(supplier) .WithInternalOrganisation(new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation")) .WithFromDate(DateTime.UtcNow) .Build(); new SupplierRelationshipBuilder(this.DatabaseSession) .WithSupplier(supplier2) .WithInternalOrganisation(new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation")) .WithFromDate(DateTime.UtcNow) .Build(); new OrganisationContactRelationshipBuilder(this.DatabaseSession).WithContact(supplierContact).WithOrganisation(supplier).WithFromDate(DateTime.UtcNow).Build(); new OrganisationContactRelationshipBuilder(this.DatabaseSession).WithContact(supplierContact2).WithOrganisation(supplier2).WithFromDate(DateTime.UtcNow).Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("purchaser", "Forms"), new string[0]); var order = new PurchaseOrderBuilder(this.DatabaseSession) .WithTakenViaSupplier(supplier) .Build(); this.DatabaseSession.Derive(true); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("suppliercontact", "Forms"), new string[0]); var acl = new AccessControlList(order, new Users(this.DatabaseSession).GetCurrentUser()); Assert.IsFalse(acl.CanWrite(PurchaseOrders.Meta.OrderDate)); Assert.IsTrue(acl.CanRead(PurchaseOrders.Meta.OrderDate)); Assert.IsTrue(acl.CanRead(PurchaseOrders.Meta.OrderNumber)); Assert.IsTrue(acl.CanRead(PurchaseOrders.Meta.TotalExVat)); Assert.IsFalse(acl.CanExecute(PurchaseOrders.Meta.Confirm)); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("suppliercontact2", "Forms"), new string[0]); acl = new AccessControlList(order, new Users(this.DatabaseSession).GetCurrentUser()); Assert.IsFalse(acl.HasReadOperation); order.TakenViaSupplier = supplier2; this.DatabaseSession.Derive(true); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("suppliercontact", "Forms"), new string[0]); acl = new AccessControlList(order, new Users(this.DatabaseSession).GetCurrentUser()); Assert.IsFalse(acl.HasReadOperation); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("suppliercontact2", "Forms"), new string[0]); acl = new AccessControlList(order, new Users(this.DatabaseSession).GetCurrentUser()); Assert.IsFalse(acl.CanWrite(PurchaseOrders.Meta.OrderDate)); Assert.IsTrue(acl.CanRead(PurchaseOrders.Meta.OrderDate)); Assert.IsTrue(acl.CanRead(PurchaseOrders.Meta.OrderNumber)); Assert.IsTrue(acl.CanRead(PurchaseOrders.Meta.TotalExVat)); Assert.IsFalse(acl.CanExecute(PurchaseOrders.Meta.Confirm)); }
public void GivenShipmentReceiptWhenValidatingThenRequiredRelationsMustExist() { var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); new SupplierRelationshipBuilder(this.DatabaseSession).WithSupplier(supplier).WithInternalOrganisation(internalOrganisation).Build(); var good = new GoodBuilder(this.DatabaseSession) .WithName("Good") .WithSku("10101") .WithVatRate(new VatRateBuilder(this.DatabaseSession).WithRate(21).Build()) .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); var inventoryItem = new NonSerializedInventoryItemBuilder(this.DatabaseSession).WithGood(good).Build(); inventoryItem.AddInventoryItemVariance(new InventoryItemVarianceBuilder(this.DatabaseSession).WithQuantity(100).WithReason(new VarianceReasons(this.DatabaseSession).Order).Build()); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var builder = new ShipmentReceiptBuilder(this.DatabaseSession); builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithInventoryItem(inventoryItem); builder.Build(); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); var shipment = new PurchaseShipmentBuilder(this.DatabaseSession).WithShipFromParty(supplier).Build(); var shipmentItem = new ShipmentItemBuilder(this.DatabaseSession).WithGood(good).Build(); shipment.AddShipmentItem(shipmentItem); builder.WithShipmentItem(shipmentItem); builder.Build(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenShipmentReceiptWhenDerivingThenOrderItemQuantityReceivedIsUpdated() { var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); new SupplierRelationshipBuilder(this.DatabaseSession).WithSupplier(supplier).WithInternalOrganisation(internalOrganisation).Build(); var good = new GoodBuilder(this.DatabaseSession) .WithName("Good") .WithSku("10101") .WithVatRate(new VatRateBuilder(this.DatabaseSession).WithRate(21).Build()) .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); var order = new PurchaseOrderBuilder(this.DatabaseSession).WithTakenViaSupplier(supplier).Build(); var item1 = new PurchaseOrderItemBuilder(this.DatabaseSession).WithProduct(good).WithQuantityOrdered(10).Build(); order.AddPurchaseOrderItem(item1); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); order.Confirm(); var shipment = new PurchaseShipmentBuilder(this.DatabaseSession).WithShipFromParty(supplier).Build(); var shipmentItem = new ShipmentItemBuilder(this.DatabaseSession).WithGood(good).Build(); shipment.AddShipmentItem(shipmentItem); new ShipmentReceiptBuilder(this.DatabaseSession) .WithQuantityAccepted(10) .WithShipmentItem(shipmentItem) .WithOrderItem(item1) .Build(); shipment.AppsComplete(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); Assert.AreEqual(10, item1.QuantityReceived); this.DatabaseSession.Rollback(); }
public void GivenShipmentReceiptWhenDerivingThenInventoryItemQuantityOnHandIsUpdated() { 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 = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); new CustomerRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer).WithInternalOrganisation(internalOrganisation).Build(); var good = new GoodBuilder(this.DatabaseSession) .WithName("Good") .WithSku("10101") .WithVatRate(new VatRateBuilder(this.DatabaseSession).WithRate(21).Build()) .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .Build(); var inventoryItem = new NonSerializedInventoryItemBuilder(this.DatabaseSession).WithGood(good).Build(); inventoryItem.AddInventoryItemVariance(new InventoryItemVarianceBuilder(this.DatabaseSession).WithQuantity(20).WithReason(new VarianceReasons(this.DatabaseSession).Unknown).Build()); this.DatabaseSession.Derive(true); var order1 = new SalesOrderBuilder(this.DatabaseSession) .WithBillToCustomer(customer) .WithShipToCustomer(customer) .WithDeliveryDate(DateTime.UtcNow) .Build(); var salesItem = new SalesOrderItemBuilder(this.DatabaseSession).WithDescription("item1").WithProduct(good).WithQuantityOrdered(30).WithActualUnitPrice(15).Build(); order1.AddSalesOrderItem(salesItem); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); order1.Confirm(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var sessionInventoryItem = (NonSerializedInventoryItem)this.DatabaseSession.Instantiate(inventoryItem); var sessionSalesItem = (SalesOrderItem)this.DatabaseSession.Instantiate(salesItem); var supplier = new OrganisationBuilder(this.DatabaseSession).WithName("supplier").Build(); new SupplierRelationshipBuilder(this.DatabaseSession).WithSupplier(supplier).WithInternalOrganisation(internalOrganisation).Build(); Assert.AreEqual(20, sessionSalesItem.QuantityPendingShipment); Assert.AreEqual(30, sessionSalesItem.QuantityReserved); Assert.AreEqual(10, sessionSalesItem.QuantityShortFalled); var order = new PurchaseOrderBuilder(this.DatabaseSession).WithTakenViaSupplier(supplier).Build(); var item1 = new PurchaseOrderItemBuilder(this.DatabaseSession).WithProduct(good).WithQuantityOrdered(10).Build(); order.AddPurchaseOrderItem(item1); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); order.Confirm(); var shipment = new PurchaseShipmentBuilder(this.DatabaseSession).WithShipFromParty(supplier).Build(); var shipmentItem = new ShipmentItemBuilder(this.DatabaseSession).WithGood(good).Build(); shipment.AddShipmentItem(shipmentItem); new ShipmentReceiptBuilder(this.DatabaseSession) .WithQuantityAccepted(10) .WithShipmentItem(shipmentItem) .WithOrderItem(item1) .Build(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); shipment.AppsComplete(); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); Assert.AreEqual(30, sessionInventoryItem.QuantityOnHand); Assert.AreEqual(30, sessionSalesItem.QuantityPendingShipment); Assert.AreEqual(30, sessionSalesItem.QuantityReserved); Assert.AreEqual(0, sessionSalesItem.QuantityShortFalled); }
public void DeriveHistory() { var productItem = new SalesInvoiceItemTypes(this.DatabaseSession).ProductItem; var contactMechanism = new ContactMechanisms(this.DatabaseSession).Extent().First; var customer1 = new OrganisationBuilder(this.DatabaseSession).WithName("customer1").Build(); var customer2 = new OrganisationBuilder(this.DatabaseSession).WithName("customer2").Build(); var salesRep1 = new PersonBuilder(this.DatabaseSession).WithLastName("salesRep1").Build(); var salesRep2 = new PersonBuilder(this.DatabaseSession).WithLastName("salesRep2").Build(); var package1 = new PackageBuilder(this.DatabaseSession).WithName("package1").Build(); var package2 = new PackageBuilder(this.DatabaseSession).WithName("package2").Build(); var salesChannel1 = new SalesChannels(this.DatabaseSession).WebChannel; var salesChannel2 = new SalesChannels(this.DatabaseSession).NoChannel; var catMain = new ProductCategoryBuilder(this.DatabaseSession).WithDescription("main cat").Build(); var cat1 = new ProductCategoryBuilder(this.DatabaseSession).WithDescription("cat for good1").WithParent(catMain).WithPackage(package1).Build(); var cat2 = new ProductCategoryBuilder(this.DatabaseSession).WithDescription("cat for good2").WithParent(catMain).WithPackage(package2).Build(); new SalesRepRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer1).WithProductCategory(cat1).WithSalesRepresentative(salesRep1).Build(); new SalesRepRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer1).WithProductCategory(cat2).WithSalesRepresentative(salesRep2).Build(); this.DatabaseSession.Derive(true); new SalesRepRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer2).WithProductCategory(cat1).WithSalesRepresentative(salesRep1).Build(); new SalesRepRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer2).WithProductCategory(cat2).WithSalesRepresentative(salesRep2).Build(); this.DatabaseSession.Derive(true); var euro = new Currencies(this.DatabaseSession).FindBy(Currencies.Meta.IsoCode, "EUR"); var vatRate21 = new VatRateBuilder(this.DatabaseSession).WithRate(21).Build(); var good1 = new GoodBuilder(this.DatabaseSession) .WithSku("10101") .WithVatRate(vatRate21) .WithName("good1") .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .WithPrimaryProductCategory(cat1) .Build(); var good2 = new GoodBuilder(this.DatabaseSession) .WithSku("10102") .WithVatRate(vatRate21) .WithName("good2") .WithInventoryItemKind(new InventoryItemKinds(this.DatabaseSession).NonSerialized) .WithUnitOfMeasure(new UnitsOfMeasure(this.DatabaseSession).Piece) .WithPrimaryProductCategory(cat2) .Build(); var internalOrganisation = new InternalOrganisations(this.DatabaseSession).FindBy(InternalOrganisations.Meta.Name, "internalOrganisation"); internalOrganisation.PreferredCurrency = euro; new CustomerRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer1).WithInternalOrganisation(internalOrganisation).Build(); new CustomerRelationshipBuilder(this.DatabaseSession).WithFromDate(DateTime.UtcNow).WithCustomer(customer2).WithInternalOrganisation(internalOrganisation).Build(); this.DatabaseSession.Derive(true); var invoice1 = new SalesInvoiceBuilder(this.DatabaseSession) .WithInvoiceDate(DateTime.UtcNow.AddMonths(-1)) .WithInvoiceNumber("1") .WithBillToCustomer(customer1) .WithBillToContactMechanism(contactMechanism) .WithSalesChannel(salesChannel1) .WithSalesInvoiceType(new SalesInvoiceTypes(this.DatabaseSession).SalesInvoice) .Build(); var item1a = new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good1).WithQuantity(3).WithActualUnitPrice(15).WithSalesInvoiceItemType(productItem).Build(); invoice1.AddSalesInvoiceItem(item1a); var item1b = new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good1).WithQuantity(3).WithActualUnitPrice(15).WithSalesInvoiceItemType(productItem).Build(); invoice1.AddSalesInvoiceItem(item1b); var item1c = new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good2).WithQuantity(5).WithActualUnitPrice(10).WithSalesInvoiceItemType(productItem).Build(); invoice1.AddSalesInvoiceItem(item1c); this.DatabaseSession.Derive(true); var invoice2 = new SalesInvoiceBuilder(this.DatabaseSession) .WithInvoiceDate(DateTime.UtcNow) .WithInvoiceNumber("1") .WithBillToCustomer(customer1) .WithBillToContactMechanism(contactMechanism) .WithSalesChannel(salesChannel1) .WithSalesInvoiceType(new SalesInvoiceTypes(this.DatabaseSession).SalesInvoice) .Build(); var item2a = new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good1).WithQuantity(3).WithActualUnitPrice(15).WithSalesInvoiceItemType(productItem).Build(); invoice2.AddSalesInvoiceItem(item2a); var item2b = new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good1).WithQuantity(3).WithActualUnitPrice(15).WithSalesInvoiceItemType(productItem).Build(); invoice2.AddSalesInvoiceItem(item2b); var item2c = new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good2).WithQuantity(5).WithActualUnitPrice(10).WithSalesInvoiceItemType(productItem).Build(); invoice2.AddSalesInvoiceItem(item2c); this.DatabaseSession.Derive(true); Singleton.Instance(this.DatabaseSession).DeriveRevenues(); var salesRep1RevenueHistory = salesRep1.SalesRepRevenueHistoriesWhereSalesRep.First; Assert.AreEqual(90, salesRep1RevenueHistory.Revenue); var salesRep2RevenueHistory = salesRep2.SalesRepRevenueHistoriesWhereSalesRep.First; Assert.AreEqual(50, salesRep2RevenueHistory.Revenue); var invoice3 = new SalesInvoiceBuilder(this.DatabaseSession) .WithInvoiceDate(DateTime.UtcNow) .WithInvoiceNumber("1") .WithBillToCustomer(customer2) .WithBillToContactMechanism(contactMechanism) .WithSalesChannel(salesChannel2) .WithSalesInvoiceType(new SalesInvoiceTypes(this.DatabaseSession).SalesInvoice) .Build(); var item3a = new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good1).WithQuantity(1).WithActualUnitPrice(15).WithSalesInvoiceItemType(productItem).Build(); invoice3.AddSalesInvoiceItem(item3a); var item3b = new SalesInvoiceItemBuilder(this.DatabaseSession).WithProduct(good2).WithQuantity(1).WithActualUnitPrice(10).WithSalesInvoiceItemType(productItem).Build(); invoice3.AddSalesInvoiceItem(item3b); this.DatabaseSession.Derive(true); Singleton.Instance(this.DatabaseSession).DeriveRevenues(); Assert.AreEqual(105, salesRep1RevenueHistory.Revenue); Assert.AreEqual(60, salesRep2RevenueHistory.Revenue); }
public void GivenOrderItem_WhenDeriving_ThenRequiredRelationsMustExist() { this.InstantiateObjects(this.DatabaseSession); var buyer = new OrganisationBuilder(this.DatabaseSession).WithName("buyer").Build(); var mechelen = new CityBuilder(this.DatabaseSession).WithName("Mechelen").Build(); var shipToContactMechanism = new PostalAddressBuilder(this.DatabaseSession).WithGeographicBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var partyContactMechanism = new PartyContactMechanismBuilder(this.DatabaseSession).WithContactMechanism(shipToContactMechanism).Build(); var part = new RawMaterialBuilder(this.DatabaseSession).WithName("raw stuff").Build(); buyer.AddPartyContactMechanism(partyContactMechanism); this.DatabaseSession.Derive(true); this.DatabaseSession.Commit(); var builder = new PurchaseOrderItemBuilder(this.DatabaseSession); order.AddPurchaseOrderItem(builder.Build()); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); this.DatabaseSession.Rollback(); builder.WithPart(part); order.AddPurchaseOrderItem(builder.Build()); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); builder.WithProduct(new GoodBuilder(this.DatabaseSession).Build()); var orderItem = builder.Build(); order.AddPurchaseOrderItem(orderItem); Assert.IsTrue(this.DatabaseSession.Derive().HasErrors); orderItem.RemovePart(); Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }
public void GivenCustomerRelationship_WhenDeriving_ThenSubAccountNumberMustBeUniqueWithinInternalOrganisation() { var customer2 = new OrganisationBuilder(this.DatabaseSession).WithName("customer").Build(); var belgium = new Countries(this.DatabaseSession).CountryByIsoCode["BE"]; var euro = belgium.Currency; var bank = new BankBuilder(this.DatabaseSession).WithCountry(belgium).WithName("ING België").WithBic("BBRUBEBB").Build(); var ownBankAccount = new OwnBankAccountBuilder(this.DatabaseSession) .WithDescription("BE23 3300 6167 6391") .WithBankAccount(new BankAccountBuilder(this.DatabaseSession).WithBank(bank).WithCurrency(euro).WithIban("BE23 3300 6167 6391").WithNameOnAccount("Koen").Build()) .Build(); var mechelen = new CityBuilder(this.DatabaseSession).WithName("Mechelen").Build(); var address1 = new PostalAddressBuilder(this.DatabaseSession).WithGeographicBoundary(mechelen).WithAddress1("Haverwerf 15").Build(); var billingAddress = new PartyContactMechanismBuilder(this.DatabaseSession) .WithContactMechanism(address1) .WithContactPurpose(new ContactMechanismPurposes(this.DatabaseSession).BillingAddress) .WithUseAsDefault(true) .Build(); var internalOrganisation2 = new InternalOrganisationBuilder(this.DatabaseSession) .WithName("internalOrganisation2") .WithLocale(new Locales(this.DatabaseSession).EnglishGreatBritain) .WithEmployeeRole(new Roles(this.DatabaseSession).Administrator) .WithPartyContactMechanism(billingAddress) .WithDefaultPaymentMethod(ownBankAccount) .WithPreferredCurrency(euro) .Build(); var customerRelationship2 = new CustomerRelationshipBuilder(this.DatabaseSession) .WithCustomer(customer2) .WithInternalOrganisation(internalOrganisation2) .WithFromDate(DateTime.UtcNow) .Build(); customerRelationship2.SubAccountNumber = 19; Assert.IsFalse(this.DatabaseSession.Derive().HasErrors); }