using System.Collections.Generic; 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.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.TicketTests.Ticket120182 { public class Ticket120182Tests : EndToEndTest { public Ticket120182Tests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } public override void Execute() { // In the database are many receipt-items, that have a IReceiptItemWithBalanceItem.BalanceId of string.Empty // There is a bug in the ReceiptItemBL.CreateReceiptItemsFromExistingItems // It would see the that the BalanceId is not NULL, assume it's a real legal value, and connect the positions with new BalanceIds together const int ReceiptItemI3D1 = 488; const int ReceiptItemI3D2 = 489; const int ReceiptItemI3D3 = 491; using var session = new BLSession(); var newOffer = session.GetBL().CreateNewReceipt( CentronObjectKindNumeric.OrderClass, GetLoggedInUser(), 10003, new CreateReceiptData { IgnoreCallbacks = true }, addressI3D: null, contactPersonI3D: null, insertSalutationAndAgreement: false, ignoreDefaultContract: false, insertCustomerDiscount: false); var copiedReceiptItemsResult = session.GetBL().CreateReceiptItemsFromExistingItems( newOffer.Data.Receipt, this.GetLoggedInUser().User, CentronObjectKindNumeric.InvoiceClass, new List { ReceiptItemI3D1, ReceiptItemI3D2, ReceiptItemI3D3 }, InsertReceiptTakeoverOptions.Copy, takeoverPrice: true, takeoverPurchasePrice: true, takeoverCostCenterCostObject: true, onlyTakeoverAvailableQuantity: false, new CreateReceiptItemsFromExistingItemsData { IgnoreCallbacks = true }, doNotInsertFreeTexts: true); var receiptItems = copiedReceiptItemsResult.Data.ReceiptItems.Cast().ToList(); Assert.All(receiptItems, f => { Assert.Null(f.BalanceID); }); } } }