From 4cf0a55a5858decfd1247875e3171dd8e0e66a0e Mon Sep 17 00:00:00 2001 From: Louage Job Date: Fri, 11 Jul 2025 13:18:13 +0200 Subject: [PATCH] Add app Change Log Entry --- .../ClearChangeLog/.altestrunner/config.json | 16 ++++++ samples/ClearChangeLog/app.json | 32 ++++++++++++ .../RemoveChangeLogEntries.Codeunit.al | 51 +++++++++++++++++++ .../CompanyInformation.PageExt.al | 22 ++++++++ 4 files changed, 121 insertions(+) create mode 100644 samples/ClearChangeLog/.altestrunner/config.json create mode 100644 samples/ClearChangeLog/app.json create mode 100644 samples/ClearChangeLog/src/codeunit/RemoveChangeLogEntries.Codeunit.al create mode 100644 samples/ClearChangeLog/src/pageextension/CompanyInformation.PageExt.al diff --git a/samples/ClearChangeLog/.altestrunner/config.json b/samples/ClearChangeLog/.altestrunner/config.json new file mode 100644 index 00000000..7b2a80a3 --- /dev/null +++ b/samples/ClearChangeLog/.altestrunner/config.json @@ -0,0 +1,16 @@ +{ + "containerResultPath": "", + "launchConfigName": "", + "securePassword": "", + "userName": "", + "companyName": "", + "testSuiteName": "", + "vmUserName": "", + "vmSecurePassword": "", + "remoteContainerName": "", + "dockerHost": "", + "newPSSessionOptions": "", + "testRunnerServiceUrl": "", + "codeCoveragePath": ".//.altestrunner//codecoverage.json", + "culture": "en-US" +} \ No newline at end of file diff --git a/samples/ClearChangeLog/app.json b/samples/ClearChangeLog/app.json new file mode 100644 index 00000000..9f0c8c90 --- /dev/null +++ b/samples/ClearChangeLog/app.json @@ -0,0 +1,32 @@ +{ + "id": "7827ccc4-c992-4161-b2ee-189589ae28e2", + "name": "Clear Change Log", + "publisher": "BCTech", + "version": "1.0.0.0", + "brief": "Clears the Change Log Entries of all companies in the database.", + "description": "", + "privacyStatement": "", + "EULA": "", + "help": "", + "url": "", + "logo": "", + "dependencies": [], + "screenshots": [], + "platform": "26.0.0.0", + "application": "26.0.30643.32100", + "idRanges": [ + { + "from": 50100, + "to": 50149 + } + ], + "resourceExposurePolicy": { + "allowDebugging": true, + "allowDownloadingSource": true, + "includeSourceInSymbolFile": true + }, + "runtime": "15.0", + "features": [ + "NoImplicitWith" + ] +} \ No newline at end of file diff --git a/samples/ClearChangeLog/src/codeunit/RemoveChangeLogEntries.Codeunit.al b/samples/ClearChangeLog/src/codeunit/RemoveChangeLogEntries.Codeunit.al new file mode 100644 index 00000000..8b03f763 --- /dev/null +++ b/samples/ClearChangeLog/src/codeunit/RemoveChangeLogEntries.Codeunit.al @@ -0,0 +1,51 @@ +codeunit 50100 "BCTech_RemoveChangeLogEntries" +{ + + Permissions = tabledata "Change Log Entry" = rimd, + tabledata "Change Log Setup" = rimd; + + trigger OnRun() + begin + RemoveChangeLogEntries(); + end; + + internal procedure RemoveChangeLogEntries() + var + ChangeLogEntry: Record "Change Log Entry"; + ChangeLogSetup: Record "Change Log Setup"; + ChangeLogFrom: BigInteger; + ChangeLogTo: BigInteger; + begin + if not ChangeLogSetup.Get() then + exit; + if ChangeLogSetup."Change Log Activated" then begin + ChangeLogSetup.Validate("Change Log Activated", false); + ChangeLogSetup.Modify(true); + Commit(); + end; + + ChangeLogEntry.Reset(); + if not ChangeLogEntry.FindFirst() then + exit; + ChangeLogFrom := ChangeLogEntry."Entry No."; + ChangeLogTo := ChangeLogFrom + 100000; + if DeleteEntriesFromUntil(ChangeLogFrom, ChangeLogTo) then + TaskScheduler.CreateTask(Codeunit::"BCTech_RemoveChangeLogEntries", 0, true, CompanyName); + end; + + local procedure DeleteEntriesFromUntil(ChangeLogFrom: BigInteger; ChangeLogTo: BigInteger): Boolean + var + ChangeLogEntry: Record "Change Log Entry"; + begin + + ChangeLogEntry.Reset(); + ChangeLogEntry.SetRange("Entry No.", ChangeLogFrom, ChangeLogTo); + if not ChangeLogEntry.FindSet(true) then + exit; + ChangeLogEntry.DeleteAll(true); + Commit(); + ChangeLogEntry.Reset(); + exit(ChangeLogEntry.FindFirst()); + end; + +} \ No newline at end of file diff --git a/samples/ClearChangeLog/src/pageextension/CompanyInformation.PageExt.al b/samples/ClearChangeLog/src/pageextension/CompanyInformation.PageExt.al new file mode 100644 index 00000000..6ac9d9f4 --- /dev/null +++ b/samples/ClearChangeLog/src/pageextension/CompanyInformation.PageExt.al @@ -0,0 +1,22 @@ +pageextension 50100 "BCTech_Company Information" extends "Company Information" +{ + actions + { + addfirst(Processing) + { + action(BCTech_RemoveChangeLogEntries) + { + ApplicationArea = All; + Caption = 'Remove Change Log Entries'; + Image = Delete; + ToolTip = 'Removes all change log entries.'; + trigger OnAction() + var + RemoveChangeLogEntries: Codeunit "BCTech_RemoveChangeLogEntries"; + begin + RemoveChangeLogEntries.RemoveChangeLogEntries(); + end; + } + } + } +} \ No newline at end of file