Serviceordernummer op inkooporderregel werkt niet meer
Documents
TC-4934 Analyse
TC-4934 Serviceordernummer op inkooporderregel, werkt niet meer
Melding
Op de inkooporderregel wordt de omschrijving niet meer op regelniveau aangevuld met het serviceordernummer van die regel.
Technische analyse
Oorspronkelijke implementatie
Bestand: app/src/codeunit/Cod60001.EventsExplora.al, regels 153-178
De functionaliteit werkte via een EventSubscriber op OnAfterValidateItemFunction van de "Purchase Line" tabel (4PS event). Wanneer een artikel wordt gevalideerd op een inkooporderregel, wordt het serviceordernummer of projectnummer als prefix toegevoegd aan de omschrijving (format: SO-12345 / Artikelomschrijving).
Voorwaarden:
- Explora Setup veld "Add SO/Project to Purch Line" moet aanstaan
- "Service Order No." of "Job No." moet gevuld zijn op de inkooporderregel
- Er moet een artikel op de regel staan
Git-onderzoek
De TC-4934 code is niet gewijzigd sinds de originele merge (commit 611f43b, 29 oktober 2025). Geen enkele commit heeft de Purchase-region aangepast.
Oorzaak
Het event OnAfterValidateItemFunction is deprecated door 4PS omdat het gekoppeld was aan het oude "Item No." veld op de Purchase Line tabel. Dit veld bestaat niet meer in de huidige versie. Het event wordt daardoor niet meer gefired, waardoor de subscriber stilzwijgend stopte met werken.
Oplossing
Het event is vervangen door OnAfterValidateNoPurchaseLine, het nieuwe 4PS event dat fired wanneer het "No." veld (de opvolger van "Item No.") wordt gevalideerd.
Wijzigingen
Bestand: app/src/codeunit/Cod60001.EventsExplora.al
| Onderdeel | Oud | Nieuw |
|---|---|---|
| Event | OnAfterValidateItemFunction |
OnAfterValidateNoPurchaseLine |
| Parameters | var PurchaseLine |
var PurchaseLine, var xPurchaseLine, var TempPurchaseLine temporary, PurchaseHeader |
| Item check | PurchaseLine.GetItemNo() = '' |
PurchaseLine."No." = '' |
De logica blijft identiek: als er een serviceordernummer of projectnummer op de regel staat, wordt dit als prefix aan de omschrijving toegevoegd.
Status
- Oorzaak vastgesteld: deprecated 4PS event
- Fix geïmplementeerd: event subscriber omgezet naar
OnAfterValidateNoPurchaseLine - Testen op testomgeving
- Deployen naar productie
TC-4934: Serviceordernummer op inkooporderregel werkt niet meer
TC-4934: Serviceordernummer op inkooporderregel werkt niet meer
Datum: 2026-03-25 Status: Fix geïmplementeerd, testen op testomgeving
Melding
De omschrijving op inkooporderregels werd niet meer aangevuld met het serviceordernummer of projectnummer als prefix.
Oorzaak
Het 4PS event OnAfterValidateItemFunction op de Purchase Line tabel is verwijderd in een recente 4PS update. Dit event was gekoppeld aan het oude "Item No." veld dat deprecated is. Onze EventSubscriber compileerde nog wel, maar werd nooit meer aangeroepen.
Oplossing
Event subscriber omgezet van OnAfterValidateItemFunction naar OnAfterValidateNoPurchaseLine in Cod60001.EventsExplora.al. Ook GetItemNo() vervangen door "No.".
Bestanden
app/src/codeunit/Cod60001.EventsExplora.al(regels 154-178)
Leerpunten
- Deprecated 4PS events geven geen compilatiefout, ze stoppen stilzwijgend met werken
- Bij "functionaliteit werkt niet meer" zonder codewijzigingen: altijd checken of het onderliggende event nog bestaat
- 4PS source broncode opvragen en doorzoeken is de snelste manier om dit te bevestigen
- Zie ook:
_DOCS/4PS-Concepten/purchase-line-validate-no-event.md