Article (Artikel)
De Article-entiteit beheert alle magazijnartikelen in Ultimo. Dit omvat reservedelen, verbruiksmaterialen, cateringartikelen en IT-artikelen. Artikelen zijn gekoppeld aan magazijnen, leveranciers en kunnen als reserveonderdeel aan equipment worden toegewezen.
Entiteitsnaam: Article
Databasetabel: Article
Primaire sleutel: ARTID (nvarchar 9)
Contextsbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| 0 | ArticleContext.None | Standaard |
| 1 | ArticleContext.Standard | Standaard |
| 2 | ArticleContext.Catering | Cateringartikelen |
| 4 | ArticleContext.Menu | Menu Artikel |
| 8 | ArticleContext.IT | IT |
| 16 | ArticleContext.Refueling | Tankbeurten |
| 32 | ArticleContext.Inventory | Inventarisartikel |
Statussenbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| -1 | ArticleStatus.Trash | Trash |
| 0 | ArticleStatus.None | None |
Belangrijkste propertiesbewerken
| Property | Type | Kolom | Nullable | Omschrijving |
|---|---|---|---|---|
| Id | UltimoString(9) | ARTID | Nee | Artikel-ID |
| Description | UltimoString(200) | ARTDESCR | Ja | Omschrijving |
| TypeNumber | UltimoString(40) | ARTTYPENR | Ja | Typenummer |
| Stock | Decimal | ARTSTOCK | Nee | Huidige voorraad |
| MinimumStock | Decimal | ARTMINIMUM | Nee | Minimumvoorraad |
| MaximumStock | Decimal | ARTMAXIMUM | Nee | Maximumvoorraad |
| PurchasePrice | CompanyMoney | ARTPURCHPRICE | Nee | Inkoopprijs |
| PurchaseLevel | Decimal | ARTPURCHLEVEL | Nee | Bestelniveau |
| LeadTime | Int16 | ARTLEADTIME | Nee | Levertijd (dagen) |
| RegisterStock | Boolean | ARTREGISTERSTOCK | Nee | Voorraad registreren (default: 1) |
| Purchase | Boolean | ARTPURCH | Nee | Te bestellen |
| ReservedQuantity | Decimal | ARTRESQTY | Nee | Gereserveerde hoeveelheid |
| UnitDescription | UltimoString(200) | ARTUNITDESCR | Ja | Eenheid |
| ServingOutUnitDescription | UltimoString(9) | ARTSERVOUTUNT | Ja | Uitgifteeenheid |
| AbcCode | UltimoString(2) | ARTABC | Ja | ABC-code |
| ShowInWebShop | Boolean | ARTSHOWINWEBSHOP | Nee | Tonen in webshop |
| Category | UltimoString(2) | ARTCATEGORY | Ja | Categorie |
Functionaliteit & property-gedragbewerken
Veel Article-properties worden niet alleen handmatig ingesteld, maar door workflows bewaakt, berekend of opnieuw gezet bij configuratiewijzigingen. Onderstaande paragrafen beschrijven het gedrag van de belangrijkste velden; gebruik lookup_property_usage("Article", "<property>") voor de volledige, actuele lijst workflows per property en lookup_workflow("<naam>") voor de XML.
InventoryMethodenUseOwnInventoryMethod— De voorraadmethode bepaalt hoe Ultimo inkoopadvies en batchbeheer afhandelt voor een artikel.Article_SetInventoryMethodis de centrale orchestrator: zodra de methode wijzigt, toont hij een dialoogvenster (Dialog_Article_SetInventoryMethod) waarmee de gebruiker kiest of het artikel de methode van zijn artikelgroep overneemt (UseOwnInventoryMethod = false) of een eigen methode krijgt. De vlagDeviateFromInventoryMethodregistreert of het artikel afwijkt van de groepsinstelling. Aan de groepskant bewaaktArticleGroup_UpdateInventoryMethodWhenAllArticlesHaveSameInventoryMethodof alle artikelen in een groep dezelfde methode hebben; zo ja, dan wordt de groepsinstelling automatisch bijgewerkt. Consultanttip: wijzig de inventarismethode nooit direct in de database — de workflow verzorgt ook de validatie opMinimumNumberOfDaysBetweenDeliveryAndExpiryDatevoor artikelen met een vervaldatum.RegisterStock— Deze Boolean bestuurt of Ultimo fysieke voorraad bijhoudt voor het artikel.Article_ToggleRegisterStockverwerkt de schakelaar: alsRegisterStockwordt uitgezet terwijl er nog geenInventoryMethodis, maakt de workflow automatisch WarehouseServeOut-boekingen aan om de resterende voorraad uit alle magazijnlocaties weg te boeken. Staat er wél eenInventoryMethod, dan worden openstaande batches verwerkt.RegisterStockwordt door 41 workflows gelezen — onder andere bij het aanmaken van een magazijnlocatiekoppeling (Article_AddWarehouseLocation) en bij bestelprocesvalidaties — wat het tot een van de meest invloedrijke velden maakt.Purchase,PurchaseLevelenMaximumStock— Deze drie velden sturen het automatisch inkoopadvies aan.Article_ResetArticlePurchasezet alle drie op nul/false wanneer bij de systeeminstellingManageStockPerWarehousewordt omgeschakeld en een artikel geen magazijnkoppeling meer heeft. De bredere workflowArticle_ActionField1106_UpdateWarehouse(systeeminstelling-toggle) itereert over alle artikelen en roeptArticle_ResetArticlePurchaseaan voor artikelen zonderArticleWarehouse. Consultanttip: als na een instellingswijziging bestelniveaus verdwenen zijn, controleer dan of deze workflow correct is uitgevoerd.PurchasePrice,Raise,ChargeRaiseInternalenChargeRaiseExternal— Prijzen en opslagpercentages bepalen de kostprijsberekening bij materiaalgebruik op een werkorder (viaJobMaterial_UpdateMaterialCost) en bij magazijn-uitgifte (WarehouseServeOutline_PreApprove).ActionField1775(toggleUltimoSettings.PurchasePricePerSite) kopieert bij activering de artikel-niveau-prijzen naar alleArticleSite-records en leegt daarna de waarden op artikel-niveau. Vanaf dat moment zijnPurchasePrice,Raise,ChargeRaiseInternalenChargeRaiseExternalgeorganiseerd per vestiging in plaats van per artikel. Bij import viaREST_Article_ImportofArticle_ImportMicrosoftDynamicsworden deze velden direct gevuld.VendorPerSiteen voorkeursleverancier —Article_GetPreferredVendoris de lookup-workflow die bij inkoopregelverwerking (PurchaseLine_ValidateAndCopyArticleData_ArticleVendor) de juiste leverancier ophaalt. De logica is: alsUltimoSettings.StockLevelPerSiteénArticle.VendorPerSiteallebeitruezijn, wordt de voorkeursleverancier opgezocht inArticleSiteVendor(per vestiging); anders inArticleVendor(artikel-breed). De keuze voor vestigingsspecifieke leveranciers (VendorPerSite = true) wordt gezet viaActionField660. Consultanttip: zetVendorPerSitealleen aan als de klant daadwerkelijk per vestiging inkoopt bij andere leveranciers; de extra configuratielast is aanzienlijk.ReplacedByArticle— Wordt gezet doorActionField1801enActionField1807wanneer een artikel wordt vervangen door een nieuwere versie. Workflows die een verouderd artikel tegenkomen (bijv.ActionField1803) lezen dit veld om automatisch naar het vervangartikel door te verwijzen. ZolangReplacedByArticlegevuld is, blokkeertActionField1801verdere vervangingsketens via een filtercheck.Stock(voorraad) —Stockwordt door de database-triggers bijgehouden op basis van transacties, maar drie workflows raken het direct:Article_PostImportenArticle_PreImportgebruiken het voor beginstanden bij bulkimport, enArticle_ToggleRegisterStockleegt het impliciet bij het uitschakelen van voorraadregistratie. De berekende kolomArtStckStatCode(B/F/E/V) is direct afgeleid vanStock,PurchaseLevel,ReservedQuantityen lopende bestelhoeveelheden — zie de tabel in Database Details voor de formule.
Het volledige, gegenereerde overzicht van álle Article-properties met hun schrijvende/lezende/filterende workflows staat in reference/properties/Article.
Relaties met andere entiteitenbewerken
| Property | Verwijst naar | Omschrijving |
|---|---|---|
| ArticleGroup | ArticleGroup | Artikelgroep |
| Vendor | Vendor (supplier) | Standaardleverancier |
| Manufacturer | Vendor (supplier) | Fabrikant |
| PreferredVendor | ArticleVendor | Voorkeursleverancier |
| Vendors | List[ArticleVendor] | Alle leveranciers |
| Warehouse | Warehouse | Standaardmagazijn |
| ArticleWarehouses | List[ArticleWarehouse] | Alle magazijnen |
| Fuel | Fuel | Brandstoftype |
| ReplacedByArticle | Article | Vervangen door artikel |
| EquipmentSpareParts | List[EquipmentSparePart] | Equipment reservedelen |
| EquipmentTypeSpareParts | List[EquipmentTypeSparePart] | Equipmenttype reservedelen |
| Site | Site | Vestiging |
| Employee | employee | Verantwoordelijke medewerker |
Tips voor consultantsbewerken
- Voorraadregistratie: Niet alle artikelen hoeven voorraad te registreren. Zet
RegisterStock = falsevoor diensten of niet-fysieke artikelen. - ABC-analyse: Via
AbcCodeen de ABC-bepalingsfunctie kan voorraadprioritering worden ingericht. - Leveranciers: Een artikel kan meerdere leveranciers hebben via de
ArticleVendor-koppeling, met een voorkeursleverancier. - Reservedelen: Koppel artikelen als reserveonderdeel aan equipment(types) via
EquipmentSparePart. - Webshop: Met
ShowInWebShop = truewordt het artikel beschikbaar in de selfservice-webshop. - Artikelvervanging: Gebruik
ReplacedByArticlewanneer een artikel is vervangen door een nieuwere versie.
Database Detailsbewerken
De tabel dba.Article bevat 95 kolommen. Hieronder de belangrijkste technische details.
Computed columns (berekende velden)bewerken
| Kolom | Formule | Toelichting |
|---|---|---|
ArtPurchasePrepQty |
ArtPchlPrepQuantity + ArtPchrlPrepQuantity |
Totale hoeveelheid in voorbereiding (bestelling + bestelaanvraag) |
ArtStckStatCode |
Complexe CASE-expressie op basis van ArtStock, ArtPurchLevel, ArtResQty, ArtPurchQty, ArtRepQty |
Voorraadstatuscodering: B = onder bestelniveau en onvoldoende bijbesteld, F = onder bestelniveau maar voldoende bijbesteld, E = boven bestelniveau maar toekomstig tekort, V = voldoende voorraad |
Consultanttip: De
ArtStckStatCodeis zeer nuttig voor dashboards en rapportages over voorraadstatus. De formule houdt rekening met gereserveerde hoeveelheden, lopende bestellingen en reparatie-hoeveelheden.
Kolommen gezet door triggersbewerken
| Kolom | Type | Toelichting |
|---|---|---|
ArtStock |
decimal(21,2) | Actuele voorraad -- bijgewerkt bij elke voorraadmutatie |
ArtPurchQty |
decimal(21,2) | Hoeveelheid in bestelling (uit PurchaseLine) |
ArtRepQty |
decimal(21,2) | Hoeveelheid in reparatie |
ArtResQty |
decimal(21,2) | Gereserveerde hoeveelheid (uit ReservableObject) |
ArtEqmQty |
int | Aantal gekoppelde equipments |
ArtPchlPrepQuantity |
decimal(21,2) | Hoeveelheid in voorbereiding op bestelregels |
ArtPchrlPrepQuantity |
decimal(21,2) | Hoeveelheid in voorbereiding op bestelaanvraagregels |
ArtResoId |
nvarchar(11) | Reserveerbaar object-ID |
ArtSitId |
nvarchar(8) | Vestiging |
Belangrijke defaultsbewerken
| Kolom | Default | Toelichting |
|---|---|---|
ArtRegisterStock |
1 (true) |
Voorraadregistratie standaard aan |
ArtPurch |
1 (true) |
Artikel standaard bestelbaar |
ArtStock |
0 |
Beginvoorraad nul |
ArtPurchLevel |
0 |
Bestelniveau (moet ingesteld worden) |
ArtLeadTime |
0 |
Levertijd (moet ingesteld worden) |
ArtShowInWebShop |
0 (false) |
Niet zichtbaar in webshop standaard |
ArtRecCreateDate |
sysdatetimeoffset() |
Aanmaakdatum automatisch gevuld |
Triggers en externe triggersbewerken
Article heeft 3 eigen triggers (INSERT, UPDATE, INSTEAD OF DELETE) en wordt beinvloed door 9 externe triggers:
- PurchaseLine-triggers: Bestellijnen updaten
ArtPurchQtyenArtPchlPrepQuantity - PurchaseRequestLine-triggers: Bestelaanvraagregels updaten
ArtPchrlPrepQuantity - ArticleSite-triggers: Vestigingskoppelingen updaten
ArtSitId - Equipment-triggers: Bij koppeling als reserveonderdeel wordt
ArtEqmQtybijgewerkt - ReservableObject-triggers: Synchronisatie reserveerbaar object
Consultanttip: Het INSTEAD OF DELETE-trigger voorkomt directe verwijdering van artikelen. De voorraadgerelateerde trigger-kolommen zijn cruciaal voor correct voorraadbeheer -- pas deze nooit handmatig aan in de database.
Brondatabewerken
Let op: De wiki-samenvatting hierboven toont een curated subset van properties en praktische consultant-tips. Voor ground truth (exacte kolomnamen, alle properties, defaults, triggers) gebruik de onderstaande tools.
- Entity-definitie —
lookup_entity("Article")· reference/entities/Article Alle properties, contexts en statussen. Bron:Entities.xml. - DB-schema —
lookup_table_schema("Article")· reference/tables/Article Alle DB-kolommen, triggers, computed columns en defaults. Bron:database-schema.json. - Gerelateerde workflows —
find_workflows("", entity="Article")Alle Before/After Save events en andere workflow-ActionFields voor Article. Bron:workflows.xml. - Property-gebruik —
lookup_property_usage("Article", "InventoryMethod")· reference/properties/Article Welke workflows deInventoryMethod-,RegisterStock- en prijsvelden lezen/schrijven/filteren — inclusief alle 71 readers vanInventoryMethoden de 41 readers vanRegisterStock. Bron:workflows.xml. - Workflow-XML van een vuller —
lookup_workflow("Article_SetInventoryMethod")Volledige logica van de inventarismethode-orchestrator: dialoogkeuze,UseOwnInventoryMethod-vlag, validatie op vervaldagen en terugkoppeling naar de artikelgroep. Bron:workflows.xml.
Zie ookbewerken
- equipment - Assets waarvoor reservedelen gelden
- purchase - Bestellingen van artikelen
- purchase-request - Bestelaanvragen van artikelen
- supplier - Leveranciers