Hermes 284313f908
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
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

138 lines
4.0 KiB
JSON

[
{
"id": "F001",
"description": "Producer: Stripe success path in recordExternalPayment enqueues record_payment when a realm is connected and the invoice is mapped; unmapped invoice \u2192 skipped with stat, not exception.",
"implemented": true,
"prdRefs": [
"5.1"
]
},
{
"id": "F002",
"description": "record_payment op execution: QBO Payment with CustomerRef from client mapping, Line linking the mapped invoice, PaymentRefNum = Stripe reference, DepositToAccountRef from tenant setting (default Undeposited Funds resolved at delivery).",
"implemented": true,
"prdRefs": [
"5.1"
]
},
{
"id": "F003",
"description": "Payment mapping row written at push time so the next CDC poll treats the pushed payment as already-applied (echo suppression).",
"implemented": true,
"prdRefs": [
"5.1"
]
},
{
"id": "F004",
"description": "getQboAccounts server action (deposit-eligible accounts, catalog pattern) + deposit-account picker in QBO settings.",
"implemented": true,
"prdRefs": [
"5.1",
"6"
]
},
{
"id": "F005",
"description": "record_payment failures (invoice deleted in QBO, invalid account) file accounting_sync_export_error exceptions via the slice-1 framework.",
"implemented": true,
"prdRefs": [
"5.1"
]
},
{
"id": "F006",
"description": "Double-entry guard verified: a QBO-side manual duplicate of a pushed payment surfaces as an exception on the already-settled invoice rather than double-applying.",
"implemented": true,
"prdRefs": [
"7"
]
},
{
"id": "F007",
"description": "getQboClasses and getQboDepartments server actions (catalog pattern, realm-scoped, cached).",
"implemented": true,
"prdRefs": [
"5.2",
"6"
]
},
{
"id": "F008",
"description": "Tenant default class + department settings with pickers in QBO settings.",
"implemented": true,
"prdRefs": [
"5.2",
"6"
]
},
{
"id": "F009",
"description": "Item mapping metadata supports classId; mapping dialog documents it; items tab renders a class column when present.",
"implemented": true,
"prdRefs": [
"5.2"
]
},
{
"id": "F010",
"description": "Invoice transform emits per-line SalesItemLineDetail.ClassRef (item metadata \u2192 tenant default \u2192 omit) and header DepartmentRef (tenant default \u2192 omit); CreditMemo transform mirrors it.",
"implemented": true,
"prdRefs": [
"5.2"
]
},
{
"id": "F011",
"description": "default_realm tenant setting consumed by getDefaultQboRealmId (explicit default replaces first-stored-key ordering); make-default action in settings.",
"implemented": true,
"prdRefs": [
"5.3",
"6"
]
},
{
"id": "F012",
"description": "Settings connection list renders one row per connected realm (company name, status, last cycle) replacing the single-connection card when realm count > 1.",
"implemented": true,
"prdRefs": [
"5.3"
]
},
{
"id": "F013",
"description": "Realm picker in the batch creation dialog and the slice-3 wizard, shown only when more than one realm is connected.",
"implemented": true,
"prdRefs": [
"5.3"
]
},
{
"id": "F014",
"description": "Cycle scheduling enumerates realms: connect registers that realm's cycle, disconnect deregisters only that realm; per-realm cursors/health already from slice 1.",
"implemented": true,
"prdRefs": [
"5.3",
"7"
]
},
{
"id": "F015",
"description": "Realm-scoped surfaces (badge aggregation, health panel, mapping tabs) consistently read the selected/default realm; single-realm tenants see no UI change.",
"implemented": true,
"prdRefs": [
"5.3"
]
},
{
"id": "F016",
"description": "i18n: deposit/class/department pickers, connection list, realm pickers in en + translated locales; pseudo-locales regenerated.",
"implemented": true,
"prdRefs": [
"5.1",
"5.2",
"5.3"
]
}
]