From 4bf6b8e690764b8e493d118ceb0a8ff038f6f72e Mon Sep 17 00:00:00 2001 From: Jesper Schulz-Wedde Date: Tue, 14 Jul 2026 10:41:24 +0200 Subject: [PATCH 1/4] Fix incoming documents default filter Restore the default unprocessed view while preserving explicit processed filters and add regression coverage for each filter scenario. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: a22e32be-3141-40ed-9a78-2302b3ba294f --- .../EDocument/IncomingDocuments.Page.al | 8 +-- .../ERM/ERMIncomingDocuments.Codeunit.al | 50 ++++++++++++++++++- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al b/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al index c3935621f19..f7e60829021 100644 --- a/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al +++ b/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al @@ -800,8 +800,11 @@ page 190 "Incoming Documents" UpdateOCRSetupVisibility(); Rec.FilterGroup(0); - if Rec.GetFilter(Processed) <> '' then - SetProcessedDocumentsVisibility(Rec.GetFilter(Processed) = Format(true)); + if Rec.GetFilter(Processed) = '' then begin + Rec.SetRange(Processed, false); + ShowAllDocsIsEnable := false; + end else + ShowAllDocsIsEnable := Rec.GetFilter(Processed) <> Format(false); end; var @@ -937,4 +940,3 @@ page 190 "Incoming Documents" begin end; } - diff --git a/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al b/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al index f475aae4e33..12ea644de07 100644 --- a/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al +++ b/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al @@ -1880,6 +1880,30 @@ codeunit 134400 "ERM Incoming Documents" IncomingDocument.HyperlinkToDocument(DocumentNo, PostingDate); end; + [Test] + [HandlerFunctions('IncomingDocumentsProcessedFilterHandler')] + [Scope('OnPrem')] + procedure TestIncomingDocsDefaultToUnprocessed() + begin + VerifyIncomingDocumentsProcessedFilter('', false); + end; + + [Test] + [HandlerFunctions('IncomingDocumentsProcessedFilterHandler')] + [Scope('OnPrem')] + procedure TestIncomingDocsPreserveProcessedFilter() + begin + VerifyIncomingDocumentsProcessedFilter(Format(true), true); + end; + + [Test] + [HandlerFunctions('IncomingDocumentsProcessedFilterHandler')] + [Scope('OnPrem')] + procedure TestIncomingDocsPreserveUnprocessedFilter() + begin + VerifyIncomingDocumentsProcessedFilter(Format(false), false); + end; + [Test] [Scope('OnPrem')] procedure TestIncomingDocsShouldShowAllDocsOnShowAllAction() @@ -2181,6 +2205,22 @@ codeunit 134400 "ERM Incoming Documents" Assert.AreEqual(DataExchangeTypeHasValue, IncomingDocuments.CreateDocument.Enabled(), 'Editable value unexpected.'); end; + local procedure VerifyIncomingDocumentsProcessedFilter(ProcessedFilter: Text; ExpectedProcessed: Boolean) + var + IncomingDocument: Record "Incoming Document"; + begin + IncomingDocument.DeleteAll(); + CreateIncomingDocument(IncomingDocument, 'Processed Document', true); + CreateIncomingDocument(IncomingDocument, 'Unprocessed Document', false); + + IncomingDocument.Reset(); + if ProcessedFilter <> '' then + IncomingDocument.SetFilter(Processed, ProcessedFilter); + + LibraryVariableStorage.Enqueue(ExpectedProcessed); + Page.RunModal(Page::"Incoming Documents", IncomingDocument); + end; + local procedure GetIncomeStatementAcc(): Code[20] var GLAccount: Record "G/L Account"; @@ -2732,6 +2772,15 @@ codeunit 134400 "ERM Incoming Documents" IncomingDocuments.OK().Invoke(); end; + [ModalPageHandler] + [Scope('OnPrem')] + procedure IncomingDocumentsProcessedFilterHandler(var IncomingDocuments: TestPage "Incoming Documents") + begin + IncomingDocuments.Processed.AssertEquals(LibraryVariableStorage.DequeueBoolean()); + Assert.IsFalse(IncomingDocuments.Next(), 'Expected the page to contain one incoming document.'); + IncomingDocuments.OK().Invoke(); + end; + [PageHandler] [Scope('OnPrem')] procedure IncomingDocumentCardHandler(var IncomingDocumentCard: TestPage "Incoming Document") @@ -2870,4 +2919,3 @@ codeunit 134400 "ERM Incoming Documents" Assert.AreEqual(1, TempBlobList.Count(), NoOfAttachmentsSameErr); end; } - From 41e45d90965337680488c7bf10a26b300620600f Mon Sep 17 00:00:00 2001 From: Jesper Schulz-Wedde Date: Tue, 14 Jul 2026 12:12:58 +0200 Subject: [PATCH 2/4] Reuse incoming document visibility helper Address review feedback by using the existing helper for the default unprocessed view. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: a22e32be-3141-40ed-9a78-2302b3ba294f --- .../BaseApp/eServices/EDocument/IncomingDocuments.Page.al | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al b/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al index f7e60829021..e687b431d47 100644 --- a/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al +++ b/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al @@ -800,10 +800,9 @@ page 190 "Incoming Documents" UpdateOCRSetupVisibility(); Rec.FilterGroup(0); - if Rec.GetFilter(Processed) = '' then begin - Rec.SetRange(Processed, false); - ShowAllDocsIsEnable := false; - end else + if Rec.GetFilter(Processed) = '' then + SetProcessedDocumentsVisibility(false) + else ShowAllDocsIsEnable := Rec.GetFilter(Processed) <> Format(false); end; From d655a4223ec1e3696dcda221272874ad3492787a Mon Sep 17 00:00:00 2001 From: Jesper Schulz-Wedde Date: Wed, 15 Jul 2026 11:39:47 +0200 Subject: [PATCH 3/4] Keep filtered incoming document actions usable Only apply the default unprocessed filter when no Processed filter is supplied, preserving the intent of bug 609129. Cover the action state for filtered entry points. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: a22e32be-3141-40ed-9a78-2302b3ba294f --- .../W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al | 4 +--- src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al b/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al index e687b431d47..699ee8d3464 100644 --- a/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al +++ b/src/Layers/W1/BaseApp/eServices/EDocument/IncomingDocuments.Page.al @@ -801,9 +801,7 @@ page 190 "Incoming Documents" Rec.FilterGroup(0); if Rec.GetFilter(Processed) = '' then - SetProcessedDocumentsVisibility(false) - else - ShowAllDocsIsEnable := Rec.GetFilter(Processed) <> Format(false); + SetProcessedDocumentsVisibility(false); end; var diff --git a/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al b/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al index 12ea644de07..cdc492e95bf 100644 --- a/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al +++ b/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al @@ -2778,6 +2778,8 @@ codeunit 134400 "ERM Incoming Documents" begin IncomingDocuments.Processed.AssertEquals(LibraryVariableStorage.DequeueBoolean()); Assert.IsFalse(IncomingDocuments.Next(), 'Expected the page to contain one incoming document.'); + Assert.IsTrue(IncomingDocuments.ShowAll.Enabled(), 'Expected Show All to be enabled for a filtered view.'); + Assert.IsFalse(IncomingDocuments.ShowUnprocessed.Enabled(), 'Expected Show Unprocessed to be disabled for a filtered view.'); IncomingDocuments.OK().Invoke(); end; From 8c5c3d4e4843e4f103070230174cad8fe222aab2 Mon Sep 17 00:00:00 2001 From: Jesper Schulz-Wedde Date: Wed, 15 Jul 2026 12:06:43 +0200 Subject: [PATCH 4/4] Isolate incoming document UI tests Clear and verify variable storage around the modal page handler so each filter scenario proves the expected interaction. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: a22e32be-3141-40ed-9a78-2302b3ba294f --- src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al b/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al index cdc492e95bf..04059092962 100644 --- a/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al +++ b/src/Layers/W1/Tests/ERM/ERMIncomingDocuments.Codeunit.al @@ -2217,8 +2217,10 @@ codeunit 134400 "ERM Incoming Documents" if ProcessedFilter <> '' then IncomingDocument.SetFilter(Processed, ProcessedFilter); + LibraryVariableStorage.Clear(); LibraryVariableStorage.Enqueue(ExpectedProcessed); Page.RunModal(Page::"Incoming Documents", IncomingDocument); + LibraryVariableStorage.AssertEmpty(); end; local procedure GetIncomeStatementAcc(): Code[20]