mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-08-07 18:06:53 +01:00
Add 12 atomic knowledge articles under microsoft/knowledge/events covering general AL event-design best practices: IsHandled initialization and OnAfter preservation, appending new event parameters, position-based event naming, reusing/extending events, avoiding per-iteration publishing, Temp-prefixing temporary record parameters, unabbreviated parameter names, preferring the this keyword over IncludeSender, avoiding loosely typed parameters, not mutating existing event contracts, and not bypassing critical operations with IsHandled. Each article ships a .good.al and .bad.al demonstration sample (object IDs 50240-50296; not compiled by CI). Extend the al-events-review leaf Worklist with one targeted check per new rule. Additive only; no contract or wiring change (events leaf already wired). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
36 lines
1.1 KiB
AL
36 lines
1.1 KiB
AL
// Demonstration-only AL. Not compiled by CI; illustrates the article.
|
|
codeunit 50255 "Event Naming Good Sample"
|
|
{
|
|
procedure PostSalesLine(var SalesLine: Record "Sales Line")
|
|
var
|
|
LineAmount: Decimal;
|
|
begin
|
|
// Start of the routine: OnBefore<Name>.
|
|
OnBeforePostSalesLine(SalesLine);
|
|
|
|
LineAmount := SalesLine.Quantity * SalesLine."Unit Price";
|
|
// Middle of the routine: On<Name>OnAfter<Context>.
|
|
OnPostSalesLineOnAfterCalcAmounts(SalesLine, LineAmount);
|
|
|
|
SalesLine."Line Amount" := LineAmount;
|
|
SalesLine.Modify(true);
|
|
|
|
// End of the routine: OnAfter<Name>.
|
|
OnAfterPostSalesLine(SalesLine);
|
|
end;
|
|
|
|
[IntegrationEvent(false, false)]
|
|
local procedure OnBeforePostSalesLine(var SalesLine: Record "Sales Line")
|
|
begin
|
|
end;
|
|
|
|
[IntegrationEvent(false, false)]
|
|
local procedure OnPostSalesLineOnAfterCalcAmounts(var SalesLine: Record "Sales Line"; var LineAmount: Decimal)
|
|
begin
|
|
end;
|
|
|
|
[IntegrationEvent(false, false)]
|
|
local procedure OnAfterPostSalesLine(var SalesLine: Record "Sales Line")
|
|
begin
|
|
end;
|
|
}
|