05ed037fe8
- DNS: pilot.landvex.com -> 16.170.83.169 - TLS: Let's Encrypt certificate (expires 2026-09-30) - Nginx: reverse proxy with SSL termination - API: https://pilot.landvex.com/api/v1/missions - UI: https://pilot.landvex.com/ - Upload: POST /api/v1/missions/import (multipart/form-data) Verified: ✅ https://pilot.landvex.com/health ✅ https://pilot.landvex.com/version ✅ https://pilot.landvex.com/api/v1/missions (list) ✅ https://pilot.landvex.com/api/v1/missions/:id (get) ✅ POST /api/v1/missions/import (video upload) ✅ UI loads with title 'LandveX Intelligence Lab' Next: Pilot 001 — Break the system!
580 lines
33 KiB
Markdown
580 lines
33 KiB
Markdown
# LandveX Enterprise Platform — Faktureringsmodul
|
|
|
|
## Översikt
|
|
Faktureringsmodulen hanterar kommunala fakturor och avtal, integrerar med befintliga ekonomisystem och erbjuder rapportering/export i SIE4 och PDF. UI:n är designad för icke-tekniska användare (handläggare, ekonomer, avtalsansvariga).
|
|
|
|
---
|
|
|
|
## 1. Datamodell
|
|
|
|
### 1.1 Huvudentiteter
|
|
|
|
```
|
|
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
|
│ Customer │ │ Contract │ │ Invoice │
|
|
│ (Kund) │1..* │ (Avtal) │1..* │ (Faktura) │
|
|
├─────────────────┤◄────┤ ├────►├─────────────────┤
|
|
│ id (PK) │ ├─────────────────┤ │ id (PK) │
|
|
│ org_number │ │ id (PK) │ │ contract_id (FK)│
|
|
│ name │ │ customer_id (FK)│ │ invoice_number │
|
|
│ address │ │ contract_type │ │ period_start │
|
|
│ postal_code │ │ start_date │ │ period_end │
|
|
│ city │ │ end_date │ │ amount_ex_vat │
|
|
│ contact_person │ │ amount │ │ vat_amount │
|
|
│ email │ │ vat_rate │ │ total_amount │
|
|
│ phone │ │ billing_period │ │ due_date │
|
|
│ municipality_id │ │ status │ │ status │
|
|
│ created_at │ │ created_at │ │ sent_date │
|
|
│ updated_at │ │ updated_at │ │ paid_date │
|
|
└─────────────────┘ └─────────────────┘ │ created_at │
|
|
│ updated_at │
|
|
└─────────────────┘
|
|
│
|
|
│ 1..*
|
|
▼
|
|
┌─────────────────┐
|
|
│ ContractService │
|
|
│(Avtalstjänst) │
|
|
├─────────────────┤
|
|
│ id (PK) │
|
|
│ contract_id (FK)│
|
|
│ service_name │
|
|
│ description │
|
|
│ unit_price │
|
|
│ quantity │
|
|
│ unit │
|
|
│ created_at │
|
|
└─────────────────┘
|
|
```
|
|
|
|
### 1.2 Detaljerade tabeller
|
|
|
|
#### customers (Kunder)
|
|
| Kolumn | Typ | Beskrivning |
|
|
|--------|-----|-------------|
|
|
| id | UUID PK | Unikt ID |
|
|
| org_number | VARCHAR(12) | Organisationsnummer (t.ex. 212000-1234) |
|
|
| name | VARCHAR(255) | Kommunens/offentliga aktörens namn |
|
|
| address | VARCHAR(255) | Postadress |
|
|
| postal_code | VARCHAR(10) | Postnummer |
|
|
| city | VARCHAR(100) | Ort |
|
|
| contact_person | VARCHAR(255) | Kontaktperson |
|
|
| email | VARCHAR(255) | E-post |
|
|
| phone | VARCHAR(50) | Telefon |
|
|
| municipality_id | VARCHAR(4) | Kommunkod (t.ex. 1480 för Göteborg) |
|
|
| created_at | TIMESTAMP | Skapad |
|
|
| updated_at | TIMESTAMP | Uppdaterad |
|
|
|
|
#### contracts (Avtal)
|
|
| Kolumn | Typ | Beskrivning |
|
|
|--------|-----|-------------|
|
|
| id | UUID PK | Unikt ID |
|
|
| customer_id | UUID FK | Referens till kund |
|
|
| contract_number | VARCHAR(50) | Avtalsnummer (t.ex. "LVX-2024-001") |
|
|
| contract_type | ENUM | 'service', 'license', 'project', 'subscription' |
|
|
| start_date | DATE | Startdatum |
|
|
| end_date | DATE | Slutdatum |
|
|
| amount | DECIMAL(15,2) | Avtalsbelopp exkl. moms |
|
|
| vat_rate | DECIMAL(4,2) | Momssats (t.ex. 25.00) |
|
|
| billing_period | ENUM | 'monthly', 'quarterly', 'semi_annual', 'annual', 'one_time' |
|
|
| next_billing_date | DATE | Nästa faktureringsdatum |
|
|
| status | ENUM | 'draft', 'active', 'paused', 'terminated', 'expired' |
|
|
| notes | TEXT | Interna anteckningar |
|
|
| created_at | TIMESTAMP | Skapad |
|
|
| updated_at | TIMESTAMP | Uppdaterad |
|
|
|
|
#### contract_services (Avtalstjänster)
|
|
| Kolumn | Typ | Beskrivning |
|
|
|--------|-----|-------------|
|
|
| id | UUID PK | Unikt ID |
|
|
| contract_id | UUID FK | Referens till avtal |
|
|
| service_name | VARCHAR(255) | Tjänstens namn |
|
|
| description | TEXT | Beskrivning |
|
|
| unit_price | DECIMAL(15,2) | Pris per enhet |
|
|
| quantity | DECIMAL(10,2) | Antal enheter |
|
|
| unit | VARCHAR(50) | Enhet (t.ex. 'st', 'tim', 'mån') |
|
|
| created_at | TIMESTAMP | Skapad |
|
|
|
|
#### invoices (Fakturor)
|
|
| Kolumn | Typ | Beskrivning |
|
|
|--------|-----|-------------|
|
|
| id | UUID PK | Unikt ID |
|
|
| contract_id | UUID FK | Referens till avtal |
|
|
| invoice_number | VARCHAR(50) | Fakturanummer (t.ex. "FV-2024-00042") |
|
|
| period_start | DATE | Periodens start |
|
|
| period_end | DATE | Periodens slut |
|
|
| amount_ex_vat | DECIMAL(15,2) | Belopp exkl. moms |
|
|
| vat_amount | DECIMAL(15,2) | Momsbelopp |
|
|
| total_amount | DECIMAL(15,2) | Totalt inkl. moms |
|
|
| due_date | DATE | Förfallodatum |
|
|
| status | ENUM | 'draft', 'sent', 'paid', 'overdue', 'cancelled', 'credited' |
|
|
| sent_date | TIMESTAMP | Skickad datum |
|
|
| paid_date | DATE | Betald datum |
|
|
| reference | VARCHAR(255) | OCR/Referensnummer |
|
|
| created_at | TIMESTAMP | Skapad |
|
|
| updated_at | TIMESTAMP | Uppdaterad |
|
|
|
|
#### invoice_rows (Fakturarader)
|
|
| Kolumn | Typ | Beskrivning |
|
|
|--------|-----|-------------|
|
|
| id | UUID PK | Unikt ID |
|
|
| invoice_id | UUID FK | Referens till faktura |
|
|
| description | VARCHAR(500) | Radbeskrivning |
|
|
| quantity | DECIMAL(10,2) | Antal |
|
|
| unit | VARCHAR(50) | Enhet |
|
|
| unit_price | DECIMAL(15,2) | Pris per enhet |
|
|
| total_price | DECIMAL(15,2) | Radsumma |
|
|
| created_at | TIMESTAMP | Skapad |
|
|
|
|
#### integrations (Integrationer)
|
|
| Kolumn | Typ | Beskrivning |
|
|
|--------|-----|-------------|
|
|
| id | UUID PK | Unikt ID |
|
|
| name | VARCHAR(255) | Integrationens namn |
|
|
| system_type | ENUM | 'fortnox', 'visma', 'hogia', 'custom' |
|
|
| config | JSONB | Konfiguration (API-nycklar, URL:er, etc.) |
|
|
| is_active | BOOLEAN | Aktiv/inaktiv |
|
|
| last_sync | TIMESTAMP | Senaste synkronisering |
|
|
| created_at | TIMESTAMP | Skapad |
|
|
|
|
#### audit_log (Revisionslogg)
|
|
| Kolumn | Typ | Beskrivning |
|
|
|--------|-----|-------------|
|
|
| id | UUID PK | Unikt ID |
|
|
| entity_type | VARCHAR(50) | 'invoice', 'contract', 'customer' |
|
|
| entity_id | UUID | Referens till entitet |
|
|
| action | VARCHAR(50) | 'created', 'updated', 'deleted', 'sent', 'paid' |
|
|
| user_id | UUID | Vilken användare |
|
|
| old_values | JSONB | Tidigare värden |
|
|
| new_values | JSONB | Nya värden |
|
|
| created_at | TIMESTAMP | När händelsen inträffade |
|
|
|
|
---
|
|
|
|
## 2. API-endpoints
|
|
|
|
### 2.1 Base URL
|
|
```
|
|
/api/v1/billing
|
|
```
|
|
|
|
### 2.2 Kunder (Customers)
|
|
|
|
```
|
|
GET /customers # Lista alla kunder (paginerad)
|
|
GET /customers/:id # Hämta specifik kund
|
|
POST /customers # Skapa ny kund
|
|
PUT /customers/:id # Uppdatera kund
|
|
DELETE /customers/:id # Ta bort kund (soft delete)
|
|
GET /customers/:id/contracts # Hämta kundens avtal
|
|
```
|
|
|
|
**Query-parametrar för GET /customers:**
|
|
- `search` — fritextsökning på namn/org.nr
|
|
- `municipality_id` — filtrera på kommunkod
|
|
- `page`, `limit` — paginering
|
|
- `sort` — sortering (t.ex. `name:asc`)
|
|
|
|
### 2.3 Avtal (Contracts)
|
|
|
|
```
|
|
GET /contracts # Lista avtal
|
|
GET /contracts/:id # Hämta specifikt avtal
|
|
POST /contracts # Skapa nytt avtal
|
|
PUT /contracts/:id # Uppdatera avtal
|
|
DELETE /contracts/:id # Ta bort avtal
|
|
PUT /contracts/:id/status # Ändra status (activate/pause/terminate)
|
|
GET /contracts/:id/invoices # Hämta avtalets fakturor
|
|
POST /contracts/:id/renew # Förnya avtal
|
|
```
|
|
|
|
**Query-parametrar för GET /contracts:**
|
|
- `search` — fritextsökning
|
|
- `status` — filtrera på status
|
|
- `customer_id` — filtrera på kund
|
|
- `expiring_within` — dagar till upphörande (t.ex. 30, 90)
|
|
- `page`, `limit`, `sort`
|
|
|
|
### 2.4 Fakturor (Invoices)
|
|
|
|
```
|
|
GET /invoices # Lista fakturor
|
|
GET /invoices/:id # Hämta specifik faktura
|
|
POST /invoices # Skapa manuell faktura
|
|
POST /invoices/generate # Generera fakturor från avtal
|
|
PUT /invoices/:id # Uppdatera utkast
|
|
PUT /invoices/:id/send # Skicka faktura
|
|
PUT /invoices/:id/pay # Markera som betald
|
|
PUT /invoices/:id/cancel # Makulera faktura
|
|
PUT /invoices/:id/credit # Skapa kreditfaktura
|
|
GET /invoices/:id/pdf # Generera PDF
|
|
GET /invoices/:id/sie4 # Exportera som SIE4
|
|
```
|
|
|
|
**Query-parametrar för GET /invoices:**
|
|
- `search` — fritextsökning
|
|
- `status` — filtrera på status
|
|
- `customer_id` — filtrera på kund
|
|
- `contract_id` — filtrera på avtal
|
|
- `period_from`, `period_to` — datumintervall
|
|
- `overdue` — true/false, visa endast förfallna
|
|
- `page`, `limit`, `sort`
|
|
|
|
### 2.5 Rapportering & Export
|
|
|
|
```
|
|
GET /reports/summary # Sammanfattning (intäkter, förfallna, etc.)
|
|
GET /reports/revenue # Intäktsrapport per period
|
|
GET /reports/aging # Förfallorapport (aging report)
|
|
GET /reports/export/sie4 # SIE4-export för period
|
|
GET /reports/export/pdf # PDF-rapport
|
|
POST /reports/custom # Anpassad rapport
|
|
```
|
|
|
|
**Query-parametrar för rapporter:**
|
|
- `period_from`, `period_to` — obligatoriska datum
|
|
- `customer_id` — valfri filtrering
|
|
- `group_by` — 'month', 'quarter', 'year', 'customer'
|
|
|
|
### 2.6 Integrationer
|
|
|
|
```
|
|
GET /integrations # Lista integrationer
|
|
GET /integrations/:id # Hämta integration
|
|
POST /integrations # Skapa integration
|
|
PUT /integrations/:id # Uppdatera integration
|
|
DELETE /integrations/:id # Ta bort integration
|
|
POST /integrations/:id/sync # Manuell synkronisering
|
|
GET /integrations/:id/logs # Synkroniseringsloggar
|
|
```
|
|
|
|
### 2.7 Autogenerering (Cron/Scheduler)
|
|
|
|
```
|
|
POST /jobs/generate-invoices # Trigga fakturagenerering
|
|
GET /jobs/status # Status på bakgrundsjobb
|
|
```
|
|
|
|
---
|
|
|
|
## 3. UI-skiss (Textbeskrivning)
|
|
|
|
### 3.1 Designprinciper
|
|
- **Enkelhet**: Minimera antalet klick för vanliga uppgifter
|
|
- **Tydlighet**: Tydliga statusindikatorer (färger, ikoner)
|
|
- **Kontext**: All relevant info synlig utan att navigera bort
|
|
- **Tillgänglighet**: WCAG 2.1 AA, stöd för skärmläsare
|
|
|
|
### 3.2 Huvudnavigering (Sidebar)
|
|
|
|
```
|
|
┌────────────────────────────────────────┐
|
|
│ 🏠 LandveX Fakturering │
|
|
├────────────────────────────────────────┤
|
|
│ 📋 Översikt ← Dashboard │
|
|
│ 👥 Kunder │
|
|
│ 📄 Avtal │
|
|
│ 💰 Fakturor │
|
|
│ 📊 Rapporter │
|
|
│ 🔌 Integrationer │
|
|
├────────────────────────────────────────┤
|
|
│ ⚙️ Inställningar │
|
|
│ ❓ Hjälp │
|
|
└────────────────────────────────────────┘
|
|
```
|
|
|
|
### 3.3 Dashboard (Översikt)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ God morgon, [Användare]! [Sök] [🔔] [👤 Profil] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ SNABBLÄNKAR: │
|
|
│ [+ Ny faktura] [+ Nytt avtal] [📥 Importera] [⚙️] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ KORT (4 st i rad): │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌────────┐│
|
|
│ │ 💰 Omsättn. │ │ 📄 Fakturor │ │ ⏰ Förfallna│ │ ✅ Bet. ││
|
|
│ │ 1 245 000 │ │ 42 denna │ │ 7 st │ │ 35 st ││
|
|
│ │ kr (mån) │ │ månad │ │ 89 500 kr │ │ ││
|
|
│ │ +12% vs förra│ │ │ │ 🔴 Varning! │ │ ││
|
|
│ └─────────────┘ └─────────────┘ └─────────────┘ └────────┘│
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ TVÅ KOLUMNER: │
|
|
│ ┌─────────────────────────┐ ┌─────────────────────────┐ │
|
|
│ │ 📅 Kommande fakturering │ │ 🔔 Påminnelser │ │
|
|
│ │ ─────────────────────── │ │ ─────────────────────── │ │
|
|
│ │ • Avtal #123 - 15 jan │ │ • 7 fakturor förfallna │ │
|
|
│ │ • Avtal #456 - 22 jan │ │ • 2 avtal upphör snart │ │
|
|
│ │ • Avtal #789 - 1 feb │ │ • 1 synkronisering fel │ │
|
|
│ │ │ │ │ │
|
|
│ │ [Visa alla] │ │ [Hantera] │ │
|
|
│ └─────────────────────────┘ └─────────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 3.4 Kundlista
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 👥 Kunder [+ Ny kund] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ [Sök kund...] [Filtrera ▼] [Kommun ▼] [Export ▼] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Namn │ Org.nr │ Kommun │ Avtal │ Status │
|
|
│ ───────────────┼─────────────┼───────────┼───────┼────────│
|
|
│ Göteborgs Stad │ 212000-1234 │ Göteborg │ 3 │ 🟢 Akt │
|
|
│ Malmö Stad │ 212000-5678 │ Malmö │ 1 │ 🟢 Akt │
|
|
│ Uppsala Kommun │ 212000-9012 │ Uppsala │ 2 │ 🟡 Paus│
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Visar 1-3 av 3 kunder [<] [1] [>] │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**Klick på rad → Kunddetaljvy med flikar:**
|
|
- **Översikt**: Kontaktinfo, snabbfakta, noteringar
|
|
- **Avtal**: Lista med avtal, status, belopp
|
|
- **Fakturor**: Historik över alla fakturor
|
|
- **Aktivitet**: Revisionslogg
|
|
|
|
### 3.5 Avtalslista
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 📄 Avtal [+ Nytt avtal] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ [Sök...] [Status ▼] [Typ ▼] [Förfaller ▼] [Export ▼] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Avtalsnr │ Kund │ Typ │ Period │ Belopp │
|
|
│ ─────────┼─────────────┼───────────┼─────────────┼────────│
|
|
│ LVX-001 │ Göteborg │ Tjänst │ 2024-01 → │ 50 000 │
|
|
│ LVX-002 │ Malmö │ Licens │ 2024-06 → │ 120 000│
|
|
│ LVX-003 │ Uppsala │ Projekt │ 2024-03 → │ 75 000 │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ [Bulk: 🔄 Förnya] [⏸ Pausa] [❌ Avsluta] │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**Statusfärger:**
|
|
- 🟢 Grön = Aktivt
|
|
- 🟡 Gul = Pausat
|
|
- 🔴 Röd = Upphört / Upphör snart (< 30 dagar)
|
|
- ⚪ Grå = Utkast
|
|
|
|
### 3.6 Fakturor
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 💰 Fakturor [+ Ny faktura] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ [Sök...] [Status ▼] [Period ▼] [Kund ▼] [Generera ▼] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Fakturanr │ Kund │ Period │ Belopp │ Status │
|
|
│ ──────────┼─────────────┼─────────────┼─────────┼────────│
|
|
│ FV-00042 │ Göteborg │ 2024-12 │ 62 500 │ 🟢 Bet │
|
|
│ FV-00043 │ Malmö │ 2024-Q4 │ 30 000 │ 🟡 Skk │
|
|
│ FV-00044 │ Uppsala │ 2024-12 │ 18 750 │ 🔴 Övr │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ [Bulk: 📧 Skicka] [💾 SIE4] [📄 PDF] [❌ Makulera] │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
**Statusfärger:**
|
|
- ⚪ Vit/Grå = Utkast
|
|
- 🟡 Gul = Skickad
|
|
- 🟢 Grön = Betald
|
|
- 🔴 Röd = Förfallen / Överfallen
|
|
- 🟣 Lila = Krediterad
|
|
- ⬛ Grå = Makulerad
|
|
|
|
**Fakturadetaljvy:**
|
|
- Fakturahuvud (nummer, datum, kund, referens)
|
|
- Fakturarader (tabell med beskrivning, antal, pris, summa)
|
|
- Tidslinje: Skapad → Skickad → Betald / Förfallen
|
|
- Åtgärder: [Skicka] [Skriv ut/PDF] [Kreditera] [Makulera]
|
|
- Kommentarer/historik
|
|
|
|
### 3.7 Rapporter
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 📊 Rapporter │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Välj rapport: │
|
|
│ [📈 Intäktsrapport] [⏰ Förfallorapport] [📋 Transaktioner]│
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Period: [2024-01-01] till [2024-12-31] │
|
|
│ Gruppera per: [Månad ▼] Kund: [Alla ▼] │
|
|
│ │
|
|
│ [📊 Generera] [💾 SIE4] [📄 PDF] [📊 Excel] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ RESULTAT (tabell + enkel graf): │
|
|
│ Period │ Antal │ Belopp exkl. moms │ Moms │ Totalt │
|
|
│ ──────────┼───────┼───────────────────┼──────┼────────────│
|
|
│ Jan 2024 │ 5 │ 125 000 kr │25 000│ 150 000 kr │
|
|
│ Feb 2024 │ 4 │ 100 000 kr │20 000│ 120 000 kr │
|
|
│ ... │ ... │ ... │ ... │ ... │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ [📈 Visa graf] [📧 Skicka rapport] │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 3.8 Generera fakturor (Wizard)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 🔄 Generera fakturor — Steg 1 av 3 │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ 1. Välj avtal 2. Granska 3. Bekräfta │
|
|
│ [████████] [────────] [────────] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ Välj vilka avtal som ska faktureras: │
|
|
│ │
|
|
│ [✅] LVX-001 — Göteborg — Tjänst — 50 000 kr │
|
|
│ [✅] LVX-002 — Malmö — Licens — 30 000 kr │
|
|
│ [ ] LVX-003 — Uppsala — Pausat (hoppas över) │
|
|
│ │
|
|
│ [✅ Välj alla] [❌ Avmarkera alla] │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ [Avbryt] [Nästa: Granska →] │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### 3.9 Integrationer
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ 🔌 Integrationer [+ Ny integration]│
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ System │ Status │ Senaste synk │ Åtgärder │
|
|
│ ───────────┼─────────┼───────────────┼─────────────────────│
|
|
│ Fortnox │ 🟢 OK │ 2024-01-15 │ [🔄 Synka] [⚙️] │
|
|
│ Visma │ 🟡 Varn │ 2024-01-10 │ [🔄 Synka] [⚙️] │
|
|
│ Hogia │ 🔴 Fel │ 2024-01-05 │ [🔄 Synka] [⚙️] [📋]│
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ SYNKRONISERINGSINSTÄLLNINGAR: │
|
|
│ [ ] Synkronisera automatiskt varje natt (02:00) │
|
|
│ [ ] Skicka fakturor direkt till ekonomisystemet │
|
|
│ [ ] Importera betalningar automatiskt │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Integrationer med ekonomisystem
|
|
|
|
### 4.1 Fortnox
|
|
- **API**: REST API v3 (OAuth2)
|
|
- **Funktioner**:
|
|
- Skicka fakturor till Fortnox (skapar kundfaktura)
|
|
- Hämta betalningsstatus
|
|
- Synkronisera kundregister
|
|
- **Konfiguration**: Client ID, Client Secret, Authorization Code
|
|
|
|
### 4.2 Visma
|
|
- **API**: Visma.net ERP API / Visma eAccounting API
|
|
- **Funktioner**:
|
|
- Export av fakturor och verifikationer
|
|
- Import av betalningar
|
|
- **Konfiguration**: API-nyckel, Tenant ID
|
|
|
|
### 4.3 Hogia
|
|
- **API**: Hogia Web API / filbaserad export
|
|
- **Funktioner**:
|
|
- SIE4-export (standardformat)
|
|
- CSV-export för import
|
|
- **Konfiguration**: API-nyckel eller filsökväg
|
|
|
|
### 4.4 Generisk SIE4-export
|
|
- Standardformat för svensk bokföring
|
|
- Kan importeras i de flesta ekonomisystem
|
|
- Stöd för SIE4 typ 1 (saldobalans) och typ 4 (transaktioner)
|
|
|
|
---
|
|
|
|
## 5. Teknisk arkitektur (Översikt)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ WEBBLÄSARE (React/Vue) │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
|
│ │ Dashboard │ │ Faktura- │ │ Rapporter & Export │ │
|
|
│ │ │ │ hantering │ │ │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
│
|
|
▼ REST API (JSON)
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ API-LAGER (Node.js/Python) │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
|
│ │ Kunder │ │ Avtal │ │ Fakturor │ │
|
|
│ │ /customers │ │ /contracts │ │ /invoices │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
|
│ │ Rapporter │ │ Integration│ │ Autogenerering │ │
|
|
│ │ /reports │ │ /integrations│ │ (Cron-jobb) │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ DATASKIKT (PostgreSQL) │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
|
│ │ customers │ │ contracts │ │ invoices │ │
|
|
│ │ contract_ │ │ services │ │ invoice_rows │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
|
│ │ integrations│ │ audit_log │ │ (indexerade sök) │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ EXTERNA INTEGRATIONER │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
|
|
│ │ Fortnox │ │ Visma │ │ Hogia / SIE4 │ │
|
|
│ │ (REST API) │ │ (REST API) │ │ (Fil/API) │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Säkerhet & Rättigheter
|
|
|
|
### Roller
|
|
| Roll | Rättigheter |
|
|
|------|-------------|
|
|
| **Admin** | Alla rättigheter, hantera integrationer |
|
|
| **Ekonom** | Skapa/skicka fakturor, rapporter, export |
|
|
| **Avtalsansvarig** | Hantera avtal och kunder, se fakturor |
|
|
| **Läsare** | Se allt, kan inte skapa/ändra |
|
|
|
|
### Säkerhetsåtgärder
|
|
- Alla ändringar loggas i `audit_log`
|
|
- Känslig data krypteras i vila (AES-256)
|
|
- API-nycklar och tokens lagras krypterat
|
|
- Rollbaserad åtkomstkontroll (RBAC) på alla endpoints
|
|
|
|
---
|
|
|
|
## 7. Implementeringsfaser
|
|
|
|
| Fas | Innehåll | Tidsestimat |
|
|
|-----|----------|-------------|
|
|
| **1** | Datamodell, API-grund, kundhantering | 2 veckor |
|
|
| **2** | Avtalshantering, fakturagenerering | 2 veckor |
|
|
| **3** | UI (Dashboard, listor, detaljvyer) | 2 veckor |
|
|
| **4** | PDF-export, SIE4-export | 1 vecka |
|
|
| **5** | Integrationer (Fortnox, Visma, Hogia) | 2 veckor |
|
|
| **6** | Rapporter, avancerade funktioner | 2 veckor |
|
|
| **7** | Testning, dokumentation, lansering | 2 veckor |
|
|
|
|
**Totalt: ~13 veckor**
|
|
|
|
---
|
|
|
|
*Dokumentversion: 1.0*
|
|
*Skapad: 2026-07-02*
|
|
*För: LandveX Enterprise Platform*
|