bae705aa97
- 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
4.7 KiB
4.7 KiB
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-systemheader ELLER JWT Bearer token - Tenant:
landvex(viax-tenant-idheader)
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+ JSswitchTab() - Modal för ny faktura: CSS
modal-overlay.hidden - localStorage för faktura-persistens
- Fallback till demo-data vid API-fel
API-konfiguration
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
- Faktura-persistens: Sparas i localStorage (klient-sida). För server-side persistens behöver ett
/api/invoicesendpoint skapas i aamos-ledger. - Momsrutter: Q1/Q2/Q3/Q4 filtreras inte server-sidan (YTD-data används). Kräver period-range query på servern för korrekt kvartalsseparering.
- Ruta 21/22/48: Visas med 0 kr (omvänd skattskyldighet). Konton 4531/2614/2640 behöver bokföras manuellt om relevant.
- Periodstängning: Kräver att perioden finns i
ledger_periods-tabellen (POST/api/ledger/periods/:period/openför att skapa).
Deploy-metod
Direktaccess nekad (root:root filer). Lösning:
- Fil uploadad till S3:
s3://aamos.ai/temp/finance-index-patch.html - SSM RunShellScript:
aws s3 cp ... /opt/amos/public/ouroboros/finance/index.html - S3-temp rensad efter deploy