From 926bcdf22ac4c6a3785b3562d4e8b2f623fb3975 Mon Sep 17 00:00:00 2001 From: Dusan Jakovljevic <134404137+JakovljevicDusan@users.noreply.github.com> Date: Tue, 10 Feb 2026 02:41:43 +0100 Subject: [PATCH 1/3] Package Mgmt. improvements --- .../Inventory/QltyItemTrackingMgmt.Codeunit.al | 18 +----------------- .../QltyReceivingIntegration.Codeunit.al | 1 - .../QltyWarehouseIntegration.Codeunit.al | 1 - 3 files changed, 1 insertion(+), 19 deletions(-) diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Inventory/QltyItemTrackingMgmt.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Integration/Inventory/QltyItemTrackingMgmt.Codeunit.al index 948f494498..172cc05ab0 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Inventory/QltyItemTrackingMgmt.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Inventory/QltyItemTrackingMgmt.Codeunit.al @@ -536,6 +536,7 @@ codeunit 20439 "Qlty. Item Tracking Mgmt." ReservForReservationEntry."Lot No." := LotNo; ReservForReservationEntry."Serial No." := SerialNo; + ReservForReservationEntry."Package No." := PackageNo; CreateReservEntry.CreateReservEntryFor(Database::"Purchase Line", 5, PurchPurchaseLine."Document No.", '', 0, PurchPurchaseLine."Line No.", PurchPurchaseLine."Qty. per Unit of Measure", ChangeQty / PurchPurchaseLine."Qty. per Unit of Measure", ChangeQty, ReservForReservationEntry); @@ -543,23 +544,6 @@ codeunit 20439 "Qlty. Item Tracking Mgmt." CreateReservEntry.SetDates(0D, ExpirationDate); CreateReservEntry.CreateEntry(PurchPurchaseLine."No.", PurchPurchaseLine."Variant Code", PurchPurchaseLine."Location Code", PurchPurchaseLine.Description, Today, 0D, 0, ReservationStatus::Surplus); - - if PackageNo <> '' then begin - ReservationEntry.Reset(); - ReservationEntry.SetRange("Reservation Status", ReservationEntry."Reservation Status"::Surplus); - ReservationEntry.SetRange("Lot No.", LotNo); - ReservationEntry.SetRange("Serial No.", SerialNo); - ReservationEntry.SetFilter("Package No.", '%1', ''); - ReservationEntry.SetRange("Location Code", PurchPurchaseLine."Location Code"); - ReservationEntry.SetRange("Source Type", Database::"Purchase Line"); - ReservationEntry.SetRange("Source ID", PurchPurchaseLine."Document No."); - ReservationEntry.SetRange("Source Ref. No.", PurchPurchaseLine."Line No."); - ReservationEntry.SetRange(Positive, false); - if ReservationEntry.FindLast() then begin - ReservationEntry."Package No." := PackageNo; - ReservationEntry.Modify(); - end; - end; end; /// diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyReceivingIntegration.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyReceivingIntegration.Codeunit.al index 8a99fac10a..eb7b431098 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyReceivingIntegration.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Receiving/QltyReceivingIntegration.Codeunit.al @@ -242,7 +242,6 @@ codeunit 20411 "Qlty. Receiving Integration" TempTrackingSpecification.DeleteAll(false); TempTrackingSpecification.SetSourceFromReservEntry(ReservationEntry); TempTrackingSpecification.CopyTrackingFromReservEntry(ReservationEntry); - TempTrackingSpecification."Package No." := ReservationEntry."Package No."; TempTrackingSpecification."Quantity (Base)" := ReservationEntry."Quantity (Base)"; TempTrackingSpecification.Insert(); AttemptCreateInspectionWithPurchaseLineAndTracking(PurchaseLine, PurchaseHeader, TempTrackingSpecification); diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWarehouseIntegration.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWarehouseIntegration.Codeunit.al index d48b16f4d5..36d846afea 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWarehouseIntegration.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Warehouse/QltyWarehouseIntegration.Codeunit.al @@ -144,7 +144,6 @@ codeunit 20438 "Qlty. - Warehouse Integration" TempTrackingSpecification."Entry No." := ReservationCounter; TempTrackingSpecification.SetSourceFromReservEntry(ReservationEntry); TempTrackingSpecification.CopyTrackingFromReservEntry(ReservationEntry); - TempTrackingSpecification."Package No." := ReservationEntry."Package No."; TempTrackingSpecification.Insert(); until ReservationEntry.Next() = 0; end; From 79f9252337d633cd9c256f91adc882ee336da4b6 Mon Sep 17 00:00:00 2001 From: Dusan Jakovljevic <134404137+JakovljevicDusan@users.noreply.github.com> Date: Tue, 10 Feb 2026 02:45:59 +0100 Subject: [PATCH 2/3] Production Order status change --- .../QltyManufacturIntegration.Codeunit.al | 22 +++---------------- .../Utilities/QltySessionHelper.Codeunit.al | 15 ------------- 2 files changed, 3 insertions(+), 34 deletions(-) diff --git a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyManufacturIntegration.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyManufacturIntegration.Codeunit.al index 63dd0dea28..a5ba82153e 100644 --- a/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyManufacturIntegration.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Integration/Manufacturing/QltyManufacturIntegration.Codeunit.al @@ -13,7 +13,6 @@ using Microsoft.QualityManagement.Configuration.GenerationRule; using Microsoft.QualityManagement.Configuration.SourceConfiguration; using Microsoft.QualityManagement.Document; using Microsoft.QualityManagement.Setup; -using Microsoft.QualityManagement.Utilities; /// /// Used to integrate with manufacturing related events. @@ -22,7 +21,6 @@ codeunit 20407 "Qlty. Manufactur. Integration" { var QltyTraversal: Codeunit "Qlty. Traversal"; - QltySessionHelper: Codeunit "Qlty. Session Helper"; /// /// We subscribe to OnAfterPostOutput to see if we need to create an inspection related to the output. @@ -86,36 +84,22 @@ codeunit 20407 "Qlty. Manufactur. Integration" AttemptCreateInspectionPosting(ProdOrderRoutingLine, VerifiedItemLedgerEntry, ProdOrderLine, ItemJournalLine, QltyInspectionGenRule); end; - [EventSubscriber(ObjectType::Codeunit, Codeunit::"Prod. Order Status Management", 'OnBeforeChangeStatusOnProdOrder', '', true, true)] - local procedure HandleOnBeforeChangeStatusOnProdOrder(var ProductionOrder: Record "Production Order"; NewStatus: Option Quote,Planned,"Firm Planned",Released,Finished; var IsHandled: Boolean; NewPostingDate: Date; NewUpdateUnitCost: Boolean) - var - QltyManagementSetup: Record "Qlty. Management Setup"; - begin - if not QltyManagementSetup.GetSetupRecord() then - exit; - - QltySessionHelper.SetProductionOrderBeforeChangingStatus(ProductionOrder); - end; - [EventSubscriber(ObjectType::Codeunit, Codeunit::"Prod. Order Status Management", 'OnAfterChangeStatusOnProdOrder', '', true, true)] - local procedure HandleOnAfterChangeStatusOnProdOrder(var ProdOrder: Record "Production Order"; var ToProdOrder: Record "Production Order"; NewStatus: Enum "Production Order Status"; NewPostingDate: Date; NewUpdateUnitCost: Boolean; var SuppressCommit: Boolean) + local procedure HandleOnAfterChangeStatusOnProdOrder(var ProdOrder: Record "Production Order"; var ToProdOrder: Record "Production Order"; NewStatus: Enum "Production Order Status"; NewPostingDate: Date; NewUpdateUnitCost: Boolean; var SuppressCommit: Boolean; xProductionOrder: Record "Production Order") var QltyManagementSetup: Record "Qlty. Management Setup"; - OldProductionOrder: Record "Production Order"; QltyInspectionGenRule: Record "Qlty. Inspection Gen. Rule"; IsHandled: Boolean; begin if not QltyManagementSetup.GetSetupRecord() then exit; - QltySessionHelper.GetProductionOrderBeforeChangingStatus(OldProductionOrder); - - OnBeforeProductionHandleOnAfterChangeStatusOnProdOrder(OldProductionOrder, ToProdOrder, IsHandled); + OnBeforeProductionHandleOnAfterChangeStatusOnProdOrder(xProductionOrder, ToProdOrder, IsHandled); if IsHandled then exit; if QltyManagementSetup."Production Update Control" in [QltyManagementSetup."Production Update Control"::"Update when source changes"] then - UpdateReferencesForProductionOrder(OldProductionOrder, ToProdOrder); + UpdateReferencesForProductionOrder(xProductionOrder, ToProdOrder); if ToProdOrder.Status <> ToProdOrder.Status::Released then exit; diff --git a/src/Apps/W1/Quality Management/app/src/Utilities/QltySessionHelper.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Utilities/QltySessionHelper.Codeunit.al index a4d0c84dac..f54b0f980c 100644 --- a/src/Apps/W1/Quality Management/app/src/Utilities/QltySessionHelper.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Utilities/QltySessionHelper.Codeunit.al @@ -4,8 +4,6 @@ // ------------------------------------------------------------------------------------------------ namespace Microsoft.QualityManagement.Utilities; -using Microsoft.Manufacturing.Document; - /// /// This exists to help keep track of variables to work around a variety of BC issues. /// @@ -15,25 +13,12 @@ codeunit 20430 "Qlty. Session Helper" InherentPermissions = X; var - ProductionOrderBeforeChangingStatus: Record "Production Order"; MiscKeyValuePairs: Dictionary of [Text, Text]; ItemTrackingFlagAllOrSingleTok: Label 'Qlty::ItemTracking::AllOrSingle', Locked = true; ItemTrackingFlagAllDocsTok: Label 'Qlty::ItemTracking::AllOrSingle::ALLDOCS', Locked = true; ItemTrackingFlagSourceDocOnlyTok: Label 'Qlty::ItemTracking::AllOrSingle::SOURCEDOCONLY', Locked = true; ItemTrackingIsFromQltyInspectionModeTok: Label 'Qlty::ItemTracking::StartingFromQltyInspection', Locked = true; - #region Manufacturing - Production Order Status Change Handling - internal procedure SetProductionOrderBeforeChangingStatus(var ProductionOrderToSet: Record "Production Order") - begin - ProductionOrderBeforeChangingStatus := ProductionOrderToSet; - end; - - internal procedure GetProductionOrderBeforeChangingStatus(var ProductionOrderToGet: Record "Production Order") - begin - ProductionOrderToGet := ProductionOrderBeforeChangingStatus; - end; - #endregion Manufacturing - Production Order Status Change Handling - internal procedure SetSessionValue(CurrentKey: Text; Value: Text) begin MiscKeyValuePairs.Set(CurrentKey, Value); From 70c68d618e5dc1bbe24a6d777922b6fa968784ef Mon Sep 17 00:00:00 2001 From: Dusan Jakovljevic <134404137+JakovljevicDusan@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:39:43 +0100 Subject: [PATCH 3/3] Change summary --- .../app/src/Utilities/QltySessionHelper.Codeunit.al | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Apps/W1/Quality Management/app/src/Utilities/QltySessionHelper.Codeunit.al b/src/Apps/W1/Quality Management/app/src/Utilities/QltySessionHelper.Codeunit.al index f54b0f980c..1199873f59 100644 --- a/src/Apps/W1/Quality Management/app/src/Utilities/QltySessionHelper.Codeunit.al +++ b/src/Apps/W1/Quality Management/app/src/Utilities/QltySessionHelper.Codeunit.al @@ -5,7 +5,7 @@ namespace Microsoft.QualityManagement.Utilities; /// -/// This exists to help keep track of variables to work around a variety of BC issues. +/// Keep track of global session values related to quality management, for example for item tracking. /// codeunit 20430 "Qlty. Session Helper" {