Files
boc/memory/fortnox-klon-resultat.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

113 lines
4.7 KiB
Markdown

# Fortnox-klon: Resultat 2026-06-17
## Uppgift
Komplettera Ouroboros Finance (`/opt/amos/public/ouroboros/finance/index.html`) med fakturering, periodstängning och momsdeklarationsunderlag.
## Status: ✅ KLART
### Fil-ops
- **Backup**: `/opt/amos/public/ouroboros/finance/index.html.bak-20260617`
- **Deploy**: 86 328 bytes via S3 → SSM (root-rättigheter saknas direkt) ✅
---
## Analys av befintlig fil (före)
### Flikar (hade INGA flikar — enkel single-page)
- KPI-rad (Kassa, Intäkter YTD, Kostnader YTD, Resultat YTD)
- Resultaträkning (P&L) — live från `/api/ledger/trial-balance`
- Senaste verifikationer — live från `/api/ledger/journal`
- Periodstatus — live från `/api/ledger/periods`
- Ny verifikation (formulär) — POST till `/api/ledger/journal`
### Live vs hårdkodat
- **Live**: KPI, P&L, journal, periods — allt via token+fetch
- **Hårdkodat**: Demo-data (DEMO_ACCOUNTS) som fallback vid API-fel
- **Saknade**: Fakturering, momsdeklaration, proper periodstängning
### API-token
- `wavult-amos-internal-2026` är ett internt service-token accepterat av auth.mjs
- Kräver `x-internal-source: ouroboros-system` header ELLER JWT Bearer token
- Tenant: `landvex` (via `x-tenant-id` header)
---
## Implementerade moduler
### A) Fakturering (Tab "🧾 Fakturor")
- Lista med befintliga fakturor (localStorage + journalposter)
- Sammanfattning: Totalt fakturerat / Betalt / Förfallet
- Ny faktura-modal: kund, belopp exkl. moms, momssats (25/12/6/0%), förfallodatum
- **Auto-bokföring**: D 1510 / K 3010 (25%) + K 2611 (moms)
- Momssats 12% → K 3020 + K 2615
- Momssats 6% → K 3000 + K 2616
- Momssats 0% → K 3000 (ingen momspost)
- Fakturanummer: `FAK-YYYY-NNN`
- Status: draft/sent/paid/overdue (auto-markeras overdue vid förfall)
- Sparas i localStorage för persistens
### B) Momsdeklarationsunderlag (Tab "🧮 Moms")
- Välj kvartal: Q1/Q2/Q3/Q4 2026
- Hämtar saldon från `/api/ledger/trial-balance?fiscal_year=2026` (ingen periodfilter = YTD)
- Rutnummer visade:
- Ruta 05: Momspliktig omsättning (konton 3000/3010/3020)
- Ruta 10: Utgående moms 25% (konto 2611)
- Ruta 11: Utgående moms 12% (konto 2615)
- Ruta 12: Utgående moms 6% (konto 2616)
- Ruta 21: Inköp tjänster utlandet (konto 4531, normalt 0)
- Ruta 22: Utgående moms omvänd skattskyldighet (konto 2614)
- Ruta 30: Ingående moms avdragsgill (konto 2645)
- Ruta 48: Ingående moms omvänd skattskyldighet (konto 2640)
- Ruta 49: Moms att betala/återfå (beräknat)
- Exportknapp "📄 Skicka till KPMG" → genererar .txt-fil (PDF-redo textunderlag)
### C) Periodstängning (Tab "📅 Periodstängning")
- Visuellt workflow: Öppen → Granskning → Godkänd → Stängd
- **Checklista**:
- Balansräkning balanserar (debet = kredit, < 1 kr diff)
- Konto 1689 (Förutbetalda kostnader) = 0
- Konto 2611 (Moms) kontrollerat
- Inga utkast-verifikationer
- Kräver alla checks OK för att aktivera "Stäng period"-knapp
- **API-anrop**: POST `/api/ledger/periods/:period/close` (period-workflow.mjs E1-005)
- Också: submit-review, approve, reopen
- Trial balance snapshot visas vid stängning
---
## Teknisk implementation
### Arkitektur
- Rent vanilla JavaScript, inga ramverk
- Tab-system: CSS `display:none/block` + JS `switchTab()`
- Modal för ny faktura: CSS `modal-overlay.hidden`
- localStorage för faktura-persistens
- Fallback till demo-data vid API-fel
### API-konfiguration
```javascript
const API_BASE = 'http://127.0.0.1:3250';
const INTERNAL_TOKEN = 'wavult-amos-internal-2026';
const TENANT_ID = 'landvex';
// Headers: Authorization: Bearer ..., x-internal-source: ouroboros-system, x-tenant-id: landvex
```
### Design
- Bevarar navy/amber-tema, SF Pro/system-font
- Ny responsiv tab-nav i topbar
- Nya CSS-klasser: `.tab-section`, `.invoice-table`, `.vat-card`, `.vat-grid`, `.checklist`, `.modal-overlay`, `.wf-step`
---
## Begränsningar / Notiser
1. **Faktura-persistens**: Sparas i localStorage (klient-sida). För server-side persistens behöver ett `/api/invoices` endpoint skapas i aamos-ledger.
2. **Momsrutter**: Q1/Q2/Q3/Q4 filtreras inte server-sidan (YTD-data används). Kräver period-range query på servern för korrekt kvartalsseparering.
3. **Ruta 21/22/48**: Visas med 0 kr (omvänd skattskyldighet). Konton 4531/2614/2640 behöver bokföras manuellt om relevant.
4. **Periodstängning**: Kräver att perioden finns i `ledger_periods`-tabellen (POST `/api/ledger/periods/:period/open` för att skapa).
## Deploy-metod
Direktaccess nekad (root:root filer). Lösning:
1. Fil uploadad till S3: `s3://aamos.ai/temp/finance-index-patch.html`
2. SSM RunShellScript: `aws s3 cp ... /opt/amos/public/ouroboros/finance/index.html`
3. S3-temp rensad efter deploy