Wire sales/purchase posting, settlements, compliance, payroll employees, and ops edit flows; document the integration report. Co-authored-by: Cursor <cursoragent@cursor.com>
117 lines
6.3 KiB
Markdown
117 lines
6.3 KiB
Markdown
# 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.create`
|
||
- `salesAccounting.listProfiles|createProfile|preview|post`
|
||
- `purchaseInventory.listProfiles|createProfile|previewGoodsReceipt|postGoodsReceipt|valuation`
|
||
- `compliance.requestApproval|approve|reject|listRisks|createRisk`
|
||
- `ops.updateDocument` (PATCH)
|
||
|
||
### Backend list endpoints added (integration completeness only)
|
||
|
||
- `GET /api/v1/ar-ap/settlements?party_type=`
|
||
- `GET /api/v1/compliance/risks`
|
||
- `GET /api/v1/purchase-inventory/posting-profiles`
|
||
|
||
## Modified Components
|
||
|
||
- `frontend/lib/accounting-api.ts`
|
||
- `frontend/components/accounting/DomainScreens.tsx` (new)
|
||
- `frontend/components/accounting/BusinessDocsPage.tsx`
|
||
- `frontend/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
|
||
|
||
1. **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`.
|
||
2. **Suppliers** still list+create only (BE has no PATCH).
|
||
3. **Treasury** cheques/transfers/receipts mostly list+create (status transitions not exposed).
|
||
4. **Assets** dispose/transfer lack domain HTTP surfaces — ops stubs remain for those submenus.
|
||
5. **Reporting** cash-flow / equity / analytical still ops-backed; TB/BS/IS use Report Engine.
|
||
6. **Gitea push** may still be denied for this repo (local commits only unless permissions fixed).
|
||
7. Phase **5.12 AI** intentionally blocked.
|
||
|
||
## Next Recommendations
|
||
|
||
1. Promote high-traffic ops modules (sales orders, purchase orders) to first-class domain models when product prioritizes them.
|
||
2. Add supplier PATCH/archive + payable invoice GET/PATCH.
|
||
3. Cheque status transition APIs + UI.
|
||
4. Server-side voucher status filter + total count for pagination.
|
||
5. Wire compliance approval list UI once workflow list endpoint exists.
|
||
6. 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`.
|