using Centron.BusinessLogic; using Centron.BusinessLogic.Administration.Settings; using Centron.BusinessLogic.Sales.Receipts.DataAndResults; using Centron.BusinessLogic.WebServices.Sales.Receipts; using Centron.BusinessLogic.WebServices.Sales.Receipts.DataAndResults; using Centron.Data.WebServices.Sales.Receipts.CreditVouchers; using Centron.Interfaces; using Centron.Interfaces.Administration.Environment; using Centron.Interfaces.BL; using Centron.Tests.EndToEnd.Infrastructure; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.TicketTests.Ticket125608; public class Ticket125608Tests : EndToEndTest { public Ticket125608Tests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } // This customer doesn't have a RevenueIdentificationNumber nor a TaxNumber private const int FailureCustomerI3D = 10018; private const int FailureCreditVoucherI3D = 12; // This customer does have a TaxNumber private const int SuccessCustomerI3D = 10003; private const int SuccessCreditVoucherI3D = 4; public override void Execute() { this.PrepareDatabase(); this.CreateNewCreditVoucher(); this.CreateNewCreditVoucherVersion(); this.SaveCreditVoucher(); } private void CreateNewCreditVoucher() { Test("CreateNewCreditVoucher_Failure", FailureCustomerI3D); Test("CreateNewCreditVoucher_Success", SuccessCustomerI3D); void Test(string name, int customerI3D) { using var session = new BLSession(); var result = session.GetBL().CreateNewReceipt( CentronObjectKindNumeric.CreditVoucherClass, this.GetLoggedInUser(), customerI3D, new CreateReceiptData(), addressI3D: null, contactPersonI3D: null, insertCustomerDiscount: true, insertSalutationAndAgreement: true, ignoreDefaultContract: false); this.Verifier.Verify(name, result); } } private void CreateNewCreditVoucherVersion() { Test("CreateNewCreditVoucherVersion_Failure", FailureCreditVoucherI3D); Test("CreateNewCreditVoucherVersion_Success", SuccessCreditVoucherI3D); void Test(string name, int creditVoucherI3D) { using var session = new BLSession(); var result = session.GetBL().CreateNewVersion( CentronObjectKindNumeric.CreditVoucherClass, creditVoucherI3D, version: null, newContactPersonI3D: null, this.GetLoggedInUser().User, new CreateNewVersionData { IgnoreCallbacks = true }); this.Verifier.Verify(name, result); } } private void SaveCreditVoucher() { Test("SaveCreditVoucher_Failure", FailureCreditVoucherI3D); Test("SaveCreditVoucher_Success", SuccessCreditVoucherI3D); void Test(string name, int creditVoucherI3D) { using var session = new BLSession(); var creditVoucher = (ReceiptCreditVoucherDTO)new BLSession().GetBL().GetReceiptByI3D(creditVoucherI3D, CentronObjectKindNumeric.CreditVoucherClass).ThrowIfError(); // creditVoucher.ReceiptReason var result = session.GetBL().SaveReceipt( creditVoucher, this.GetLoggedInUser().User, new SaveReceiptData(), autoLockIfNewReceipt: false, CreatedThroughApplication.CentronNet, receiptTemplateFolderI3D: null); this.Verifier.Verify(name, result); } } private void PrepareDatabase() { // Activate the setting this.Sql($"UPDATE dbo.Stammdat SET Wert = 1 WHERE I3D = {(int)AppSettingsConst.IsTaxNumberForCreditCreationMandatory}"); this.Sql($"UPDATE dbo.Stammdat SET Wert = 0 WHERE I3D = {(int)AppSettingsConst.QmMessageConfirmationPopupCreditVoucher}"); this.Sql($"UPDATE dbo.Kunden SET SteuerNr = 'Test' WHERE I3D = {SuccessCustomerI3D}"); } }