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

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-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

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