KeyBalance Opdateringer

Genereret: 2026-07-22 12:02:38

Beskrivelse
#1189 - Ret bemærkning på godkendte bilag (hvis de ligger og afventer noget) (22-07-26 12:02)
#1186 - Running page-balance carry-over in tilbud/ordre/fakkladde printouts (10-07-26 06:38)

Summary


Ports the "Overført fra/til side" running-balance mechanism from **UDSKRIVFAKTURA** to **UDSKRIVTILBUD**, **UDSKRIVORDRE** and **UDSKRIVFAKKLADDE**, so multi-page printouts carry the accumulated net amount across page breaks.

In each report's `UDSKRIV` subtask:
  • `LøbendeSaldo` / `LøbendeSaldo2` local vars (Beløb) added next to `SideStart`.
  • Both reset to 0 in the header record's `AfterRecord`.
  • Accumulated per line in the `Linjer` subtask's `AfterRecord`: `LøbendeSaldo` = running total incl. the current line, `LøbendeSaldo2` = total before it (carried from the previous page).
  • `Header2` (`Show = AllButFirst`): "Overført fra forrige side" + `LøbendeSaldo2`.
  • `Footer2` (`Show = AllButLast`, `ForceShow`): "Overført til næste side" + `LøbendeSaldo`.

Mirrors the existing, proven pattern in UDSKRIVFAKTURA exactly.

Files

  • `TASK/UDSKRIVTILBUD.PTD`
  • `TASK/UDSKRIVORDRE.PTD` (Windows-1252 — encoding preserved)
  • `TASK/UDSKRIVFAKKLADDE.PTD` (Windows-1252 — encoding preserved)

Test plan

  • [ ] Print a **tilbud**, an **ordre** and a **fakturakladde** that span more than one page → "Overført til næste side" appears at the bottom of each page with the page's running total, and "Overført fra forrige side" appears at the top of the next page with the same amount.
  • [ ] Single-page printouts are unchanged (Header2/Footer2 must not appear — `AllButFirst`/`AllButLast`).
  • [ ] Totals at the bottom (NETTO/MOMS/TOTAL) are unchanged.
#1166 - CRM - kører nu på KundeEmne, knappen virker, interface er det samme (09-07-26 08:19)
CRM - kører nu på KundeEmne, knappen virker, interface er det samme
#1178 - Trigger, ikke alias, men fil (09-07-26 07:30)
Trigger, ikke alias, men fil
I Select - FromTo
#1169 - Claude PR review: inline kontekst og diff i prompten for hurtigere review (08-07-26 10:41)

Baggrund

#1173 - Fejl i Vis Tilbud (08-07-26 10:03)
Fejl i Vis Tilbud
Ingen parametre overhovedet - kopieret fra SORDREKORT
#1171 - Feature bedre graf over omsætning resultat (08-07-26 10:02)
Feature bedre graf over omsætning resultat
#1170 - Medsend PFD i OIO, felt på Forms kort (08-07-26 08:24)
Medsend PFD i OIO, felt på Forms kort
#1167 - Claude PR review: impact-vurdering (1-5) som godkendelsesport (07-07-26 13:37)

Hvad

Claude PR review-checket i branch-pipelinen vurderede hidtil kun "programmering" - konkrete fejl og risici pr. kodelinje. Denne PR tilfoejer en ekstra, uafhaengig dimension: en samlet **impact-vurdering (1-5)** af hele PRens raekkevidde (blast radius), og en godkendelsesport hvor **impact >= 3 holder PRen tilbage**.

Impact er bevidst en *separat akse* fra severity: den maaler hvor bredt og hvor kritisk aendringen slaar igennem, uafhaengigt af om der er fundet fejl. En fejlfri PR kan sagtens have impact 5 (fx en aendring der roerer al momsbogfoering), og en PR med en blocker kan have impact 2.

Impact-skalaen

  • **1 - Kosmetisk / isoleret** - tekster, labels, enkelt felt uden bogfoeringseffekt.
  • **2 - Lokal funktionel** - begraenset til en task/skaerm eller en rapport.
  • **3 - Hel proces / flere tasks** - fx en bilagstype, en importmapping, et felt brugt flere steder.
  • **4 - Central forretningslogik** - bogfoering, fakturering, moms, saldi, nummerserier for mange kunder/bilag.
  • **5 - Fundamental bred aendring** - aendrer grundlaeggende hvordan fx al momsbogfoering eller alle posteringer dannes fremover.

Ved tvivl mellem to niveauer paa graensen (2 vs. 3) vaelges det hoejeste.

Gate-mekanik

Impact **>= 3** faar reviewet til at oprette opsummeringstraaden som **aktiv** - den skal resolves manuelt af et menneske inden merge. Det bygger paa praecis samme mekanisme som eksisterende blocker/warning-fund: aktiv traad + branch-politikken "Check for comment resolution". Det er en bevidst godkendelsesport for vidtraekkende aendringer, ikke en paastand om at noget er galt. Impact 1-2 kraever ingen saerskilt handling. Buildet bliver ikke roedt.

AEndringer

  • **.claude/pr-review/prompt.md** - JSON-output udvidet med impact (1-5) og impactRationale. Scores altid, ogsaa naar findings-listen er tom.
  • **.claude/pr-review/guidelines.md** - ny sektion "Impact-vurdering" med skalaen og gate-reglen.
  • **azure-pipelines branches.yml** - opsummeringskommentaren viser nu impact-score (med soejle-visning) + begrundelse, og traaden goeres aktiv naar impact >= 3.

Forudsaetning

Gaten virker kun hvis branch-politikken **"Check for comment resolution"** er slaaet til som required paa master - samme forudsaetning som den eksisterende blocker/warning-blokering allerede benytter.

Generated with Claude Code
#1162 - Claude PR review: opret blocker/warning-fund som aktive tråde (07-07-26 11:57)

Baggrund

#1099 - SOrdreLinje - fasthold kundens egen APRIS (frigives ved skift af varenummer) (07-07-26 09:59)

Formål

Når brugeren selv retter salgsprisen (APRIS) på en salgsordrelinje, skal **kundens egen pris holdes fast** og ikke blive overskrevet af efterfølgende automatiske genberegninger på linjen (fx grundpris/avance, valutakurs, lev.listepris osv.).

Prisen **frigives først igen, når varenummeret på linjen skiftes** – så en ny vare får sin korrekte beregnede pris.

Hvordan

I `FILE/SOrdreLinje.PTD`:

  • **APRIS (OnUpdate):** Når prisen ændres manuelt sættes `AprisÆndret = true` (og `RabatPctÆndret = true`, `Rabatpct = 0`), så vi husker at linjens pris er brugerstyret.
  • **GrundprisVare (Init):** Returnerer nu den eksisterende grundpris, hvis `AprisÆndret` er sat – dvs. fremtidige ændringer på linjen rører ikke den fastholdte pris.
  • **AprisÆndret / RabatPctÆndret (Init):** Refererer nu `SOrdreLinje.VNummer`, så flaget nulstilles til `false` ved skift af varenummer. Dermed slippes den fastholdte pris, og den nye vare genberegnes normalt.

Effekt

  • Manuelt indtastede priser bevares på linjen.
  • Skift af varenummer nulstiller og genberegner som hidtil.

---

Periodisering

Kan nu styres om man må fra kreditor

Log

Har længere file-navn-felt

--

PR'en indeholder desuden to mindre, urelaterede commits:
  • BS Fortolk – negativt fortegn på kreditnota (OIO)
  • BS – ligger nu flere steder i opsætningsmenuen
#1159 - Nulstil manuelt gebyr når gruppen ændres (07-07-26 08:47)
Nulstil manuelt gebyr når gruppen ændres
#1158 - Merge 20260707MIB2 to master (07-07-26 08:37)
#1157 - Oplevet at MIB sendte unikke id'er på 134 tegn (07-07-26 08:10)
Oplevet at MIB sendte unikke id'er på 134 tegn
#1146 - Test: Claude PR review i pipeline (06-07-26 09:02)
Tilfoejer automatisk Claude-review til PR-validering. Denne PR er samtidig testen af selve review-flowet.
#1142 - Fjerne autoincrementchild FEJL (04-07-26 09:14)
Fjerne autoincrementchild FEJL
#1124 - Test af tid og opret i app (01-07-26 15:50)
Rettelser i DEBITOR_WE.PTD og SOM_Kort_WE.PTD - test af tid og opret i app.
#1069 - Dokument ondrop + image (01-07-26 14:11)
#1119 - DASH Formularer UAE (01-07-26 09:38)
Rettelser til DASH_FormularerUA.ptd og DASH_FormularerUAE.ptd
#1080 - feat(logging): WEB_API_Log/WEB_APP_Log files, view tasks, and per-group/site log config (01-07-26 09:11)
Schema for the HTTP request/response logging feature (companion to the KBServer/KRuntime C# change).

New FILE definitions

  • **WEB_API_Log** (`WEB/alog`) and **WEB_APP_Log** (`WEB/applog`) — request/response log records. `Løbenr` AutoIncrement PK; date/time, group/site, and status secondary keys; 16 KB body fields (record stays under the UInt16 65535 record-size cap); `ShowRecordTask` → the detail card. No ForeignKey on the group so failed/unknown-token requests still log.

View/search tasks

  • **WEB_API_Log** + **WEB_API_LogKort**, **WEB_APP_Log** + **WEB_APP_LogKort** — read-only grid scoped by a date-range start dialog (rides the DatoTid key); the Kort shows every field incl. request/response bodies in `WVMemo`. `RightsGroup = "FIRMAOPL"` (credential-bearing logs).

Per-group / per-site config (opt-in; all default false)

  • **WEB_API_TokenGrp**: `LogEnabled`, `LogRequestBody`, `LogResponseBody`, `LogErrorsOnly`, `LogQueryString`
  • **WEB_http_sites**: the same five + `log_static` (also log static-resource fetches)

New physical fields were inserted **after the last physical field and before the trailing virtual field** (`gruppeUrl` / `auth_Provider`, which omit `FMFieldId`), so the stored record layout stays append-only.

Post-merge / deploy note

  • `WEB_API_TokenGrp` and `WEB_http_sites` are existing files that gained physical fields — they need a **file rebuild** (KBDesign → right-click → Rebuild) after import for the new columns to get storage. The new log files are created fresh.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
#1087 - Små rettelser (26-06-26 12:28)
#1076 - KB FT - fra Gardian - så kører det igen (24-06-26 09:41)
#1073 - små rettelser (23-06-26 15:43)
#1054 - Options = [ SearchServerSide ] (18-06-26 09:27)
Options = [ SearchServerSide ]
#884 - Betalingsid sættes på BS Kassekladde (18-06-26 08:13)
Betalingsid sættes på BS Kassekladde
#1052 - Rettelser ved PTD Opgradering (18-06-26 08:12)
#1053 - Rettelser til Flexpos (18-06-26 08:08)
#1017 - BS-bilag håndtering i finansposteringer (17-06-26 06:55)

Hvad er aendret

  • Nuværende BS kan tilføjes eksisterende poster.
  • Poster uden BS er synlige i en liste hvorpå der kan droppes filer. Samme er slået fra på den almindelige fiananspost - det er lidt for nemt at fejle i.
  • BankAfstemningsstatus vises i finanspost
  • Statistik er flyttet til ØKONOMI i menu. Skal måske også være en del af dem i køb og salg??
  • Kreditor er tilføjet økonomi i menu

Nye formularer (3 nye filer)
  • **FPOST_EjBS** - Viser finansposter UDEN BS-bilag. Arver drag-and-drop funktionaliteten fra FPOST, saa man kan droppe filer direkte paa poster der mangler bilag.
  • **FPostDetaljer_TilFoejBS** - Detaljevisning af en finanspost med liste over eksisterende (ikke-arkiverede) BS-bilag, saa man kan vaelge og tilknytte et bilag til posten.
  • **FP_VlgBilag** - Batch-task der tilknytter et valgt BS-bilag til en finanspost og opdaterer alle relaterede tabeller (Finanspost, Debitorpost, Kreditorpost, Maskinpost, Varepost, SagsFPost, Anlaegspost).

Finanspost.PTD - 2 nye virtuelle felter
  • BS_FilnavnAbs - opslaar filnavnet paa BS-bilaget via BSNummer
  • BankPostAfstemt - viser AFSTEMT / IKKE afstemt / UKENDT baseret paa FinPostAfstem

FPOST.PTD - omstrukturering
  • Drag-and-drop (OnDrop + Link til BS_Bilag_DokDrop) fjernet herfra og flyttet til FPOST_EjBS, der er dedikeret til poster uden bilag
  • Ny kolonne: BankPostAfstemt
  • Nye popupmenu-valg: Transaktioner, +Bilag (IKKE BS), +Ekstra (HAR BS), +Hovedbilag (HAR BS)
  • Bedre fejlbeskeder i CanExecute - skelner nu tydeligt mellem har BS og har ikke BS
  • Ny dialog-niveau action Uden BS der aabner FPOST_EjBS

FINANSKONTO.PTD
  • Ny action Uden BS paa finanskonto-billedet

FPostDetaljer.PTD
  • Tilfojet BS Bilag groupbox med billedvisning af det tilknyttede bilag

MainMenu_Ribbon.PTD
  • Debitor- og Kreditor-dialoggenveje tilfojet i menuen
  • Statistik-undermenu tilfojet/omorganiseret under Kreditor-menuen (items fjernet fra gammelt sted)

---

Kritisk vurdering


Ingen kritiske fejl identificeret - men bemaerk foelgende:

**POTENTIELT PROBLEM - bor verificeres:**
I FPOST.PTD er baade Access = [ Read ] og TaskMode = Update fjernet fra task-definitionen. Tidligere aabnede formularen eksplicit i read-only mode. Den nye adfaerd afhaenger af systemets default - bor verificeres at formularen IKKE aabner i ufrivillig redigeringstilstand, saa brugere utilsigtet kan aendre finansposter.

**Lavrisiko - kraever test:**
Statistik-menuen i MainMenu er omstruktureret - visse items er fjernet fra eet sted og tilfojet under ny Statistik-undermenu i Kreditor-sektionen. Funktionelt ingen aendring, men kraever test af at alle statistik-menupunkter stadig er tilgaengelige for brugerne.

**Ingen datarisiko:**
Alle nye tasks bruger NoOKBox/NoTriggers korrekt. FP_VlgBilag saetter BSNummer paa alle relevante poster via CanEnter(!*.BSNummer) - opdaterer altsaa kun poster der ikke allerede har et BSNummer, saa der ikke sker utilsigtet overskrivning.

#999 - Mest MIB, men også lidt rykker, samt automatisk styring af Vare.NÆSTE Købspris fra Vare.Sidsteindkøb (17-06-26 06:28)

Ændringer

  • Mest MIB hjem. Kan stadig forbedres.
  • Mails omkring Tomme finansposter
  • Løsning på NÆSTE Købspris

**MIB – Mobile/Internet Banking (samlebetaling)**
  • Udvidet `KBetForHistSamle` og `KBETALFORBETAL` med fuld understøttelse af samlebetalinger
  • Ny task `Bank_MIB_KBetOpretSamle` til oprettelse af samlede betalinger via MIB
  • Ny task `Bank_MIB_KBetStatusSamle` til statusopfølgning på samlede betalinger
  • Ny task `Bank_MIB_ConsentForny` til fornyelse af MIB-samtykke
  • Ny task `Bank_MIB_Nulstil` til nulstilling af MIB-aftaler
  • Tilpasninger i `Bank_MIB_Aftaler` og `Bank_MIB_KBetOpret`

**Rykker – forbedret fejlhåndtering**
  • Forbedret fejlcheck i `UDSKRIVRYKKER` og `UDSKRIVRYKKER_HTMLMail`
  • Bedre rykker-opsætning via autoforms i `Forms_DAN`

**Info-mails – finanskontrol**
  • Ny `MailF_FPostUD` til notifikation om finansposter uden dato
  • Ny `MailF_FinBalanceDiff` til notifikation om finansbalance-afvigelser

**Vare – Næste kostpris**
  • Ny feature: Vare.Næste Kostpris foreslås automatisk ud fra seneste indkøbspris
  • Konfiguration via `FSetup` og felt på `Vare`

#1029 - VIGTIG - Fix af fiananspost OnCreate (16-06-26 12:14)
VIGTIG - Fix af fiananspost OnCreate
+ Deb+Kreditor

+ Fakturanummerserier er nu rent virtuel så flyttede ordrer får nummerserie fra SKP ved fakturering ikke ved oprettelse. Potentiel ulempe - skift i nummerserier etc (navnet) rammer også ordre som ER oprettet
#1018 - Tmp planner (14-06-26 20:14)
Tmp planner
#932 - Merge 20260531Div to master (11-06-26 07:03)

Oversigt


Denne PR samler en række forbedringer og rettelser på tværs af ordrehåndtering, formularkort, kassekladde, fakturering og app-funktionalitet.

---

Features


**Kontrol af fakturaemail ved afslut ordre**
Der er indført validering af fakturaemail, når en ordre afsluttes. Sikrer at fakturaen kan afsendes til en gyldig adresse inden ordren lukkes.

**Forbedret formularkort**
`FormsKort.PTD` er omskrevet og forbedret markant. `FormsKort_v2.PTD` er udgået og konsolideret ind i den primære implementation.

**Forbedret dashboard-elementer for uafsluttede formularer**
Dashboard-visningerne `DASH_FormularerUA` og `DASH_FormularerUAE` er opdateret med forbedret præsentation af uafsluttede formularer.

**Nyt password-funktion har nu altid mailen med**
Password-nulstillingsprocessen inkluderer nu altid brugerens email i flowet, så det ikke er muligt at glemme at angive den.

**APP – Angiv lokation ved tilføj vare / bedre kontrol på lokation på ordreline**
I app-visningen er der tilføjet mulighed for at angive lokation ved tilføjelse af vare til en ordre. Der er desuden indført bedre kontrol på, at lokation er korrekt udfyldt på ordrelinjer.

---

Fixes


**Debitor.Ref overstyres ikke længere ved oprettelse af salgsordre**
`SOrdre.Ref` sættes nu kun, hvis den aktivt angives af brugeren. Tidligere blev debitorens reference utilsigtet overskrevet. Ved oprettelse af ordre fra debitor vises `Debitor.Ref` nu korrekt.

**CVR – OIOUBL afsendes nu korrekt**
Rettet fejl hvor CVR-nummeret ikke blev medsendt korrekt i OIOUBL-fakturaer.

**IFakturaJournal summerede ikke Netto korrekt**
Fakturajournalen summerer nu Netto korrekt på tværs af fakturalinjer.

**KasseKladdelinje – Antal omdøbt**
Feltet "antal" i KasseKladdelinje er omdøbt for at undgå tvetydighed i visning og logik.

#986 - Licens opstramning og DASH formular forbedringer (11-06-26 06:24)

Opsummering

#919 - Dublet i .Retur både i TASK og i trigger (08-06-26 19:02)
TASKCALL {
TaskRef = SBETALING_FAKTURER
...
}
TASK BogførbetalingerPerType
if SOBetaling.BetalingsType == "Kontant" then SFBetaling.Beløb = SFBetaling.Beløb - SFBetHead.Retur;

Derfor er SF Beløb allerede fratrukket retur beløbet ved kontant.
Og skal vel ikke fratrække igen i TRIGGER BetalFPOST {

if SFBetaling.BetalingsType == "Kontant" then
FinP.Netto = SFBetaling.Beløb - SOBetHead.Retur
else

}
#955 - BOOKING (08-06-26 18:39)
1. Booking på APP er lavet, det meste er helt nyt
2. Planner, åbner en temp fil ved dobbeltklik for at undgå ordre oprettes uden kundenr. mv
3. To udskrifter til sag.

Alt er næsten nyt og burde ikke påvirke eksisterende kode
#740 - Drop redundant strformat wrappers from TitleExpr / OkMsg / DialogMsg (01-06-26 21:52)

Summary


Mechanical rewrite of 1720 call sites across 795 files:

```
TitleExpr( strformat("..."; args) ) → TitleExpr( "..."; args )
okmsg( strformat("..."; args) ) → okmsg( "..."; args )
dialogmsg( strformat("..."; args) ) → dialogmsg( "..."; args )
```

Keybalance2018 [PR 737](https://dev.azure.com/KeyBalance/KeyBalance/_git/Keybalance2018/pullrequest/737) gave these three keywords an implicit-strformat inline form. Keybalance2018 [PR 739](https://dev.azure.com/KeyBalance/KeyBalance/_git/Keybalance2018/pullrequest/739) widened the OkMsg/DialogMsg placeholder detection to match `strformat` exactly (`#1`..`#9` plus `{1}`..`{N}`), making this conversion behavior-preserving for every placeholder syntax we use in this repo.

Files


  • 795 `.PTD` / `.ptd` files modified, 1720 lines changed (1720 +, 1720 −).
  • Includes 73 multi-line strformat calls whose template strings contain embedded newlines — handled with balanced-paren matching across line boundaries; embedded newlines, indentation and Danish characters are preserved byte-for-byte.
  • File encodings preserved: UTF-8 files stay UTF-8, ISO-8859 files stay ISO-8859 (the converter operates at byte level via the lossless Latin-1 codepage 28591 round-trip).
  • No grammar change, no schema change — purely call-site cleanup.

Test plan


  • [ ] After Keybalance2018 PR 739 merges, smoke-test a few converted tasks:
  • [ ] `VAREKORT` — TitleExpr renders correctly with `#1 #2` substitutions
  • [ ] `BankPost_Saldi` — TitleExpr renders correctly with `{1}` curly-brace substitution
  • [ ] An okmsg with `{1}` syntax (e.g. `VGENBESTILDAN`) — message includes the substituted value (previously the arg would have been consumed as timeout under PR 737's narrower #1..#9 rule)
  • [ ] An okmsg with explicit numeric timeout via `okmsg(strformat("..."; args); 5)` form — verify those call sites (now `okmsg("..."; args; 5)`) still auto-close after 5s
  • [ ] Verify no parser errors on full PTD reload

Related


  • Depends on: Keybalance2018 [PR 739](https://dev.azure.com/KeyBalance/KeyBalance/_git/Keybalance2018/pullrequest/739) (must merge first)
  • Follow-on to: Keybalance2018 [PR 737](https://dev.azure.com/KeyBalance/KeyBalance/_git/Keybalance2018/pullrequest/737)
#908 - Lev Stdvaregruppe styrring til skyggen (01-06-26 20:36)
Lev Stdvaregruppe styrring til skyggen
#770 - WEB_API_TokenGrp: AuthMode + DefaultUser for Entra ID on APIv3 (29-05-26 14:56)

Summary


Companion PTD changes for Keybalance2018 PR #763, which adds Microsoft Entra ID authentication to APIv3 endpoints. Defines the two new columns the server code reads.

New fields on `FILE/WEB_API_TokenGrp.PTD`


**`AuthMode`** — `BChList` choice list controlling how APIv3 calls in this group are authenticated:

| Value | Label | Behavior |
|---|---|---|
| 1 | `Statisk` (default) | Traditional API token only — backward compatible |
| 2 | `EntraID` | Microsoft Entra JWT in `Authorization` header (identity only, no Bruger lookup) |
| 3 | `Enten` | Either static token or Entra JWT accepted |
| 4 | `Begge` | Static token in `Authorization` + JWT in `X-KB-User-Token`; both must validate |

Initialised to `1` so all existing groups keep static-only behavior on upgrade.

**`DefaultUser`** — `BString(10)` that the PTD `user()` function returns when only a JWT is presented (no static token bound to a Bruger). If left blank, `user()` returns the empty string. The Entra UPN is always available via `webuser()`.

`CanEnter`/`Show` only enable `DefaultUser` for `EntraID` and `Enten` modes — it's not meaningful for `Statisk` (no JWT) or `Begge` (static token always present).

Admin dialog `TASK/WEB_API_TokenGrpKort.PTD`


Both new fields rendered in the existing "TokenSæt - TokenGruppe" group box. Dialog height bumped from 280 → 340 to fit the two extra rows.

Notes


  • `WEB_API_Token` already has `Login` and `TokenType` columns — the server PR just starts using them, no PTD change needed there.
  • Field patterns mirror established conventions: `BChList` mirrors `WEB_API_Token.TokenType`, `DefaultUser` mirrors the Bruger.Initial style from `Printers.PTD`, `Init( 1 )` mirrors `LagerSetup.PTD`.

Test plan


  • [ ] After deploying alongside Keybalance2018 PR #763, open `WEB_API_TokenGrpKort` and verify the AuthMode dropdown lists all four modes and `DefaultUser` shows/hides per mode.
  • [ ] Existing token groups continue to work with `AuthMode=Statisk` (default).
  • [ ] Setting `AuthMode=EntraID` + `DefaultUser=SUPER` and calling APIv3 with a valid JWT → PTD `user()` returns `SUPER`, `webuser()` returns the JWT UPN.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
#859 - Forkortet for lange navne (29-05-26 13:31)
Forkortet for lange navne
Bedxre displayheight
Ikke update , unødvendigt
DriftTimerNu på faktura
#886 - Tilpasninger af moms, momskort, faktura, fakturakladde og ordrebekræftelse (29-05-26 13:30)
#768 - Forlæng Summering 50 ->200 (29-05-26 13:27)
Forlæng Summering 50 ->200
Varepost - lager bogføring - MPS++
KN rabat
Vare i POrdreKort
#885 - Merge 20260527Div to master (29-05-26 10:44)
#827 - Merge 20260512-DivOpd to master (29-05-26 09:18)
#825 - DragDrop Nyt (21-05-26 12:30)
DragDrop Nyt
#837 - Forbedring af performance (21-05-26 08:09)
#818 - Planner for bedre test af ny app (17-05-26 12:43)
Planner for bedre test af ny app
#693 - Fejlrettelser (11-05-26 16:14)
#735 - OIO indlæsning af ekstra bilag (11-05-26 16:13)
Fixet overskrivning af dokumenter og dubletter ved indlæsning af flere ekstra bilag
#741 - BankSaldo - Peppol i BS - Debitorkontoudtog samlet (11-05-26 16:13)
  • BS understøtter nu Peppol i modtages. Fortolkes først som OIOUBL og så PEPPOL hvis den ikke kan fanges direkte
  • Debitorkontoudtog blev ikke mailet hvis debitor.SendEFak - Fixet
  • Bedre saldo overblik i bankafstemning

#683 - Smårettelser vareskygge (07-05-26 21:23)
Smårettelser vareskygge