From 6c2c7588f878be4ce341e3653c6a0a197b7bf530 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Asger=20Geel=20Weirs=C3=B8e?=
Date: Fri, 7 Aug 2026 18:47:00 +0200
Subject: [PATCH] =?UTF-8?q?content(profiler):=20mapping=20mod=20Nemhandels?=
=?UTF-8?q?registret=20=E2=80=94=20alle=2038=20danske=20profiler=20+=20reg?=
=?UTF-8?q?isterkategorier?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Siden viste 12 af de OIOUBL-profiler man faktisk kan vælge i Nemhandelsregistrets
profil-dropdown. Nu er alle med, i registrets egen rækkefølge og under registrets egne
gruppenavne ("Profiler for: ..."), så man kan slå direkte op mellem det man tilmelder sig
og hvilke dokumenttyper der så ligger i pakken.
- EProfile får valgfri `kategori` = registrets gruppeoverskrift; ny `kategorier`-eksport.
- 26 nye danske profiler: hele Catalogue-familien (CatBas/CatSim/CatExt/CatAdv/CatPriUpd
+ R-varianter), PayBas/PayBasR (Statement), OrdSel- og OrdAdv-varianterne,
Reference-UtilityR, TecRes, NES1/2/7/8 og cenbii bii30 (DespatchAdvice).
- Registerprofilerne OrdRes-1.0 og BilSimReminderOnly-1.0 er med, mærket som "single"
og henvist til registret — de står ikke i G26 v1.3.
- Dokumentlisterne er rettet til efter G26 v1.3 tabel 1-3: BilSim manglede
ApplicationResponse (kun ved afvisning), OrdAdv-BilSim manglede OrderResponseSimple.
"*" markerer nu at ApplicationResponse i ordreprofilerne kun bruges til afvisning.
- UI: registerkategori vises som badge og som egen filterrække (AND med standard-filteret),
og indgår i fritekstsøgningen.
Claude-Session: https://claude.ai/code/session_018oXJWTRxTYdcV9Kw6M7e5J
---
src/data/profiles.ts | 467 ++++++++++++++++++++++++++++++++-------
src/pages/profiler.astro | 65 ++++--
2 files changed, 436 insertions(+), 96 deletions(-)
diff --git a/src/data/profiles.ts b/src/data/profiles.ts
index 5be6b02..2ccf9dd 100644
--- a/src/data/profiles.ts
+++ b/src/data/profiles.ts
@@ -1,7 +1,15 @@
// E-dokumentprofiler (Nemhandel OIOUBL + Peppol BIS/PINT) til /profiler-opslaget.
// Data vedligeholdes her; siden bygger søge-/filter-UI'et af det.
+//
+// De danske profiler er ordnet som i Nemhandelsregistrets profil-dropdown, og `kategori`
+// er registrets egen gruppeoverskrift ("Profiler for: …"). Dokumentlisterne følger
+// OIOUBL Profiler-guiden (G26) v1.3, tabel 1-3.
+// * = ApplicationResponse bruges her kun til afvisning; det forretningsmæssige svar på en
+// ordre er altid OrderResponse/OrderResponseSimple.
export interface EProfile {
standard: string;
+ /** Nemhandelsregistrets gruppeoverskrift ("Profiler for: …"). Kun danske profiler. */
+ kategori?: string;
navn: string;
id: string;
customization: string;
@@ -10,45 +18,57 @@ export interface EProfile {
bemaerkninger: string;
}
+const NH = 'Nemhandel OIOUBL (UBL 2.1)';
+
export const profiles: EProfile[] = [
+ // ── Profiler for: Fakturering ──────────────────────────────────────────────
{
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
+ standard: NH,
+ kategori: 'Fakturering',
navn: 'Procurement-BilSim-1.0 (simpel fakturering)',
id: 'Procurement-BilSim-1.0',
customization: 'OIOUBL-2.x',
- dokumenter: ['Invoice', 'CreditNote', 'Reminder'],
- anvendelse: 'Ren fakturering: leverandør sender faktura/kreditnota/rykker til kunde. Ingen ordreproces og intet krævet svar.',
- bemaerkninger: 'Mest udbredte rene faktura-pakke i Nemhandel.',
+ dokumenter: ['Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse (kun ved afvisning)'],
+ anvendelse: 'Ren fakturering: leverandør sender faktura/kreditnota/rykker til kunde. Ingen ordreproces, og kunden er ikke forpligtet til at kvittere.',
+ bemaerkninger: 'Obligatorisk profil og den mest udbredte rene faktura-pakke i Nemhandel. Kunden må afvise med ApplicationResponse, men skal ikke kvittere positivt.',
},
{
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'Procurement-BilSimR-1.0 (simpel fakturering m. krævet svar)',
- id: 'Procurement-BilSimR-1.0',
- customization: 'OIOUBL-2.x',
- dokumenter: ['Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse'],
- anvendelse: 'Som BilSim, men kunden skal altid kvittere med et ApplicationResponse (accept/afvisning).',
- bemaerkninger: "R = 'Response required' \u2014 kunden skal kvittere.",
- },
- {
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'urn:www.nesubl.eu:profiles:profile5:ver2.0 (NES5)',
+ standard: NH,
+ kategori: 'Fakturering',
+ navn: 'urn:www.nesubl.eu:profiles:profile5:ver2.0 (NES5, Billing Basic)',
id: 'urn:www.nesubl.eu:profiles:profile5:ver2.0',
customization: 'OIOUBL-2.x',
dokumenter: ['Invoice', 'CreditNote'],
anvendelse: 'Internationalt NES-fakturaprofil: kunde modtager faktura og kreditnota fra leverandør.',
- bemaerkninger: 'Ældre/NES-baseret faktureringsprofil.',
+ bemaerkninger: 'Obligatorisk profil. Den profil der ligger tættest på den gamle OIOXML-faktura — kun afløftede felter er tilladt. Bruges når fakturaafsender teknisk set ikke kan modtage en ApplicationResponse.',
},
+
+ // ── Profiler for: Ordre til fakturering ────────────────────────────────────
{
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'Reference-Utility-1.0 (forsyningsspecifikation)',
- id: 'Reference-Utility-1.0',
+ standard: NH,
+ kategori: 'Ordre til fakturering',
+ navn: 'Procurement-OrdSim-BilSim-1.0 (simpel ordre + simpel fakturering)',
+ id: 'Procurement-OrdSim-BilSim-1.0',
customization: 'OIOUBL-2.x',
- dokumenter: ['UtilityStatement', 'ApplicationResponse'],
- anvendelse: 'Forsyningsbranchen (el/vand/varme/gas): leverandør sender detaljeret forbrugs-/forsyningsspecifikation der ledsager fakturaen; kunden kan svare med ApplicationResponse.',
- bemaerkninger: 'Bruges som tillæg til BilSim-fakturering.',
+ dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Komplet simpel handel: simpel ordre efterfulgt af simpel fakturering. Dækker bestilling til betaling.',
+ bemaerkninger: 'Samlepakken de fleste vælger, når de vil kunne både bestille og fakturere. Ingen ordreændring/-annullering — det kræver en OrdAdv-variant.',
+ },
+
+ // ── Profiler for: Simple Ordrer ────────────────────────────────────────────
+ {
+ standard: NH,
+ kategori: 'Simple Ordrer',
+ navn: 'Procurement-OrdRes-1.0 (kun ordresvar)',
+ id: 'Procurement-OrdRes-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['OrderResponse'],
+ anvendelse: 'Enkeltdokument-profil til alene at kunne udveksle en ordrebekræftelse (OrderResponse) uden at tilmelde sig en fuld ordreproces.',
+ bemaerkninger: 'Registerprofil af typen "single" — findes i Nemhandelsregistret, men er ikke beskrevet i OIOUBL Profiler-guiden (G26) v1.3. Verificér mod registret før brug.',
},
{
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
+ standard: NH,
+ kategori: 'Simple Ordrer',
navn: 'Procurement-OrdSim-1.0 (simpel ordre)',
id: 'Procurement-OrdSim-1.0',
customization: 'OIOUBL-2.x',
@@ -57,68 +77,348 @@ export const profiles: EProfile[] = [
bemaerkninger: 'Ren ordre-only proces; kombineres typisk med en faktureringsprofil.',
},
{
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
+ standard: NH,
+ kategori: 'Simple Ordrer',
navn: 'Procurement-OrdSimR-1.0 (simpel ordre m. krævet svar)',
id: 'Procurement-OrdSimR-1.0',
customization: 'OIOUBL-2.x',
dokumenter: ['Order', 'OrderResponseSimple'],
anvendelse: 'Som OrdSim, men leverandør skal altid sende ordresvar.',
- bemaerkninger: 'R = svar påkrævet.',
+ bemaerkninger: "R = 'Response required' — samme dokumenter som OrdSim, men svaret er obligatorisk.",
},
{
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'Procurement-OrdSim-BilSim-1.0 (ordre + fakturering)',
- id: 'Procurement-OrdSim-BilSim-1.0',
- customization: 'OIOUBL-2.x',
- dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'Reminder'],
- anvendelse: 'Komplet simpel handel: simpel ordre efterfulgt af simpel fakturering. Dækker bestilling til betaling.',
- bemaerkninger: 'Samlepakke: ordre + faktura.',
- },
- {
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'Procurement-OrdSimR-BilSim-1.0',
- id: 'Procurement-OrdSimR-BilSim-1.0',
- customization: 'OIOUBL-2.x',
- dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'Reminder'],
- anvendelse: 'Som OrdSim-BilSim, men ordresvar er påkrævet.',
- bemaerkninger: 'Ordre + fakturering med påkrævet ordresvar.',
- },
- {
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'Procurement-OrdSim-BilSimR-1.0',
- id: 'Procurement-OrdSim-BilSimR-1.0',
- customization: 'OIOUBL-2.x',
- dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse'],
- anvendelse: 'Simpel ordre + fakturering hvor faktura-svar (ApplicationResponse) er påkrævet.',
- bemaerkninger: 'Kombination af krav på faktura-svar.',
- },
- {
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'Procurement-OrdSimR-BilSimR-1.0',
- id: 'Procurement-OrdSimR-BilSimR-1.0',
- customization: 'OIOUBL-2.x',
- dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse'],
- anvendelse: 'Simpel ordre og fakturering hvor både ordresvar og faktura-svar er påkrævet.',
- bemaerkninger: 'Ordre + fakturering med påkrævet ordre- og faktura-svar.',
- },
- {
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'Procurement-OrdAdv-BilSim-1.0 (avanceret ordre + fakturering)',
- id: 'Procurement-OrdAdv-BilSim-1.0',
- customization: 'OIOUBL-2.x',
- dokumenter: ['Order', 'OrderResponse (avanceret/fuld)', 'OrderChange', 'OrderCancellation', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse'],
- anvendelse: 'Avanceret ordreproces (med ordreændring/-annullering og fuldt ordresvar) efterfulgt af simpel fakturering.',
- bemaerkninger: 'Avanceret variant med fuldt ordresvar.',
- },
- {
- standard: 'Nemhandel OIOUBL (UBL 2.1)',
- navn: 'urn:www.nesubl.eu:profiles:profile3:ver2.0 (NES3)',
+ standard: NH,
+ kategori: 'Simple Ordrer',
+ navn: 'urn:www.nesubl.eu:profiles:profile3:ver2.0 (NES3, "Order Only")',
id: 'urn:www.nesubl.eu:profiles:profile3:ver2.0',
customization: 'OIOUBL-2.x',
dokumenter: ['Order'],
- anvendelse: 'Leverandør modtager ordrer fra kunder (uden ordresvar/fakturering i profilen).',
+ anvendelse: 'Leverandør modtager ordrer fra kunder. Intet ordresvar og ingen fakturering i profilen.',
bemaerkninger: 'Ældre NES-ordreprofil; OrdSim-varianterne anbefales i stedet.',
},
+
+ // ── Profiler for: Katalog ──────────────────────────────────────────────────
+ {
+ standard: NH,
+ kategori: 'Katalog',
+ navn: 'Catalogue-CatBas-1.0 (basalt katalog)',
+ id: 'Catalogue-CatBas-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Catalogue', 'CatalogueDeletion', 'ApplicationResponse'],
+ anvendelse: 'Leverandør sender et produktkatalog til kunden og kan slette det igen. Kunden kan afvise med ApplicationResponse.',
+ bemaerkninger: 'Simpleste katalogprofil — ingen prisopdatering, ingen katalogforespørgsel.',
+ },
+ {
+ standard: NH,
+ kategori: 'Katalog',
+ navn: 'Catalogue-CatPriUpd-1.0 (kun prisopdatering)',
+ id: 'Catalogue-CatPriUpd-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['CataloguePricingUpdate', 'ApplicationResponse'],
+ anvendelse: 'Leverandør opdaterer alene priserne i et allerede udvekslet katalog.',
+ bemaerkninger: '"Catalogue Pricing Update Only" — forudsætter at kataloget er sendt via en anden katalogprofil.',
+ },
+ {
+ standard: NH,
+ kategori: 'Katalog',
+ navn: 'Catalogue-CatPriUpdR-1.0 (kun prisopdatering m. krævet svar)',
+ id: 'Catalogue-CatPriUpdR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['CataloguePricingUpdate', 'ApplicationResponse'],
+ anvendelse: 'Som CatPriUpd, men kunden skal kvittere for prisopdateringen.',
+ bemaerkninger: 'R = svar påkrævet.',
+ },
+ {
+ standard: NH,
+ kategori: 'Katalog',
+ navn: 'Catalogue-CatSim-1.0 (katalogforespørgsel + katalog)',
+ id: 'Catalogue-CatSim-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['CatalogueRequest', 'Catalogue', 'CatalogueDeletion', 'ApplicationResponse'],
+ anvendelse: 'Kunden beder om et katalog (CatalogueRequest), leverandøren sender det og kan slette det igen.',
+ bemaerkninger: 'CatBas udvidet med katalogforespørgsel fra kunden.',
+ },
+
+ // ── Profiler for: Udvidet fakturering ──────────────────────────────────────
+ {
+ standard: NH,
+ kategori: 'Udvidet fakturering',
+ navn: 'Procurement-BilSimR-1.0 (simpel fakturering m. krævet svar)',
+ id: 'Procurement-BilSimR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse'],
+ anvendelse: 'Som BilSim, men kunden skal altid kvittere med et ApplicationResponse (accept/afvisning).',
+ bemaerkninger: "R = 'Response required' — kunden skal kvittere. Bemærk: tilmelding til BilSimR giver ikke automatisk BilSim; begge skal registreres hver for sig.",
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet fakturering',
+ navn: 'Procurement-BilSimReminderOnly-1.0 (kun rykker)',
+ id: 'Procurement-BilSimReminderOnly-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Reminder'],
+ anvendelse: 'Enkeltdokument-profil til alene at kunne modtage rykkere.',
+ bemaerkninger: 'Registerprofil af typen "single" — ikke i OIOUBL Profiler-guiden (G26) v1.3. Praktisk fordi Reminder ikke findes i Peppol BIS Billing og derfor kun kan sendes i OIOUBL-profilerne.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet fakturering',
+ navn: 'Procurement-PayBas-1.0 (kontoudtog)',
+ id: 'Procurement-PayBas-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Statement', 'ApplicationResponse'],
+ anvendelse: 'Leverandør sender kontoudtog (Statement) til kunden — en samlet oversigt over udestående poster, ikke en faktura.',
+ bemaerkninger: 'G26 kalder profilen direkte "Statement". Trods "Pay"-navnet er der ingen betalingsdokumenter i profilen.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet fakturering',
+ navn: 'Procurement-PayBasR-1.0 (kontoudtog m. krævet svar)',
+ id: 'Procurement-PayBasR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Statement', 'ApplicationResponse'],
+ anvendelse: 'Som PayBas, men kunden skal kvittere for kontoudtoget.',
+ bemaerkninger: 'R = svar påkrævet.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet fakturering',
+ navn: 'urn:www.nesubl.eu:profiles:profile8:ver2.0 (NES8)',
+ id: 'urn:www.nesubl.eu:profiles:profile8:ver2.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Invoice', 'CreditNote', 'ApplicationResponse'],
+ anvendelse: 'NES-faktureringsprofil med kvittering: faktura og kreditnota, hvor kunden kan svare med ApplicationResponse.',
+ bemaerkninger: 'NES5 udvidet med ApplicationResponse. Ingen Reminder.',
+ },
+
+ // ── Profiler for: Udvidet katalog ──────────────────────────────────────────
+ {
+ standard: NH,
+ kategori: 'Udvidet katalog',
+ navn: 'Catalogue-CatAdv-1.0 (avanceret katalog)',
+ id: 'Catalogue-CatAdv-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['CatalogueRequest', 'Catalogue', 'CatalogueItemSpecificationUpdate', 'CataloguePricingUpdate', 'CatalogueDeletion', 'ApplicationResponse'],
+ anvendelse: 'Fuld katalogproces: forespørgsel, katalog, opdatering af både varebeskrivelser og priser samt sletning.',
+ bemaerkninger: 'Den mest komplette katalogprofil — CatExt plus katalogforespørgsel.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet katalog',
+ navn: 'Catalogue-CatAdvR-1.0 (avanceret katalog m. krævet svar)',
+ id: 'Catalogue-CatAdvR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['CatalogueRequest', 'Catalogue', 'CatalogueItemSpecificationUpdate', 'CataloguePricingUpdate', 'CatalogueDeletion', 'ApplicationResponse'],
+ anvendelse: 'Som CatAdv, men modtageren skal kvittere for katalogdokumenterne.',
+ bemaerkninger: 'R = svar påkrævet.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet katalog',
+ navn: 'Catalogue-CatBasR-1.0 (basalt katalog m. krævet svar)',
+ id: 'Catalogue-CatBasR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Catalogue', 'CatalogueDeletion', 'ApplicationResponse'],
+ anvendelse: 'Som CatBas, men kunden skal kvittere for kataloget.',
+ bemaerkninger: 'R = svar påkrævet.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet katalog',
+ navn: 'Catalogue-CatExt-1.0 (udvidet katalog + opdatering)',
+ id: 'Catalogue-CatExt-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Catalogue', 'CatalogueItemSpecificationUpdate', 'CataloguePricingUpdate', 'CatalogueDeletion', 'ApplicationResponse'],
+ anvendelse: 'Katalogudveksling med efterfølgende opdatering af varebeskrivelser og priser samt sletning. Ingen katalogforespørgsel.',
+ bemaerkninger: 'CatBas udvidet med opdateringsdokumenter.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet katalog',
+ navn: 'Catalogue-CatExtR-1.0 (udvidet katalog + opdatering m. krævet svar)',
+ id: 'Catalogue-CatExtR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Catalogue', 'CatalogueItemSpecificationUpdate', 'CataloguePricingUpdate', 'CatalogueDeletion', 'ApplicationResponse'],
+ anvendelse: 'Som CatExt, men kunden skal kvittere.',
+ bemaerkninger: 'R = svar påkrævet.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet katalog',
+ navn: 'Catalogue-CatSimR-1.0 (katalogforespørgsel + katalog m. krævet svar)',
+ id: 'Catalogue-CatSimR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['CatalogueRequest', 'Catalogue', 'CatalogueDeletion', 'ApplicationResponse'],
+ anvendelse: 'Som CatSim, men katalogsvar er påkrævet.',
+ bemaerkninger: 'R = svar påkrævet.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet katalog',
+ navn: 'urn:www.nesubl.eu:profiles:profile1:ver2.0 (NES1, "Catalogue Only")',
+ id: 'urn:www.nesubl.eu:profiles:profile1:ver2.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Catalogue', 'ApplicationResponse'],
+ anvendelse: 'Ren katalogudsendelse: leverandør sender katalog, kunden kan afvise.',
+ bemaerkninger: 'Ældre NES-katalogprofil; Catalogue-CatBas-1.0 anbefales i stedet.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet katalog',
+ navn: 'urn:www.nesubl.eu:profiles:profile2:ver2.0 (NES2, simpel katalogproces)',
+ id: 'urn:www.nesubl.eu:profiles:profile2:ver2.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Catalogue', 'CatalogueItemSpecificationUpdate', 'CataloguePricingUpdate'],
+ anvendelse: 'Katalog med efterfølgende opdatering af varebeskrivelser og priser. Ingen kvittering i profilen.',
+ bemaerkninger: 'Ældre NES-katalogprofil; Catalogue-CatExt-1.0 anbefales i stedet.',
+ },
+
+ // ── Profiler for: Udvidet ordre til fakturering ────────────────────────────
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdAdv-BilSim-1.0 (avanceret ordre + simpel fakturering)',
+ id: 'Procurement-OrdAdv-BilSim-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Order', 'OrderResponse', 'OrderResponseSimple', 'OrderChange', 'OrderCancellation', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Avanceret ordreproces (fuldt ordresvar samt ordreændring og -annullering) efterfulgt af simpel fakturering.',
+ bemaerkninger: 'Understøtter begge parter både OrdSim-BilSim og OrdAdv-BilSim, skal OrdAdv-BilSim bruges.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdAdv-BilSimR-1.0 (avanceret ordre + fakturering m. krævet fakturasvar)',
+ id: 'Procurement-OrdAdv-BilSimR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Order', 'OrderResponse', 'OrderResponseSimple', 'OrderChange', 'OrderCancellation', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Som OrdAdv-BilSim, men fakturasvar (ApplicationResponse) er påkrævet.',
+ bemaerkninger: 'R sidder på fakturadelen — ordresvaret er stadig valgfrit.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdAdvR-BilSim-1.0 (avanceret ordre m. krævet ordresvar + simpel fakturering)',
+ id: 'Procurement-OrdAdvR-BilSim-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Order', 'OrderResponse', 'OrderResponseSimple', 'OrderChange', 'OrderCancellation', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Som OrdAdv-BilSim, men ordresvar er påkrævet.',
+ bemaerkninger: 'R sidder på ordredelen — fakturasvaret er valgfrit.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdAdvR-BilSimR-1.0 (avanceret ordre + fakturering, begge svar krævet)',
+ id: 'Procurement-OrdAdvR-BilSimR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Order', 'OrderResponse', 'OrderResponseSimple', 'OrderChange', 'OrderCancellation', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Avanceret ordre og fakturering hvor både ordresvar og fakturasvar er påkrævet.',
+ bemaerkninger: 'Strammeste variant af ordre-til-faktura-kæden.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdSel-BilSim-1.0 (sælgerinitieret ordre + simpel fakturering)',
+ id: 'Procurement-OrdSel-BilSim-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['OrderResponse', 'OrderResponseSimple', 'OrderChange', 'OrderCancellation', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Sælgerinitieret handel: leverandøren starter med en ordrebekræftelse (fx efter aftale i marken eller telefonisk), kunden kan ændre eller annullere, og der faktureres bagefter.',
+ bemaerkninger: 'Bemærk: ingen Order i profilen — "Sel" = seller initiated, så processen starter med OrderResponse.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdSel-BilSimR-1.0 (sælgerinitieret ordre + fakturering m. krævet svar)',
+ id: 'Procurement-OrdSel-BilSimR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['OrderResponse', 'OrderResponseSimple', 'OrderChange', 'OrderCancellation', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Som OrdSel-BilSim, men fakturasvar er påkrævet.',
+ bemaerkninger: 'Ingen Order i profilen — processen starter hos sælger.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdSim-BilSimR-1.0 (simpel ordre + fakturering m. krævet fakturasvar)',
+ id: 'Procurement-OrdSim-BilSimR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Simpel ordre + fakturering hvor fakturasvar (ApplicationResponse) er påkrævet.',
+ bemaerkninger: 'R sidder på fakturadelen.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdSimR-BilSim-1.0 (simpel ordre m. krævet ordresvar + fakturering)',
+ id: 'Procurement-OrdSimR-BilSim-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Som OrdSim-BilSim, men ordresvar er påkrævet.',
+ bemaerkninger: 'R sidder på ordredelen.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'Procurement-OrdSimR-BilSimR-1.0 (simpel ordre + fakturering, begge svar krævet)',
+ id: 'Procurement-OrdSimR-BilSimR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'Reminder', 'ApplicationResponse *'],
+ anvendelse: 'Simpel ordre og fakturering hvor både ordresvar og fakturasvar er påkrævet.',
+ bemaerkninger: 'Begge R’er sat — modparten skal kvittere i begge led.',
+ },
+ {
+ standard: NH,
+ kategori: 'Udvidet ordre til fakturering',
+ navn: 'urn:www.nesubl.eu:profiles:profile7:ver2.0 (NES7, ordre til faktura)',
+ id: 'urn:www.nesubl.eu:profiles:profile7:ver2.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['Order', 'OrderResponseSimple', 'Invoice', 'CreditNote', 'ApplicationResponse *'],
+ anvendelse: 'NES-profil for simpel ordre efterfulgt af simpel fakturering.',
+ bemaerkninger: 'Ældre NES-pendant til OrdSim-BilSim. Ingen Reminder i profilen.',
+ },
+
+ // ── Profiler for: ForsyningsSpecifikation ──────────────────────────────────
+ {
+ standard: NH,
+ kategori: 'ForsyningsSpecifikation',
+ navn: 'Reference-Utility-1.0 (forsyningsspecifikation, UTS)',
+ id: 'Reference-Utility-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['UtilityStatement', 'ApplicationResponse'],
+ anvendelse: 'Forsyningsbranchen (el/vand/varme/gas): leverandør sender detaljeret forbrugs-/forsyningsspecifikation der ledsager fakturaen; kunden kan svare med ApplicationResponse.',
+ bemaerkninger: 'Bruges som tillæg til en faktureringsprofil — UTS erstatter ikke fakturaen.',
+ },
+ {
+ standard: NH,
+ kategori: 'ForsyningsSpecifikation',
+ navn: 'Reference-UtilityR-1.0 (forsyningsspecifikation m. krævet svar)',
+ id: 'Reference-UtilityR-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['UtilityStatement', 'ApplicationResponse'],
+ anvendelse: 'Som Reference-Utility, men kunden skal kvittere for forsyningsspecifikationen.',
+ bemaerkninger: 'R = svar påkrævet.',
+ },
+
+ // ── Profiler for: Diverse ──────────────────────────────────────────────────
+ {
+ standard: NH,
+ kategori: 'Diverse',
+ navn: 'Procurement-TecRes-1.0 (kvittering på modtaget dokument)',
+ id: 'Procurement-TecRes-1.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['ApplicationResponse'],
+ anvendelse: 'Ren kvitteringsprofil: bruges til at svare på et modtaget dokument, typisk når afsendelsen ikke kan behandles pga. tekniske fejl eller en ikke-understøttet profil.',
+ bemaerkninger: 'Bruges som ProfileID på selve ApplicationResponse’en, ikke som en forretningsproces man handler i.',
+ },
+ {
+ standard: NH,
+ navn: 'urn:www.cenbii.eu:profile:bii30:ver2.0 (forsendelsesadvis / despatch advice)',
+ id: 'urn:www.cenbii.eu:profile:bii30:ver2.0',
+ customization: 'OIOUBL-2.x',
+ dokumenter: ['DespatchAdvice'],
+ anvendelse: 'Leverandør varsler en forsendelse, så kunden kan forberede modtagelse og afstemme leveringen mod ordren.',
+ bemaerkninger: 'CEN BII-profil optaget i OIOUBL (G26 afsnit 3.3.15). Ikke placeret i en registerkategori her — bekræft gruppen i Nemhandelsregistrets dropdown før brug.',
+ },
+
+ // ── Peppol BIS 3.0 ─────────────────────────────────────────────────────────
{
standard: 'Peppol BIS 3.0',
navn: 'Peppol BIS Billing 3.0',
@@ -126,7 +426,7 @@ export const profiles: EProfile[] = [
customization: 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0',
dokumenter: ['Invoice', 'CreditNote'],
anvendelse: 'Den centrale e-faktura/kreditnota-pakke i Peppol. CIUS af EN 16931. Bruges til EU-grænsehandel og DK/Peppol-fakturering.',
- bemaerkninger: 'Langt den mest brugte BIS3-profil. Invoice Response er en separat profil.',
+ bemaerkninger: 'Langt den mest brugte BIS3-profil. Invoice Response er en separat profil. Bemærk: Reminder findes ikke i Peppol — brug OIOUBL-profilerne til rykkere.',
},
{
standard: 'Peppol BIS 3.0',
@@ -144,7 +444,7 @@ export const profiles: EProfile[] = [
customization: 'urn:fdc:peppol.eu:poacc:trns:invoice_response:3',
dokumenter: ['ApplicationResponse (Invoice Response)'],
anvendelse: 'Køber sender struktureret status/svar på en modtaget faktura (accepteret, afvist, under behandling, betalt).',
- bemaerkninger: 'Bruges sammen med Billing til at lukke faktura-livscyklussen.',
+ bemaerkninger: 'Bruges sammen med Billing til at lukke faktura-livscyklussen. Peppol-pendant til OIOUBL-ernes "R"-profiler.',
},
{
standard: 'Peppol BIS 3.0',
@@ -153,7 +453,7 @@ export const profiles: EProfile[] = [
customization: 'urn:fdc:peppol.eu:poacc:trns:mlr:3',
dokumenter: ['ApplicationResponse (Message Level Response)'],
anvendelse: 'Teknisk kvittering på beskedniveau: bekræfter modtagelse/validering af et hvilket som helst dokument.',
- bemaerkninger: 'Transport-/syntaks-niveau svar, ikke forretningsmæssigt indhold.',
+ bemaerkninger: 'Transport-/syntaks-niveau svar, ikke forretningsmæssigt indhold. Peppol-pendant til Procurement-TecRes-1.0.',
},
{
standard: 'Peppol BIS 3.0',
@@ -161,8 +461,8 @@ export const profiles: EProfile[] = [
id: 'urn:fdc:peppol.eu:poacc:bis:ordering:3',
customization: 'urn:fdc:peppol.eu:poacc:trns:order:3 / urn:fdc:peppol.eu:poacc:trns:order_response:3',
dokumenter: ['Order', 'Order Response'],
- anvendelse: 'Fuld ordreproces: køber sender ordre, sælger svarer med ordrebekraeftelse/-svar.',
- bemaerkninger: 'Order = Trdm01, Order Response = Trdm76.',
+ anvendelse: 'Fuld ordreproces: køber sender ordre, sælger svarer med ordrebekræftelse/-svar.',
+ bemaerkninger: 'Order = Trdm01, Order Response = Trdm76. Peppol-pendant til Procurement-OrdSim-1.0.',
},
{
standard: 'Peppol BIS 3.0',
@@ -171,7 +471,7 @@ export const profiles: EProfile[] = [
customization: 'urn:fdc:peppol.eu:poacc:trns:order:3',
dokumenter: ['Order'],
anvendelse: 'Kun afsendelse af ordre uden forventet struktureret ordresvar.',
- bemaerkninger: 'Enkel ordre-only proces.',
+ bemaerkninger: 'Enkel ordre-only proces. Peppol-pendant til NES3 ("Order Only").',
},
{
standard: 'Peppol BIS 3.0',
@@ -189,7 +489,7 @@ export const profiles: EProfile[] = [
customization: 'urn:fdc:peppol.eu:poacc:trns:catalogue:3',
dokumenter: ['Catalogue', 'ApplicationResponse (Catalogue Response)'],
anvendelse: 'Sælger sender produktkatalog (priser/varer) til køber, der kan svare med accept/afvisning.',
- bemaerkninger: 'Grundlag for efterfølgende ordrer.',
+ bemaerkninger: 'Grundlag for efterfølgende ordrer. Peppol-pendant til Catalogue-CatBasR-1.0.',
},
{
standard: 'Peppol BIS 3.0',
@@ -216,8 +516,10 @@ export const profiles: EProfile[] = [
customization: 'urn:fdc:peppol.eu:poacc:trns:despatch_advice:3',
dokumenter: ['Despatch Advice (følgeseddel)'],
anvendelse: 'Sælger sender forsendelses-/leveringsmeddelelse (hvad er afsendt, hvornår, hvordan) inden faktura.',
- bemaerkninger: 'Logistik-dokument mellem ordre og faktura.',
+ bemaerkninger: 'Logistik-dokument mellem ordre og faktura. Peppol-pendant til urn:www.cenbii.eu:profile:bii30:ver2.0 i OIOUBL.',
},
+
+ // ── Peppol BIS 4.0 / PINT ──────────────────────────────────────────────────
{
standard: 'Peppol BIS 4.0 / PINT',
navn: 'EU PINT Billing (v1.0.1; forløber for BIS Billing 4.0)',
@@ -239,3 +541,6 @@ export const profiles: EProfile[] = [
];
export const standarder = [...new Set(profiles.map((p) => p.standard))];
+
+/** Nemhandelsregistrets kategorier i registrets egen rækkefølge. */
+export const kategorier = [...new Set(profiles.map((p) => p.kategori).filter((k): k is string => Boolean(k)))];
diff --git a/src/pages/profiler.astro b/src/pages/profiler.astro
index f620fdd..b22d2a9 100644
--- a/src/pages/profiler.astro
+++ b/src/pages/profiler.astro
@@ -1,13 +1,18 @@
---
import Base from '../layouts/Base.astro';
-import { profiles, standarder } from '../data/profiles';
+import { profiles, standarder, kategorier } from '../data/profiles';
const searchString = (p: (typeof profiles)[number]) =>
- [p.standard, p.navn, p.id, p.customization, p.dokumenter.join(' '), p.anvendelse, p.bemaerkninger]
+ [p.standard, p.kategori ?? '', p.navn, p.id, p.customization, p.dokumenter.join(' '), p.anvendelse, p.bemaerkninger]
.join(' ')
.toLowerCase();
+// Registerprofilerne af "single"-typen står ikke i G26 — dem henviser vi til registret for.
+const kunIRegistret = new Set(['Procurement-OrdRes-1.0', 'Procurement-BilSimReminderOnly-1.0']);
+
const kilde = (p: (typeof profiles)[number]) => {
+ if (kunIRegistret.has(p.id))
+ return { label: 'Nemhandelsregistret', url: 'https://nemhandel.dk/nemhandelsregisteret' };
if (p.standard.startsWith('Nemhandel'))
return { label: 'OIOUBL Profiler (G26)', url: 'https://oioubl21.oioubl.dk/documents/en/en/Guidelines/OIOUBL_GUIDE_PROFILES.pdf' };
if (p.standard.includes('PINT'))
@@ -31,6 +36,11 @@ const kilde = (p: (typeof profiles)[number]) => {
Peppol BIS/PINT — profil-/proces-id, customization-id, hvilke
dokumenter profilen indeholder og typisk anvendelse. Klik på et id for at kopiere det.
+
+ De danske profiler står i samme rækkefølge og under samme gruppenavne som i
+ Nemhandelsregistrets profil-dropdown (“Profiler for: …”), så du kan
+ slå direkte op mellem registrering og dokumentindhold.
+
- Kilder: OIOUBL Profiler-guiden (G26) og Peppol BIS/PINT (docs.peppol.eu). Øjebliksbillede —
- verificér altid id'er mod den officielle dokumentation før brug.
+
+ Kilder: OIOUBL Profiler-guiden (G26) v1.3 (dokumentlister, tabel 1-3), Nemhandelsregistret
+ (gruppering og profilnavne) og Peppol BIS/PINT (docs.peppol.eu). * = ApplicationResponse bruges kun
+ til afvisning; det forretningsmæssige svar på en ordre er altid OrderResponse/OrderResponseSimple.
+ Øjebliksbillede — verificér altid id'er mod den officielle dokumentation før brug.