Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Chapter 11 Task Traceability

  • Task 1 → app.json (idRanges set to 50100–50149).
  • Task 2 → LoanRepayment.PermissionSet.al (permissionset 50100 "Loan Repayment").
  • Task 3 → LoanRepaymentEventSubscribers.Codeunit.al (Vendor OnAfterInsertEvent subscriber).
  • Task 4 → addressed in Chapter 15 split permission sets (Chapter 15 solutions).

Code

app.json

{
  "id": "5fe684dd-ff76-4e98-aad2-2b9294550110",
  "name": "Loan Repayment Management",
  "publisher": "Programming for All",
  "version": "1.0.0.0",
  "brief": "Track loan installments and repayment status.",
  "idRanges": [
    {
      "from": 50100,
      "to": 50149
    }
  ],
  "dependencies": [],
  "runtime": "12.0"
}

LoanRepayment.PermissionSet.al

permissionset 50100 "Loan Repayment"
{
    Assignable = true;
    Caption = 'Loan Repayment Management';

    Permissions =
        table "Loan Repayment Schedule" = X,
        tabledata "Loan Repayment Schedule" = RIMD,
        page "Loan Repayment Schedule List" = X,
        codeunit "Loan Repayment Mgt." = X;
}

LoanRepaymentEventSubscribers.Codeunit.al

codeunit 50101 "Loan Repayment Event Subscribers"
{
    [EventSubscriber(ObjectType::Table, Database::Vendor, 'OnAfterInsertEvent', '', false, false)]
    local procedure OnAfterInsertVendor(var Rec: Record Vendor)
    begin
        Message('New vendor %1 created — remember to review repayment schedules.', Rec."No.");
    end;
}