Files
Radix-Skills/skills/accounting/dansk-csv-import/SKILL.md
T
dennis 236053cd7f Initial import: 10 Radix skills across 3 categories
Kategoriserer danske regnskabs-/ERP-skills, ERP-data-afstemnings-
skill og to devops-workflows (gitea-issue-agent, kanban-workflows)
som Radix-medlemmers AI-agenter kan dele.

Struktur:
  skills/<kategori>/<skill-navn>/SKILL.md
  skills/<kategori>/<skill-navn>/{references,templates,scripts}/

Indekseret af index.json (genereret af scripts/rebuild_index.py).
Kør `python3 scripts/rebuild_index.py --check` i CI for at fange
synkroniseringsfejl.
2026-06-15 14:41:04 +02:00

179 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: dansk-csv-import
description: >
Importér danske bank-CSV-eksporter (Nordea, Danske Bank, Jyske Bank, Sydbank) og
e-conomic-bankimport-format — aktiveres ved "importér CSV", "bankudtog", "kontoudtog",
"Nordea eksport", "Danske Bank CSV", "Jyske Bank eksport", "e-conomic bankimport".
version: 0.2.0
author: radix-accountant
license: MIT
metadata:
hermes:
tags: [accounting, dansk-regnskab, csv-import, bank, nordea, danske-bank, jyske-bank, e-conomic]
related: [kontoplan-mapping, coop-bankimport, momsafregning, e-conomic-integration]
---
# Dansk CSV-import (bankudtog)
Håndterer import af **danske bank-CSV-eksporter** til Radix ERP med korrekt detektering af:
- Bank (Nordea, Danske Bank, Jyske Bank, Sydbank, Nykredit, Arbejdernes Landsbank)
- Datoformat (dansk `dd-MM-yyyy` eller ISO `yyyy-MM-dd`)
- Decimalformatering (komma som decimal — dansk standard)
- Feltsemikolon (dansk CSV-standard, ikke komma)
- Tegnsæt (Latin1, UTF-8 med/uden BOM)
## Aktiveres ved
- "Importér denne Nordea-CSV til Radix"
- "Jyske Bank har sendt kontoudtog — hjælp med at indlæse det"
- "Parse denne bankeksport"
- "Vis alle transaktioner fra marts 2026 i denne CSV"
## Genkendte bankformater
### Nordea (Erhverv)
```
Bogføringsdato;Tekst;Beløb;Saldo;Valuta;Reference
01-06-2026;"Nets *12345";-123,45;12.345,67;DKK;
```
- Separator: `;`
- Encoding: Latin1
- Beløb: dansk format (`-123,45`)
- Dato: `dd-MM-yyyy`
### Danske Bank
```
Dato;Tekst;Beløb;Saldo
01-06-2026;"MobilePay - Anders Hansen";-250,00;5.000,00
```
- Separator: `;`
- Encoding: UTF-8 med BOM
- Beløb: dansk format
- Dato: `dd-MM-yyyy`
### Jyske Bank
```
Dato;Beskrivelse;Beløb;Saldo
01-06-2026;"POS DSB 1234 København";-89,00;3.456,78
```
- Separator: `;`
- Encoding: Latin1
- Dato: `dd-MM-yyyy`
- Negative beløb: kan være `-89,00` eller `(89,00)` — begge understøttes
### Sydbank
```
Bogføringsdato;Posteringstekst;Beløb;Saldo
01-06-2026;"Coop Danmark A/S Bankbetaling";-12.345,67;45.678,90
```
- Separator: `;`
- Encoding: Latin1
- Dato: `dd-MM-yyyy`
### e-onomic bankimport-format
```
Dato;Tekst;Beløb;Saldo;Modkonto;Valuta;Bankkonto
01-06-2026;"Nets *12345";-123,45;12.345,67;5820;DKK;5508 8765432
```
- Separator: `;`
- Encoding: UTF-8 med BOM
- **Modkonto** (e-conomics kontonr, fx 5820 for bank) — bruges direkte ved bogføring
- **Bankkonto** i dansk 14-cifret format (reg.nr. + kontonr) — verificer mod kundens egen bankaftale
- Dato: `dd-MM-yyyy` (men konverter til ISO `yyyy-MM-dd` før API-kald til e-conomic)
## Workflow
1. **Modtag CSV-fil** (enten via sti eller indhold direkte i chat)
2. **Detektér bank-format** ud fra header (kolonnenavne) — spørg brugeren hvis usikker
3. **Detektér encoding** (tjek for BOM, prøv Latin1, UTF-8)
4. **Parse CSV** med korrekt separator (`;` for dansk)
5. **Normaliser data**:
- Datoer → `dd-MM-yyyy` (ensret formattering)
- Beløb → Python float (erstat `,` med `.`, fjern tusindtalsseparator)
- Negativ beløb → negativ tal (fjern evt. parentesnotation)
- Tekst → trim, fjern dobbelte mellemrum
6. **Vis preview** med de første 5-10 transaktioner (bed brugeren bekræfte format)
7. **Vis statistik**:
- Antal transaktioner
- Periode (første/sidste dato)
- Total ind, total ud, slutbalance
- Kontroller at slutbalance matcher det brugeren forventede
8. **Identificér dubletter** (samme dato + beløb + tekst)
9. **Kortlæg konti** (se kontoplan-mapping skill) — eller lad brugeren vælge
10. **Generer klar-til-import JSON** til Radix ERP API
## Eksempel-aktivering
**Bruger:** *indsætter en filsti eller indhold:*
```
Bogføringsdato;Tekst;Beløb;Saldo;Valuta
01-06-2026;"Nets *12345 MobilePay";-123,45;12.345,67;DKK
02-06-2026;"Coop Danmark";-5.678,90;6.666,77;DKK
...
```
**Svar:**
> ✅ Genkendt format: **Nordea Erhverv** (Latin1, semikolon-separeret)
>
> | Dato | Tekst | Beløb | Saldo |
> |---|---|---|---|
> | 01-06-2026 | Nets *12345 MobilePay | 123,45 | 12.345,67 |
> | 02-06-2026 | Coop Danmark | 5.678,90 | 6.666,77 |
> | ... |
>
> **Statistik:**
> - Periode: 01-06-2026 til 30-06-2026
> - Transaktioner: 47
> - Total ind: 8.901,23 kr.
> - Total ud: 23.456,78 kr.
> - Slutbalance: 6.666,77 kr.
>
> ⚠️ **1 mulig dublet** fundet (samme dato, beløb og tekst på række 12 og 23). Skal jeg springe dubletten over ved import?
## Almindelige CSV-fælder
- ❌ Latin1-filer åbnet som UTF-8 → `æ` i stedet for `æ`
- ❌ Datoer med `.` (amerikansk) i stedet for `-` (dansk)
- ❌ Beløb med `.` som tusindtalsseparator ignoreret
- ❌ Negative beløb som `(123,45)` (parentes) ikke håndteret
- ❌ Header-række fejlfortolket som data
- ❌ Linjeskift i `Tekst`-felt (fx "Coop\nDanmark") brækker parser
- ✅ ALTID detektér encoding først (BOM, Latin1, UTF-8)
- ✅ ALTID vis preview før import
- ✅ ALTID vis statistik og balancesum til kontrol
## Radix ERP API-endpoint (for import)
## Bogføringssystem-integration (efter import)
Efter import kan transaktioner bogføres direkte i e-conomic (se `e-conomic-integration` skill):
```
POST /journals/{journalId}/vouchers/{voucherNumber}/entries
Headers:
X-AppSecretToken: ${ECONOMIC_APP_SECRET_TOKEN}
X-AgreementGrantToken: ${ECONOMIC_AGREEMENT_GRANT_TOKEN}
Idempotency-Key: <UUID v4>
```
Eksempel-payload genereret fra importeret CSV:
```json
{
"accountingYear": {"year": 2026},
"entries": [
{
"date": "2026-06-01",
"text": "Nets *12345 MobilePay",
"amount": -123.45,
"amountInBaseCurrency": -123.45,
"currency": "DKK",
"account": {"accountNumber": 1690},
"contraAccount": {"accountNumber": 5820},
"vatAccount": {"vatCode": "I25"}
}
]
}
```
⚠️ **Bekræft ALTID med brugeren før bulk-import** — vis diff (antal transaktioner, totaler) og kræv eksplicit "ja, importer" før API-kald.