using System.Collections.Generic; using Centron.BusinessLogic; using Centron.BusinessLogic.Administration.Settings; using Centron.BusinessLogic.Sales.Receipts.DataAndResults; using Centron.BusinessLogic.WebServices.Sales.Receipts; using Centron.Interfaces; using Centron.Interfaces.BL; using Centron.Interfaces.Sales.Receipts.InsertReceipts; using Centron.Tests.EndToEnd.Infrastructure; using CentronSoftware.Centron.WebServices.EntitiesWrongPlace.Sales.Receipts.DataAndResults; using Xunit; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.Tests.ReceiptResultBuilder; public class ReceiptResultBuilderTests : EndToEndTest { public ReceiptResultBuilderTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { this.PrepareDatabase(); this.TryForwardInvoiceToCreditVoucher(); } private void PrepareDatabase() { this.Sql($"UPDATE dbo.Stammdat SET Wert = 1 WHERE I3D = {(int)AppSettingsConst.IsTaxNumberForCreditCreationMandatory}"); } private void TryForwardInvoiceToCreditVoucher() { const int InvoiceI3D = 1365; using var session = new BLSession(); var forwardResult = session.GetBL().ForwardReceipt( CentronObjectKindNumeric.CreditVoucherClass, this.GetLoggedInUser().User, new ForwardReceiptData { IgnoreCallbacks = true, CreateReceiptData = new CreateReceiptData { IgnoreCallbacks = true, }, CreateReceiptItemsFromExistingItemsData = new List { new() { IgnoreCallbacks = true, }, }, }, new List { new() { ReceiptKind = CentronObjectKindNumeric.InvoiceClass, ReceiptI3D = InvoiceI3D } }, null, InsertReceiptTakeoverOptions.Reference, onlyTakeoverAvailableQuantity: false, ignoreDefaultContract: false); // Forwarding the invoice should have failed in CreateNewReceipt // Now we expect the error message from the CreateReceiptResult.Message to also be visible in the ForwardReceiptResult.Message Assert.Equal(ResultStatus.Error, forwardResult.Status); Assert.Equal("Es kann leider kein Beleg (Gutschrift) erstellt werden, weil für den Kunden keine Steuernummer und keine Umsatzsteuertidentnummer hinterlegt ist!", forwardResult.Message); Assert.Contains(forwardResult.Data.CreateReceiptResult.Message, forwardResult.Message); } }