Address review: self-contained samples, fixture registration, scoped feature routing

- Declare the sample table in both companions so each compiles on its own.
- Register no-changecompany-in-upgrade and changecompany-runs-triggers-in-the-calling-company in review-fixtures.json.
- Limit the Feature Data Update rule to UpdateData/AfterUpdate and their reachable helpers; read-only IsDataUpdateRequired/ReviewData preflight is permitted and shown as a clean control.
- Add feature data update execution to al-upgrade-review applicability and not-applicable scope.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Jesper Schulz-Wedde 2026-10-02 10:26:36 +02:00
parent 4e33ca87e2
commit 48bd2e2e1b
5 changed files with 95 additions and 11 deletions

View file

@ -1,3 +1,20 @@
table 50262 "Sales Order Ext"
{
DataClassification = CustomerContent;
fields
{
field(1; "No."; Code[20]) { }
field(2; "Shipping Agent Code"; Code[10]) { TableRelation = "Shipping Agent"; }
field(3; "Legacy Carrier Code"; Code[10]) { }
}
keys
{
key(PK; "No.") { Clustered = true; }
}
}
codeunit 50260 "Upgrade Current Company"
{
Subtype = Upgrade;
@ -32,3 +49,48 @@ codeunit 50260 "Upgrade Current Company"
exit('CONTOSO-1001-ShippingAgentCode-20260101');
end;
}
codeunit 50264 "Shipping Agent Feat. Data Upd." implements "Feature Data Update"
{
// Read-only preflight: counting rows across companies to report scope is allowed.
procedure IsDataUpdateRequired(): Boolean
var
Company: Record Company;
SalesOrderExt: Record "Sales Order Ext";
begin
if Company.FindSet() then
repeat
SalesOrderExt.ChangeCompany(Company.Name);
SalesOrderExt.SetRange("Shipping Agent Code", '');
if not SalesOrderExt.IsEmpty() then
exit(true);
until Company.Next() = 0;
exit(false);
end;
procedure ReviewData()
begin
end;
// Feature Management runs this once per company, in that company.
procedure UpdateData(FeatureDataUpdateStatus: Record "Feature Data Update Status")
var
SalesOrderExt: Record "Sales Order Ext";
begin
SalesOrderExt.SetRange("Shipping Agent Code", '');
if SalesOrderExt.FindSet(true) then
repeat
SalesOrderExt.Validate("Shipping Agent Code", SalesOrderExt."Legacy Carrier Code");
SalesOrderExt.Modify(true);
until SalesOrderExt.Next() = 0;
end;
procedure AfterUpdate(FeatureDataUpdateStatus: Record "Feature Data Update Status")
begin
end;
procedure GetTaskDescription(): Text
begin
exit('Copies legacy carrier codes to the shipping agent code.');
end;
}