From d84381cef93be1d6bc4f0067252f9934a90d7d1c Mon Sep 17 00:00:00 2001 From: V-VNIGAM Date: Thu, 16 Jul 2026 12:37:00 +0000 Subject: [PATCH 1/6] Initial Changes and Automation --- .../Requisition/ReqWorksheet.Page.al | 12 +++++ .../SCM/WFWRequisitionWorksheet.Codeunit.al | 51 +++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al b/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al index 14ad325546..0cf35979ab 100644 --- a/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al +++ b/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al @@ -1161,6 +1161,18 @@ page 291 "Req. Worksheet" SetControlAppearanceFromWkshBatch(); exit; end; + // When the page is opened positioned on a specific worksheet batch (for example, from the + // Open Record action on an approval entry), use the batch from the record instead of the + // previously saved batch name that SaveValues would otherwise restore. + if (Rec."Journal Batch Name" <> '') and (Rec."Worksheet Template Name" <> '') then begin + CurrentJnlBatchName := Rec."Journal Batch Name"; + Rec.FilterGroup := 2; + Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); + Rec.FilterGroup := 0; + ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); + SetControlAppearanceFromWkshBatch(); + exit; + end; OnBeforeTemplateSelection(Rec, CurrentJnlBatchName); ReqJnlManagement.WkshTemplateSelection( PAGE::"Req. Worksheet", false, Enum::"Req. Worksheet Template Type"::"Req.", Rec, JnlSelected); diff --git a/src/Layers/W1/Tests/SCM/WFWRequisitionWorksheet.Codeunit.al b/src/Layers/W1/Tests/SCM/WFWRequisitionWorksheet.Codeunit.al index c6eb3c76ce..5a56363522 100644 --- a/src/Layers/W1/Tests/SCM/WFWRequisitionWorksheet.Codeunit.al +++ b/src/Layers/W1/Tests/SCM/WFWRequisitionWorksheet.Codeunit.al @@ -52,6 +52,7 @@ codeunit 139506 "WFW Requisition Worksheet" BatchWorkflowStatusFactboxMustBeVisibleLbl: Label 'Batch workflow Status factbox must be visible'; ImposedRestrictionMustBeShownLbl: Label 'Imposed restriction must be shown.'; CannotRenameRecordErr: Label 'You cannot rename a %1.', Comment = '%1 = Table Caption'; + WrongBatchShownOnOpenRecordLbl: Label 'Open Record must show the requisition worksheet batch of the selected approval entry.'; [Test] procedure TestEnsureNecessaryTableRelatiosnsAreSetup() @@ -1545,6 +1546,47 @@ codeunit 139506 "WFW Requisition Worksheet" Assert.ExpectedError(''); end; + [Test] + [HandlerFunctions('ReqWorksheetVerifyBatchPageHandler')] + procedure OpenRecordShowsCorrectBatchAfterViewingDifferentRequisitionWkshBatch() + var + FirstRequisitionWkshName: Record "Requisition Wksh. Name"; + SecondRequisitionWkshName: Record "Requisition Wksh. Name"; + TempRequisitionWkshName: Record "Requisition Wksh. Name" temporary; + RequisitionLine: Record "Requisition Line"; + PageManagement: Codeunit "Page Management"; + begin + // [SCENARIO 639932] Open Record shows the correct Requisition Worksheet batch after viewing a different batch. + Initialize(); + + // [GIVEN] Two Requisition Worksheet batches (same template), each with one requisition line. + CreateRequisitionWkshNameWithOneRequisitionLine(FirstRequisitionWkshName, RequisitionLine); + CreateRequisitionWkshNameWithOneRequisitionLine(SecondRequisitionWkshName, RequisitionLine); + + // [GIVEN] The batches are ordered so the first one opened sorts before the second one. + if FirstRequisitionWkshName.Name > SecondRequisitionWkshName.Name then begin + TempRequisitionWkshName := FirstRequisitionWkshName; + FirstRequisitionWkshName := SecondRequisitionWkshName; + SecondRequisitionWkshName := TempRequisitionWkshName; + end; + + // [GIVEN] Both batches have an open approval entry for the current user (as shown in Requests to Approve). + CreateOpenApprovalEntryForCurrentUser(FirstRequisitionWkshName.RecordId); + CreateOpenApprovalEntryForCurrentUser(SecondRequisitionWkshName.RecordId); + Commit(); + + // [GIVEN] The approver uses Open Record for the first batch and closes the worksheet. + LibraryVariableStorage.Enqueue(FirstRequisitionWkshName.Name); + PageManagement.PageRun(FirstRequisitionWkshName); + + // [WHEN] The approver uses Open Record for the second, different batch. + LibraryVariableStorage.Enqueue(SecondRequisitionWkshName.Name); + PageManagement.PageRun(SecondRequisitionWkshName); + + // [THEN] Each Open Record shows its own batch (verified in ReqWorksheetVerifyBatchPageHandler). + LibraryVariableStorage.AssertEmpty(); + end; + local procedure Initialize() var Workflow: Record Workflow; @@ -2032,4 +2074,13 @@ codeunit 139506 "WFW Requisition Worksheet" LibraryVariableStorage.Dequeue(VariableVariant); ApprovalEntries.Close(); end; + + [PageHandler] + procedure ReqWorksheetVerifyBatchPageHandler(var ReqWorksheet: TestPage "Req. Worksheet") + begin + Assert.AreEqual( + LibraryVariableStorage.DequeueText(), ReqWorksheet.CurrentJnlBatchName.Value(), + WrongBatchShownOnOpenRecordLbl); + ReqWorksheet.Close(); + end; } \ No newline at end of file From 87dddf9cf31b1061bde34e77fd973977c0c59661 Mon Sep 17 00:00:00 2001 From: V-VNIGAM Date: Thu, 16 Jul 2026 12:39:50 +0000 Subject: [PATCH 2/6] Miapp --- .../Inventory/Requisition/ReqWorksheet.Page.al | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al b/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al index ec7682db33..a68c90ed33 100644 --- a/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al +++ b/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al @@ -1172,6 +1172,18 @@ page 291 "Req. Worksheet" SetControlAppearanceFromWkshBatch(); exit; end; + // When the page is opened positioned on a specific worksheet batch (for example, from the + // Open Record action on an approval entry), use the batch from the record instead of the + // previously saved batch name that SaveValues would otherwise restore. + if (Rec."Journal Batch Name" <> '') and (Rec."Worksheet Template Name" <> '') then begin + CurrentJnlBatchName := Rec."Journal Batch Name"; + Rec.FilterGroup := 2; + Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); + Rec.FilterGroup := 0; + ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); + SetControlAppearanceFromWkshBatch(); + exit; + end; OnBeforeTemplateSelection(Rec, CurrentJnlBatchName); ReqJnlManagement.WkshTemplateSelection( PAGE::"Req. Worksheet", false, Enum::"Req. Worksheet Template Type"::"Req.", Rec, JnlSelected); From 1c96530696924c377449001c77bf7243ea113dd1 Mon Sep 17 00:00:00 2001 From: v-ankitgoyal Date: Mon, 20 Jul 2026 06:55:44 +0000 Subject: [PATCH 3/6] Moved code in procedure --- .../Requisition/ReqWorksheet.Page.al | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al b/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al index 0cf35979ab..f3ac5635aa 100644 --- a/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al +++ b/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al @@ -1161,18 +1161,10 @@ page 291 "Req. Worksheet" SetControlAppearanceFromWkshBatch(); exit; end; - // When the page is opened positioned on a specific worksheet batch (for example, from the - // Open Record action on an approval entry), use the batch from the record instead of the - // previously saved batch name that SaveValues would otherwise restore. - if (Rec."Journal Batch Name" <> '') and (Rec."Worksheet Template Name" <> '') then begin - CurrentJnlBatchName := Rec."Journal Batch Name"; - Rec.FilterGroup := 2; - Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); - Rec.FilterGroup := 0; - ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); - SetControlAppearanceFromWkshBatch(); + + if GetCurrentJnlBatchName() then exit; - end; + OnBeforeTemplateSelection(Rec, CurrentJnlBatchName); ReqJnlManagement.WkshTemplateSelection( PAGE::"Req. Worksheet", false, Enum::"Req. Worksheet Template Type"::"Req.", Rec, JnlSelected); @@ -1253,6 +1245,21 @@ page 291 "Req. Worksheet" RequisitionWkshName.SetApprovalStateForWkshBatch(RequisitionWkshName, Rec, OpenApprovalEntriesExistForCurrUser, OpenApprovalEntriesOnWkshBatchExist, CanCancelApprovalForWkshBatch, CanRequestFlowApprovalForWkshBatch, CanCancelFlowApprovalForWkshBatch, ApprovalEntriesExistSentByCurrentUser, EnabledWkshBatchWorkflowsExist); end; + local procedure GetCurrentJnlBatchName(): boolean + begin + if (Rec."Journal Batch Name" <> '') and (Rec."Worksheet Template Name" <> '') then begin + CurrentJnlBatchName := Rec."Journal Batch Name"; + Rec.FilterGroup := 2; + Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); + Rec.FilterGroup := 0; + ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); + SetControlAppearanceFromWkshBatch(); + exit(true); + end + else + exit(false); + end; + [IntegrationEvent(false, false)] local procedure OnAfterLookupCurrentJnlBatchName(var RequisitionLine: Record "Requisition Line"; var CurrJnlBatchName: Code[10]) begin From f88ad22bafbdd49dcc9f06bf73844f08f2fabda8 Mon Sep 17 00:00:00 2001 From: v-ankitgoyal Date: Mon, 20 Jul 2026 07:08:43 +0000 Subject: [PATCH 4/6] Miaap - Resolved Merge Conflict --- .../Requisition/ReqWorksheet.Page.al | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al b/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al index a68c90ed33..7418359624 100644 --- a/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al +++ b/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al @@ -1172,18 +1172,8 @@ page 291 "Req. Worksheet" SetControlAppearanceFromWkshBatch(); exit; end; - // When the page is opened positioned on a specific worksheet batch (for example, from the - // Open Record action on an approval entry), use the batch from the record instead of the - // previously saved batch name that SaveValues would otherwise restore. - if (Rec."Journal Batch Name" <> '') and (Rec."Worksheet Template Name" <> '') then begin - CurrentJnlBatchName := Rec."Journal Batch Name"; - Rec.FilterGroup := 2; - Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); - Rec.FilterGroup := 0; - ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); - SetControlAppearanceFromWkshBatch(); + if GetCurrentJnlBatchName() then exit; - end; OnBeforeTemplateSelection(Rec, CurrentJnlBatchName); ReqJnlManagement.WkshTemplateSelection( PAGE::"Req. Worksheet", false, Enum::"Req. Worksheet Template Type"::"Req.", Rec, JnlSelected); @@ -1264,6 +1254,21 @@ page 291 "Req. Worksheet" RequisitionWkshName.SetApprovalStateForWkshBatch(RequisitionWkshName, Rec, OpenApprovalEntriesExistForCurrUser, OpenApprovalEntriesOnWkshBatchExist, CanCancelApprovalForWkshBatch, CanRequestFlowApprovalForWkshBatch, CanCancelFlowApprovalForWkshBatch, ApprovalEntriesExistSentByCurrentUser, EnabledWkshBatchWorkflowsExist); end; + local procedure GetCurrentJnlBatchName(): boolean + begin + if (Rec."Journal Batch Name" <> '') and (Rec."Worksheet Template Name" <> '') then begin + CurrentJnlBatchName := Rec."Journal Batch Name"; + Rec.FilterGroup := 2; + Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); + Rec.FilterGroup := 0; + ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); + SetControlAppearanceFromWkshBatch(); + exit(true); + end + else + exit(false); + end; + [IntegrationEvent(false, false)] local procedure OnAfterLookupCurrentJnlBatchName(var RequisitionLine: Record "Requisition Line"; var CurrJnlBatchName: Code[10]) begin From 94fc1230b1a1d7cedaefe9525be13c10893a0346 Mon Sep 17 00:00:00 2001 From: v-ankitgoyal Date: Tue, 21 Jul 2026 06:27:14 +0000 Subject: [PATCH 5/6] Refactor GetCurrentJnlBatchName procedure to simplify conditional logic --- .../Requisition/ReqWorksheet.Page.al | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al b/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al index f3ac5635aa..a9780c9949 100644 --- a/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al +++ b/src/Layers/W1/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al @@ -1247,17 +1247,16 @@ page 291 "Req. Worksheet" local procedure GetCurrentJnlBatchName(): boolean begin - if (Rec."Journal Batch Name" <> '') and (Rec."Worksheet Template Name" <> '') then begin - CurrentJnlBatchName := Rec."Journal Batch Name"; - Rec.FilterGroup := 2; - Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); - Rec.FilterGroup := 0; - ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); - SetControlAppearanceFromWkshBatch(); - exit(true); - end - else + if (Rec."Journal Batch Name" = '') or (Rec."Worksheet Template Name" = '') then exit(false); + + CurrentJnlBatchName := Rec."Journal Batch Name"; + Rec.FilterGroup := 2; + Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); + Rec.FilterGroup := 0; + ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); + SetControlAppearanceFromWkshBatch(); + exit(true); end; [IntegrationEvent(false, false)] From 734db7bf602eb74085cf40d94277b8a9256af111 Mon Sep 17 00:00:00 2001 From: v-ankitgoyal Date: Tue, 21 Jul 2026 06:52:06 +0000 Subject: [PATCH 6/6] Miapp - Refactor GetCurrentJnlBatchName procedure to improve conditional logic --- .../Requisition/ReqWorksheet.Page.al | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al b/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al index 7418359624..19214f30e2 100644 --- a/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al +++ b/src/Layers/NA/BaseApp/Inventory/Requisition/ReqWorksheet.Page.al @@ -1256,17 +1256,16 @@ page 291 "Req. Worksheet" local procedure GetCurrentJnlBatchName(): boolean begin - if (Rec."Journal Batch Name" <> '') and (Rec."Worksheet Template Name" <> '') then begin - CurrentJnlBatchName := Rec."Journal Batch Name"; - Rec.FilterGroup := 2; - Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); - Rec.FilterGroup := 0; - ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); - SetControlAppearanceFromWkshBatch(); - exit(true); - end - else + if (Rec."Journal Batch Name" = '') or (Rec."Worksheet Template Name" = '') then exit(false); + + CurrentJnlBatchName := Rec."Journal Batch Name"; + Rec.FilterGroup := 2; + Rec.SetRange("Worksheet Template Name", Rec."Worksheet Template Name"); + Rec.FilterGroup := 0; + ReqJnlManagement.OpenJnl(CurrentJnlBatchName, Rec); + SetControlAppearanceFromWkshBatch(); + exit(true); end; [IntegrationEvent(false, false)]