Skip to content

Docs updates for E/A#100781 distance rate auto-selection on workspace change - #101488

Draft
MelvinBot wants to merge 1 commit into
mainfrom
melvin-docs-100781-distance-rate-workspace-change
Draft

MelvinBot wants to merge 1 commit into
mainfrom
melvin-docs-100781-distance-rate-workspace-change

Conversation

@MelvinBot

Copy link
Copy Markdown
Contributor

Explanation of Change

Documents the automatic distance rate change that Render the Concierge system message for an automatic distance rate change surfaces, and corrects the one help-site FAQ that currently describes the old behavior.

The FAQ that is now wrong. Distance-Expenses.md answered "What happens if a Distance expense is moved to a different Workspace?" with "it keeps its original unit and rate", then told members to resolve a "Rate not valid for this workspace" violation by hand. Neither half survives the new behavior: the rate is re-selected from the destination workspace automatically, so there is no stale rate left to violate. This is the substantive change in this PR — a member following the old FAQ would be waiting for a violation that never appears.

The rewritten answer covers what a member actually sees:

  • The rate is picked from the destination workspace the same way it is for a new expense — by matching the expense date against each rate's Start date and End date. Distance and unit are unchanged; the amount is recalculated.
  • Concierge posts distance rates updated for the new workspace - [workspace name] in the report. Copy taken from src/languages/en.ts:1922.
  • That message names no rate, and the article says why: one report can hold several distance expenses that each land on a different rate. Per-expense detail lives in the "changed the rate" message on each expense's thread, matching the reasoning in the PR review.

Two smaller fixes in the same area.

  • Set-distance-rates.md said existing distance expenses "keep the rate that was applied when the expense was created" with no exceptions. That is true for editing a rate but not for a workspace move, so the answer now names the exception and links to the full explanation. Left in place rather than reworded wholesale, because the original claim is still correct for the case it was written about.
  • Distance-Expenses.md:123 linked to /articles/new-expensify/reports-and-expenses/Managing-Distance-Rates, which does not exist — the article is at /articles/new-expensify/workspaces/Set-distance-rates. Fixed while editing the same section. Unrelated to this PR's feature; drop it if you would rather keep this PR to one concern.

Important

This should be held until the Auth side ships. PR #100781 renders the message but does not create it — its own QA Steps say "None. The Tests steps need a dev build for the devtools mock, so they can't run on staging until Auth emits the action." Auth still has to post the CONCIERGEAUTOSELECTDISTANCERATE action and the per-expense MODIFIEDEXPENSE action. Until then, this article describes behavior members cannot see, and the FAQ it replaces still describes what they get today. Please confirm the Auth timing before merging.

UI labels. Distance rates, Add rate, Settings, Rate, Distance, Start date, and End date were checked against dev NewDot web. Change workspace was confirmed from src/languages/en.ts rather than live, because that action only appears when an account has two or more eligible workspaces and the test account had one.

Written against docs/HELPSITE_NAMING_CONVENTIONS.md, docs/HELP_AUTHORING_GUIDELINES.md, and docs/TEMPLATE.md. Both files already existed and already complied, so this keeps their structure and their existing Workspace capitalization rather than restyling untouched prose.

Fixed Issues

$ #100556
PROPOSAL:

Tests

Docs-only change. No app code is touched, so there is nothing to exercise in the app.

  1. Verify npm run spell-changed passes for both changed files. It was run on this branch and reported Files checked: 2, Issues found: 0.
  2. Read the rewritten FAQ answer in docs/articles/new-expensify/reports-and-expenses/Distance-Expenses.md and confirm it matches what the app does once Auth emits the action — in particular that the rate is auto-selected rather than left invalid, and that the Concierge message names the workspace but no rate.
  3. Confirm the Concierge copy quoted in the article matches src/languages/en.ts:1922 exactly.
  4. Confirm the corrected cross-link resolves to the live article at https://help.expensify.com/articles/new-expensify/workspaces/Set-distance-rates.

// TODO: The human co-author must confirm the documented behavior is correct before marking this PR as "ready for review". The behavior is not yet observable in the product — see the note in the Explanation of Change.

  • Verify that no errors appear in the JS console

Offline tests

None. Help-site articles are static and have no offline behavior.

QA Steps

  1. On the built help site, open https://help.expensify.com/articles/new-expensify/reports-and-expenses/Distance-Expenses.
  2. Verify the FAQ answer for What happens if a Distance expense is moved to a different Workspace? renders and no longer mentions a "Rate not valid for this workspace" violation.
  3. Verify the link under How reimbursement rates are set for Distance expenses opens the Set Distance Rates article and does not 404.
  4. Open https://help.expensify.com/articles/new-expensify/workspaces/Set-distance-rates and verify the FAQ answer for Can I change the reimbursement rate for existing distance expenses? renders with its new second paragraph and working link.
  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))
  • If new assets were added or existing ones were modified, I verified that:
    • The assets are optimized and compressed (for SVG files, run npm run compress-svg)
    • The assets load correctly across all supported platforms.
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:
    • I verified that all the inputs inside a form are aligned with each other.
    • I added Design label and/or tagged @Expensify/design so the design team can review the changes.
  • I added unit tests for any new feature or bug fix in this PR to help automatically prevent regressions in this user flow.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari

@dmkt9, please review the files changed and confirm they reflect the current behavior. Then post a new comment saying @MelvinBot mark this PR as ready for review.

PR #100781 renders a Concierge message when a distance expense moves to
another workspace and its rate is re-selected there. The Distance-Expenses
FAQ still told members the rate is kept and a violation must be cleared by
hand, which no longer happens. Correct it, name the exception in the
Set-distance-rates FAQ, and fix a cross-link to an article that does not
exist.

Co-authored-by: dmkt9 <dmkt9@users.noreply.github.com>
@MelvinBot
MelvinBot requested a review from a team September 17, 2026 22:39
@MelvinBot MelvinBot added the HelpDot Apply this label if the issue relates to ExpensifyHelp label Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

HelpDot Apply this label if the issue relates to ExpensifyHelp

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants