- 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).
{
"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"
}
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;
}
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;
}