Skip to content

636017 Move Purchases report action tooltips to report objects - #9549

Open
V-CWurtzen wants to merge 6 commits into
mainfrom
features/636017-Purchases-move-page-action-tooltips-to-report
Open

636017 Move Purchases report action tooltips to report objects#9549
V-CWurtzen wants to merge 6 commits into
mainfrom
features/636017-Purchases-move-page-action-tooltips-to-report

Conversation

@V-CWurtzen

@V-CWurtzen V-CWurtzen commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

What & why

Moves the report action ToolTips for the Purchases reports off the page actions that run them and onto the report objects themselves, and integrates that move into every forked country layer. The tooltip is now defined once on the report and applies wherever the report is invoked, and the now-duplicate ToolTip is removed from the page actions in W1 and its country forks.

18 reports covered — Purchase Statistics, Purchase Reservation Avail., the Vendor - Balance to Date/Detail Trial Balance/Trial Balance/Labels/Order Detail/Order Summary/Payment Receipt/Purchase List set, Vendor Item Catalog, Vendor Register, Vendor/Item Purchases, Date Compress Vendor Ledger, and the Delete Invoiced Purch. Orders/Invd Blnkt Purch Orders/Invd Purch. Ret. Orders set.

Where only a Run the X report. stub existed (Day Book Vendor Ledger Entry), it is hoisted as the sole option — happy to replace with better wording if a reviewer suggests it. Reports with ObsoleteState = Pending/Removed are skipped (5).

This is part of the "move report action tooltips to report objects" cleanup (CP0529-331 / slice 636017).

Changes

  • W1 (commit 1): report-level ToolTip added to the 18 reports; duplicate removed from the W1 actions that run them (purchase document lists, vendor pages and the Purchasing Agent role center, plus the Administrator role center and Data Administration). 31 files.
  • Country layers (commit 2): the W1 move is propagated to the forked country layers as required by the Miapp sync gate (VerifyMiappSync):
    • 55 page forks across 18 country layers: duplicate ToolTip removed from the covered actions (305 lines).
    • 8 report forks (APAC VendorLabels/VendorPaymentReceipt; BE VendorPaymentReceipt/VendorPurchaseList; ES DateCompressVendorLedger/VendorDetailTrialBalance; RU VendorOrderDetail/VendorOrderSummary): report-level ToolTip added to match W1.
    • 1 no-op integration (NA PurchasingAgentRoleCenter): the sync gate requires every fork of a changed W1 file in the changelist; it carries no covered action, so there is nothing to remove.

Total: 95 files (31 W1 + 64 country), tooltip-only.

Linked work

Fixes AB#636017

How I validated this

  • I read the full diff and it contains only changes I intended.
  • I built the affected app(s) locally with no new analyzer warnings.
  • I ran the change in Business Central and confirmed it behaves as expected.
  • I added or updated tests for the new behavior, or explained below why none are needed.

What I tested and the outcome

Metadata-only change (ToolTip property). The diff is tooltip-only (report ToolTip additions + page-action ToolTip removals), with BOM/EOL preserved and no other lines changed; the only non-tooltip edit is a single trailing newline on NA PurchasingAgentRoleCenter.Page.al (no-op sync touch). Country propagation was produced by running Invoke-Miapp to identify the fork set, then applying the move surgically (Invoke-Miapp's auto-merge mis-aligned on the structurally-divergent role centers, so its output was not used directly). The set of changed forks matches exactly what VerifyMiappSync requires — no missing forks, no extras.

No tests added: ToolTip is a design-time metadata property with no runtime behavior to assert; there is no existing tooltip test harness for these objects.

Risk & compatibility

Low. No code, schema, table, or behavior change — only the ToolTip design property moves from page action to report, in W1 and its country forks. No upgrade/data impact, no permission/telemetry impact, no breaking change. Same cleanup pattern already merged for Warehouse, Manufacturing, Service, Sales and Inventory, landed as the Pricing pilot (#9433), and applied to CashFlow (#9528), Finance (#9526), Bank (#9540), CRM (#9544), Cost Accounting (#9545), Fixed Assets (#9546) and Projects (#9548) on the new BCApps pipeline.

Move the report action ToolTips for 18 Purchases reports onto the report
objects and remove the now-duplicate ToolTip from the W1 page actions that
run them (purchase document lists, vendor pages and the Purchasing Agent
role center, plus the Administrator role center and Data Administration).

Covers Purchase Statistics, Purchase Reservation Avail., the Vendor -
Balance to Date / Detail Trial Balance / Trial Balance / Labels / Order
Detail / Order Summary / Payment Receipt / Purchase List set, Vendor Item
Catalog, Vendor Register, Vendor/Item Purchases, Date Compress Vendor
Ledger, and the Delete Invoiced Purch. Orders / Invd Blnkt Purch Orders /
Invd Purch. Ret. Orders set. Where only a "Run the X report." stub existed
(Day Book Vendor Ledger Entry) it is hoisted as the sole option. Reports
with ObsoleteState = Pending/Removed are skipped (5).
Integrate the W1 Purchases tooltip move into the forked country layers, as
required by the Miapp sync gate (VerifyMiappSync):
- 55 page forks across 18 country layers: removed the duplicate ToolTip
  from the covered-report actions (305 lines).
- 8 report forks (APAC VendorLabels/VendorPaymentReceipt; BE
  VendorPaymentReceipt/VendorPurchaseList; ES DateCompressVendorLedger/
  VendorDetailTrialBalance; RU VendorOrderDetail/VendorOrderSummary): added
  the W1 report-level ToolTip.
- 1 no-op integration (NA PurchasingAgentRoleCenter): the sync gate
  requires every fork of a changed W1 file in the changelist; it carries no
  covered action, so there is nothing to remove.
@V-CWurtzen
V-CWurtzen requested a review from a team July 16, 2026 18:11
@github-actions github-actions Bot added this to the Version 29.0 milestone Jul 16, 2026
@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Copilot PR Review

Iteration 2 · Outcome: completed

All 16 sub-skills executed; none produced knowledge-backed or agent findings. The diff is a mechanical relocation of ToolTip property text from ~150+ Page actions (RunObject = Report) onto the corresponding Report objects' own top-level ToolTip property, across many BCApps country layers. This mirrors a pre-existing pattern already used elsewhere in the codebase (e.g. src/Layers/W1/BaseApp/Inventory/Availability/InvAvailabilityPlan.Report.al), and verification confirmed every referenced Report target retains a non-empty top-level ToolTip after the change, with no duplicate ToolTip properties introduced.

Knowledge source: https://github.com/microsoft/BCQuality@186d8a131465475c79244d994acb872cd5c0d4bf

Orchestrator pre-filter (2 file(s) excluded)

  • layer-disabled (knowledge) : 2 file(s)

Findings produced by the AL review agent v1.7.3. Reply 👎 on any inline comment to flag false positives.

@JesperSchulz JesperSchulz added Other GitHub request for other area than SCM, Finance or Integration Ownership: Manual Preserve the manually selected team ownership labels Jul 17, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Stale Status Check Deleted

The Pull Request Build workflow run for this PR was older than 72 hours and has been deleted.

📋 Why was it deleted?

Status checks that are too old may no longer reflect the current state of the target branch. To ensure this PR is validated against the latest code and passes up-to-date checks, a fresh build is required.


🔄 How to trigger a new status check:

  1. 📤 Push a new commit to the PR branch, or
  2. 🔁 Close and reopen the PR

This will automatically trigger a new Pull Request Build workflow run.

PredragMaricic
PredragMaricic previously approved these changes Jul 22, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Stale Status Check Deleted

The Pull Request Build workflow run for this PR was older than 72 hours and has been deleted.

📋 Why was it deleted?

Status checks that are too old may no longer reflect the current state of the target branch. To ensure this PR is validated against the latest code and passes up-to-date checks, a fresh build is required.


🔄 How to trigger a new status check:

  1. 📤 Push a new commit to the PR branch, or
  2. 🔁 Close and reopen the PR

This will automatically trigger a new Pull Request Build workflow run.

@V-CWurtzen
V-CWurtzen enabled auto-merge July 28, 2026 09:37
@V-CWurtzen V-CWurtzen closed this Jul 28, 2026
auto-merge was automatically disabled July 28, 2026 09:41

Pull request was closed

@V-CWurtzen V-CWurtzen reopened this Jul 28, 2026
@V-CWurtzen
V-CWurtzen enabled auto-merge July 28, 2026 09:45
mynjj
mynjj previously approved these changes Jul 28, 2026
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 28, 2026
@V-CWurtzen V-CWurtzen closed this Jul 28, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a manual request Jul 28, 2026
@V-CWurtzen V-CWurtzen reopened this Jul 28, 2026
@V-CWurtzen
V-CWurtzen enabled auto-merge July 28, 2026 19:42
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 29, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a manual request Jul 29, 2026
@V-CWurtzen V-CWurtzen reopened this Jul 29, 2026
@V-CWurtzen
V-CWurtzen enabled auto-merge July 29, 2026 06:56
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 30, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 30, 2026
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 30, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 30, 2026
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 30, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 30, 2026
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 30, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 30, 2026
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 30, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 30, 2026
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 31, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 31, 2026
@V-CWurtzen
V-CWurtzen added this pull request to the merge queue Jul 31, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Jul 31, 2026
@V-CWurtzen V-CWurtzen closed this Jul 31, 2026
@V-CWurtzen V-CWurtzen reopened this Jul 31, 2026
@V-CWurtzen
V-CWurtzen enabled auto-merge July 31, 2026 06:26
Integrates main (incl. Inventory #9582's edits to the shared Purchasing Agent
Role Center) so the fork set is consistent and VerifyMiappSync passes. The
stale-fork gap only surfaced once sibling area PRs merged. Net change vs main is
unchanged: Purchases report action tooltips moved to report objects
(tooltip-only, 94 files).
The W1 change removes the Vendor/Item Purchases action tooltip, but the NA fork has no matching action and its content already matches main (the NA propagation arrived via the BCAppsPrivate/NAV sync #8848). Reword the existing gate comment so the NA fork re-enters this PR's changelist and VerifyMiappSync's presence-only check passes. Comment-only, no functional change.
@github-actions

Copy link
Copy Markdown
Contributor

$\textbf{🟡\ Medium\ Severity\ —\ Accessibility}$

This PR removes the explicit ToolTip from ~146 page actions and leaves the text only on the target Report object (for example, action "Delete Invoiced" on "Purchase Order List" line 593, RunObject = Report "Delete Invoiced Purch. Orders"). Business Central's documented ToolTip-inheritance behavior covers bound page fields inheriting from their source table field; there is no documented platform mechanism for a page action to inherit a ToolTip from the Report/Page named in its RunObject. AA0218 defines page Action controls as requiring their own ToolTip. Even though every removed action tooltip now exists on the corresponding report, unless the client genuinely propagates the target object's ToolTip onto the invoking action control, the host pages have lost their own hover/screen-reader text for these specific actions across ~69 page files. Recommend confirming actual client rendering behavior (or restoring the action-level ToolTip) before merge.

Agent judgement — not directly backed by a BCQuality knowledge article.

Line mapping was unavailable, so this was posted as an issue comment.

👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.26.4

AccessByPermission = TableData "Purchase Header" = RD;
ApplicationArea = PurchReturnOrder;
Caption = 'Delete Invoiced Purchase Return Orders';
ToolTip = 'Delete orders that were not automatically deleted after completion. For example, when several purchase orders were completed by a single invoice.';

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\ —\ Style}$

The new report-level tooltip on "Delete Invd Purch. Ret. Orders" still says "purchase orders" completed by "a single invoice", but this report deletes purchase return orders and its dataset is filtered to Document Type = Return Order. Reword the centralized tooltip so it describes purchase return orders accurately; otherwise every page that now inherits this report tooltip shows misleading text.

Suggested change
ToolTip = 'Delete orders that were not automatically deleted after completion. For example, when several purchase orders were completed by a single invoice.';
ToolTip = 'Delete return orders that were not automatically deleted after completion. For example, when several purchase return orders were completed by a single purchase credit memo.';

Agent judgement — not directly backed by a BCQuality knowledge article.

👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.26.4

{
ApplicationArea = Basic, Suite;
Caption = 'Purchase Statistics';
ToolTip = 'View a list of amounts for purchases, invoice discount and payment discount in $ for each vendor.';

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\ —\ Style}$

The new centralized tooltip on "Purchase Statistics" says the report shows amounts "in $", but the report itself is LCY-based (Purchases (LCY), Inv. Discounts (LCY), Pmt. Discounts (LCY)). Use currency-neutral wording such as LCY in the report tooltip so the shared tooltip matches the actual report content in every locale.

Suggested change
ToolTip = 'View a list of amounts for purchases, invoice discount and payment discount in $ for each vendor.';
ToolTip = 'View a list of amounts for purchases, invoice discount, and payment discount in LCY for each vendor.';

Agent judgement — not directly backed by a BCQuality knowledge article.

👍 useful · ❤️ especially valuable · 👎 wrong - reply with why · AL review agent v1.26.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Other GitHub request for other area than SCM, Finance or Integration Ownership: Manual Preserve the manually selected team ownership

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants