Business Central’s workflows automate actions based on workflow responses. One common requirement is to update a specific field once a workflow is approved.
Updating the Description Field in General Journal Batch Workflow.
In this scenario, when a General Journal Batch is approved, the Description field should be updated with "Account Type + Account No.". This can be achieved by leveraging Business Central’s approval response mechanism.
Step 1: Identify the Approval Response Code Path
- The approval process navigates through codeunit 1521 and then to codeunit 1535.
- Within codeunit 1535, there is a publisher OnApproveApprovalRequestsForRecordOnBeforeApprovalEntryToUpdateModify.
- This publisher allows modify records upon approval.
Step 2: Implement the Code to Update the Description Field
Use the following AL code to subscribe to the event and update the Description field:
[EventSubscriber(ObjectType::Codeunit, Codeunit::"Approvals Mgmt.", OnApproveApprovalRequestsForRecordOnBeforeApprovalEntryToUpdateModify, '', false, false)]
local procedure "Approvals Mgmt._OnApproveApprovalRequestsForRecordOnBeforeApprovalEntryToUpdateModify"(var ApprovalEntryToUpdate: Record "Approval Entry")
var
RecRef: RecordRef;
GenJournalBatch: Record "Gen. Journal Batch";
GenJournalLine: Record "Gen. Journal Line";
begin
if not RecRef.Get(ApprovalEntryToUpdate."Record ID to Approve") then
exit;
case RecRef.Number of
Database::"Gen. Journal Batch":
begin
RecRef.SetTable(GenJournalBatch);
GenJournalLine.Reset();
GenJournalLine.SetRange("Journal Template Name", GenJournalBatch."Journal Template Name");
GenJournalLine.SetRange("Journal Batch Name", GenJournalBatch."Name");
if GenJournalLine.FindSet() then
repeat
GenJournalLine.Description := format(GenJournalLine."Account Type") + ' ' + GenJournalLine."Account No.";
GenJournalLine.Modify();
until GenJournalLine.Next() = 0;
end;
Database::"Gen. Journal Line":
begin
RecRef.SetTable(GenJournalLine);
if GenJournalLine.FindSet() then
repeat
GenJournalLine.Description := 'Set the value as per your requirement';
GenJournalLine.Modify();
until GenJournalLine.Next() = 0;
end;
end;
end;
Step 3: Deploy and Test the Code
1. Deploy the extension containing the event subscriber.
2. Submit a General Journal Batch for approval.
3. Approve the batch and verify that the Description field is updated.
Conclusion
This approach can be extended to other workflows and responses by identifying the proper publisher.
*This post is locked for comments