Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ codeunit 20409 "Qlty. Result Condition Mgmt."
ToTestQltyIResultConditConf."Condition Description" := CopyStr(Condition, 1, MaxStrLen(ToTestQltyIResultConditConf."Condition Description"));
ToTestQltyIResultConditConf.Insert();
end else
if AlwaysUpdateExistingCondition or (OnlyOverwriteIfADefaultCondition and (ToTestQltyIResultConditConf.Condition in [QltyInspectionResult."Default Boolean Condition", QltyInspectionResult."Default Number Condition", QltyInspectionResult."Default Text Condition"])) then begin
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$\textbf{🟡\ Medium\ Severity\ —\ Upgrade} \quad \color{gray}{\texttt{\small Iteration\ 1}}$

Empty condition silently overwrites on upgrade

Adding '' to the in list means any existing record whose Condition field is blank will now be treated as a default and overwritten during configuration seeding — even if the blank value was intentionally left by a user or previous customization. This silent data mutation can occur on every upgrade run that calls this code path with OnlyOverwriteIfADefaultCondition = true.

Recommendation:

  • Confirm whether a blank Condition should truly be equated with the named default values. If so, document this assumption. If not, keep the guard to the three explicit default constants and handle blank conditions separately (e.g., only overwrite blank on fresh insert). At minimum, add a comment explaining why '' is included alongside the named defaults.
Suggested change
if AlwaysUpdateExistingCondition or (OnlyOverwriteIfADefaultCondition and (ToTestQltyIResultConditConf.Condition in [QltyInspectionResult."Default Boolean Condition", QltyInspectionResult."Default Number Condition", QltyInspectionResult."Default Text Condition"])) then begin
if AlwaysUpdateExistingCondition or
(OnlyOverwriteIfADefaultCondition and
(ToTestQltyIResultConditConf.Condition in
// '' treated as uninitialized; safe to overwrite just like named defaults
['',
QltyInspectionResult."Default Boolean Condition",
QltyInspectionResult."Default Number Condition",
QltyInspectionResult."Default Text Condition"])) then begin

👍 useful · ❤️ especially valuable · 👎 wrong - reply with why

if AlwaysUpdateExistingCondition or (OnlyOverwriteIfADefaultCondition and (ToTestQltyIResultConditConf.Condition in ['', QltyInspectionResult."Default Boolean Condition", QltyInspectionResult."Default Number Condition", QltyInspectionResult."Default Text Condition"])) then begin
ToTestQltyIResultConditConf.Validate(Condition, CopyStr(Condition, 1, MaxStrLen(ToTestQltyIResultConditConf.Condition)));
ToTestQltyIResultConditConf."Condition Description" := CopyStr(Condition, 1, MaxStrLen(ToTestQltyIResultConditConf."Condition Description"));
ToTestQltyIResultConditConf.Priority := QltyInspectionResult."Evaluation Sequence";
Expand Down
Loading