mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-05 14:46:55 +01:00
Move canonical knowledge for Microsoft-owned review domains into the Microsoft layer and document the skill/knowledge co-location policy. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2a6ea875-d38e-4f30-aadb-0d606f9be231
29 lines
1.2 KiB
AL
29 lines
1.2 KiB
AL
codeunit 50543 "Perf Sample CaseChain Bad"
|
|
{
|
|
procedure IsShippableLine(SalesLine: Record "Sales Line"): Boolean
|
|
var
|
|
Item: Record Item;
|
|
begin
|
|
// Five levels of nesting to sequence five guards. The evaluation order is
|
|
// carried by indentation alone and the body drifts steadily right.
|
|
if SalesLine.Type = SalesLine.Type::Item then
|
|
if SalesLine."No." <> '' then
|
|
if SalesLine."Qty. to Ship" > 0 then
|
|
if Item.Get(SalesLine."No.") then
|
|
if not Item.Blocked then
|
|
exit(true);
|
|
exit(false);
|
|
end;
|
|
|
|
procedure IsShippableLineCollapsed(SalesLine: Record "Sales Line"): Boolean
|
|
var
|
|
Item: Record Item;
|
|
begin
|
|
// The wrong escape from the ladder: flattening it into 'and' trades the
|
|
// nesting for a defect, because every operand is still evaluated. Item
|
|
// fields are read even when the Get failed. The parentheses are not
|
|
// optional either — 'and' binds tighter than '=' and '<>' in AL.
|
|
exit((SalesLine.Type = SalesLine.Type::Item) and (SalesLine."No." <> '') and
|
|
(SalesLine."Qty. to Ship" > 0) and Item.Get(SalesLine."No.") and not Item.Blocked);
|
|
end;
|
|
}
|