Story: Currencies UI polish
Table of Contents
This page documents a story in Sprint 05. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Tidy up the currencies surface: matching JSON round-trip (XML was
already there); collapse the create / update message split into a
single save_currency message; ship a Qt dialog for XML import.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 05 |
| Now | Completed 2025-11-28. |
| Waiting on | None. |
| Next | None. |
| Last touched | 2025-11-28 |
Acceptance
- Currencies round-trip through JSON.
- Single
save_currency_request/responsemessage replaces the create/update pair (breaking protocol change; version bumped). - Qt XML-import dialog shipped for currencies.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Add JSON parsing support for currency | DONE | 2025-11-28 | 2025-11-28 | Currencies can already round-trip through XML; add JSON round-trip via reflect-cpp for parity. |
| Merge update and create currency messages | DONE | 2025-11-28 | 2025-11-28 | Bitemporal repositories always insert, so the create/update split was never semantically necessary. Collapse to a single save_currency message. |
| Implement import dialog for XML import in Qt | DONE | 2025-11-28 | 2025-11-28 | Qt-side XML import: choose a file, parse, preview, commit. Wraps the existing XML import path with a GUI. |
Decisions
- Breaking protocol change is fine here
- bitemporal repositories always insert new versions, so the create/update split was never semantically necessary. Protocol version bump signals the break.
Out of scope
- Clone-a-currency (still deferred from sprint 04).
See also
- Currencies UI (sprint 04) — predecessor story.
- ores.refdata — the reference-data component carrying currencies.