using System.Linq; using Centron.BusinessLogic; using Centron.BusinessLogic.WebServices.Sales.Receipts; using Centron.Data.WebServices.Sales.Receipts.Orders; using Centron.Interfaces; using Centron.Interfaces.BL; using Centron.Tests.EndToEnd.Infrastructure; using CentronSoftware.Centron.WebServices.Extensions; using Xunit; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.TicketTests.Ticket133365; public class Ticket133365Tests : EndToEndTest { public Ticket133365Tests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public const int SpecialAgreementI3D = 11; public const int ReceiptOrderI3D = 4349; public const int ReceiptOrderItemI3D = 6924; public override void Execute() { this.PrepareDatabase(); this.UpdatePurchasePrices("Before", expectUpdatedPurchasePrice: false); this.ChangeProjectPrice(); this.UpdatePurchasePrices("After", expectUpdatedPurchasePrice: true); } private void PrepareDatabase() { // Update the Order purchase-prices once to make sure that all purchase-prices are up to date using var session = new BLSession(); var result = session.GetBL().UpdatePurchasePriceInReceipt( ReceiptOrderI3D, CentronObjectKindNumeric.OrderClass, saveUpdatedReceipt:true, this.GetLoggedInUser().User); } private void ChangeProjectPrice() { this.Sql($"UPDATE dbo.Sondervereinbarung SET EKVKAbschlag = 1, EKAbschlagProzent = 50 WHERE I3D = {SpecialAgreementI3D}"); } private void UpdatePurchasePrices(string name, bool expectUpdatedPurchasePrice) { using var session = new BLSession(); var result = session.GetBL().UpdatePurchasePriceInReceipt( ReceiptOrderI3D, CentronObjectKindNumeric.OrderClass, saveUpdatedReceipt: false, this.GetLoggedInUser().User).ThrowIfError(); Assert.Equal(expectUpdatedPurchasePrice, result is not null); var order = (ReceiptOrderDTO)session.GetBL().GetReceiptByI3D(ReceiptOrderI3D, CentronObjectKindNumeric.OrderClass).ThrowIfError(); var orderItem = order.Items.FirstOrDefault(f => f.I3D == ReceiptOrderItemI3D); this.Verifier.Verify($"{name}_PurchaseBasePrice", orderItem.PurchaseBasePrice); } }