Autotask slaat inkooporderreferenties op bij charges, contracten, projecten en taken. Dit rapport brengt die velden in kaart, toont de volledige kostenstructuur uit de demodataset en geeft je werkende DAX-queries om op PO-nummer te filteren in je eigen Power BI-omgeving.
Autotask slaat inkooporderreferenties op bij charges, contracten, projecten en taken. Dit rapport brengt die velden in kaart, toont de volledige kostenstructuur uit de demodataset en geeft je werkende DAX-queries om op PO-nummer te filteren in je eigen Power BI-omgeving.
De data dekt het volledige bereik van Autotask PSA-records die relevant zijn voor deze analyse, uitgesplitst naar de belangrijkste dimensies die je team nodig heeft voor dagelijkse beslissingen en klantrapportage.
Wie dit zou moeten gebruiken: Operations managers, service delivery leads, and MSP owners managing capacity
Hoe vaak: Wekelijks for scheduling, monthly for utilization reviews, quarterly for staffing decisions
Autotask slaat inkooporderreferenties op bij charges, contracten, projecten en taken. Dit rapport brengt die velden in kaart, toont de volledige kostenstructuur uit de demodataset en geeft je werkende DAX-queries om op PO-nummer te filteren in je eigen Power BI-omgeving.
De 0% dekking hier is een directe weerspiegeling van de demodataset, waar purchase_order_number en internal_po_number niet zijn ingevuld. Dit is geen fout: het weerspiegelt hoe veel MSP's er uitzien voordat ze PO-registratie beginnen af te dwingen. In een live Autotask-omgeving waar klanten PO-vereisten hebben, bevatten deze velden de autorisatiereferentie en zou dit rapport dekkingspercentages tonen per klant, per PO en per chargeategorie.
EVALUATE
ROW(
"Total_Charge_Records",
COUNTROWS('BI_Autotask_Charges'),
"Total_Billable",
SUM('BI_Autotask_Charges'[billable_amount]),
"Charges_With_PO",
CALCULATE(
COUNTROWS('BI_Autotask_Charges'),
NOT(ISBLANK('BI_Autotask_Charges'[purchase_order_number]))
),
"Charges_Without_PO",
CALCULATE(
COUNTROWS('BI_Autotask_Charges'),
ISBLANK('BI_Autotask_Charges'[purchase_order_number])
),
"Unique_PO_Numbers",
DISTINCTCOUNT('BI_Autotask_Charges'[purchase_order_number])
)
Ook zonder ingevulde PO-nummers laat deze data de volledige omvang zien van wat gedekt zou moeten worden zodra PO-handhaving start. SLA-charges en Hardware samen maken meer dan 94% van het totale factureerbare volume uit. Als een klant PO's vereist, zijn dit de twee categorieën waar het registratiegat de grootste financiële risico's oplevert.
| Chargeategorie (Materiaalcode) | Regels | Totaal Factureerbaar | % van Totaal | PO-prioriteit |
|---|---|---|---|---|
| SLA Charges | 2.243 | €3.907.560 | 58,3% | Hoog |
| Hardware | 4.033 | €2.616.802 | 39,1% | Hoog |
| Consult | 845 | €106.228 | 1,6% | Gemiddeld |
| Azure | 9 | €47.667 | 0,7% | Gemiddeld |
| Taxable Products | 13 | €16.419 | 0,2% | Laag |
| Projecturen (Project Hours) | 4 | €1.728 | <0,1% | Gemiddeld |
| Hosting | 1 | €525 | <0,1% | Laag |
| VoIP Abonnementen | 6 | €516 | <0,1% | Laag |
| Connectivity | 1 | €73 | <0,1% | Laag |
| Totaal | 7.155 | €6.697.518 | 100% |
EVALUATE
SUMMARIZECOLUMNS(
'BI_Autotask_Charges'[material_code_name],
"Line_Items",
COUNTROWS('BI_Autotask_Charges'),
"Total_Billable",
SUM('BI_Autotask_Charges'[billable_amount]),
"Total_Cost",
SUM('BI_Autotask_Charges'[extended_cost]),
"With_PO",
CALCULATE(
COUNTROWS('BI_Autotask_Charges'),
NOT(ISBLANK('BI_Autotask_Charges'[purchase_order_number]))
),
"PO_Coverage_Pct",
DIVIDE(
CALCULATE(
COUNTROWS('BI_Autotask_Charges'),
NOT(ISBLANK('BI_Autotask_Charges'[purchase_order_number]))
),
COUNTROWS('BI_Autotask_Charges')
)
)
ORDER BY [Total_Billable] DESC
Autotask heeft geen apart "PO-registratie"-scherm. In plaats daarvan staan inkooporderreferenties op vier verschillende objecten, afhankelijk van het type werk: charge-records, contracten, projecten en taken. Begrijpen welk veld je wanneer invult, is de eerste stap naar consistente PO-registratie.
-- Controleer PO-velddekking op alle vier Autotask-objecten
EVALUATE
UNION(
ROW(
"Object", "Charges (BI_Autotask_Charges)",
"Total_Records", COUNTROWS('BI_Autotask_Charges'),
"With_PO", CALCULATE(
COUNTROWS('BI_Autotask_Charges'),
NOT(ISBLANK('BI_Autotask_Charges'[purchase_order_number]))
)
),
ROW(
"Object", "Contracts (BI_Autotask_Contracts)",
"Total_Records", COUNTROWS('BI_Autotask_Contracts'),
"With_PO", CALCULATE(
COUNTROWS('BI_Autotask_Contracts'),
NOT(ISBLANK('BI_Autotask_Contracts'[purchase_order_number]))
)
),
ROW(
"Object", "Projects (BI_Autotask_Projects)",
"Total_Records", COUNTROWS('BI_Autotask_Projects'),
"With_PO", CALCULATE(
COUNTROWS('BI_Autotask_Projects'),
NOT(ISBLANK('BI_Autotask_Projects'[purchase_order_number]))
)
),
ROW(
"Object", "Tasks (BI_Autotask_Tasks)",
"Total_Records", COUNTROWS('BI_Autotask_Tasks'),
"With_PO", CALCULATE(
COUNTROWS('BI_Autotask_Tasks'),
NOT(ISBLANK('BI_Autotask_Tasks'[purchase_order_number]))
)
)
)
Dit zijn de drie queries die je het vaakst nodig hebt. De eerste haalt alle charges op voor een specifiek PO. De tweede toont alle charges zonder PO, je financieel-risico-rapport. De derde koppelt charges aan tijdregistraties om de werkelijk gewerkte uren per PO te tonen. Vervang PO-2026-001 door het echte PO-nummer van je klant.
-- Alle charge-records voor een specifiek klant-PO-nummer
-- Vervang "PO-2026-001" door het werkelijke PO-nummer
EVALUATE
CALCULATETABLE(
SELECTCOLUMNS(
'BI_Autotask_Charges',
"Company", RELATED('BI_Autotask_Companies'[company_name]),
"PO_Number", 'BI_Autotask_Charges'[purchase_order_number],
"Internal_PO", 'BI_Autotask_Charges'[internal_po_number],
"Material_Code", 'BI_Autotask_Charges'[material_code_name],
"Description", 'BI_Autotask_Charges'[description],
"Quantity", 'BI_Autotask_Charges'[quantity],
"Billable_Amount", 'BI_Autotask_Charges'[billable_amount],
"Cost", 'BI_Autotask_Charges'[extended_cost],
"Invoice_Number", 'BI_Autotask_Charges'[invoice_number]
),
'BI_Autotask_Charges'[purchase_order_number] = "PO-2026-001"
)
ORDER BY 'BI_Autotask_Charges'[billable_amount] DESC
-- Charges zonder PO-nummer: jouw financieel risico
-- Voer dit uit voor elke factuurrun om ongedekte regels te vinden
EVALUATE
SUMMARIZECOLUMNS(
'BI_Autotask_Charges'[company_id],
RELATED('BI_Autotask_Companies'[company_name]),
'BI_Autotask_Charges'[material_code_name],
FILTER(
ALL('BI_Autotask_Charges'),
ISBLANK('BI_Autotask_Charges'[purchase_order_number])
&& ISBLANK('BI_Autotask_Charges'[invoice_number])
),
"Uninvoiced_Lines_No_PO",
COUNTROWS('BI_Autotask_Charges'),
"Total_Billable_Exposed",
SUM('BI_Autotask_Charges'[billable_amount])
)
ORDER BY [Total_Billable_Exposed] DESC
-- Uren geboekt op een PO-nummer via de contractrelatie
-- Contracten bevatten het PO; tijdregistraties koppelen aan contracten
EVALUATE
SUMMARIZECOLUMNS(
'BI_Autotask_Contracts'[purchase_order_number],
FILTER(
ALL('BI_Autotask_Contracts'),
NOT(ISBLANK('BI_Autotask_Contracts'[purchase_order_number]))
),
"Contract_Name",
CALCULATE(VALUES('BI_Autotask_Contracts'[contract_name])),
"Company",
CALCULATE(VALUES(RELATED('BI_Autotask_Companies'[company_name]))),
"Total_Hours_Worked",
CALCULATE(
SUM('BI_Autotask_TimeEntries'[hours_worked]),
USERELATIONSHIP(
'BI_Autotask_TimeEntries'[contract_id],
'BI_Autotask_Contracts'[id]
)
),
"Total_Billable_Hours",
CALCULATE(
SUM('BI_Autotask_TimeEntries'[billing_amount]),
USERELATIONSHIP(
'BI_Autotask_TimeEntries'[contract_id],
'BI_Autotask_Contracts'[id]
)
)
)
ORDER BY [Total_Hours_Worked] DESC
De meeste MSP's beginnen met Autotask om tijd bij te houden en facturen te genereren. PO-velden zijn optioneel, dus blijven ze leeg. Zes maanden later zegt een van je grote klanten dat ze een factuur niet kunnen verwerken, omdat hun inkoopsysteem een PO-nummer verwacht dat nooit is vastgelegd. De factuur blijft in de accounts payable-wachtrij totdat iemand het financieel team van de klant achtervolgt en handmatig uitzoekt welke autorisatie er was op het moment dat het werk gedaan werd.
De chargeategorieën in deze dataset laten zien waar het risico zich concentreert. SLA-charges maken €3,9M uit van het totaal van €6,7M. Die worden meestal gedekt door een PO op contractniveau voor managed-services-klanten. Hardware-charges van €2,6M vormen het grotere gat: de meeste hardware-aankopen vereisen een klant-PO voordat de bestelling geplaatst wordt, laat staan voor de facturering. Als die charges de factuur bereiken zonder PO-referentie, volgen betalingsvertragingen.
Consultcharges van €106K en cloudkosten van €47K zijn kleiner in volume, maar het vaakst betwist bij facturering. Klanten betwisten professionele diensten regelmatig als er geen schriftelijke autorisatie is. Een PO-nummer op elke consultcharge-regel dient als die autorisatie en elimineert de discussie voordat die begint.
Het goede nieuws: Autotask maakt het eenvoudig om PO-velden verplicht te stellen op accountniveau. Onder Accountinstellingen > Factureringsvoorkeuren kun je specifieke klanten aanmerken als PO-vereiste klanten voordat charges gefactureerd mogen worden. Dit geeft een validatiewaarschuwing in Autotask en voorkomt dat charges worden gefactureerd totdat het veld is ingevuld. De instelling kost ongeveer tien minuten per klant.
Begin met je grootste accounts op factureringsvolume. Hardware-zware klanten en enterprise-accounts met inkoopafdelingen hebben vrijwel altijd een PO-vereiste. Maak een lijst van je top 10 accounts op chargewaarde en controleer elk. Markeer accounts die ooit een factuur betwist hebben wegens een ontbrekend PO als eerste prioriteit voor handhaving.
Ga in Autotask naar het account-record en schakel de instelling “Require PO Number” in onder factureringsvoorkeuren. Zodra dit is ingesteld, vraagt Autotask om een PO-nummer voordat een charge als factureerbaar gemarkeerd of aan een factuur toegevoegd kan worden. Dit maakt het registratiegat een proceswaarborg in plaats van een rapportage-nagedachte.
Voor klanten met maandelijkse managed-services-overeenkomsten stel je het PO-nummer in op contractniveau, niet per charge-regel. Het contract-PO autoriseert vooraf alle charges onder die overeenkomst voor de contractperiode. Wanneer een nieuw PO-nummer wordt uitgegeven voor de volgende periode, update je het contractrecord. Dit verlaagt de administratieve last met behoud van dekking.
Gebruik Query 2 uit sectie 4.0 om alle niet-gefactureerde charges zonder PO-nummer op te halen voor elke factuurcyclus. Dit geeft je financieel team een pre-factuurchecklist: neem contact op met de klant voor ontbrekende PO-referenties, update de charge-records en voer daarna de factuurrun uit. Dit in je maandelijkse factureringsworkflow opnemen voorkomt het ongemakkelijke gesprek na de factuur en houdt de cashflow voorspelbaar.
Ja. Wanneer het PO-nummer op contractniveau staat, kun je de contracttabel koppelen aan de tijdregistratietabel via contract_id om alle gewerkte uren onder dat contract te zien en daarmee onder die PO-autorisatie. Gebruik daarvoor Query 3 uit sectie 4.0. De koppeling loopt via de tabel BI_Autotask_Contracts, die de PO-referentie bevat, verbonden met BI_Autotask_TimeEntries via de externe sleutel contract_id.
purchase_order_number bevat de eigen PO-referentie van de klant: het nummer dat hun inkoopteam heeft afgegeven. Dit staat op de factuur en wordt door hun financieel team gebruikt om jouw factuur te matchen met hun interne goedkeuring. internal_po_number is jouw eigen referentie, voor interne kostprijsberekening, cross-referentie met je financieel systeem of koppeling aan een specifiek projectbudget. Beide velden zijn optioneel in Autotask; het klantgerichte veld is relevant bij factuurbetwistingen.
Autotask-factuursjablonen ondersteunen het veld purchase_order_number als samenvoegveld. Voeg in je factuursjablooninstellingen het PO-nummerveld toe aan de factuurkop of de regelitemssectie. Zodra het sjabloon het veld bevat, toont elke charge met een PO-nummer die referentie op de gegenereerde factuur-PDF. Voor charges zonder PO blijft het veld leeg, wat aangeeft dat de pre-factuurcontrole een gat heeft gevonden.
Autotask slaat geen PO-budgetbedrag op, dus je kunt geen budgetgetal automatisch ophalen uit het datamodel. De praktische aanpak is een referentietabel bijhouden met PO-nummers en hun geautoriseerde bedragen, die tabel in Power BI laden en koppelen aan charges of tijdregistraties op purchase_order_number. Daarna kun je een benuttingsvisual bouwen met charges of uren versus het geautoriseerde bedrag per PO. Deze opzet kost ongeveer een uur in Power BI en geeft je een volledig PO-verbruiksoverzicht per klant.
Koppel Proxuma's Power BI integratie, gebruik een MCP-compatible AI om vragen te stellen en genereer op maat gemaakte rapporten - in minuten, niet in dagen.
Bekijk meer rapporten Aan de slag