Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
207 lines
7.9 KiB
JSON
207 lines
7.9 KiB
JSON
[
|
|
{
|
|
"id": "T001",
|
|
"description": "Automatic invoices renders one parent group for a shared `client + invoice window` instead of separate top-level rows for each child candidate.",
|
|
"implemented": true,
|
|
"featureIds": ["F001", "F002", "F004"]
|
|
},
|
|
{
|
|
"id": "T002",
|
|
"description": "Parent rows display child count, aggregate amount, and invoice window summary correctly.",
|
|
"implemented": true,
|
|
"featureIds": ["F004", "F005"]
|
|
},
|
|
{
|
|
"id": "T003",
|
|
"description": "Expanding a parent row reveals child candidates with contract or assignment identity, cadence source, service period, and amount.",
|
|
"implemented": true,
|
|
"featureIds": ["F004", "F006"]
|
|
},
|
|
{
|
|
"id": "T004",
|
|
"description": "A parent row is combinable only when all ready children share the same client, currency, PO scope, tax source, and export shape.",
|
|
"implemented": true,
|
|
"featureIds": ["F007", "F008"]
|
|
},
|
|
{
|
|
"id": "T005",
|
|
"description": "A parent row becomes non-combinable when PO scope differs across children and shows the PO incompatibility reason.",
|
|
"implemented": true,
|
|
"featureIds": ["F007", "F008", "F012", "F023"]
|
|
},
|
|
{
|
|
"id": "T006",
|
|
"description": "A parent row becomes non-combinable when currency differs across children and shows the currency incompatibility reason.",
|
|
"implemented": true,
|
|
"featureIds": ["F007", "F008", "F012"]
|
|
},
|
|
{
|
|
"id": "T007",
|
|
"description": "A parent row becomes non-combinable when tax source differs across children and shows the tax incompatibility reason.",
|
|
"implemented": true,
|
|
"featureIds": ["F007", "F008", "F012"]
|
|
},
|
|
{
|
|
"id": "T008",
|
|
"description": "A parent row becomes non-combinable when export shape differs across children and shows the export incompatibility reason.",
|
|
"implemented": true,
|
|
"featureIds": ["F007", "F008", "F012"]
|
|
},
|
|
{
|
|
"id": "T009",
|
|
"description": "When a parent is combinable, selecting the parent selects the whole group as one invoice target.",
|
|
"implemented": true,
|
|
"featureIds": ["F008", "F009"]
|
|
},
|
|
{
|
|
"id": "T010",
|
|
"description": "When a parent is non-combinable, the parent checkbox is disabled while child rows remain individually selectable.",
|
|
"implemented": true,
|
|
"featureIds": ["F008", "F009", "F012"]
|
|
},
|
|
{
|
|
"id": "T011",
|
|
"description": "Partial child selection drives a tri-state parent indicator without silently changing execution semantics.",
|
|
"implemented": true,
|
|
"featureIds": ["F009"]
|
|
},
|
|
{
|
|
"id": "T012",
|
|
"description": "`Select All` selects combinable groups by parent row instead of selecting each child individually.",
|
|
"implemented": true,
|
|
"featureIds": ["F010"]
|
|
},
|
|
{
|
|
"id": "T013",
|
|
"description": "`Select All` selects child rows individually for non-combinable groups instead of attempting invalid parent selection.",
|
|
"implemented": true,
|
|
"featureIds": ["F010", "F012"]
|
|
},
|
|
{
|
|
"id": "T014",
|
|
"description": "Blocked child rows remain visible inside a group and do not become selectable through either child selection or parent `Select All`.",
|
|
"implemented": true,
|
|
"featureIds": ["F011"]
|
|
},
|
|
{
|
|
"id": "T015",
|
|
"description": "Previewing a selected combinable parent renders one combined invoice preview and states `This selection will generate 1 invoice`.",
|
|
"implemented": true,
|
|
"featureIds": ["F013", "F014", "F017"]
|
|
},
|
|
{
|
|
"id": "T016",
|
|
"description": "Previewing a non-combinable mixed child selection renders a multi-invoice preview state or summary with the correct invoice count.",
|
|
"implemented": true,
|
|
"featureIds": ["F013", "F014", "F018"]
|
|
},
|
|
{
|
|
"id": "T017",
|
|
"description": "Preview executes against the exact selected parent or child scope and does not include unselected sibling candidates from the same group.",
|
|
"implemented": true,
|
|
"featureIds": ["F013", "F016"]
|
|
},
|
|
{
|
|
"id": "T018",
|
|
"description": "Generating a selected combinable parent creates exactly one invoice spanning all selected compatible children.",
|
|
"implemented": true,
|
|
"featureIds": ["F015", "F016", "F017"]
|
|
},
|
|
{
|
|
"id": "T019",
|
|
"description": "Generating selected child rows from a non-combinable group creates multiple invoices while preserving the exact selected scope.",
|
|
"implemented": true,
|
|
"featureIds": ["F015", "F016", "F018"]
|
|
},
|
|
{
|
|
"id": "T020",
|
|
"description": "Grouped generation does not re-expand into unselected siblings when the same client and invoice window contain additional candidates.",
|
|
"implemented": true,
|
|
"featureIds": ["F015", "F016"]
|
|
},
|
|
{
|
|
"id": "T021",
|
|
"description": "Duplicate-prevention logic blocks re-invoicing the same grouped parent selection or member selection without blocking unrelated siblings.",
|
|
"implemented": true,
|
|
"featureIds": ["F019"]
|
|
},
|
|
{
|
|
"id": "T022",
|
|
"description": "A combined multi-assignment invoice persists successfully without requiring a fake invoice-header `client_contract_id` owner.",
|
|
"implemented": true,
|
|
"featureIds": ["F017", "F020"]
|
|
},
|
|
{
|
|
"id": "T023",
|
|
"description": "Charge persistence preserves `client_contract_id` attribution per charge for a combined multi-assignment invoice.",
|
|
"implemented": true,
|
|
"featureIds": ["F020", "F021"]
|
|
},
|
|
{
|
|
"id": "T024",
|
|
"description": "Invoice reads and invoice-detail rendering expose enough per-charge assignment attribution to explain a combined multi-assignment invoice.",
|
|
"implemented": true,
|
|
"featureIds": ["F021", "F022"]
|
|
},
|
|
{
|
|
"id": "T025",
|
|
"description": "Invoice history shows a combined grouped invoice clearly and does not mislabel it as belonging to only one assignment when it spans several.",
|
|
"implemented": true,
|
|
"featureIds": ["F022"]
|
|
},
|
|
{
|
|
"id": "T026",
|
|
"description": "Purchase-order enforcement keeps a parent non-combinable when child candidates do not share compatible PO scope.",
|
|
"implemented": true,
|
|
"featureIds": ["F007", "F023"]
|
|
},
|
|
{
|
|
"id": "T027",
|
|
"description": "A valid no-PO grouped combination can generate as one invoice without tripping header-assignment PO checks.",
|
|
"implemented": true,
|
|
"featureIds": ["F017", "F020", "F023"]
|
|
},
|
|
{
|
|
"id": "T028",
|
|
"description": "Legacy single-assignment parent groups still preview and generate exactly as before.",
|
|
"implemented": true,
|
|
"featureIds": ["F024"]
|
|
},
|
|
{
|
|
"id": "T029",
|
|
"description": "A single-child group still behaves like the legacy one-row flow and remains fully supported by preview and generation.",
|
|
"implemented": true,
|
|
"featureIds": ["F024"]
|
|
},
|
|
{
|
|
"id": "T030",
|
|
"description": "DB-backed integration proves two active contracts for the same client with no PO constraint can be selected as one grouped parent and generated as one invoice.",
|
|
"implemented": true,
|
|
"featureIds": ["F017", "F020", "F021"]
|
|
},
|
|
{
|
|
"id": "T031",
|
|
"description": "DB-backed integration proves two active contracts for the same client with incompatible PO scope remain grouped visually but require separate child-level invoicing.",
|
|
"implemented": true,
|
|
"featureIds": ["F007", "F012", "F018", "F023"]
|
|
},
|
|
{
|
|
"id": "T032",
|
|
"description": "DB-backed integration proves `Select All` combines compatible groups and fans out incompatible groups in the same run without cross-contamination.",
|
|
"implemented": true,
|
|
"featureIds": ["F010", "F017", "F018"]
|
|
},
|
|
{
|
|
"id": "T033",
|
|
"description": "DB-backed integration proves grouped duplicate protection remains correct when a prior combined invoice exists for part of the same client window.",
|
|
"implemented": true,
|
|
"featureIds": ["F019"]
|
|
},
|
|
{
|
|
"id": "T034",
|
|
"description": "Static/wiring coverage proves in-product copy, docs, and runbook text describe parent grouping, disabled non-combinable parents, and smart `Select All` semantics.",
|
|
"implemented": true,
|
|
"featureIds": ["F025"]
|
|
}
|
|
]
|