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

@@ -52,12 +62,21 @@ const kilde = (p: (typeof profiles)[number]) => { {standarder.map((s) => )}
+
+ Nemhandelsregistrets kategori: + + + {kategorier.map((k) => )} + +
+
{ profiles.map((p) => { const k = kilde(p); return (
@@ -65,6 +84,14 @@ const kilde = (p: (typeof profiles)[number]) => { {p.standard} + {p.kategori && ( + + Register: {p.kategori} + + )}

{p.navn}

@@ -90,7 +117,7 @@ const kilde = (p: (typeof profiles)[number]) => {

{p.anvendelse}

-

+

Bemærk: {p.bemaerkninger}

Kilde: {k.label} ↗

@@ -101,9 +128,11 @@ const kilde = (p: (typeof profiles)[number]) => { -

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