PR4 — outstandings UI and screen split - #141
Conversation
8c4ad81 to
4efa8f6
Compare
4efa8f6 to
a3a4641
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a3a46416e4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
a3a4641 to
0d45e05
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0d45e051ec
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
0d45e05 to
22a378a
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 22a378a4e0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
22a378a to
646a7c0
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 646a7c0191
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
646a7c0 to
26fbac2
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 26fbac25aa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| company: company.name, | ||
| expected_company_guid: company.guid, | ||
| })), | ||
| currency_assertion: "INR", |
There was a problem hiding this comment.
Verify every book before asserting INR
When any open client book uses a non-INR base currency, this batch unconditionally asserts INR and consequently renders that book's balances with a rupee symbol. Unlike the single-company flow in OutstandingsScreen.tsx:155-170, neither this screen nor fetch_tally_outstandings_all_companies detects each company's currency before accepting the assertion, so mixed-currency firms receive materially misstated comparison figures. Detect and validate currency per company, returning a typed partial result for books that cannot establish INR.
AGENTS.md reference: AGENTS.md:L110-L118
Useful? React with 👍 / 👎.
26fbac2 to
90d235e
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 90d235e3df
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| .catch(() => { | ||
| if (!cancelled) setCurrencyCheck("undetermined"); | ||
| }); |
There was a problem hiding this comment.
Keep currency-probe failures in-band
When detect_tally_base_currency rejects because of a transport failure, unstable paired read, or GUID/book drift, this catch converts the error into the same undetermined state used for a valid non-INR result. The screen then offers “This company uses INR”; accepting it starts fetch_tally_outstandings with an asserted INR value, so a transiently failed probe can let a foreign-currency book be rendered with rupee symbols. Preserve the typed probe error and withhold the confirmation/read until the failure is resolved.
AGENTS.md reference: AGENTS.md:L110-L118
Useful? React with 👍 / 👎.
90d235e to
ac22662
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ac22662e9a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| /// rows this screen already holds from `fetch_tally_outstandings` -- Bridge | ||
| /// never reads Tally a second time to produce a statement. | ||
| async function exportPartyStatement(result: InrCompleteResult, party: string) { | ||
| return invoke<string>("export_party_statement", { |
There was a problem hiding this comment.
Register the party-statement export command
When a native outstandings result exposes expandable party rows, clicking Statement always rejects because export_party_statement has no Rust implementation and is not registered in src-tauri/src/lib.rs (a repository-wide search finds only this frontend invocation). Consequently, the newly presented statement action can never generate its claimed .xlsx file; implement and register the command or remove the action.
Useful? React with 👍 / 👎.
A null statement age is now rendered as not due; zero continues to mean due today. This preserves the native unaged distinction for operators.
Represent CSV text and numeric cells as distinct types. Prefix text values beginning with =, +, -, @, tab, or carriage return with an apostrophe before applying CSV quoting, while leaving raw amount and count cells numeric for downstream spreadsheet calculations. The measured =BVL Zeta Formula party is covered alongside every active prefix. Mutation proof: removing = from the active-prefix set made the focused test fail with exit 1, returning the unneutralized party name; after restoration all 3 CSV tests and the 42-test frontend build passed with exit 0. Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Signed-off-by: Tapish Khandelwal <tapishkhandelwal13@gmail.com>
Carry the PR4 UI surface over the F4X BILLREF presentation disclosure. Claims, evidence, and trusted-evidence keys remain byte-identical to the preserved PR4 head. Compatibility gate: exit 0, unknown_claims=11, evidenced_claims=0. Claims/evidence/trusted identity checks: exit 0.
ac22662 to
12ad095
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 12ad095adb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const [documentPaths, setDocumentPaths] = React.useState<SelectedDocumentPath[]>([]); | ||
| const [documentScan, setDocumentScan] = React.useState<ScanDocumentsResponse | null>(null); | ||
| const [documentSync, setDocumentSync] = React.useState<SyncDocumentsResponse | null>(null); |
There was a problem hiding this comment.
Preserve document work across AXAL navigation
When an operator selects or scans files and then follows the screen’s instruction to check the AXAL workspace in the separate AXAL view, DocumentsScreen unmounts and these newly local states are discarded. Returning to Documents therefore loses every picker authorization, scan result, and sync summary—forcing the operator to reselect and potentially re-hash thousands of files—whereas the pre-extraction App-owned state survived this required cross-view workflow. Keep this state above the routed screen, or otherwise preserve it while navigating to AXAL and explicitly revoke abandoned authorizations.
Useful? React with 👍 / 👎.
Stacked on
refactor/drop-superseded-crates— review only this PR's own diff.Local gate green at this level: workspace tests and clippy in both feature configurations, fmt, tools tests, live-read boundary, fixture byte integrity, licence inventory, tsc, production build, and the workflow-consistency gate.
CI is NOT proven: the GitHub-hosted Windows and bundle-smoke jobs have never run, and one read-transport harness test fails deterministically on macOS with an unknown ubuntu outcome.