using System.Linq; using Centron.BusinessLogic; using Centron.BusinessLogic.Sales.Receipts.DataAndResults; using Centron.BusinessLogic.WebServices.Sales.Receipts; using Centron.Data.WebServices.Sales.Receipts.Orders; using Centron.Interfaces; using Centron.Interfaces.Administration.Environment; using Centron.Interfaces.BL; using Centron.Tests.EndToEnd.Infrastructure; using Xunit; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.TicketTests.Ticket128521; public class Ticket128521Tests : EndToEndTest { public Ticket128521Tests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public const int OrderI3D = 1331; public const int ArticleI3D = 1277; public override void Execute() { // In this ticket, the problem was, that c-entron.NET didn't respect the Article.NotDiscountable property this.PrepareDatabase(); var order = this.NewOrderVersion(); var item = order.Items.First(f => f.ArticleI3D == ArticleI3D); item.Discount = 50; //Set 50 % discount, even tho Article.NotDiscountable is set to true var savedOrder = this.SaveVersion(order); var savedItem = savedOrder.Items.First(f => f.ArticleI3D == ArticleI3D); // SaveReceipt should see, that the article is not-discountable, so set the discount to 0 Assert.Equal(0, savedItem.Discount); } private void PrepareDatabase() { this.Sql($"UPDATE dbo.ARTIK SET NichtRabattierbar = 1 WHERE I3D = {ArticleI3D}"); } private ReceiptOrderDTO NewOrderVersion() { using var session = new BLSession(); var createNewVersionResult = session.GetBL().CreateNewVersion( CentronObjectKindNumeric.OrderClass, OrderI3D, version: null, newContactPersonI3D: null, this.GetLoggedInUser().User, new CreateNewVersionData { IgnoreCallbacks = true }); return (ReceiptOrderDTO)createNewVersionResult.ThrowIfError().Receipt; } private ReceiptOrderDTO SaveVersion(ReceiptOrderDTO order) { using var session = new BLSession(); var saveResult = session.GetBL().SaveReceipt( order, this.GetLoggedInUser().User, new SaveReceiptData(), autoLockIfNewReceipt: false, CreatedThroughApplication.WebServices, receiptTemplateFolderI3D: null); return (ReceiptOrderDTO)saveResult.ThrowIfError().Receipt; } }