JobMaterial (Materiaalregel)
De JobMaterial-entiteit registreert materiaalregels op een job. Dit omvat zowel geplande als daadwerkelijk verbruikte materialen. Samen met JobResource (urenregistratie) vormt dit de kern van de kostenregistratie op werkorders.
Entiteitsnaam: JobMaterial
Databasetabel: JobMaterial
Primaire sleutel: JOBMJOBID + JOBMLINEID (composiet)
Belangrijkste propertiesbewerken
| Property | Type | Kolom | Omschrijving |
|---|---|---|---|
| Id.Job | Job | JOBMJOBID | Verwijzing naar job |
| Id.LineId | UltimoString(9) | JOBMLINEID | Regelnummer |
| Article | Article | JOBMARTID | Artikel |
| PlannedQuantity | Decimal | JOBMPLANQTY | Geplande hoeveelheid |
| QuantityOut | Decimal | JOBMQTY | Verbruikte hoeveelheid (uit) |
| QuantityIn | Decimal | JOBMQTYIN | Retour hoeveelheid (in) |
| ReservedQuantity | Decimal | JOBMRESQTY | Gereserveerde hoeveelheid |
| PickedQuantity | Decimal | JOBMPICKEDQUANTITY | Gepickte hoeveelheid |
| Price | CompanyMoney | JOBMPRICE | Stuksprijs |
| Cost | CompanyMoney | JOBMCOST | Kosten (berekend) |
| TotalPrice | CompanyMoney | JOBMTOTALPRICE | Totaalprijs (berekend) |
| BookDate | Date? | JOBMBOOKDATE | Boekdatum |
| Warehouse | Warehouse | JOBMWHSID | Magazijn |
| WarehouseLocation | WarehouseLocation | JOBMWHSLWHSID, JOBMWHSLCODE | Magazijnlocatie |
| CostCenter | CostCenter | JOBMCCRID | Kostenplaats |
| CostType | CostType | JOBMCSTTID | Kostensoort |
| Equipment | Equipment | JOBMEQMID | Equipment |
| JobPlan | JobPlan | JOBMJPID | Werkplan |
Functionaliteit & property-gedragbewerken
Veel JobMaterial-properties worden niet handmatig ingevuld maar door workflows aangemaakt, gevuld of bijgewerkt. Onderstaande paragrafen beschrijven het gedrag van de belangrijkste velden; gebruik lookup_property_usage("JobMaterial", "<property>") voor de volledige, actuele lijst workflows per property en lookup_workflow("<naam>") voor de XML.
Aanmaken van de regel (
Id,Article,Status) — Een JobMaterial-regel wordt op vier manieren aangemaakt: handmatig via de UI, vanuit de mobiele app (Mobile_Article_AddJobMaterial), vanuit een magazijnuitgifte (WarehouseServeOutline_CreateJobMaterial) of als splitsregel bij picklijstverwerking (PickList_SplitJobMaterial).Mobile_Article_AddJobMaterialstart met eenInsert, zet directArticle,Customer(overgenomen van de job) enPrice(opgehaald viaArticle_GetPurchasePrice) en roept aansluitendJobMaterial_SetInternalChargeValuesaan voor doorbelastingsopbouw.WarehouseServeOutline_CreateJobMaterialmaakt de regel aan vanuit een uitgifte-document en vult ookBookDate,Warehouse,WarehouseLocationenQuantityOutin één transactie. Consultanttip: bij magazijnuitgifte-gedreven regels zijnQuantityOutenBookDateal ingevuld bij aanmaak; bij handmatige of mobiele regels moet de uitgifte nog volgen.Defaults & kostendragers (
Warehouse,WarehouseLocation,Price,CostCenter,CostType) —JobMaterial_SetDefaultsbepaalt het standaard magazijn en de magazijnlocatie op basis van het artikel en de vestiging van de job (inclusief een dialoog alsStockLevelPerSiteactief is).JobMaterial_UpdateMaterialCostroept internJobMaterial_TakeOverExpenseCarriersFromJobaan, die viaAssignWhenEmptyde kostenplaats, kostensoort, klant, afdeling, equipment, procesfunctie, project en vakgroep overpakt van de bovenliggende job — maar alleen als de regel die velden nog leeg heeft. Dit mechanisme zorgt dat kosten standaard op de juiste dragers landen zonder dat de medewerker deze handmatig hoeft in te vullen. DePricewordt gezet doorJobMaterial_ReserveArticleenJobMaterial_SetDefaultsviaArticle_GetPurchasePrice; later kanPriceMutationLine_UpdateJobMaterialde prijs corrigeren bij een prijsmutatie.Reservering (
ReservedQuantity,ArticleReserved) — Het reserveringsmechanisme loopt viaJobMaterial_ReserveArticle: zodraArticleReservedopTruestaat énReservedQuantitynog 0 is, wordtArticle_Reserveaangeroepen metPlannedQuantityals te reserveren hoeveelheid.JobMaterial_AdjustReservationpast de reservering aan bij een hoeveelheidswijziging;JobMaterial_ClearReservationmaakt de reservering vrij. Bij het verwijderen van de regel (JobMaterial_PreTrash) wordt automatisch de reservering vrijgegeven.ActionField376leest én schrijft zowelArticleReservedalsReservedQuantity— typisch de actie "Reserveer materiaal" op het job-scherm. Consultanttip: annuleer je een goedgekeurde regel met openstaande reservering maar zonder verbruik, dan handeltJobMaterial_PostApprovede vrijgave af viaJobMaterial_ClearReservation.Picklijst-splitsing (
PickedQuantity,PlannedQuantity,ReservedQuantity) — Wanneer een picklijst slechts een deel van de geplande hoeveelheid pickt, splitstPickList_SplitJobMaterialde originele regel: er wordt een nieuwe JobMaterial aangemaakt (kopie van de originele),PickedQuantityenQuantityOutworden op de originele regel bevroren op de gepickte hoeveelheid, en het resterend verschil (planned − picked, reserved − picked) gaat naar de nieuwe splitsregel.PickListLine_PreProcessschrijft vervolgensPickedQuantity,Warehouse,WarehouseLocationenQuantityOutterug op de gekoppelde JobMaterial-regel.PickListLine_SplitJobMaterialIfNeededbewaakt of splitsing nodig is vóór goedkeuring van een picklistline.Uitgifte via magazijn (
QuantityOut,QuantityIn,WarehouseServeOutline,BookDate) — Magazijnuitgifte vindt plaats via een WarehouseServeOut-document.WarehouseServeOutline_UpdateJobMaterialschrijft na goedkeuring de definitieveQuantityOut,QuantityIn,Price,BookDate,ChargeRaisePercentageenInvoiceQuantityterug op de materiaalregel, en koppelt deWarehouseServeOutline-referentie. BijJobMaterial_PostApprovewordt, alsWarehouseServeOutlinegevuld is, de bijbehorende WarehouseServeOut automatisch goedgekeurd (instelbaar viaSettings.JobMaterial.ApproveWarehouseServeOut) en de reservering verwerkt viaJobMaterial_ProcessArticleReservation. Dit berekent de werkelijk onttrokken hoeveelheid (QuantityOut − QuantityIn, gemaximeerd op ReservedQuantity) en verlaagt de voorraadreservering dienovereenkomstig.Goedkeuring & status (
Status,JobMaterial_PostApprove) — De statusovergang naarGoedgekeurd(2) wordt bewaakt doorJobMaterial_PostApprove(ChangeStatus-workflow). Naast het verwerken van de reservering voegt deze workflow ook het artikel toe aan de stuklijst van het equipment (JobMaterial_AddArticleToBillOfMaterials) als de job en het artikel daarvoor geconfigureerd zijn.Mobile_JobMaterial_SetAndApproveMaterialcombineert het instellen van hoeveelheden met een directe statuswijziging naar Goedgekeurd in één mobiele actie.WarehouseServeOut_PostImportenWarehouseServeOutline_PostApprovekunnen ook de status via import of bulkgoedkeuring zetten.Voortgang materiaalstatus op de job (
ArticleReserved,ReservedQuantity,PickedQuantity) — De workflowsJob_UseStockProgressStatus_DetermineCompletelyPicked,Job_UseStockProgressStatus_DetermineWaitingForMaterialenJob_UseStockProgressStatus_GetReservedJobMateriallezen de JobMaterial-regels om te bepalen of alle materialen gereserveerd, gepickt of beschikbaar zijn. Als alle regels volledig gepickt zijn, schakeltJob_UseStockProgressStatus_DetermineCompletelyPickedde progressstatus van de job naarProgressStatusIdMaterialPicked. Dit stuurt de "wachten op materiaal"-voortgangsstatus op de job aan, relevant bij instellingen metUseStockProgressStatus = True.
Het volledige, gegenereerde overzicht van álle JobMaterial-properties met hun schrijvende/lezende/filterende workflows staat in reference/properties/JobMaterial.
Statussenbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| -1 | JobMaterialStatus.Trash | Prullenbak |
| 0 | JobMaterialStatus.None | Geen |
| 1 | JobMaterialStatus.Created | Open |
| 2 | JobMaterialStatus.Approved | Goedgekeurd |
| 512 | JobMaterialStatus.InvoiceProposal | Factuurvoorstel |
| 1024 | JobMaterialStatus.InvoiceZero | 0 factureren |
| 2048 | JobMaterialStatus.InvoiceNextRun | Volgende run |
| 8192 | JobMaterialStatus.Postponed | Uitgesteld |
| 16384 | JobMaterialStatus.Invoiced | Gefactureerd |
JobResource (Urenregel)bewerken
De JobResource-entiteit registreert uren/capaciteit op een job.
Entiteitsnaam: JobResource
Primaire sleutel: JOBRJOBID + JOBRLINEID (composiet)
| Property | Type | Kolom | Omschrijving |
|---|---|---|---|
| Id.Job | Job | JOBRJOBID | Verwijzing naar job |
| Id.LineId | UltimoString(9) | JOBRLINEID | Regelnummer |
| Craftsman | Craftsman | JOBRCRMID | Vakman |
| HoursCalculated | Decimal | JOBRHOURSCALC | Berekende uren |
| QuantityCalculated | Decimal | JOBRQTYCALC | Berekend aantal |
| TariffCalculated | CompanyMoney | JOBRTARIFFCALC | Berekend tarief |
| CostCalculated | CompanyMoney | JOBRCOSTCALC | Berekende kosten |
| BookDate | Date? | JOBRBOOKDATE | Boekdatum |
| Week | WeekOfYear | JOBRWEEK | Weeknummer |
| SkillCategory | SkillCategory | JOBRSKCID | Vakgroep |
| JobPlan | JobPlan | JOBRJPID | Werkplan |
Statussen JobResource: Open (1), Te plannen (4), Factuurvoorstel (512), 0 factureren (1024), Volgende run (2048), Uitgesteld (8192), Gefactureerd (16384).
Relaties met andere entiteitenbewerken
| Verwijst naar | Omschrijving |
|---|---|
| job | Bovenliggende werkorder |
| Article / warehouse | Artikel en magazijn voor materiaaluitgifte |
| pick-list | PickListLines gekoppeld aan materiaalregel |
| cost-center / cost-type | Financiele toewijzing |
| job-plan | Werkplan waaruit de regel is gegenereerd |
| equipment / process-function | Asset waarop kosten worden geboekt |
Tips voor consultantsbewerken
- Geplande vs. verbruikte hoeveelheden:
PlannedQuantityis de planning vanuit het werkplan;QuantityOutis het werkelijke verbruik na magazijnuitgifte. - Reserveringen: Bij
ArticleReserved = trueis de voorraad gereserveerd. Annuleren van de regel maakt de reservering vrij. - Factureringscyclus: Materiaal- en urenregels doorlopen een factureringscyclus (Factuurvoorstel -> Gefactureerd) voor doorbelasting aan klanten.
- TransferNextTime: Vlag voor export naar externe systemen (ERP-koppeling).
- Cost vs. TotalPrice:
CostenTotalPricezijn berekende (computed) velden; wijzig alleenPriceenQuantityOut.
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("JobMaterial")· reference/entities/JobMaterial Alle properties, contexts en statussen. Bron:Entities.xml. - Gerelateerde workflows —
find_workflows("", entity="JobMaterial")Alle Before/After Save events en andere workflow-ActionFields voor JobMaterial. Bron:workflows.xml. - Property-gebruik —
lookup_property_usage("JobMaterial", "ReservedQuantity")· reference/properties/JobMaterial Welke workflows een specifieke JobMaterial-property lezen/schrijven/filteren (bijv. reservering, picklijst, uitgifte). Bron:workflows.xml. - Workflow-XML van een vuller —
lookup_workflow("JobMaterial_ReserveArticle")Volledige logica van het reserveringsmechanisme: ophalen inkoopprijs, bepalen magazijn, aanroepenArticle_Reserveen zettenReservedQuantity. Bron:workflows.xml.