using System.Collections.Generic; using Centron.BusinessLogic; using Centron.BusinessLogic.Sales.Receipts.DataAndResults; using Centron.BusinessLogic.WebServices.Sales.Receipts; using Centron.Interfaces; using Centron.Interfaces.Sales.Receipts.InsertReceipts; using Centron.Tests.EndToEnd.Infrastructure; using CentronSoftware.Centron.WebServices.EntitiesWrongPlace.Sales.Receipts.DataAndResults; using Xunit.Abstractions; namespace Centron.Tests.EndToEnd.TicketTests.Ticket128146; public class Ticket128146Tests : EndToEndTest { public Ticket128146Tests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } // This order has items with QuantityPicked < CurrentQuantity public const int OrderI3D = 1336; public const int OrderItemI3D = 3732; public override void Execute() { this.PrepareDatabase(); // In this ticket we added a callback to CreateReceiptItemsFromExistingItems // When forwarding a receipt with QuantityPicked < CurrentQuantity, the user should get a warning message this.ForwardReceipt(takePickedQuantity: null); this.ForwardReceipt(takePickedQuantity: true); this.ForwardReceipt(takePickedQuantity: false); } private void PrepareDatabase() { this.Sql("UPDATE dbo.ARTIK SET BarcodeScanen = 0 WHERE I3D = 1316"); this.Sql($"UPDATE dbo.AufPos SET Stk = 10, Kommisioniert = 5 WHERE I3D = {OrderItemI3D}"); } private void ForwardReceipt(bool? takePickedQuantity) { using var session = new BLSession(); var usePickedQuantityFromItem = takePickedQuantity switch { null => null, true => new List { new UsePickedQuantityFromItem { ReceiptKind = CentronObjectKindNumeric.OrderClass, ReceiptI3D = OrderI3D, ReceiptItemI3D = OrderItemI3D, UseOnlyPickedQuantity = true, } }, false => new List { new UsePickedQuantityFromItem { ReceiptKind = CentronObjectKindNumeric.OrderClass, ReceiptI3D = OrderI3D, ReceiptItemI3D = OrderItemI3D, UseOnlyPickedQuantity = false, } } }; var forwardResult = session.GetBL().ForwardReceipt( CentronObjectKindNumeric.DeliveryListClass, this.GetLoggedInUser().User, new ForwardReceiptData { IgnoreCallbacks = true, CreateReceiptData = new CreateReceiptData { IgnoreCallbacks = true }, CreateReceiptItemsFromExistingItemsData = new List { new() { IgnoreCallbacks = false, UsePickedQuantityFromItems = usePickedQuantityFromItem }, }, }, new List { new ReceiptToForward { ReceiptKind = CentronObjectKindNumeric.OrderClass, ReceiptI3D = OrderI3D, ReceiptItemI3Ds = new []{ OrderItemI3D }, } }, receiptProjectLayoutItemI3DsToForward: null, takeoverOptions: InsertReceiptTakeoverOptions.Reference, onlyTakeoverAvailableQuantity: false, ignoreDefaultContract: false); this.Verifier.Verify($"ForwardReceipt_TakePickedQuantity_{takePickedQuantity?.ToString() ?? "NULL"}", forwardResult); } }