Purchase (Bestelling)
De Purchase-entiteit beheert alle inkoopbestellingen in Ultimo. Een bestelling wordt aangemaakt bij een leverancier en bevat een of meerdere bestelregels (PurchaseLine) met artikelen of diensten. Bestellingen doorlopen een goedkeuringsproces en worden gevolgd tot ontvangst en facturatie.
Entiteitsnaam: Purchase
Databasetabel: Purchase
Primaire sleutel: PCHID (nvarchar 9)
Contextsbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| 0 | PurchaseContext.None | Standaard |
| 1 | PurchaseContext.Purchase | Standaard |
Statussenbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| -1 | PurchaseStatus.Trash | Trash |
| 0 | PurchaseStatus.None | None |
| 1 | PurchaseStatus.Created | Open |
| 2 | PurchaseStatus.Approved | Goedgekeurd |
| 4 | PurchaseStatus.Active | Actief |
| 32 | PurchaseStatus.Closed | Gesloten |
| 64 | PurchaseStatus.PartReceived | Deels ontvangen |
| 128 | PurchaseStatus.Conceptual | Concept |
| 256 | PurchaseStatus.Received | Ontvangen |
| 512 | PurchaseStatus.Canceled | Vervallen |
| 1024 | PurchaseStatus.Requested | Aanvraag |
Belangrijkste propertiesbewerken
| Property | Type | Kolom | Nullable | Omschrijving |
|---|---|---|---|---|
| Id | UltimoString(9) | PCHID | Nee | Bestelnummer |
| Description | UltimoString(200) | PCHDESCR | Ja | Omschrijving |
| Vendor | Vendor | PCHVDRID | Ja | Leverancier |
| DeliveryDate | Date? | PCHDLVDATE | Ja | Gewenste leverdatum |
| Currency | Currency | PCHCURID | Nee | Valuta |
| CurrencyRate | Decimal | PCHCURRATE | Nee | Wisselkoers |
| Total | CompanyMoney | PCHTOTAL | Nee | Totaalbedrag (readonly) |
| Reference | UltimoString(41) | PCHREFERENCE | Ja | Referentie |
| BookDate | Date? | PCHBOOKDATE | Ja | Boekdatum |
| NumberOfLines | Int32 | PCHNUMBEROFLINES | Nee | Aantal regels (readonly) |
| Text | UltimoString | PCHTEXT | Ja | Tekst |
Functionaliteit & property-gedragbewerken
Veel Purchase- en PurchaseLine-properties worden automatisch gevuld of berekend door workflows, triggers en integraties. Onderstaande paragrafen beschrijven het gedrag van de belangrijkste velden; gebruik lookup_property_usage("Purchase", "<property>") voor de volledige, actuele lijst workflows per property en lookup_workflow("<naam>") voor de XML.
Statusverloop (
Status) — De levenscyclus van een bestelling wordt volledig door workflows bewaakt.Purchase_ChangeStatusFromCreatedToConceptualplaatst een nieuw aangemaakte bestelling eerst op Concept (128).Purchase_DetermineStatusherberekent de status automatisch op basis van de onderliggende PurchaseLine-statussen (bijv. naar PartReceived/Received).Invoice_CloseReceivedPurchasessluit bestellingen die volledig gefactureerd zijn. Achttien workflows schrijvenStatus; filter erop met de statusmatrix in reference/properties/Purchase voordat je een aangepaste overgang bouwt. Consultanttip: dePurchase_UndoActivate-workflow controleertExportedvóór terugdraaien — als de bestelling al naar een ERP-systeem is verstuurd, blokkeert de undo.Goedkeuring & drempelwaarden (
Total,CostCenter,Department) — De fiatteerketen start metPurchase_GenerateApprovals, dieTotal,CostCenterenDepartmentleest.Purchase_PreRequestedvalideert die velden en blokkeert de overgang naar Aanvraag als een kostenzuil ontbreekt.Approval_PostApprovedenApproval_PostRejectedlezenRequestEmployeeom de aanvrager te notificeren. Het totaalbedragTotalwordt niet direct geschreven door een workflow maar berekend via triggers uit de bestelregels (PchTotal).Valuta & wisselkoers (
Currency,CurrencyRate,CurrencyConversionFactor,UseFixedExchangeRate) —ActionField1579zetCurrency,CurrencyRateenCurrencyConversionFactortegelijk bij het kiezen van een leverancier of het kopiëren van een bestelling.UseFixedExchangeRate(default:true) bepaalt of de wisselkoers vast staat voor de hele bestelling: alstrue, wordtCurrencyRateniet meer gewijzigd bij facturatie.Receipt_PreApproveenInvoice_PreApprovedValidateAndProcesslezenUseFixedExchangeRateom bij ontvangst en factuurverwerking de juiste koersomrekening toe te passen. De wisselkoers werkt door in álle regelberekeningen:PurchaseLine_CalculateAmountsgebruiktCurrencyRate+CurrencyConversionFactoromStandardTotalPriceenStandardTotalPriceIncludingVatnaar bedrijfsvaluta om te rekenen.Prijsberekening op bestelregels (
GrossPrice,StandardTotalPrice,StandardVatPrice,TotalPrice) — Bij het invoeren of importeren van een bestelregel vultPurchaseLine_ValidateAndCopyArticleDataalle artikelgerelateerde gegevens in, inclusiefGrossPrice.PurchaseLine_CalculateAmountsherberekent daarnaStandardTotalPrice,StandardTotalPriceIncludingVat,GrossTotalPriceenTotalPrice. Integratieworkflows overschrijven prijsvelden rechtstreeks:Purchase_ApproveFromMicrosoftDynamicsenPurchase_ImportSAPS4HANAschrijvenGrossPrice,GrossTotalPriceenPurchaseQuantityvanuit het externe systeem.Ontvangst (
ToReceiveQuantity,ReceiptLine, status PartReceived/Received) —Purchase_PreReceivedsteltToReceiveQuantityin op bestelregelniveau als de te ontvangen hoeveelheid. Bij gedeeltelijke ontvangst via een Receipt-record zetPurchase_DetermineStatusde bestelling op PartReceived (64); bij volledige ontvangst op Received (256).Receipt_CreateLinesFromPurchasefiltert opPurchaseLine.StatusenStockArticleom te bepalen welke regels een ontvangstbon krijgen.Purchase_PostCancelresetPurchaseQuantityenToReceiveQuantityop geannuleerde regels.Kostendragers op bestelregels (
CostCenter,Department,Equipment,ProcessFunction,Project) —PurchaseLine_CopyDataFromEquipmentProcessFunctionkopieertCostCenter,Department,EquipmentenProcessFunctionvan het gekoppelde object naar de bestelregel.PurchaseLine_Processschrijft diezelfde velden inclusiefProjectbij de verwerking van de regel.PurchaseLine_CopyDataFromEquipmenthaaltProcessFunctionop uit het equipment en vult die ook op de regel. Deze automatische overname zorgt ervoor dat inkoopkosten direct op de juiste kostendragers landen zonder handmatige invoer.ERP-integratie (
ExternalId,Exported,DataProvider,Language) —Purchase_ExportMicrosoftDynamicsschrijftExternalIdenDataProviderbij export naar Dynamics 365; vijf workflows filteren opExternalIdom duplicaten te voorkomen bij terugkoppeling.Purchase_ApproveFromMicrosoftDynamicsenPurchase_ImportSAPS4HANAschrijvenVendor,Currency,Description,BookDate,DeliveryDateenLanguagevanuit het externe systeem.Purchase_ReceivedFromMicrosoftDynamicsverwerkt de ontvangststatus terug vanuit het ERP.
Het volledige overzicht van álle Purchase-properties met hun schrijvende/lezende/filterende workflows staat in reference/properties/Purchase (en reference/properties/PurchaseLine).
Relaties met andere entiteitenbewerken
| Property | Verwijst naar | Omschrijving |
|---|---|---|
| Vendor | Vendor (supplier) | Leverancier |
| Job | job | Gekoppelde job |
| Account | Account | Grootboekrekening |
| CostCenter | CostCenter | Kostenplaats |
| Department | Department | Afdeling |
| Site | Site | Vestiging |
| Warehouse | Warehouse | Magazijn |
| RequestEmployee | employee | Aanvrager |
| Contact | employee | Contactpersoon |
| DeliveryAddress | DeliveryAddress | Afleveradres |
| DeliveryTerms | DeliveryTerms | Leveringsvoorwaarden |
| PaymentTerms | PaymentTerms | Betalingsvoorwaarden |
| PurchaseLines | List[PurchaseLine] | Bestelregels |
| Receipts | List[Receipt] | Ontvangsten |
| InvoiceLines | List[InvoiceLine] | Factuurregels |
| TenderRequest | RequestForQuotation | Offerte-aanvraag |
Tips voor consultantsbewerken
- Statusflow: Concept (128) -> Open (1) -> Goedgekeurd (2) -> Actief (4) -> Deels ontvangen (64) -> Ontvangen (256) -> Gesloten (32).
- Bestelaanvraag: Bestellingen worden vaak aangemaakt vanuit een bestelaanvraag.
- Ontvangst: Via de Receipt-entiteit worden goederenontvangsten geregistreerd per bestelregel.
- Facturatie: Factuurregels worden gekoppeld via
InvoiceLinesvoor matching van facturen met bestellingen. - Valuta: Ultimo ondersteunt multi-currency via
CurrencyenCurrencyRateop de bestelling. - Goedkeuring: Het goedkeuringsproces kan worden ingericht met fiatteerniveaus (ApprovalLevel).
Database Detailsbewerken
De tabel dba.Purchase bevat 70 kolommen.
Computed columns (berekende velden)bewerken
| Kolom | Formule | Toelichting |
|---|---|---|
PchFileExtension |
'.html' |
Vast bestandstype voor rich-text velden |
PCHTEXT_FT |
HTML-wrapping van tekstveld | Full-text search representatie |
Kolommen gezet door triggersbewerken
| Kolom | Type | Toelichting |
|---|---|---|
PchTotal |
decimal(21,5) | Totaalbedrag -- automatisch berekend uit bestelregels |
PchNumberOfLines |
int | Aantal bestelregels -- automatisch geteld |
PchDlvDate |
date | Leverdatum (gezet/bijgewerkt vanuit bestelregels) |
PchNowInv |
decimal(21,5) | Huidig gefactureerd bedrag (excl. BTW) |
PchNowInvInclVat |
decimal(21,5) | Huidig gefactureerd bedrag (incl. BTW) |
PchStdTotPriceInclVat |
decimal(21,5) | Standaard totaalprijs incl. BTW |
PchStdVatPrice |
decimal(21,5) | Standaard BTW-bedrag |
Belangrijke defaultsbewerken
| Kolom | Default | Toelichting |
|---|---|---|
PchContext |
1 (Standaard) |
Standaard context |
PchRecStatus |
0 (None) |
Standaard status |
PchTotal |
0 |
Begintotaal nul |
PchNumberOfLines |
0 |
Geen regels |
PchUseFixedExchangeRate |
1 (true) |
Vaste wisselkoers standaard aan |
PchRecCreateDate |
sysdatetimeoffset() |
Aanmaakdatum automatisch |
Triggers en externe triggersbewerken
Purchase heeft 1 eigen trigger (UPDATE) en wordt beinvloed door 7 externe triggers:
- PurchaseLine-triggers: Bij INSERT/UPDATE/DELETE van bestelregels worden
PchTotal,PchNumberOfLines,PchDlvDate, en BTW-velden herberekend - InvoiceLine-triggers: Bij facturatie worden
PchNowInvenPchNowInvInclVatbijgewerkt
Consultanttip: De Purchase-tabel heeft geen DELETE- of INSERT-trigger -- alleen een UPDATE-trigger. Het totaalbedrag en het aantal regels worden volledig gestuurd door wijzigingen in de PurchaseLine-tabel. Bij het handmatig aanmaken van bestellingen via de API moeten de regels apart worden aangemaakt om de totalen correct te laten berekenen.
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("Purchase")· reference/entities/Purchase Alle properties, contexts en statussen. Bron:Entities.xml. - DB-schema —
lookup_table_schema("Purchase")· reference/tables/Purchase Alle DB-kolommen, triggers, computed columns en defaults. Bron:database-schema.json. - Gerelateerde workflows —
find_workflows("", entity="Purchase")Alle Before/After Save events en andere workflow-ActionFields voor Purchase. Bron:workflows.xml. - Property-gebruik —
lookup_property_usage("Purchase", "Status")· reference/properties/Purchase Welke workflows een specifieke Purchase-property (of die van reference/properties/PurchaseLine) lezen/schrijven/filteren. Bron:workflows.xml. - Workflow-XML van een vuller —
lookup_workflow("Purchase_DetermineStatus")De volledige logica achter de automatische statusbepaling op basis van bestelregel-statussen (PartReceived → Received → Closed). Bron:workflows.xml.
Zie ookbewerken
- purchase-request - Bestelaanvragen
- supplier - Leveranciers
- job - Werkorders
- article - Artikelen