Story: Commission: party, counterparty, and party_status
Table of Contents
This page documents a story in Sprint 23. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Finish commissioning party, counterparty, and party_status across all access
layers, superseding the three abandoned per-entity stories from Sprint 22
(Commission: party, Commission: counterparty,
Commission: party_status) now that their shared blockers — composite
child-entity/hierarchy Qt widgets and temporal composite entity versioning — are
both DONE. Regenerate party and counterparty against current codegen templates
(which have drifted significantly since these entities were last touched) and
verify zero-diff before re-verifying the Qt UI end-to-end post-NATS
(party_status's Qt verification is already DONE), and add manual chapters for
all three entities. Shell, CLI, Wt, and HTTP support are not tracked here —
they're covered by the dedicated top-level commissioning stories already in
the backlog: CLI commands, Shell entity commands,
Wt entity UI, and HTTP entity endpoints.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 23 |
| Now | Closed DONE 2026-07-20 (health review 1): all acceptance criteria met (party/counterparty regenerated zero-diff, Qt UI verified end-to-end post-NATS, manual chapters for all three entities written). 2 remaining independent follow-ups split into a new story. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-07-20 |
Acceptance
- Party: regenerated against current codegen templates with zero diff; Qt list/detail/history/delete/eventing verified end-to-end post-NATS; manual chapter written.
- Counterparty: regenerated against current codegen templates with zero diff; Qt list/detail/history/delete/eventing verified end-to-end post-NATS; manual chapter written.
- Party_status: manual chapter written.
- All regressions found are fixed inline or filed as captures.
- Site builds cleanly.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Bring party under codegen; verify zero-diff regen | DONE | 2026-07-13 | 2026-07-13 | Regenerated party's repository/service/handler/registrar/protocol/Qt (found and fixed party's repo/service still on the pre-context-ctx pattern, unlike counterparty's); migrated Qt from ores.qt.party to ores.qt.refdata. SQL profile deliberately excluded: codename generation still needs facet/paste-block work; report_events queue provisioning dropped to a backlog capture as likely-dead. Builds clean. |
| Regenerate counterparty under codegen; verify zero-diff regen | DONE | 2026-07-13 | 2026-07-14 | Regenerated counterparty's protocol/handler/registrar/Qt against current codegen templates; zero-diff. Migrated Qt to ores.qt.refdata; child-entity table/hierarchy gap closed by the composite child-entity table facet task. Re-verified clean after two rebases onto origin/main. |
| Verify party Qt UI end-to-end post-NATS | DONE | 2026-07-14 | 2026-07-15 | Verified live against BARCLAYS PLC. Found and fixed real regressions along the way: missing entity_type_of(party), crm_topology_bundles workflow-hanging seed data, is_auto_generated_key codegen bug locking short_code, pagination reporting page size as total, missing changeReasonCache wiring blocking identifier/contact saves, and 8 stale repository tests + 2 generator bugs. |
| Write party manual chapter | DONE | 2026-07-16 | 2026-07-16 | Add the party entity chapter to the user manual covering Qt windows. |
| Verify counterparty Qt UI end-to-end post-NATS | DONE | 2026-07-14 | 2026-07-15 | Verified live against BARCLAYS PLC's counterparties in the same pass as party; shared fixes (pagination, changeReasonCache, is_auto_generated_key) verified against both entities. |
| Write counterparty manual chapter | DONE | 2026-07-16 | 2026-07-16 | Add the counterparty entity chapter to the user manual covering Qt windows. |
| Write party_status manual chapter | DONE | 2026-07-18 | 2026-07-18 | Add the party_status entity chapter to the user manual covering Qt windows. |
| Build composite child-entity table Qt facet for party and counterparty | DONE | 2026-07-13 | 2026-07-13 | Full parity restored for both entities: identifier/contact-information tables (add/edit/delete, full field set) via a generic ChildEntityTableWidget (ores.qt.api) plus a hand-crafted PartyChildEntityTables/CounterpartyChildEntityTables class per entity; hierarchy tree bound via the already-generic HierarchyModelBuilder/HierarchyTreeWidget (their first real consumer). 6 small codegen paste points, both libs build clean. |
| Remove dead EntityDetailDialog/EntityDetailOperations abstraction | DONE | 2026-07-18 | 2026-07-18 | Now that party and counterparty have both migrated off the hand-maintained EntityDetailDialog/EntityDetailOperations pattern onto codegen-generated dialogs, no entity implements entity_detail_operations any more – confirm via repo-wide search, then delete EntityDetailDialog/EntityDetailOperations and their .ui from ores.qt.api. |
| Party/counterparty Create dialog cannot set parent_party_id | DONE | 2026-07-15 | 2026-07-15 | parent_party_id is never exposed in the Qt Create/Edit dialog (deliberately excluded from Detail fields, like book's parent_portfolio_id precedent), but the DB enforces exactly one root party per tenant – so creating any second party currently always fails with a duplicate-key error on parties_root_party_uniq_idx, with no way to fix it from the UI. |
| Migrate party_status/party_id_scheme/business_unit/business_unit_type from ores.qt.party to ores.qt.refdata | DONE | 2026-07-18 | 2026-07-18 | Move the remaining lookup/related entities in ores.qt.party (PartyStatus, PartyIdScheme, BusinessUnit, BusinessUnitType) over to ores.qt.refdata, matching the earlier party/counterparty migration, and regenerate them against current codegen templates. |
| Add auxiliary-lookup toolbar buttons to Party/Counterparty MDI windows | DONE | 2026-07-18 | 2026-07-18 | Party and Counterparty MDI windows lack toolbar shortcuts to their auxiliary lookup windows (Party Type, Party Status, Party Id Scheme), unlike Currency's Rounding/Monetary Natures/Market Tiers buttons; add matching buttons, wire signals and plugin, and retake the Parties/Counterparties MDI window screenshots. |