From 9c0c3cedc087dd83b3ce43d774690852292e5d28 Mon Sep 17 00:00:00 2001 From: v-shikhverma Date: Wed, 2 Sep 2026 16:58:29 +0530 Subject: [PATCH 1/2] Initial commit --- .../Requisition/OrderPlanningMgt.Codeunit.al | 2 + .../SCMOrderPlanningIII.Codeunit.al | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/src/Layers/W1/BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al b/src/Layers/W1/BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al index 387890be0b1..f56a6e72860 100644 --- a/src/Layers/W1/BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al +++ b/src/Layers/W1/BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al @@ -200,6 +200,8 @@ codeunit 5522 "Order Planning Mgt." OnInsertDemandLinesOnCopyItemTracking(ReqLine, TempUnplannedDemand); if ReqLine.Quantity > 0 then PlanningLineMgt.Calculate(ReqLine, 1, true, true, 0); + if Item."Item Tracking Code" <> '' then + OnInsertDemandLinesOnCopyItemTracking(ReqLine, TempUnplannedDemand); ReqLine.Find('+'); end; diff --git a/src/Layers/W1/Tests/SCM-Planning/SCMOrderPlanningIII.Codeunit.al b/src/Layers/W1/Tests/SCM-Planning/SCMOrderPlanningIII.Codeunit.al index f8b18353cba..4dd381e3c73 100644 --- a/src/Layers/W1/Tests/SCM-Planning/SCMOrderPlanningIII.Codeunit.al +++ b/src/Layers/W1/Tests/SCM-Planning/SCMOrderPlanningIII.Codeunit.al @@ -32,6 +32,7 @@ codeunit 137088 "SCM Order Planning - III" NotificationLifecycleMgt: Codeunit "Notification Lifecycle Mgt."; LibraryVariableStorage: Codeunit "Library - Variable Storage"; LibraryRandom: Codeunit "Library - Random"; + LibraryItemTracking: Codeunit "Library - Item Tracking"; VerifyOnGlobal: Option RequisitionLine,Orders; DemandTypeGlobal: Option Sales,Production; GlobalChildItemNo: Code[20]; @@ -3777,6 +3778,49 @@ codeunit 137088 "SCM Order Planning - III" Assert.AreEqual(200, ReqLine.Quantity, RequisitionLineQuantityMismatchErr); end; + [Test] + procedure CreatePurchaseOrderFromDropShipmentSalesOrderWithLotTracking() + var + Item: Record Item; + Location: Record Location; + Purchasing: Record Purchasing; + PurchaseHeader: Record "Purchase Header"; + PurchaseLine: Record "Purchase Line"; + ReservationEntry: Record "Reservation Entry"; + SalesHeader: Record "Sales Header"; + SalesLine: Record "Sales Line"; + LotNo: Code[50]; + Quantity: Decimal; + begin + // [SCENARIO 647806] Create a purchase order from a drop shipment sales order with lot tracking. + Initialize(); + LotNo := LibraryUtility.GenerateGUID(); + Quantity := LibraryRandom.RandInt(10); + + // [GIVEN] A lot-tracked item with a vendor and a drop shipment sales order line with item tracking. + LibraryItemTracking.CreateLotItem(Item); + Item.Validate("Vendor No.", LibraryPurchase.CreateVendorNo()); + Item.Modify(true); + LibraryWarehouse.CreateLocation(Location); + LibraryPurchase.CreateDropShipmentPurchasingCode(Purchasing); + CreateSalesOrderWithPurchasingCode(SalesHeader, SalesLine, Item."No.", Purchasing.Code); + SalesLine.Validate("Location Code", Location.Code); + SalesLine.Validate(Quantity, Quantity); + SalesLine.Modify(true); + LibraryItemTracking.CreateSalesOrderItemTracking(ReservationEntry, SalesLine, '', LotNo, Quantity); + + // [WHEN] Create a purchase order from the sales order. + CreatePurchaseOrderFromSalesOrder(SalesHeader."No.", true); + + // [THEN] The purchase order is created with the lot tracking from the sales line. + FindPurchaseDocumentByItemNo(PurchaseHeader, PurchaseLine, Item."No."); + ReservationEntry.SetSourceFilter( + Database::"Purchase Line", PurchaseLine."Document Type".AsInteger(), PurchaseLine."Document No.", PurchaseLine."Line No.", true); + ReservationEntry.SetSourceFilter('', 0); + ReservationEntry.SetRange("Lot No.", LotNo); + Assert.RecordIsNotEmpty(ReservationEntry); + end; + local procedure Initialize() var LibraryERMCountryData: Codeunit "Library - ERM Country Data"; From 7f14dfdd11a9631ac7e9377f5070061f416b8a19 Mon Sep 17 00:00:00 2001 From: v-shikhverma Date: Tue, 8 Sep 2026 11:50:24 +0530 Subject: [PATCH 2/2] update --- .../BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Layers/W1/BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al b/src/Layers/W1/BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al index f56a6e72860..d0d7c8680d0 100644 --- a/src/Layers/W1/BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al +++ b/src/Layers/W1/BaseApp/Inventory/Requisition/OrderPlanningMgt.Codeunit.al @@ -196,8 +196,6 @@ codeunit 5522 "Order Planning Mgt." OnInsertDemandLinesOnAfterReqLineInsert(ReqLine, TempUnplannedDemand); if Item."No." <> TempUnplannedDemand."Item No." then Item.Get(TempUnplannedDemand."Item No."); - if Item."Item Tracking Code" <> '' then - OnInsertDemandLinesOnCopyItemTracking(ReqLine, TempUnplannedDemand); if ReqLine.Quantity > 0 then PlanningLineMgt.Calculate(ReqLine, 1, true, true, 0); if Item."Item Tracking Code" <> '' then