From 9b1bf4230ff734bdfbdcce7704fdaaa4e205e723 Mon Sep 17 00:00:00 2001 From: Dennis Juhler Aagaard Date: Tue, 16 Jun 2026 15:44:37 +0200 Subject: [PATCH] Add Coop year-end reconciliation workflow --- skills/accounting/coop-bankimport/SKILL.md | 79 +++++++++++++++++++++- 1 file changed, 77 insertions(+), 2 deletions(-) diff --git a/skills/accounting/coop-bankimport/SKILL.md b/skills/accounting/coop-bankimport/SKILL.md index 507176b..be168f2 100644 --- a/skills/accounting/coop-bankimport/SKILL.md +++ b/skills/accounting/coop-bankimport/SKILL.md @@ -3,8 +3,9 @@ name: coop-bankimport description: > Reconcilier Coop Danmark-bankbetalinger mod Uniconta- eller e-conomic-fakturaer (og kreditnotaer, bonus, modregninger) — aktiveres ved "Coop afstemning", "Coop bankbetaling", "Coop opgørelse", - "forenel Coop betaling med faktura", "Coop kreditnota". -version: 0.2.0 + "forenel Coop betaling med faktura", "Coop kreditnota", "Coop årsafstemning", "åben post + pr. balancedato", "Coop revisorafstemning" eller "Coop årsregnskab". +version: 0.3.0 author: radix-accountant license: MIT metadata: @@ -17,6 +18,8 @@ metadata: Specifikt workflow til **Coop Danmark ↔ [Uniconta|e-conomic]-afstemning**. Hver bankbetaling fra Coop følges af en specifikation (opgørelse) der viser præcis hvilke fakturaer, kreditnotaer, bonusser og modregninger beløbet dækker. Målet er at matche **bankbetalinger (Coop) → opgørelseslinjer → bogføringssystem-bilag** og producere bogføringsklare posteringer. +Skillen dækker også **årsafslutnings-/åben-post-afstemning** til revisor, hvor alle TranbergDahl/Uniconta-debitorer behandles som én samlet Coop-modpart, selv om Uniconta-eksporten er grupperet pr. butik/debitor. + ## Hvilket bogføringssystem? | System | Fordel ved Coop-afstemning | Ulempe | @@ -32,6 +35,8 @@ Specifikt workflow til **Coop Danmark ↔ [Uniconta|e-conomic]-afstemning**. Hve - "Importer Coop-opgørelse for uge 22" - "Hvorfor matcher Coop-bankbetalingen ikke Uniconta-saldoen?" - "Generer bogføringsforslag for denne Coop-indbetaling" +- "Afstem åbne Coop-poster pr. 31-12 til revisor" +- "Sammenlign TranbergDahls Uniconta-debitorer med Coop kreditor-kontoudtog" ## Forventede input @@ -42,6 +47,12 @@ Brugeren leverer typisk: - **Uniconta-eksport** (fakturaer, kreditnotaer, åbne poster) — typisk Excel - **e-conomic API-kald** (se `e-conomic-integration` skill): `/invoices/booked?filter=balance$gt:0&filter=customer.name$like:Coop` +Ved **årsafslutnings-/revisorafstemning** er input typisk: +1. **Uniconta debitor-kontoudtog alle** — grupperet pr. TranbergDahl/Coop-butik med debitorsaldo på gruppelinjen og faktura-/kreditnota-detailposter under. +2. **Coop kreditor-kontoudtog** — flad SAP-lignende eksport med `Reference`, `Posting Date`, `Clearing Date`, `Amount in Doc. Curr.`, `Document Type`, `Document Number` og evt. `Assignment`. +3. **Kontrolsaldo fra Uniconta/finans** pr. balancedato, fx saldo på samlet Coop-tilgodehavende. +4. Eventuel kendt liste/antal over fakturaer som mangler i Coop-opgørelsen. + ## Coops bankbetalingsformat (typisk) ``` @@ -142,11 +153,75 @@ Diff: 0,00 ✅ Balanceret 4. Vent på "ja, bogfør" — udfør derefter API-kald 5. Verificer at svaret er 201 Created og at `entries` indeholder bogførings-ID +## Årsafslutningsflow: åben post pr. balancedato + +Brug dette flow når målet er dokumentation til revisor eller årsregnskab, ikke bogføring af en enkelt bankbetaling. + +### Afklar før analyse + +1. Bekræft balancedato, typisk `31-12-yyyy`. +2. Bekræft at alle TranbergDahl/Uniconta-debitorer skal behandles som **én samlet Coop-modpart**. +3. Bekræft hvilket felt i Coop-eksporten er fakturanummer. Standard: `Reference`; brug kun `Assignment` som sekundær hjælpekolonne hvis brugeren bekræfter det. +4. Bekræft matchregel. Standard til revisor: fakturanr. + beløb med modsat fortegn og tolerance `0,01 kr.` +5. Bekræft kontrolsaldo fra Uniconta/finans og om kendte manglende fakturaer i Coop-opgørelsen skal vises separat. + +### Datamodellering + +**Uniconta/TranbergDahl-debitorfil** +- Læs gruppelinjer som debitor-masterdata: debitor nr., navn, by og debitorsaldo. +- Læs detailposter som faktura-/kreditnota-linjer: dato, fakturanr., bilag, tekst, beløb, resterende, forfalden og type. +- Brug **sum af debitorsaldi fra gruppelinjerne** som primær saldo mod Uniconta/finans. Brug ikke blindt sum af detailkolonnen `Resterende`, da den kan være ufuldstændig eller blank på udlignede/regulerede linjer. + +**Coop kreditor-kontoudtog** +- Brug `Reference` som fakturanr., når det er bekræftet. +- Åben post pr. balancedato defineres som: + - `Posting Date <= balancedato`, og + - `Clearing Date` er blank eller `Clearing Date > balancedato`. +- Forvent modsat fortegn mellem TranbergDahl-debitorbeløb og Coop-kreditorbeløb. +- Medtag kreditnotaer på samme måde som fakturaer; forskellen ligger i fortegnet, ikke i afstemningsmetoden. + +### Matchhierarki + +1. **Høj confidence**: fakturanr. + beløb med modsat fortegn, tolerance `0,01 kr.` +2. **Mellem confidence**: fakturanr. findes, men beløbet afviger. Marker som `Beløbsdifference`. +3. **Lav confidence / manuel kontrol**: samme beløb, men manglende fakturanr. Brug kun som analysehint, ikke som revisor-konklusion. +4. **Mangler i Coop**: fakturanr. findes i Uniconta/TranbergDahl, men ikke i Coop-eksportens fakturanummerfelt. +5. **Kun i Coop**: fakturanr. findes i Coop-eksporten, men ikke i Uniconta/TranbergDahl-eksporten. + +### Revisor-egnet output + +Lav altid en arbejdsbog eller rapport med disse faner/sektioner: + +| Sektion | Indhold | +|---|---| +| `Forside / Konklusion` | Formål, balancedato, kilder, kontrolsaldo, samlet konklusion, væsentlige forbehold | +| `Metode` | Matchregel, cutoff-regel, fortegnskonvention, tolerance og felter brugt | +| `Saldoafstemning` | Uniconta/finans-saldo, sum af debitorsaldi, Coop åbne poster, kendte mangler/reguleringer og uforklaret difference | +| `Debitorsaldi` | Alle TranbergDahl/Uniconta-butikker som underposter til én samlet Coop-modpart | +| `Matchede poster` | Fakturanr. + beløb matcher med høj confidence | +| `Beløbsdifferencer` | Fakturanr. findes begge steder, men beløb matcher ikke | +| `Mangler i Coop` | Fakturaer/kreditnotaer i Uniconta/TranbergDahl som ikke findes i Coop-kontoudtog | +| `Kun i Coop` | Coop-reference som ikke findes i Uniconta/TranbergDahl | +| `Kendte mangler` | Brugeroplyste kendte mangler, fx antal eller liste over fakturaer der mangler i Coop | +| `Checks` | Maskinelle checks: saldo binder, antal binder, ingen dubletter uden forklaring, dato-cutoff anvendt | + +### Kvalitetskrav + +- Vis beløb med dansk formatering og `kr.` +- Brug både antal og beløb i alle opsummeringer. +- Bevar debitor nr. og debitor navn på alle Uniconta-linjer, selv om rapportens konklusion er én samlet Coop-modpart. +- Marker kendte Coop-reguleringer som forklaringstype, ikke som automatisk match. +- Skriv tydeligt hvis saldoafstemningen bygger på en ekstern kontrolsaldo, og vis difference mod kildesaldoerne. +- Slut med en revisor-egnet konklusion: `Afstemt`, `Afstemt med kendte differencer`, eller `Ikke fuldt afstemt - kræver dokumentation`. + ## Almindelige problemer - ❌ **Bankbeløb matcher ikke opgørelse-total**: typisk fordi opgørelsen kun viser netto (efter Coops egne fradrag som emballage-pant, kampagnerabat, mv.) - ❌ **Faktura findes ikke i Uniconta**: kan skyldes at fakturaen er bogført i forkert regnskabsår, eller at Uniconta-eksporten er ufuldstændig - ❌ **Kreditnota findes, men med forkert fortegn**: dobbelt-negativ bliver positivt — håndtér dette eksplicit +- ❌ **Sum af detailposter matcher ikke Uniconta-saldo**: ved debitor-kontoudtog kan gruppelinjens debitorsaldo være den saldo, der binder til finans, mens detailkolonnen kun viser restbeløb på udvalgte linjer. +- ❌ **Coop viser kun hovedkontoret, mens Uniconta viser butikker**: behandl butikkerne som underposter til én samlet Coop-modpart og rapportér både samlet saldo og debitorfordeling. +- ❌ **Faktura findes i Coop, men ikke åben pr. balancedato**: forklares ofte af `Clearing Date`; klassificér den efter cutoff, ikke bare efter om fakturanr. findes i hele filen. - ❌ **Coop-bonus mangler konto**: virksomheder der ikke har en dedikeret bonuskonto bruger typisk 52100 (Bonus/rabatter) — bekræft med brugeren - ❌ **Modregning uden specifikation**: spørg brugeren — kan være emballage-pant, reklamation, eller andet - ✅ ALTID verificer at bankbeløb = sum(opgørelseslinjer) ±0,01 kr. (afrundingstolerance)