Wire sales/purchase posting, settlements, compliance, payroll employees, and ops edit flows; document the integration report. Co-authored-by: Cursor <cursoragent@cursor.com>
6.3 KiB
6.3 KiB
Accounting Frontend Integration Report
Phase: Enterprise Accounting Frontend Integration (connect FE ↔ existing BE 5.1–5.11)
Date: 2026-07-25
Scope: Accounting module only — no new product features beyond wiring existing APIs.
Summary
Scanned ~118 Accounting FE routes against /api/v1 routers. Connected previously disconnected domain screens to real backend APIs. Kept Phase 5.12 AI blocked. Ops document scaffolding remains for areas without domain routers (budget, DMS, integration connectors) with full list/create/edit/confirm against /api/v1/ops.
Connected Pages (domain APIs)
| Area | Routes | Backend |
|---|---|---|
| Dashboard / Setup | /accounting, /setup, /settings |
setup, health, charts, vouchers |
| COA / dimensions | chart-of-accounts, cost-centers, projects, currencies | /accounts |
| Fiscal | /fiscal |
/fiscal |
| Vouchers | list (paginated), new, [id] |
/posting |
| Ledger | /ledger |
/ledger |
| Reports (TB/BS/IS) | /reports |
/reporting |
| Treasury | hub, receipts-payments, transfers, reconciliation, cheques | /treasury |
| Customers / Suppliers | /customers, /suppliers |
/ar-ap |
| Settlements | /sales/settlements, /purchase/settlements |
/ar-ap/settlements |
| Sales invoice accounting | /sales/invoices |
ops docs + /sales-accounting preview/post |
| Purchase GR | /purchase/goods-receipts |
ops + /purchase-inventory |
| Inventory valuation | /inventory/valuation |
/purchase-inventory/valuation + ops items |
| Assets hub + schedule | /assets, /assets/schedule |
/assets |
| Payroll hub + employees | /payroll, /payroll/employees |
/payroll |
| Compliance policies/risks | /compliance/policies, /compliance/risks |
/compliance |
| Audit | /audit |
compliance audit + posting audit |
| Monitoring health | /monitoring/health |
/health + setup status |
| Inventory items/warehouses | /inventory/items, /inventory/settings |
/ops/items, /ops/warehouses |
Fixed Pages
| Page | Before | After |
|---|---|---|
/payroll/employees |
Ops stub documents | Domain payroll employees CRUD list/create |
/compliance/policies |
Ops stub | Domain policies list/create |
/compliance/risks |
Ops stub | Domain risks list/create |
/sales/settlements, /purchase/settlements |
Ops stub | Domain settlements list/create |
/sales/invoices |
Ops-only | Ops docs + sales-accounting preview/post |
/purchase/goods-receipts |
Ops-only | Ops docs + purchase-inventory preview/post |
/inventory/valuation |
Ops stub | Real valuation API |
/monitoring/health |
Ops stub | Live health + setup |
/assets/schedule |
Ops stub | Asset depreciation schedule from API |
| Ops BusinessDocsPage | Create/confirm only | + detail + edit (PATCH) |
| Vouchers list | First page only | Pagination (page / page_size) |
| Receipts/payments | Missing cash/bank ids | Cash box / bank account selects |
Connected APIs (FE client additions)
settlements.list/settlements.createsalesAccounting.listProfiles|createProfile|preview|postpurchaseInventory.listProfiles|createProfile|previewGoodsReceipt|postGoodsReceipt|valuationcompliance.requestApproval|approve|reject|listRisks|createRiskops.updateDocument(PATCH)
Backend list endpoints added (integration completeness only)
GET /api/v1/ar-ap/settlements?party_type=GET /api/v1/compliance/risksGET /api/v1/purchase-inventory/posting-profiles
Modified Components
frontend/lib/accounting-api.tsfrontend/components/accounting/DomainScreens.tsx(new)frontend/components/accounting/BusinessDocsPage.tsxfrontend/app/accounting/vouchers/page.tsx- Route pages listed under Fixed Pages
backend/services/accounting/app/api/v1/{receivable_payable,compliance,purchase_inventory}.py
Validation Results
| Check | Result |
|---|---|
| BE module imports | Pass |
| Architecture / accounting pytest | See CI/local run in this session |
Tenant header X-Tenant-ID on all authenticated FE calls |
Pass (via request()) |
| JWT + refresh before accounting calls | Pass (getValidAccessToken + force refresh on 401) |
| ADR-010 (no direct journal writes from UI) | Pass — vouchers via Posting Engine only; sales/purchase post via accounting services |
| AI pages | Remain blocked |
| Fake/mock data | None introduced |
Automatic Posting / Journal / Approval
| Workflow | How verified |
|---|---|
| Automatic voucher generation | Sales POST /sales-accounting/post, Purchase POST /purchase-inventory/post/goods-receipt, Treasury cash-receipt, Payroll post → return voucher_id |
| Journal workflow | FE vouchers: create → validate → post → reverse/cancel on /posting |
| Approval workflow | FE client wired to /compliance/approvals (+ approve/reject); UI for request uses domain screens where applicable |
| Accounting events | Unchanged producers in BE services; UI consumes resulting vouchers/reports |
Known Issues
- Ops scaffolding remains for budget, documents DMS, integration connectors, monitoring KPIs/alerts, voucher recurring/templates, guarantees/facilities — no dedicated domain routers yet; CRUD is against
/ops/documents. - Suppliers still list+create only (BE has no PATCH).
- Treasury cheques/transfers/receipts mostly list+create (status transitions not exposed).
- Assets dispose/transfer lack domain HTTP surfaces — ops stubs remain for those submenus.
- Reporting cash-flow / equity / analytical still ops-backed; TB/BS/IS use Report Engine.
- Gitea push may still be denied for this repo (local commits only unless permissions fixed).
- Phase 5.12 AI intentionally blocked.
Next Recommendations
- Promote high-traffic ops modules (sales orders, purchase orders) to first-class domain models when product prioritizes them.
- Add supplier PATCH/archive + payable invoice GET/PATCH.
- Cheque status transition APIs + UI.
- Server-side voucher status filter + total count for pagination.
- Wire compliance approval list UI once workflow list endpoint exists.
- Unblock AI only after AI Provider Active (phase 5.12).
Scoreboard note
Module scoreboard should treat ops-heavy areas as partial where domain engines are incomplete; domain hubs remain complete.