Invoice (Factuur)
De Invoice-entiteit vertegenwoordigt een inkoopfactuur in Ultimo. Facturen worden gekoppeld aan bestellingen en leveranciers en doorlopen een goedkeuringsproces. Elke factuur bevat een of meer factuurregels (InvoiceLine) die de individuele kostenposten beschrijven.
Entiteitsnaam: Invoice
Databasetabel: Invoice
Primaire sleutel: INVID (nvarchar 9)
Contextsbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| 0 | InvoiceContext.None | Standaard |
| 1 | InvoiceContext.Standard | Standaard |
| 2 | InvoiceContext.Fleet | Fleet |
Statussenbewerken
| Value | Naam | Beschrijving |
|---|---|---|
| -1 | InvoiceStatus.Trash | Trash |
| 0 | InvoiceStatus.None | None |
| 1 | InvoiceStatus.Created | Open |
| 2 | InvoiceStatus.Approved | Goedgekeurd |
| 4 | InvoiceStatus.CreditCreated | Credit open |
| 8 | InvoiceStatus.CreditApproved | Credit goedgekeurd |
| 32 | InvoiceStatus.CreatedNoPurchase | Open (zonder bestelling) |
| 64 | InvoiceStatus.ApprovedNoPurchase | Goedgekeurd (zonder bestelling) |
| 128 | InvoiceStatus.CreditCreatedNoPurchase | Credit open (zonder bestelling) |
| 256 | InvoiceStatus.CreditApprovedNoPurchase | Credit goedgekeurd (zonder bestelling) |
Statusverloopbewerken
Open (Created) --> Goedgekeurd (Approved)
Credit open (CreditCreated) --> Credit goedgekeurd (CreditApproved)
Facturen zonder gekoppelde bestelling doorlopen dezelfde statusstappen maar met aparte statuswaarden (NoPurchase-varianten).
Belangrijkste propertiesbewerken
| Property | Type | Kolom | Nullable | Omschrijving |
|---|---|---|---|---|
| Id | UltimoString(9) | INVID | Nee | Uniek factuur-ID |
| Description | UltimoString(200) | INVDESCR | Ja | Omschrijving |
| Status | Status | INVRECSTATUS | Nee | Recordstatus |
| Context | Context | INVCONTEXT | Nee | Context (default: 1) |
| BookDate | Date? | INVBOOKDATE | Ja | Boekingsdatum (default: SYSDATE) |
| Vendor | Vendor | INVVDRID | Ja | Leverancier |
| Purchase | Purchase | INVPCHID | Ja | Gekoppelde bestelling |
| Currency | Currency | INVCURID | Nee | Valuta |
| CurrencyRate | Decimal | INVCURRATE | Nee | Wisselkoers |
| Department | Department | INVDEPID | Ja | Afdeling |
| Total | TransactionMoney | INVTOTAL | Nee | Totaalbedrag (readonly) |
| StandardTotalPrice | CompanyMoney | INVSTDTOTPRICE | Nee | Standaard totaalprijs (readonly) |
| StandardTotalPriceIncludingVat | CompanyMoney | INVSTDTOTPRICEINCLVAT | Nee | Standaard totaalprijs incl. BTW (readonly) |
| StandardVatPrice | CompanyMoney | INVSTDVATPRICE | Nee | Standaard BTW-bedrag (readonly) |
| StatusApprovedDate | DateTime? | INVDATE | Ja | Datum goedkeuring |
| StatusApprovedEmployee | Employee | INVEMPID | Ja | Medewerker die goedkeurde |
| Lines | List[InvoiceLine] | INVLINVID | Nee | Factuurregels |
| Exported | Boolean | INVEXPORTED | Nee | Geexporteerd naar extern systeem |
| ExternalId | UltimoString(50) | INVEXTERNALID | Ja | Extern ID (bijv. ERP-factuurnummer) |
| PurchaseAddType | PurchaseAddType | INVPURCHASEADDTYPE | Nee | Koppeltype bestelling (None=0, Purchase=1, Receipt=2) |
| Site | Site | INVSITID | Ja | Vestiging |
| Text | UltimoString | INVTEXT | Ja | Vrij tekstveld |
Functionaliteit & property-gedragbewerken
Veel Invoice-properties worden niet handmatig ingevuld maar door workflows gezet op vaste momenten in het factuurproces. Onderstaande paragrafen beschrijven het gedrag van de belangrijkste velden; gebruik lookup_property_usage("Invoice", "<property>") voor de volledige, actuele lijst workflows per property en lookup_workflow("<naam>") voor de XML.
Status— levenscyclus via Pre-workflows als gate — De factuurstatus kent twee parallelle paden: met en zonder gekoppelde bestelling. De overgang van Open naar Goedgekeurd wordt bewaakt doorInvoice_PreCreatedToCreatedNoPurchase(zonder bestelling) respectievelijk de pendant met Purchase. De goedkeuring zelf, inclusief het zetten vanBookDateenStatusApprovedDate, vindt plaats inInvoice_Approve. Voor creditfacturen bestaat een gelijk patroon viaInvoice_PreCreditCreatedToCreditCreatedNoPurchaseenInvoice_PreCreditCreopen/Invoice_PreCreditReopenNoPurchase. In totaal schrijven 14 workflowsStatus— behandel dit veld nooit als vrij in te vullen maar als het resultaat van een statusovergang.Invoice_PostImporten de vierActionField221/223/362/364-slots zorgen voor edge-cases bij import en handmatige correcties.BookDate— boekingsdatum gezet bij goedkeuring — Dit veld heeft drie schrijvers:Invoice_Approvestelt de boekingsdatum in op het moment van goedkeuring (typisch de sysdatum of een expliciete keuze);Invoice_PreApprovedValidateAndProcessherberekent of valideert de datum als onderdeel van de verwerkingsstap;Invoice_ImportSAPS4HANAvult de datum direct vanuit de SAP S/4HANA-payload. Vier workflows lezenBookDateterug — onder andere voor kostentoerekening aan de juiste factuurperiode. Consultanttip: de boekingsdatum bepaalt in welkeInvoicePeriodkosten vallen; pas bij heropening (Invoice_PreReopen) kan een factuur een andere periode krijgen.Valuta-groep (
Currency,CurrencyRate,CurrencyConversionFactor) — gevuld vanuit bestelling of SAP — Alle drie de valutavelden worden door dezelfde zes schrijvers bijgehouden:Purchase_CreateInvoiceLinesenPurchase_CreateCreditInvoiceLineskopiëren valuta, koers en conversiefactor van de gekoppelde bestelling naar de factuur;Invoice_ImportSAPS4HANAvult ze vanuit de SAP-payload;Invoice_PreApprovedValidateAndProcessherberekent de koers vlak voor verwerking.ActionField136enActionField1581verzorgen aanvullende correcties bij handmatige invoer. Negen tot elf workflows lezen deze velden voor de omrekening van transactie- naar bedrijfsvaluta op de factuurregels.Vendor— overgenomen van de bestelling — De leverancier op de factuur wordt bij aanmaak gezet doorPurchase_CreateInvoiceLines(en het creditvariantPurchase_CreateCreditInvoiceLines), die deVendorvan de gekoppeldePurchaseovernemen.Invoice_ImportSAPS4HANAvultVendorvanuit het ERP-bericht.ActionField136enActionField1581bieden correctiemogelijkheid. Zes workflows lezenVendor— onder andere voor leveranciersmatch en validatie bij het aanmaken van inkoopregels.PurchaseAddType— koppeltype bepaalt het matchingpad — Dit veld (None=0,Purchase=1,Receipt=2) geeft aan of de factuur wordt gematcht op bestelling of op ontvangst. Het wordt door vier workflows gevuld:Purchase_CreateInvoiceLinesenPurchase_CreateCreditInvoiceLinesbij aanmaak,Invoice_ImportSAPS4HANAbij SAP-import, enActionField136bij handmatige invoer.ActionField365leest het veld om het juiste matchingpad te activeren. Consultanttip: kiesReceipt(2) als de organisatie drie-weg-matching (bestelling–ontvangst–factuur) wil;Purchase(1) volstaat voor twee-weg-matching.ExportedenLines— gates voor heropening en goedkeuring —Exportedwordt door geen enkele workflow geschreven maar door vier lezende workflows gecheckt (Invoice_PreReopen,Invoice_PreReopenNoPurchase,Invoice_PreCreditReopen,Invoice_PreCreditReopenNoPurchase): een al naar ERP geëxporteerde factuur kan niet worden heropend tenzij de vlag expliciet wordt gereset.Lines(de collectieInvoiceLine-regels) wordt door tien workflows gelezen, waaronder alle Pre*-transitionworkflows en de reopen-workflows, die controleren of er geldige regels aanwezig zijn vóór de statusovergang wordt toegestaan.
Het volledige, gegenereerde overzicht van álle Invoice-properties met hun schrijvende/lezende/filterende workflows staat in reference/properties/Invoice.
Gerelateerde entiteitenbewerken
InvoiceLine (Factuurregel)bewerken
Elke factuur bevat een of meer factuurregels. Een factuurregel kan gekoppeld zijn aan een job, uitrusting, bestelling, ontvangstregel of servicecontract.
Primaire sleutel: INVLINVID + INVLLINEID
Belangrijkste properties:
| Property | Type | Kolom | Omschrijving |
|---|---|---|---|
| Invoice | Invoice | INVLINVID | Verwijzing naar factuur |
| LineId | UltimoString(4) | INVLLINEID | Regelnummer |
| Article | Article | INVLARTID | Artikel |
| Description | UltimoString(200) | INVLDESCR | Omschrijving |
| Quantity | Decimal | INVLQTY | Aantal |
| Price | TransactionMoney | INVLPRICE | Prijs per eenheid |
| TotalPrice | TransactionMoney | INVLTOTPRICE | Totaalprijs |
| GrossPrice | TransactionMoney | INVLGROSSPRICE | Brutoprijs |
| Discount | Decimal | INVLDISCOUNT | Korting |
| Vat | Vat | INVLVATID | BTW-code |
| VatPercentage | Decimal | INVLVATPERCENTAGE | BTW-percentage |
| Job | Job | INVLJOBID | Gekoppelde job |
| Equipment | Equipment | INVLEQMID | Gekoppelde uitrusting |
| PurchaseLine | PurchaseLine | INVLPCHID, INVLPCHLID | Bestellijn |
| ReceiptLine | ReceiptLine | INVLRCPID, INVLRCPLID | Ontvangstregel |
| CostCenter | CostCenter | INVLCCRID | Kostenplaats |
| CostType | CostType | INVLCSTTID | Kostensoort |
| Department | Department | INVLDEPID | Afdeling |
| Customer | Customer | INVLCUSID | Klant |
| Account | Account | INVLACCID | Grootboekrekening |
InvoiceLine-statussen:
| Value | Naam | Beschrijving |
|---|---|---|
| 1 | InvoiceLineStatus.Created | Open |
| 2 | InvoiceLineStatus.Approved | Goedgekeurd |
| 4 | InvoiceLineStatus.CreditCreated | Credit open |
| 8 | InvoiceLineStatus.CreditApproved | Credit goedgekeurd |
| 16 | InvoiceLineStatus.PurchaseLineAdded | Bestelregel |
| 512 | InvoiceLineStatus.InvoiceProposal | Factuurvoorstel |
| 1024 | InvoiceLineStatus.InvoiceZero | 0 factureren |
| 2048 | InvoiceLineStatus.InvoiceNextRun | Volgende run |
| 16384 | InvoiceLineStatus.Invoiced | Gefactureerd |
InvoiceGroup (Factuurgroep)bewerken
Factuurgroepen worden gebruikt om facturen te groeperen.
InvoicePeriod (Factuurperiode)bewerken
Factuurperiodes definieren een tijdvak waarbinnen kosten worden geboekt.
| Value | Naam | Beschrijving |
|---|---|---|
| 1 | InvoicePeriodStatus.Created | Open |
| 2 | InvoicePeriodStatus.Closed | Gesloten |
Relaties met andere entiteitenbewerken
- Vendor -- leverancier op de factuur
- Purchase -- de bestelling waartegen de factuur wordt geboekt
- Job -- factuurregels kunnen direct aan een job gekoppeld zijn
- Equipment -- factuurregels kunnen aan een uitrusting gekoppeld zijn
- Employee -- medewerker die de factuur goedkeurt
- Currency -- valuta van de factuur
- Site -- vestiging
Tipsbewerken
- Facturen kunnen zowel met als zonder bestelling worden aangemaakt. De NoPurchase-statusvarianten worden gebruikt wanneer er geen bestelling aan gekoppeld is.
- Via het veld
PurchaseAddTypekun je aangeven of de factuur aan een bestelling of aan een ontvangst moet worden gekoppeld. - Het veld
Exportedgeeft aan of de factuur al naar een extern systeem (bijv. ERP) is geexporteerd. Gebruik dit bij integraties. - Creditfacturen doorlopen een apart statuspad (CreditCreated --> CreditApproved).
- De boekingsdatum (
BookDate) bepaalt in welke factuurperiode de kosten vallen.
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("Invoice")· reference/entities/Invoice Alle properties, contexts en statussen. Bron:Entities.xml. - DB-schema —
lookup_table_schema("Invoice")· reference/tables/Invoice Alle DB-kolommen, triggers, computed columns en defaults. Bron:database-schema.json. - Gerelateerde workflows —
find_workflows("", entity="Invoice")Alle Before/After Save events en andere workflow-ActionFields voor Invoice. Bron:workflows.xml. - Property-gebruik —
lookup_property_usage("Invoice", "Status")· reference/properties/Invoice Welke workflows een specifieke Invoice-property lezen/schrijven/filteren (bijv. de 14 schrijvers vanStatusof de 6 schrijvers vanCurrencyRate). Bron:workflows.xml. - Workflow-XML van een vuller —
lookup_workflow("Invoice_Approve")De volledige logica achter goedkeuring, boekingsdatum en statusovergang van de factuur. Bron:workflows.xml.