WorkOrder (Werkorder / Project / Stop)
De WorkOrder-entiteit wordt gebruikt voor het bundelen van jobs in projecten, deelprojecten en stops. Een WorkOrder fungeert als container met budgetbewaking en voortgangsregistratie. Let op: in Ultimo-terminologie is "WorkOrder" niet hetzelfde als een job/werkorder in de dagelijkse betekenis.
Entiteitsnaam: WorkOrder
Databasetabel: WorkOrder
Primaire sleutel: WOID (nvarchar 9)
Contextsbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| 0 | WorkOrderContext.None | Standaard |
| 1 | WorkOrderContext.Standard | Standaard |
| 2 | WorkOrderContext.Change | Wijziging |
| 4 | WorkOrderContext.Subproject | Deelproject |
| 8 | WorkOrderContext.Stop | Stop |
Statussenbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| -1 | WorkOrderStatus.Trash | Trash |
| 0 | WorkOrderStatus.None | None |
| 1 | WorkOrderStatus.Created | Open |
| 2 | WorkOrderStatus.Approved | Goedgekeurd |
| 4 | WorkOrderStatus.Active | Actief |
| 16 | WorkOrderStatus.Finished | Gereed |
| 32 | WorkOrderStatus.Closed | Gesloten |
| 8192 | WorkOrderStatus.Postponed | Uitgesteld |
Belangrijkste propertiesbewerken
| Property | Type | Kolom | Nullable | Omschrijving |
|---|---|---|---|---|
| Id | UltimoString(9) | WOID | Nee | WorkOrder-ID |
| Description | UltimoString(200) | WODESCR | Ja | Omschrijving |
| BudgetOriginal | CompanyMoney | WOBUDGETORG | Nee | Oorspronkelijk budget |
| BudgetMutation | CompanyMoney | WOBUDGETMUTATION | Nee | Budgetmutaties (readonly) |
| BudgetTotal | CompanyMoney | WOBUDGETTOTAL | Nee | Totaal budget (readonly/computed) |
| CostTotal | CompanyMoney | WOCOSTTOTAL | Nee | Totale kosten (readonly/computed) |
| CalculationTotal | CompanyMoney | WOCALCTOTAL | Nee | Totaal berekend (readonly/computed) |
| PercentageComplete | Decimal | WOPERCCOMPLETE | Nee | Voortgangspercentage |
| Duration | Decimal | WODURATION | Nee | Doorlooptijd |
| Hours | Decimal | WOHOURS | Nee | Gerealiseerde uren (readonly) |
| HoursCalculated | Decimal | WOHOURSCALC | Nee | Berekende uren (readonly) |
| ScheduledStartDate | DateTime? | WOSCHSTARTDATE | Ja | Geplande startdatum |
| TargetDate | DateTime? | WOTARGETDATE | Ja | Streefdatum |
| AutoClose | Boolean | WOAUTOCLOSE | Nee | Auto-sluiten als alle jobs klaar zijn |
| SortOrder | Int32 | WOSORTORDER | Nee | Sorteervolgorde |
| Text | UltimoString | WOTEXT | Ja | Tekst |
| ToSpendForecast | CompanyMoney | WOTOSPENDFORECAST | Nee | Prognose nog te besteden |
Functionaliteit & property-gedragbewerken
Veel WorkOrder-properties worden niet alleen handmatig ingevuld, maar door workflows berekend of overgenomen vanuit bovenliggende structuren. Onderstaande paragrafen beschrijven het gedrag van de meest relevante properties; gebruik lookup_property_usage("WorkOrder", "<property>") voor de volledige, actuele lijst workflows per property en lookup_workflow("<naam>") voor de bijbehorende XML.
Status(recordstatus) — De levenscyclus van een WorkOrder verloopt via een vaste reeks gateworkflows, analoog aan de Job. De overgangsworkflowsWorkOrder_Approve,Workorder_PreActivate,WorkOrder_PreClosebewaken respectievelijk de stap naar Goedgekeurd (2), Actief (4) en Gesloten (32). Projectworkflows propageren statuswijzigingen omhoog:Project_PreActive,Project_PreApproved,Project_PreFinishenProject_PreCloselezen deStatusvan de bijbehorende WorkOrders om te bepalen of een project de gevraagde overgang mag maken. Een WorkOrder blokkkeert zo de statusovergang van het bovenliggende project zolang onderliggende stappen niet zijn afgerond. WorkflowWorkOrder_PostImportzorgt voor correcte statusintialisatie bij importscenario's.ScheduledStartDate&TargetDate— In tegenstelling tot bij Job, waar deze datums door tientallen workflows worden geschreven, kent WorkOrder slechts één directe schrijver voor beide datumvelden:Project_AddOrEditStopWorkOrder. Dit is de centrale workflow die een Stop-WorkOrder (context 8) aanmaakt of bewerkt vanuit een plant-stop op project-niveau, en daarin de planningsdatums doorgeeft vanuit de stop-definitie. Meer dan tien workflows lezen de datums vervolgens om onderliggende jobs te plannen en te valideren — de ketenJob_PlanForStop,Job_PlanForStop_CreateJob,Job_PlanForStop_ValidationsenJob_LinkToStopgebruikenScheduledStartDate/TargetDatevan de WorkOrder als kader waarbinnen nieuwe jobs mogen worden ingepland. Consultanttip: de planningsdatums van een Stop-WorkOrder zijn leidend voor alle jobs erin; pas ze aan op WorkOrder-niveau, niet op job-niveau.Project(bovenliggend project) — DeProject-property wordt nooit direct door een workflow geschreven op WorkOrder: de koppeling wordt vastgelegd bij aanmaak en daarna bewaard. Zeven workflows filteren opProjectom de juiste WorkOrders op te halen:Project_EditStop,Project_PreActive,Project_PreApproved,Project_PreClose,Project_PreFinishenWorkOrder_PreApprovecontroleren of alle onderliggende WorkOrders van een project in de juiste status zijn voordat een projectovergang wordt toegestaan.ActionField1165filtert ook opProjectvoor specifieke stop-gerelateerde acties. Dit mechanisme implementeert de hiërarchische voortgangsbewaking: project → WorkOrder → Job.ProcessFunction— Wordt doorProject_AddOrEditStopWorkOrderovergenomen bij het aanmaken of bewerken van een Stop-WorkOrder. WorkflowsJob_PlanForStopenWorkOrder_CreateJoblezen deProcessFunctionom de juiste context mee te geven aan nieuw aan te maken jobs.WorkOrder_PreApprovefiltert opProcessFunctionals onderdeel van goedkeuringsvalidaties. Dit maakt het mogelijk om werkzaamheden te groeperen per procesfunctie binnen een stop.Priority— Wordt geschreven doorWorkOrder_SetPriorityByImpactAndUrgency, dat de prioriteit berekent op basis van de combinatie vanImpactenUrgency— hetzelfde impact×urgentie-mechanisme dat voor Jobs in ITSM-context wordt gebruikt.WorkOrder_CreateJobSecondWayleest dePriorityvervolgens bij het aanmaken van een nieuwe job vanuit de WorkOrder, zodat de job de prioriteit van de container erft. Consultanttip: bij ITSM-gerelateerde WorkOrders (context Change) wordt de prioriteit dus afgeleid, niet handmatig gekozen.Description&SortOrder— Beide worden doorProject_AddOrEditStopWorkOrdergeschreven bij het aanmaken of updaten van een Stop-WorkOrder.SortOrderbepaalt de volgorde van WorkOrders binnen een stop-gantt of planningsoverzicht; wijzigingen via het gantt-scherm gaan via dezelfde workflow.Descriptionwordt doorJob_PlanForStopen de bijbehorende feedbackworkflows gelezen om de context van de stop te communiceren naar de aangemaakte jobs.Equipment— Wordt doorActionField120geschreven (koppeling van een asset aan de WorkOrder) en direct daarna gelezen om bijWorkOrder_CreateJobSecondWayhet equipment door te zetten naar nieuw aangemaakte jobs. Hierdoor erven jobs die vanuit een WorkOrder worden aangemaakt automatisch het gekoppelde object, inclusief de bijbehorende kostendragers (CostCenter,Department,Site) die viaWorkOrder_CreateJobSecondWayworden meegenomen.
Het volledige, gegenereerde overzicht van álle WorkOrder-properties met hun schrijvende/lezende/filterende workflows staat in reference/properties/WorkOrder.
Relaties met andere entiteitenbewerken
| Property | Verwijst naar | Omschrijving |
|---|---|---|
| Project | project | Bovenliggend project |
| Equipment | equipment | Gekoppeld equipment |
| Employee | employee | Verantwoordelijke medewerker |
| ProjectManagerEmployee | employee | Projectmanager |
| PmWorkOrder | PmWorkOrder | PO-model |
| Priority | Priority | Prioriteit |
| WorkOrderType | WorkOrderType | Werkordertype |
| ProcessFunction | ProcessFunction | Procesfunctie |
| Vendor | Vendor (supplier) | Leverancier |
| CostCenter | CostCenter | Kostenplaats |
| Department | Department | Afdeling |
| Site | Site | Vestiging |
| SkillCategory | SkillCategory | Vakgroep |
| Jobs | List<Job> | Gekoppelde jobs |
| Building | Building | Gebouw |
Tips voor consultantsbewerken
- Stops: Context
Stop(8) wordt gebruikt voor plant-stops/shutdowns waarbij meerdere jobs worden gebundeld. - Deelprojecten: Context
Deelproject(4) is een WorkOrder die onder een project valt. - Budgetbewaking: Het budget wordt bewaakt via
BudgetOriginal+BudgetMutation=BudgetTotal. Kosten worden automatisch opgerold vanuit onderliggende jobs. - Auto-sluiten: Met
AutoClose = truewordt de WorkOrder automatisch gesloten als alle onderliggende jobs zijn afgerond. - Kosten: Alle kostensoorten (uren, materialen, inkoop, extern) worden vanuit de jobs geaggregeerd naar de WorkOrder.
- Prognose: Via
ToSpendForecastkan een inschatting worden gegeven van de nog te verwachten kosten.
Database Detailsbewerken
De tabel dba.WorkOrder bevat 113 kolommen.
Computed columns (berekende velden)bewerken
| Kolom | Formule (vereenvoudigd) | Toelichting |
|---|---|---|
WoBudgetTotal |
WoBudgetOrg + WoBudgetMutation |
Totaal budget -- oorspronkelijk budget plus mutaties |
WoCalcTotal |
WoMatCalc + WoExtCalc + WoTlsCalc + WoResCalc + WoPurchaseRequestCalc + WoPurchCalc |
Totaal berekend -- som van alle begrote kostencomponenten |
WoCostTotal |
WoMatCost + WoExtCost + WoTlsCost + WoLabCost + WoPurchCost + WoMemorandumCost |
Totale werkelijke kosten |
WoInvTotal |
WoEqmInv + WoMatInv + WoExtInv + WoTlsInv + WoLabInv + WoPurchInv + WoIoTermInv |
Totaal gefactureerd |
Consultanttip: De vier computed totaalkolommen geven een compleet financieel overzicht: budget vs. begroot vs. werkelijk vs. gefactureerd. Gebruik deze voor budgetbewaking en financiele rapportages.
Kolommen gezet door triggers (selectie van 29 trigger-kolommen)bewerken
Kostengerelateerde kolommen (alle decimal(21,5), geaggregeerd vanuit onderliggende Jobs):
| Kolom | Toelichting |
|---|---|
WoMatCalc / WoMatCost / WoMatInv |
Materiaalkosten: berekend / werkelijk / gefactureerd |
WoExtCalc / WoExtCost / WoExtInv |
Externe kosten |
WoTlsCalc / WoTlsCost / WoTlsInv |
Gereedschapskosten |
WoResCalc |
Resourcekosten (berekend) |
WoLabCost / WoLabInv |
Arbeidskosten / gefactureerd |
WoPurchaseRequestCalc / WoPurchCalc / WoPurchCost / WoPurchInv / WoPurchCommit |
Inkoopkosten (divers) |
WoMemorandumCost |
Pro-memorie kosten |
WoEqmInv / WoIoTermInv / WoIOFixedPriceCost / WoIoTermCost |
Facturatie- en uitbestedingskosten |
WoBudgetMutation |
Budgetmutaties (uit WorkOrderBudgetSuppl) |
Overige trigger-kolommen:
| Kolom | Type | Toelichting |
|---|---|---|
WoHours / WoHoursCalc / WoHoursInv |
decimal(21,2) | Uren: gerealiseerd / berekend / gefactureerd |
WoHoursToPlan |
decimal(21,2) | Nog te plannen uren |
WoTotalHoursPlanned |
decimal(21,2) | Totaal geplande uren |
WoPercComplete |
decimal(21,2) | Voortgangspercentage |
Belangrijke defaultsbewerken
| Kolom | Default | Toelichting |
|---|---|---|
WoContext |
1 (Standaard) |
Standaard context |
WoRecStatus |
0 (None) |
Standaard status |
WoAutoClose |
0 (false) |
Niet automatisch sluiten |
WoBudgetOrg |
0 |
Geen initieel budget |
WoBudgetMutation |
0 |
Geen mutaties |
WoReportState |
0 |
Rapportagestatus initieel |
WoRecCreateDate |
sysdatetimeoffset() |
Aanmaakdatum automatisch |
Triggers en externe triggersbewerken
WorkOrder heeft 3 eigen triggers (UPDATE, DELETE-summary, INSERT/UPDATE-summary) en wordt beinvloed door 5 externe triggers:
- Job-triggers: Bij INSERT/UPDATE/DELETE van jobs worden alle kosten- en urenkolommen opnieuw geaggregeerd
- WorkOrderBudgetSuppl-triggers: Budgetsuppleties updaten
WoBudgetMutation
Consultanttip: De WorkOrder-tabel aggregeert alle kosten vanuit onderliggende Jobs. Dit betekent dat de financiele kolommen op WorkOrder altijd actueel zijn, maar ook dat elke Job-mutatie een UPDATE op de WorkOrder triggert. Bij grote aantallen jobs onder een WorkOrder kan dit performance-impact hebben.
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("WorkOrder")· reference/entities/WorkOrder Alle properties, contexts en statussen. Bron:Entities.xml. - DB-schema —
lookup_table_schema("WorkOrder")· reference/tables/WorkOrder Alle DB-kolommen, triggers, computed columns en defaults. Bron:database-schema.json. - Gerelateerde workflows —
find_workflows("", entity="WorkOrder")Alle Before/After Save events en andere workflow-ActionFields voor WorkOrder. Bron:workflows.xml. - Property-gebruik —
lookup_property_usage("WorkOrder", "ScheduledStartDate")· reference/properties/WorkOrder Toont welke workflows de planningsdatums van WorkOrder schrijven, lezen of filteren; onmisbaar bij stop-planningsproblemen. Bron:workflows.xml. - Workflow-XML van een vuller —
lookup_workflow("Project_AddOrEditStopWorkOrder")Volledige logica van de centrale stop-aanmaakworkflow dieScheduledStartDate,TargetDate,Description,ProcessFunctionenSortOrderschrijft. Bron:workflows.xml.
Zie ookbewerken
- project - Projecten (bovenliggend niveau)
- job - Werkorders binnen de WorkOrder
- pm-workorder - PO-modellen die WorkOrders gebruiken
- equipment - Assets