Datatemplate voor order-to-cash-facturering en facturatie
Datatemplate voor order-to-cash-facturering en facturatie
- Aanbevolen attributen om te verzamelen
- Belangrijke activiteiten om bij te houden
- Extractiegidsen voor NetSuite
Attributen voor order-to-cash-facturering en facturatie
| Naam | Beschrijving | ||
|---|---|---|---|
| Activiteitsnaam ActivityName | De naam van de bedrijfsgebeurtenis die op een bepaald moment in het verloop van de factuur plaatsvond. | ||
| Beschrijving De activiteitsnaam beschrijft een specifieke stap of gebeurtenis in het facturatieproces, zoals 'Factuur aangemaakt', 'Factuur goedgekeurd' of 'Betaling van klant ontvangen'. Deze activiteiten vormen samen de opeenvolgende stappen op de proceskaart. De volgorde en frequentie van activiteiten analyseren is een belangrijk onderdeel van process mining. Zo wordt de werkelijke processtroom zichtbaar en kun je veelvoorkomende en zeldzame procesroutes (varianten) herkennen. Ook zie je welke activiteiten vaak worden herhaald, wat kan wijzen op herstelwerk of inefficiëntie. Waarom dit belangrijk is Dit attribuut is nodig om de proceskaart op te bouwen en de verschillende stappen en routes van een factuur zichtbaar te maken en te analyseren. Waar vind je dit? Afgeleid van systeemlogs, statuswijzigingen of specifieke gebeurtenisrecords bij de factuurtransactie in NetSuite. Vaak moeten statuswijzigingen van transacties of het aanmaken van gerelateerde records worden gekoppeld aan vastgestelde activiteitsnamen. Voorbeelden Factuur aangemaaktFactuur goedgekeurdBetaling van klant ontvangenFactuur volledig betaald | |||
| Factuurnummer InvoiceNumber | De unieke identificatiecode van elke factuur. Deze dient als belangrijkste case-ID voor het facturatieproces. | ||
| Beschrijving Het factuurnummer vormt de basis voor de analyse van het facturatieproces. Het identificeert elke factuur vanaf het moment van aanmaken tot de uiteindelijke afsluiting. Alle bijbehorende activiteiten, zoals goedkeuring, verzending en betalingsverwerking, worden zo samengebracht in één case. Met process mining kun je het verloop van elke factuur analyseren en het volledige facturatieproces in kaart brengen. Zo worden procesvarianten, knelpunten en afwijkingen van de standaardprocedure zichtbaar. Die informatie helpt de cashflow en efficiëntie van de bedrijfsvoering te verbeteren. Waarom dit belangrijk is Dit is nodig om het volledige verloop van elke factuur te volgen, het facturatieproces te reconstrueren en de prestaties gedetailleerd te analyseren. Waar vind je dit? Dit is meestal het veld 'Transaction ID' of een vergelijkbaar uniek identificatieveld op de factuurtransactie in NetSuite. Voorbeelden INV-0012345INV-0012346INV-0012347 | |||
| Timestamp van gebeurtenis EventTimestamp | De exacte datum en tijd waarop een activiteit of gebeurtenis plaatsvond. | ||
| Beschrijving Dit attribuut legt het exacte moment van een activiteit vast. Het is nodig om gebeurtenissen chronologisch te ordenen en tijdsanalyses uit te voeren. In process mining gebruik je de timestamp van een gebeurtenis om doorlooptijden tussen activiteiten, de duur van cases en wachttijden te berekenen. Dit helpt knelpunten op te sporen, prestaties te meten ten opzichte van SLA’s en het tijdsverloop van het facturatieproces te begrijpen. Zo bereken je bijvoorbeeld de doorlooptijd van factuurgeneratie en Days Sales Outstanding (DSO). Waarom dit belangrijk is Dit geeft de chronologische volgorde van gebeurtenissen. Die is nodig om doorlooptijden te berekenen, knelpunten te vinden en procesprestaties over tijd te analyseren. Waar vind je dit? Timestamps staan meestal in de systeemnotities, auditsporen of velden 'Date Created' van gerelateerde records voor elke factuurtransactie in NetSuite. Voorbeelden 2023-10-26T10:00:00Z2023-10-27T14:30:00Z2023-11-15T09:05:00Z | |||
| Bronsysteem SourceSystem | Het systeem waaruit de data zijn gehaald. | ||
| Beschrijving Dit attribuut geeft aan waar de procesdata vandaan komen. In deze weergave is de waarde altijd 'NetSuite'. Bij bredere analyses, vooral in organisaties met meerdere ERP-systemen of geïntegreerde systemen, is dit attribuut belangrijk voor de herkomst en het beheer van data. Het helpt processen te onderscheiden die over meerdere platforms lopen en zorgt ervoor dat de analyse aan het juiste bronsysteem wordt toegeschreven. Waarom dit belangrijk is Dit geeft belangrijke context over de herkomst en het beheer van data, vooral wanneer meerdere systemen zijn geïntegreerd. Waar vind je dit? Dit is een vaste waarde ('NetSuite') die tijdens het extraheren en transformeren van de data wordt toegevoegd. Voorbeelden NetSuite | |||
| Laatste data-update LastDataUpdate | De timestamp die aangeeft wanneer de data voor het laatst vanuit het bronsysteem zijn bijgewerkt. | ||
| Beschrijving Dit attribuut registreert wanneer de dataset voor het laatst is bijgewerkt. Zo weet je hoe actueel de analyse met process mining is. Analisten en belanghebbenden binnen de organisatie gebruiken deze informatie om te bepalen of de inzichten de meest recente situatie in de bedrijfsvoering weergeven. Dit is belangrijke metadata voor elk dashboard of rapport. Zo is duidelijk hoe oud de data zijn en worden ze niet ten onrechte als realtime geïnterpreteerd. Waarom dit belangrijk is Dit laat zien hoe actueel de data zijn, zodat gebruikers de periode en relevantie van de analyse goed kunnen inschatten. Waar vind je dit? Deze timestamp wordt tijdens het bijwerken van de data gegenereerd en vastgelegd door de data-extractietool of -pipeline. Voorbeelden 2024-05-21T02:00:00Z | |||
| Eindtijd gebeurtenis EventEndTime | De exacte datum en tijd waarop een activiteit of gebeurtenis is afgerond. | ||
| Beschrijving De eindtijd van een gebeurtenis markeert het moment waarop een activiteit is afgerond. Veel activiteiten duren maar een ogenblik, waardoor de begin- en eindtijd gelijk zijn. Andere activiteiten, zoals een goedkeuringsstap, kunnen wel een meetbare duur hebben. In combinatie met de timestamp van de gebeurtenis (starttijd) maakt dit attribuut het mogelijk om de verwerkingstijd van een activiteit te berekenen. Door de verwerkingstijd te analyseren, zie je welke stappen de meeste tijd en middelen kosten. Zo kun je die tijd onderscheiden van de wachttijd tussen activiteiten en inefficiënties in specifieke taken opsporen. Waarom dit belangrijk is Hiermee kun je precies berekenen hoelang elke activiteit duurt. Dat is nodig om de efficiëntie van de inzet van middelen te analyseren en tijdrovende taken te vinden. Waar vind je dit? Net als StartTime kan deze informatie afkomstig zijn uit systeem-auditsporen in NetSuite. Mogelijk is logica nodig om een 'start'-gebeurtenis aan de bijbehorende 'eind'-gebeurtenis te koppelen. Voorbeelden 2023-10-26T10:05:14Z2023-10-27T14:32:00Z2023-11-15T09:05:00Z | |||
| Factuurdatum InvoiceDate | De officiële datum op de factuur die aan de klant is verstrekt. | ||
| Beschrijving De factuurdatum, of transactiedatum, vormt het startpunt voor veel financiële berekeningen rond facturatie. Betalingstermijnen en vervaldatums worden meestal vanaf deze datum berekend. Bij analyses is deze datum het uitgangspunt voor belangrijke financiële KPI’s, zoals Days Sales Outstanding (DSO) en de ouderdom van facturen. Je kunt er ook cohorten mee vergelijken, bijvoorbeeld de facturatieprestaties per maand of per jaar. Waarom dit belangrijk is Deze datum vormt de basis voor belangrijke financiële metrieken, zoals Days Sales Outstanding (DSO) en de ouderdom van facturen. Daarmee heeft de datum direct invloed op de analyse van het werkkapitaal. Waar vind je dit? Dit komt overeen met het veld 'Date' (trandate) op de factuurtransactie in NetSuite. Voorbeelden 2023-10-262023-10-272023-11-15 | |||
| Gebruiker User | De naam of ID van de gebruiker die de activiteit heeft uitgevoerd. | ||
| Beschrijving Dit attribuut geeft aan welke medewerker of systeemgebruiker verantwoordelijk was voor een processtap. Dat kan bijvoorbeeld de persoon zijn die de factuur heeft aangemaakt, goedgekeurd of de betaling heeft verwerkt. Door het proces per gebruiker te analyseren, krijg je inzicht in de verdeling van het werk, individuele prestaties en mogelijke opleidingsbehoeften. Je kunt ook zien waar automatisering mogelijk is, bijvoorbeeld als veel gebruikers dezelfde handmatige activiteit uitvoeren. Dit attribuut is ook belangrijk voor compliance en de analyse van auditsporen. Waarom dit belangrijk is Hiermee kun je de werkverdeling, prestaties per gebruiker en naleving van het proces analyseren. Dat is belangrijk voor het beheer van middelen en gerichte training. Waar vind je dit? Beschikbaar op het tabblad System Notes of in specifieke velden 'Modified By' op facturen en gerelateerde transactierecords in NetSuite. Voorbeelden Alice SmithBob JohnsonSYSTEEM | |||
| Is geautomatiseerd IsAutomated | Een aanduiding die aangeeft of een activiteit automatisch door het systeem is uitgevoerd. | ||
| Beschrijving Dit booleaanse attribuut maakt onderscheid tussen activiteiten die handmatig door een gebruiker zijn uitgevoerd en activiteiten die automatisch zijn uitgevoerd door een systeemworkflow, script of integratie. Dit attribuut is belangrijk om de automatiseringsgraad van het factureringsproces te meten en ondersteunt rechtstreeks de KPI 'Geautomatiseerde facturering'. Door te filteren op geautomatiseerde of handmatige activiteiten kunnen analisten knelpunten opsporen die door handmatige tussenkomst ontstaan. Ook zien ze waar meer automatisering menselijke fouten kan beperken en de efficiëntie kan verbeteren. Waarom dit belangrijk is Hiermee meet je de automatiseringsgraad van het proces en zie je waar minder handmatig werk en meer efficiëntie mogelijk zijn. Waar vind je dit? Dit wordt meestal afgeleid van de 'Gebruiker' die aan een activiteit is gekoppeld. Gebeurtenissen die zijn gestart door gebruikers met de naam 'SYSTEM', 'Workflow' of 'Integration' worden als geautomatiseerd gemarkeerd. Voorbeelden truefalse | |||
| Klantnaam CustomerName | De naam van de klant aan wie de factuur is verstrekt. | ||
| Beschrijving Dit attribuut identificeert de rechtspersoon of persoon aan wie de factuur is gericht. Het verbindt het facturatieproces met het klantbeheer. Door het facturatieproces per klant te analyseren, kun je patronen in betaalgedrag, geschillen of de complexiteit van facturen voor specifieke klanten herkennen. Dit kan helpen bij klantsegmentatie, beslissingen over kredietlimieten en een gerichte aanpak van incasso. Zo zie je bijvoorbeeld of een bepaalde klant regelmatig facturen heeft die moeten worden hersteld. Waarom dit belangrijk is Hiermee kun je analyses per klant uitvoeren en betaalpatronen, terugkerende problemen of procesafwijkingen bij specifieke klanten herkennen. Waar vind je dit? Dit komt overeen met het veld 'Customer' of 'Entity' op de factuurtransactie in NetSuite. Voorbeelden Global Tech Inc.Innovate Solutions LLCCornerstone Corp | |||
| Regio Region | De geografische regio die bij de klant of transactie hoort. | ||
| Beschrijving Het attribuut Regio deelt facturen geografisch in. De regio kan worden afgeleid van het adres van de klant of van de bedrijfseenheid die de factuur heeft uitgegeven. Dit is een nuttige dimensie voor vergelijkende analyses. Het dashboard 'Regional Billing Process Comparison' gebruikt dit attribuut om KPI’s zoals doorlooptijden, foutpercentages en procesvarianten per regio te vergelijken. Zo kun je regionale prestatieverschillen herkennen, werkwijzen van goed presterende regio’s overnemen en processen binnen de organisatie standaardiseren. Waarom dit belangrijk is Hiermee kun je verschillende geografische gebieden vergelijken. Dat helpt om regionale prestatieverschillen te vinden en goede werkwijzen te standaardiseren. Waar vind je dit? Deze data staan vaak in een aangepast segment of classificatieveld op de klantstamgegevens of transactierecord in NetSuite. Voorbeelden Noord-AmerikaEMEAAPAC | |||
| Totaalbedrag factuur InvoiceTotalAmount | Het totale bedrag van de factuur, inclusief belastingen en overige kosten. | ||
| Beschrijving Dit attribuut geeft het volledige bedrag weer dat de klant naar verwachting betaalt. Het is een belangrijk financieel gegeven voor elke factuurcase. Door het proces op basis van factuurbedragen te analyseren, kun je facturen naar waarde vergelijken. Zo zie je bijvoorbeeld of facturen met een hoog bedrag een ander of ingewikkelder proces doorlopen dan facturen met een laag bedrag. De informatie helpt ook bij het prioriteren van incasso en het bepalen van de financiële gevolgen van betalingsvertragingen of factuurfouten. Waarom dit belangrijk is Hiermee kun je processen op basis van waarde analyseren, facturen met hoge bedragen prioriteren en de financiële gevolgen van inefficiënties begrijpen. Waar vind je dit? Dit komt overeen met het veld 'Total' (total) op de factuurtransactie in NetSuite. Voorbeelden 1500.0089.9912500.50 | |||
| Vervaldatum DueDate | De datum waarop de factuur uiterlijk betaald moet zijn. | ||
| Beschrijving De vervaldatum wordt berekend op basis van de factuurdatum en de afgesproken betalingstermijn. Dit is de uiterste datum waarop de klant kan betalen zonder dat de betaling als te laat geldt. Dit attribuut is nodig om openstaande vorderingen te bewaken en de cashflow te beheren. Het is de maatstaf voor de KPI On-Time Payment Rate en voor analyses van betaalgedrag. Door afwijkingen van de vervaldatum te volgen, zie je welke klanten vaak te laat betalen en hoe effectief de incassostrategie is. Waarom dit belangrijk is Dit is belangrijk om te meten of betalingen op tijd binnenkomen en het betaalgedrag van klanten te analyseren. De informatie helpt bij incasso en cashflowprognoses. Waar vind je dit? Dit komt overeen met het veld 'Due Date' (duedate) op de factuurtransactie in NetSuite. Voorbeelden 2023-11-252023-11-262023-12-15 | |||
| Afdeling Department | De interne afdeling die bij de factuur hoort. | ||
| Beschrijving Dit attribuut staat voor de interne afdeling, zoals Sales, Services of een specifieke bedrijfstak, die verantwoordelijk is voor de transactie. In NetSuite is dit een standaard classificatiesegment. Door het proces per afdeling te analyseren, kun je afdelingen onderling vergelijken en zien of sommige efficiënter factureren dan andere. Zo komen verschillen in procesnaleving of de inzet van middelen aan het licht. Dat helpt om verbeteringen gericht door te voeren binnen specifieke onderdelen van de organisatie. Waarom dit belangrijk is Hiermee kun je de procesprestaties van verschillende interne afdelingen vergelijken. Zo worden verschillen en kansen voor standaardisatie zichtbaar. Waar vind je dit? Dit komt overeen met het classificatieveld 'Department'. Je kunt dit instellen op kop- of regelniveau van een factuurtransactie in NetSuite. Voorbeelden Sales - EnterpriseProfessionele dienstverleningHardware | |||
| Betalingstermijn PaymentTerms | De afspraken tussen het bedrijf en de klant over de betaling. | ||
| Beschrijving De betalingstermijn bepaalt wanneer en hoe de klant de factuur moet betalen, bijvoorbeeld 'Net 30' of 'Due on receipt'. Deze informatie wordt gebruikt om de vervaldatum van de factuur automatisch te berekenen. Dit attribuut is belangrijk voor het dashboard 'Payment Terms Adherence'. Door het percentage tijdige betalingen per betalingstermijn te analyseren, kun je beoordelen hoe effectief de verschillende termijnen zijn. Zo zie je bijvoorbeeld of klanten met 'Net 15' sneller betalen dan klanten met 'Net 30'. Die informatie helpt bij toekomstige contractonderhandelingen en kredietbeleid. Waarom dit belangrijk is Dit is nodig om te analyseren hoe effectief verschillende betalingsvoorwaarden zijn en welk effect ze hebben op de tijdigheid van betalingen. Waar vind je dit? Dit komt overeen met het veld 'Terms' op de factuurtransactie in NetSuite. Voorbeelden Netto 30 dagenNetto 60 dagenTe betalen bij ontvangst | |||
| Days Sales Outstanding DaysSalesOutstanding | Het aantal dagen tussen de factuurdatum en de datum waarop de betaling is ontvangen. | ||
| Beschrijving Days Sales Outstanding (DSO) is een belangrijke financiële metriek die het gemiddelde aantal dagen meet tussen het versturen van een factuur en de ontvangst van de betaling. Dit attribuut wordt voor elke factuur afzonderlijk berekend, zodat je het proces gedetailleerd kunt analyseren. DSO wordt vaak samengevoegd tot een KPI op hoofdlijnen, maar DSO per factuur maakt een gerichte analyse mogelijk. Je kunt ermee vaststellen welke klanten, regio's of factuurtypen de hoogste DSO hebben. Het dashboard 'DSO-trend' gebruikt deze metriek om de incasso-efficiëntie door de tijd heen weer te geven. Zo krijg je inzicht in het beheer van werkkapitaal. Waarom dit belangrijk is Dit maakt de incasso-efficiëntie per factuur meetbaar. Zo kun je de oorzaken van een hoge DSO en de gevolgen daarvan voor de cashflow gedetailleerd analyseren. Waar vind je dit? Berekend door de 'InvoiceDate' af te trekken van de timestamp van de activiteit 'Klantbetaling ontvangen'. Voorbeelden 294562 | |||
| Factuurstatus InvoiceStatus | De huidige status van de factuur in het proces. | ||
| Beschrijving Dit attribuut geeft de huidige status van de factuur weer, zoals 'Open', 'Paid in Full' of 'Voided'. Zo zie je waar de factuur zich op een bepaald moment in het proces bevindt. Het dashboard 'Open Invoices Status Overview' is rechtstreeks op dit attribuut gebaseerd. Het geeft een realtime overzicht van openstaande vorderingen, zodat financiële teams openstaande bedragen kunnen bewaken, incasso kunnen beheren en inkomende betalingen kunnen voorspellen. De eindstatus helpt ook om de uitkomst van het proces te begrijpen. Waarom dit belangrijk is Dit geeft een momentopname van de openstaande vorderingen. Dashboards kunnen hiermee openstaande facturen en de voortgang van de facturatie bewaken. Waar vind je dit? Dit komt overeen met het veld 'Status' op de factuurtransactie in NetSuite. Voorbeelden OpenVolledig betaaldOngeldig gemaaktIn afwachting van goedkeuring | |||
| Is betaling op tijd IsOnTimePayment | Een aanduiding die aangeeft of de klant uiterlijk op de vervaldatum van de factuur heeft betaald. | ||
| Beschrijving Deze berekende booleaanse aanduiding vergelijkt de timestamp van de activiteit 'Klantbetaling ontvangen' met de 'DueDate' van de factuur. De waarde is true als de betaling op tijd of eerder is ontvangen, en false als de betaling te laat is. Dit attribuut vormt de basis voor de KPI 'Percentage betalingen op tijd' en het dashboard 'Naleving betalingstermijnen'. Het geeft een heldere binaire maatstaf voor het betaalgedrag van klanten en vereenvoudigt analyse en rapportage. Je ziet snel trends in tijdige betalingen en kunt beoordelen hoe effectief de incassostrategie is. Waarom dit belangrijk is Dit geeft een duidelijke maatstaf voor het succes van incasso en ondersteunt rechtstreeks de berekening van de KPI 'Percentage betalingen op tijd' en de analyse van klantgedrag. Waar vind je dit? Dit is een berekend attribuut. Hiervoor vergelijk je de timestamp van de betalingsgebeurtenis met het attribuut 'DueDate' op caseniveau. Voorbeelden truefalse | |||
| Is herstelwerk IsRework | Een berekende aanduiding die activiteiten markeert als herstelwerk of correctielussen. | ||
| Beschrijving Deze booleaanse aanduiding krijgt de waarde true voor activiteiten die herstelwerk zonder toegevoegde waarde vertegenwoordigen, zoals 'Factuur gecorrigeerd' of een tweede gebeurtenis 'Factuur goedgekeurd' binnen dezelfde case. De aanduiding wordt meestal afgeleid van de activiteitsnaam of van herhaling van een activiteit. Dit attribuut is essentieel voor het dashboard 'Analyse van factuurherstelwerk en afwijzingen' en de KPI 'Factuurfoutpercentage'. Het maakt herstelwerk eenvoudig meetbaar en helpt problemen met de proceskwaliteit aan het licht te brengen. Door op herstelwerkactiviteiten te filteren, kunnen teams snel de oorzaken van fouten vinden en het effect van verbeterinitiatieven meten. Waarom dit belangrijk is Dit meet de proceskwaliteit door inefficiënte herstelwerklussen te markeren. Zo kun je de oorzaken en financiële gevolgen van factureringsfouten analyseren. Waar vind je dit? Dit afgeleide attribuut wordt berekend tijdens de datatransformatie. De logica markeert herstelwerk, bijvoorbeeld op basis van specifieke activiteitsnamen ('Factuur gecorrigeerd') of herhaalde activiteiten. Voorbeelden truefalse | |||
| Valuta Currency | De valutacode van het factuurbedrag. | ||
| Beschrijving Dit attribuut geeft aan in welke valuta het factuurbedrag is uitgedrukt, bijvoorbeeld USD, EUR of GBP. Deze informatie is nodig om geldbedragen goed te interpreteren. Voor internationale organisaties is een analyse per valuta belangrijk om financiële prestaties in verschillende markten te begrijpen. Zo worden bedragen correct geïnterpreteerd en kun je ze na eventuele valutaomrekening goed optellen en vergelijken. Waarom dit belangrijk is Dit geeft de nodige context bij geldbedragen en is belangrijk voor nauwkeurige financiële rapportages en analyses, vooral bij internationale bedrijfsvoering. Waar vind je dit? Dit komt overeen met het veld 'Currency' op de factuurtransactie in NetSuite. Voorbeelden USDEURGBP | |||
| Verkoopordernummer SalesOrderNumber | De identificatiecode van de verkooporder waaruit de factuur is gegenereerd. | ||
| Beschrijving Dit attribuut verwijst rechtstreeks naar de oorspronkelijke verkooporder en verbindt het facturatieproces met de voorafgaande verkoop- en leveringsprocessen. Met het verkoopordernummer krijg je een breder beeld van de volledige order-to-cash-cyclus. Je kunt problemen in de facturatie terugleiden naar de bron in het verkoopproces. Zo kunnen terugkerende factuurcorrecties bijvoorbeeld samenhangen met fouten in de gegevensinvoer bij bepaalde soorten verkooporders. Waarom dit belangrijk is Dit verbindt het facturatieproces met het verkoopproces. Zo kun je de volledige order-to-cash-cyclus analyseren en de oorzaken van facturatieproblemen opsporen. Waar vind je dit? Te vinden in het veld 'Created From' of op het subtabblad 'Related Records' van een factuurtransactie in NetSuite. Voorbeelden SO-0009876SO-0009877SO-0009878 | |||
Activiteiten voor order-to-cash-facturering en facturatie
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Betaling van klant ontvangen | De betaling van de klant is ontvangen en in het systeem geregistreerd. Dit wordt vastgelegd wanneer in NetSuite een transactie van het type 'Customer Payment' wordt aangemaakt. De betaling kan op één of meerdere facturen worden toegepast. | ||
| Waarom dit belangrijk is Dit markeert de ontvangst van geld, maar niet noodzakelijk de toepassing ervan op een specifieke factuur. Het is de eerste stap in de verwerking van de betaling en een belangrijke gebeurtenis voor de berekening van DSO. Waar vind je dit? Afkomstig van de aanmaakdatum van de transactie 'Customer Payment'. De koppeling met de factuur wordt gelegd op het tabblad 'Apply' van de betaling. Vastleggen Een transactie van het type Customer Payment aangemaakt. Gebeurtenistype explicit | |||
| Factuur aangemaakt | Dit markeert het moment waarop de factuurtransactie officieel in NetSuite wordt aangemaakt. Deze gebeurtenis is het startpunt van het facturatieproces voor elk uniek factuurnummer en wordt vastgelegd met de timestamp waarop de transactie is aangemaakt. | ||
| Waarom dit belangrijk is Dit is de belangrijkste startgebeurtenis van het facturatieproces. De tijd tussen deze gebeurtenis en andere gebeurtenissen laat de algehele procesefficiëntie zien en vormt de basis voor de KPI Doorlooptijd factuurgeneratie. Waar vind je dit? Afkomstig van de timestamp in het veld 'Date Created' van de factuurtransactie. De systeemnotities van NetSuite leggen ook expliciet vast wanneer de factuur is aangemaakt en door welke gebruiker. Vastleggen Gebeurtenis die wordt vastgelegd zodra de factuurtransactie is aangemaakt. Gebeurtenistype explicit | |||
| Factuur goedgekeurd | De factuur is formeel goedgekeurd en kan naar de klant worden verstuurd. Dit wordt vastgelegd wanneer de goedkeuringsstatus via een workflowactie verandert van 'Pending Approval' in 'Approved'. | ||
| Waarom dit belangrijk is Dit is een belangrijke mijlpaal: pas daarna kan de factuur naar de klant. De gebeurtenis is nodig om de doorlooptijd van de goedkeuring te meten en de KPI 'Automated Billing Ratio' te berekenen. Waar vind je dit? Afgeleid van de wijziging van het veld 'Approval Status' op de factuur naar 'Approved'. De exacte timestamp staat in de systeemnotities van de transactie. Vastleggen Afgeleid van de wijziging van het veld 'Approval Status' naar 'Approved' in de systeemnotities. Gebeurtenistype inferred | |||
| Factuur naar klant verstuurd | Dit betekent dat de factuur naar de klant is verstuurd, meestal per e-mail. De gebeurtenis wordt vastgelegd wanneer een gebruiker de actie 'E-mail' uitvoert vanuit de factuur. | ||
| Waarom dit belangrijk is Dit markeert het begin van de betaaltermijn voor de klant en is het belangrijkste startpunt voor de berekening van Days Sales Outstanding (DSO). Waar vind je dit? Afgeleid van het ingevulde veld 'Date Last Emailed' op de factuur. Je kunt de gebeurtenis ook vastleggen wanneer een e-mailbericht wordt aangemaakt onder het tabblad Communication. Vastleggen Afgeleid van een ingevuld veld 'Date Last Emailed' of van het aanmaken van een communicatie-record. Gebeurtenistype inferred | |||
| Factuur volledig betaald | De status van de factuur is gewijzigd in 'Paid In Full'. Het saldo is nu nul. Hiermee is de facturatie- en incassocyclus voor deze factuur succesvol afgerond. | ||
| Waarom dit belangrijk is Dit is de belangrijkste succesvolle eindgebeurtenis van het proces. De totale tijd tot deze status geeft de end-to-enddoorlooptijd van de cash conversion cycle. Waar vind je dit? Afgeleid van de wijziging van het veld 'Status' op de factuur naar 'Paid In Full'. De timestamp van deze statuswijziging staat in de systeemnotities van de transactie. Vastleggen Afgeleid van de wijziging van het veld 'Status' naar 'Paid In Full' in de systeemnotities. Gebeurtenistype inferred | |||
| Betaling op factuur toegepast | De ontvangen klantbetaling is specifiek op deze factuur toegepast, waardoor het openstaande bedrag daalt. Dit wordt vastgelegd wanneer de toepassing wordt opgeslagen op de Customer Payment-record. | ||
| Waarom dit belangrijk is Dit verbindt de ontvangst van geld met de afwikkeling van de factuur. De tijd tussen 'Payment Received' en deze gebeurtenis bepaalt de KPI 'Cash Application Cycle Time'. Waar vind je dit? Afkomstig van de systeemnotities of het auditspoor van de Customer Payment-transactie, met name wanneer de toepassing op de factuurregel wordt opgeslagen. De timestamp van deze toepassing is belangrijk. Vastleggen Vastgelegd wanneer de Customer Payment-record wordt opgeslagen met een toepassing op de factuur. Gebeurtenistype explicit | |||
| Betalingsherinnering verstuurd | Er is een bericht over een openstaande betaling naar de klant verstuurd. Dit wordt vastgelegd als een activiteit of e-mail vanuit de factuur of klantrecord, vaak via een aanmaningsoplossing. | ||
| Waarom dit belangrijk is Deze gebeurtenis is nodig om de effectiviteit van incassostrategieën te beoordelen. Door te analyseren hoe herinneringen samenhangen met latere betalingen, kun je de frequentie en timing ervan verbeteren. Waar vind je dit? Afkomstig van het aanmaken van een e-mailrecord onder Communication > Messages bij de factuur of klantrecord. Geautomatiseerde aanmaningsoplossingen kunnen herinneringen ook vastleggen als aangepaste records of taken. Vastleggen Vastgelegd als e-mail- of activiteitenrecord bij de factuur. Gebeurtenistype explicit | |||
| Creditnota aangemaakt | Er is een creditnotatransactie aangemaakt en op de factuur toegepast, waardoor het openstaande saldo lager wordt. Dit wijst meestal op een productretour, een klacht over de dienstverlening of een prijsaanpassing. | ||
| Waarom dit belangrijk is Dit kan wijzen op herstelwerk, kwaliteitsproblemen of een geschil met de klant. Regelmatige gevallen kunnen onderliggende problemen aan het licht brengen en zijn belangrijk voor het dashboard 'Invoice Rework and Rejection Analysis'. Waar vind je dit? Afkomstig van het aanmaken van een creditnotatransactie. De koppeling met de oorspronkelijke factuur staat in het veld 'Created From' of op het tabblad 'Apply' van de creditnota. Vastleggen Een creditnotarecord aangemaakt en gekoppeld aan de oorspronkelijke factuur. Gebeurtenistype explicit | |||
| Factuur afgesloten | De factuurtransactie is afgesloten, vaak als onderdeel van de boekhoudkundige afsluiting aan het einde van een periode. Daarna kan de transactie niet meer worden gewijzigd, omdat deze volledig is betaald en afgestemd. | ||
| Waarom dit belangrijk is Dit gebeurt vaak nadat de factuur volledig is betaald, maar kan ook een laatste administratieve stap zijn. Vertraging tussen betaling en afsluiting kan de tijdigheid van financiële rapportages beïnvloeden. Waar vind je dit? Afgeleid van een wijziging van het veld 'Status' naar 'Closed' of een vergelijkbare status. De timestamp van deze wijziging komt uit de systeemnotities. Vastleggen Afgeleid van een wijziging van het veld 'Status' in de systeemnotities. Gebeurtenistype inferred | |||
| Factuur ongeldig gemaakt | De factuur is ongeldig gemaakt. Daarmee is de factuur geannuleerd en zijn eventuele gevolgen voor het grootboek teruggedraaid. Dit gebeurt meestal bij facturen die per ongeluk zijn aangemaakt en nog niet zijn betaald. | ||
| Waarom dit belangrijk is Dit is een procesuitzondering en een eindstatus. Als je nagaat waarom facturen ongeldig worden gemaakt, kunnen fouten in de gegevensinvoer of het proces aan het licht komen die eerder in het proces moeten worden opgelost. Waar vind je dit? Dit is een expliciete gebruikersactie. Je kunt deze vastleggen in de systeemnotities van de factuur, waarin staat wanneer en door wie de transactie ongeldig is gemaakt. Vastleggen Expliciete actie 'Void', vastgelegd in de systeemnotities van de factuur. Gebeurtenistype explicit | |||
| Factuur ter goedkeuring ingediend | Dit geeft aan dat de status van de factuur is gewijzigd in 'Pending Approval'. De gebeurtenis wordt vastgelegd wanneer een gebruiker de factuur indient via een ingestelde goedkeuringsworkflow, een veelvoorkomende aanpassing. | ||
| Waarom dit belangrijk is Deze activiteit markeert het begin van een mogelijk knelpunt in de goedkeuring. De wachttijd op goedkeuring is een belangrijk onderdeel van de totale doorlooptijd van de factuurverwerking. Waar vind je dit? Afgeleid van de wijziging van het veld 'Approval Status' op de factuur naar 'Pending Approval'. De timestamp van deze wijziging staat in het auditspoor van de systeemnotities bij de factuur. Vastleggen Afgeleid van een wijziging van het veld 'Approval Status' die in de systeemnotities is vastgelegd. Gebeurtenistype inferred | |||
| Vervaldatum betaling bereikt | Een berekende gebeurtenis die plaatsvindt wanneer de huidige datum overeenkomt met de vervaldatum van de factuur. Dit is geen directe actie van een gebruiker of systeem, maar wordt tijdens de analyse afgeleid uit bestaande data. | ||
| Waarom dit belangrijk is Dit is een belangrijke maatstaf om te bepalen of betalingen op tijd binnenkomen. De gebeurtenis is nodig om de KPI 'On-Time Payment Rate' te berekenen en het betaalgedrag van klanten te analyseren. Waar vind je dit? Dit is geen expliciete gebeurtenis in NetSuite. De gebeurtenis wordt berekend door de timestamp in het event log te vergelijken met het veld 'Due Date' van de factuurtransactie. Vastleggen Berekend wanneer de timestamp van de gebeurtenis overeenkomt met het veld 'Due Date' van de factuur. Gebeurtenistype calculated | |||
Extractiegidsen
Stappen
- Log in bij NetSuite: Meld je aan bij je NetSuite-account met een rol die voldoende rechten heeft om Saved Searches voor transactierecords aan te maken en uit te voeren.
- Ga naar Saved Searches: Ga naar Reports > Saved Searches > All Saved Searches > New. Selecteer 'Transaction' in de lijst met zoektypen. Dit vormt de basis voor meerdere zoekopdrachten, één voor elk gebeurtenistype.
- Maak de zoekopdracht 'Factuur aangemaakt': Deze hoofdzoekopdracht legt het aanmaken van facturen vast.
- Ga op het tabblad 'Criteria' onder 'Standard' naar het filter 'Type' en stel dit in op 'is Invoice'.
- Voeg het filter 'Main Line' toe en stel dit in op 'is true', zodat je één record per factuur krijgt.
- Voeg op het tabblad 'Results' de benodigde kolommen toe. Gebruik formules om gestandaardiseerde velden zoals 'ActivityName' aan te maken. Voeg bijvoorbeeld een veld 'Formula (Text)' toe met de formule
_UTF8'Invoice Created'.
- Maak zoekopdrachten voor statuswijzigingen (goedgekeurd, betaald, ongeldig gemaakt, gesloten): Veel activiteiten zijn statuswijzigingen. Met System Notes kun je de exacte timestamp het betrouwbaarst vastleggen.
- Maak een nieuwe Transaction Saved Search aan.
- Stel op het tabblad 'Criteria' de optie 'Type' in op 'is Invoice'.
- Voeg onder het subtabblad 'Standard' het filter 'System Notes : Field' toe en selecteer het relevante statusveld, bijvoorbeeld 'Approval Status'.
- Voeg het filter 'System Notes : New Value' toe en stel dit in op de gewenste status, bijvoorbeeld 'Approved'.
- Koppel op het tabblad 'Results' 'System Notes : Date' aan
EventTimestampen 'System Notes : Set by' aanGebruiker. - Herhaal dit voor elke activiteit op basis van een status: 'Factuur ter goedkeuring ingediend', 'Factuur goedgekeurd', 'Factuur volledig betaald', 'Factuur ongeldig gemaakt' en 'Factuur gesloten'. Pas de veld- en waardefilters telkens aan.
- Maak de zoekopdracht 'Factuur naar klant verzonden': Deze gebeurtenis leg je meestal vast door e-mailberichten bij te houden die vanuit het factuurrecord zijn verzonden.
- Maak een nieuwe Transaction Saved Search aan met 'Type' ingesteld op 'is Invoice'.
- Voeg op het tabblad 'Criteria' onder 'Related Records' het filter 'Messages : Date Sent' toe en stel dit in op 'is not empty'.
- Koppel op het tabblad 'Results' 'Messages : Date Sent' aan
EventTimestampen 'Messages : Author' aanGebruiker.
- Maak zoekopdrachten voor betalingen en creditnota's: Hiervoor zijn aparte transactietypen nodig die aan de factuur zijn gekoppeld.
- Maak voor 'Klantbetaling ontvangen' een zoekopdracht met 'Type' ingesteld op 'Customer Payment'. Gebruik de aanmaakdatum als timestamp van de gebeurtenis.
- Gebruik voor 'Betaling toegepast op factuur' dezelfde zoekopdracht voor 'Customer Payment', maar koppel deze aan de velden 'Applied To Transaction'. De 'Date Created' van de betalingstransactie is de timestamp. Je krijgt één rij per toepassing op een factuur.
- Maak voor 'Creditnota aangemaakt' een zoekopdracht met 'Type' ingesteld op 'Credit Memo' en koppel deze aan het veld 'Created From' om het oorspronkelijke factuurnummer op te halen.
- Voer elke Saved Search uit en exporteer de resultaten: Voer elke aangemaakte zoekopdracht uit. Klik op de resultatenpagina op het exportpictogram (CSV, Excel of PDF) en kies CSV. Als de resultaten de exportlimiet van NetSuite overschrijden, moet je ze mogelijk in delen exporteren.
- Voeg de data samen en transformeer deze: Voeg alle geëxporteerde CSV-bestanden samen tot één bestand met bijvoorbeeld Microsoft Excel, een Python-script of een datavoorbereidingstool.
- Leid de gebeurtenis 'Vervaldatum betaling bereikt' af: Voeg in het samengevoegde databestand voor elke gebeurtenis 'Factuur aangemaakt' een nieuwe rij toe. Stel
ActivityNamein op 'Payment Due Date Reached', neem de waarde uit het veldDueDatevan de factuur over inEventTimestampen kopieer de overige relevante factuurattributen. - Rond het event log af: Standaardiseer alle kolomkoppen volgens het vereiste schema, bijvoorbeeld
InvoiceNumber,ActivityNameenEventTimestamp. Zorg dat de timestampnotatie overal hetzelfde is. Voeg de kolommenSourceSystemenLastDataUpdatetoe met vaste waarden voor deze extractiebatch. Sla het samengevoegde bestand op als CSV om het te uploaden.
Configuratie
- Vereisten: Je hebt een gebruikersrol nodig met rechten om Saved Searches van het type 'Transaction' aan te maken, te bewerken en uit te voeren. Je moet ook factuurrecords, Customer Payment-records, Credit Memo-records en System Notes-records kunnen bekijken.
- Zoektype: Voor alle extracties gebruik je het primaire zoektype 'Transaction'. Hiermee krijg je toegang tot alle benodigde records en hun relaties.
- Filteren op datumbereik: Stel voor elke zoekopdracht een datumbereikfilter in om de prestaties en hoeveelheid data beheersbaar te houden. Voor de eerste analyse raden we aan te filteren op 'Date Created' in de afgelopen 3 tot 6 maanden.
- Filter Main Line: Stel de criteria 'Main Line' in op 'true' voor gebeurtenissen op kopniveau, zoals 'Factuur aangemaakt'. Stel dit in op 'false' als je details op regelniveau wilt analyseren. Dat is voor dit proces niet nodig.
- System Notes: Voor het vastleggen van statuswijzigingen zijn System Notes belangrijk. Controleer in de NetSuite-configuratie of auditing is ingeschakeld voor belangrijke transactievelden zoals 'Status' en 'Approval Status' (Setup > Company > Enable Features > SuiteCloud > SuiteAudit Trail).
- Aandachtspunten voor prestaties: Complexe zoekopdrachten met veel koppelingen en formulevelden over een groot datumbereik kunnen traag zijn in de NetSuite-interface. Voer deze zoekopdrachten bij voorkeur buiten piekuren uit en exporteer de resultaten dan. Als een zoekopdracht een time-out geeft, verklein je het datumbereik en exporteer je de data in kleinere delen.
Voorbeeldquery sql
/*
This section describes the configuration for multiple NetSuite Saved Searches needed to generate the complete event log. Each block represents a separate Saved Search that must be created in the UI, exported, and then combined externally.
*/
-- Search 1: Invoice Created
Activity Name: 'Invoice Created'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Main Line is true
Results Columns (Mapped to Event Log Attributes):
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Created'
- EventTimestamp: Date Created
- User: Created By
- InvoiceDate: Date
- DueDate: Due Date
- InvoiceTotalAmount: Amount (Gross)
- CustomerName: Name
-- Search 2: Invoice Submitted for Approval
Activity Name: 'Invoice Submitted for Approval'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Approval Status
- System Notes : New Value is [Your 'Pending Approval' status]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Submitted for Approval'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 3: Invoice Approved
Activity Name: 'Invoice Approved'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Approval Status
- System Notes : New Value is [Your 'Approved' status]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Approved'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 4: Invoice Sent to Customer
Activity Name: 'Invoice Sent to Customer'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Messages : Date Sent is not empty
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Sent to Customer'
- EventTimestamp: Messages : Date Sent (use Maximum summary type if multiple)
- User: Messages : Author (use Maximum summary type)
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 5: Payment Reminder Issued
Activity Name: 'Payment Reminder Issued'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- User Notes : Note contains [Your dunning/reminder keyword]
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Payment Reminder Issued'
- EventTimestamp: User Notes : Date
- User: User Notes : Author
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 6: Credit Memo Created
Activity Name: 'Credit Memo Created'
Saved Search Type: Transaction
Criteria:
- Type is Credit Memo
- Main Line is true
Results Columns:
- InvoiceNumber: Created From : Document Number
- ActivityName: Formula (Text) = 'Credit Memo Created'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 7: Customer Payment Received
Activity Name: 'Customer Payment Received'
Saved Search Type: Transaction
Criteria:
- Type is Customer Payment
- Main Line is true
Results Columns:
- InvoiceNumber: Applied to Transaction : Document Number
- ActivityName: Formula (Text) = 'Customer Payment Received'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
-- Search 8: Payment Applied To Invoice
Activity Name: 'Payment Applied To Invoice'
Saved Search Type: Transaction
Criteria:
- Type is Customer Payment
- Main Line is false
Results Columns:
- InvoiceNumber: Applied to Transaction : Document Number
- ActivityName: Formula (Text) = 'Payment Applied To Invoice'
- EventTimestamp: Date Created
- User: Created By
- CustomerName: Name
-- Search 9: Invoice Paid In Full
Activity Name: 'Invoice Paid In Full'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Status
- System Notes : New Value is Paid In Full
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Paid In Full'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Search 10: Invoice Voided
Activity Name: 'Invoice Voided'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- Status is Invoice : Voided
- System Notes : Field is Status
- System Notes : New Value is Voided
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Voided'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
-- Search 11: Invoice Closed
Activity Name: 'Invoice Closed'
Saved Search Type: Transaction
Criteria:
- Type is Invoice
- System Notes : Field is Status
- System Notes : New Value contains Closed
Results Columns:
- InvoiceNumber: Document Number
- ActivityName: Formula (Text) = 'Invoice Closed'
- EventTimestamp: System Notes : Date
- User: System Notes : Set by
- CustomerName: Name
- InvoiceTotalAmount: Amount (Gross)
-- Event to be Derived Post-Extraction: Payment Due Date Reached
/*
This event is not extracted directly. After combining all other CSVs, create a new row for each unique invoice.
Set ActivityName to 'Payment Due Date Reached'.
Set EventTimestamp to the DueDate value from the 'Invoice Created' event for that invoice.
Copy other attributes like InvoiceNumber, CustomerName, etc.
*/ Stappen
- Vereiste: SuiteAnalytics Connect inschakelen: Controleer of de SuiteAnalytics Connect-module is gelicentieerd en ingeschakeld in je NetSuite-omgeving. Een NetSuite-beheerder doet dit meestal via Setup > Company > Enable Features > Analytics.
- ODBC-driver downloaden en configureren: Ga naar het NetSuite-startdashboard en zoek de portlet 'Settings'. Klik op de link 'Set Up SuiteAnalytics Connect' om de juiste ODBC-driver voor je besturingssysteem te downloaden. Volg de installatie-instructies van NetSuite om de driver te installeren en configureren. Vul daarbij de servicehost, poort, Account ID, Role ID, e-mailadres en wachtwoord in.
- Databaseverbinding maken: Gebruik een SQL-client die ODBC-verbindingen ondersteunt, zoals DBeaver, Tableau of Power BI. Maak een nieuwe ODBC-verbinding met de driver die je in de vorige stap hebt geconfigureerd. Test de verbinding om te controleren of je kunt aanmelden en toegang hebt tot de read-replica-database van NetSuite.
- SQL-query voorbereiden: Kopieer de volledige SQL-query uit het gedeelte 'Query' van dit document. De query haalt alle benodigde activiteiten en attributen op voor het order-to-cash-factureringsproces.
- Queryparameters instellen: Zoek vóór uitvoering de tijdelijke waarden in de query op. Vervang
'YYYY-MM-DD'door de gewenste begin- en einddatum van de extractieperiode. Vervang ook[Your Subsidiary ID]door de interne ID van de NetSuite-dochteronderneming die je wilt analyseren. - Query uitvoeren: Voer de aangepaste query uit in je SQL-client. De uitvoeringstijd hangt af van het datumbereik en het aantal transacties in je NetSuite-account.
- Resultaten controleren: Na uitvoering krijg je een platte tabel met het event log. Elke rij staat voor een specifieke activiteit in de levenscyclus van de factuur. Controleer of de data volledig en correct is.
- Event log exporteren: Exporteer de queryresultaten vanuit je SQL-client naar een CSV-bestand. Gebruik UTF-8-codering om problemen met tekens te voorkomen.
- Upload voorbereiden: Controleer vóór het uploaden naar een process mining-tool of de kolomkoppen overeenkomen met de vereiste attribuutnamen, zoals InvoiceNumber, ActivityName en EventTimestamp. Controleer ook of de datum- en tijdnotatie overal hetzelfde is.
Configuratie
- SuiteAnalytics Connect-licentie: Voor toegang tot de read-replica-database van NetSuite is een geldige licentie voor de SuiteAnalytics Connect-module vereist. Zonder deze licentie is rechtstreekse SQL-toegang niet mogelijk.
- Aparte rol en gebruiker: We raden sterk aan om een aparte NetSuite-rol aan te maken met de juiste rechten voor SuiteAnalytics Connect. Deze rol moet alleen-lezen toegang hebben tot de benodigde records, waaronder transacties, klanten en System Notes. Wijs voor de extractie een aparte gebruiker aan deze rol toe, zodat de toegang veilig en auditeerbaar is.
- Filteren op datumbereik: De query bevat een
WHERE-clausule voor de aanmaakdatum van de factuur (Transaction.TRANDATE). Begin bij de eerste extracties bij voorkeur met een kleiner datumbereik, bijvoorbeeld de afgelopen 3 tot 6 maanden, om de prestaties en hoeveelheid data beheersbaar te houden. Bijvoorbeeld:AND T.TRANDATE BETWEEN '2023-01-01' AND '2023-06-30'. - Filteren op dochteronderneming: Als een account meerdere dochterondernemingen bevat, is een filter op de juiste dochteronderneming belangrijk voor de prestaties en relevantie van de data. De query bevat de tijdelijke waarde
WHERE T.SUBSIDIARY_ID = [Your Subsidiary ID]; stel deze in op de juiste ID. - Actualiteit van data: De SuiteAnalytics Connect-database is een read-replica. De data wordt doorgaans meerdere keren per uur bijgewerkt, maar niet realtime. Houd rekening met een vertraging van enkele uren tussen een transactie in NetSuite en de weergave ervan in de Connect-database.
Voorbeeldquery sql
WITH Invoices AS (
SELECT
T.TRANSACTION_ID,
T.TRANID AS InvoiceNumber,
T.TRANDATE AS InvoiceDate,
T.DUEDATE AS DueDate,
T.FOREIGN_TOTAL AS InvoiceTotalAmount,
C.COMPANYNAME AS CustomerName,
BUILTIN.DF(C.LOCATION) AS Region,
T.CREATED_DATE AS InvoiceCreationDate,
CREATOR.FIRST_NAME || ' ' || CREATOR.LAST_NAME AS CreatorUser
FROM
TRANSACTIONS T
JOIN
CUSTOMERS C ON T.ENTITY_ID = C.CUSTOMER_ID
LEFT JOIN
EMPLOYEES CREATOR ON T.CREATED_BY_ID = CREATOR.EMPLOYEE_ID
WHERE
T.TRANSACTION_TYPE = 'Invoice'
AND T.TRANDATE BETWEEN TO_DATE('2023-01-01', 'YYYY-MM-DD') AND TO_DATE('2023-12-31', 'YYYY-MM-DD')
-- AND T.SUBSIDIARY_ID = [Your Subsidiary ID] -- Add your subsidiary filter if needed
)
-- 1. Invoice Created
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Invoice Created' AS "ActivityName",
I.InvoiceCreationDate AS "EventTimestamp",
I.InvoiceCreationDate AS "EventEndTime",
I.CreatorUser AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN I.CreatorUser LIKE '%System%' THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
UNION ALL
-- 2. Invoice Submitted for Approval & 3. Invoice Approved
SELECT
I.InvoiceNumber AS "InvoiceNumber",
CASE WHEN SN.NEW_VALUE = 'Pending Approval' THEN 'Invoice Submitted for Approval' ELSE 'Invoice Approved' END AS "ActivityName",
SN.DATE_CREATED AS "EventTimestamp",
SN.DATE_CREATED AS "EventEndTime",
SN_AUTHOR.FIRST_NAME || ' ' || SN_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN SN.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
SYSTEM_NOTES SN ON I.TRANSACTION_ID = SN.TRANSACTION_ID
LEFT JOIN
EMPLOYEES SN_AUTHOR ON SN.AUTHOR_ID = SN_AUTHOR.EMPLOYEE_ID
WHERE
SN.FIELD = 'TRANSACTION.APPROVALSTATUS' AND SN.NEW_VALUE IN ('Pending Approval', 'Approved')
UNION ALL
-- 4. Invoice Sent to Customer
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Invoice Sent to Customer' AS "ActivityName",
M.MESSAGE_DATE AS "EventTimestamp",
M.MESSAGE_DATE AS "EventEndTime",
MSG_AUTHOR.FIRST_NAME || ' ' || MSG_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
MESSAGES M ON I.TRANSACTION_ID = M.TRANSACTION_ID
LEFT JOIN
EMPLOYEES MSG_AUTHOR ON M.AUTHOR_ID = MSG_AUTHOR.EMPLOYEE_ID
WHERE
M.INCOMING = 'F' -- Indicates an outgoing message
UNION ALL
-- 5. Payment Due Date Reached
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Payment Due Date Reached' AS "ActivityName",
I.DueDate AS "EventTimestamp",
I.DueDate AS "EventEndTime",
'System' AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
1 AS "IsAutomated"
FROM
Invoices I
WHERE
I.DueDate IS NOT NULL AND I.DueDate < SYSDATE
UNION ALL
-- 6. Payment Reminder Issued (based on Messages table, requires a specific subject line convention)
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Payment Reminder Issued' AS "ActivityName",
M.MESSAGE_DATE AS "EventTimestamp",
M.MESSAGE_DATE AS "EventEndTime",
MSG_AUTHOR.FIRST_NAME || ' ' || MSG_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN M.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
MESSAGES M ON I.TRANSACTION_ID = M.TRANSACTION_ID
LEFT JOIN
EMPLOYEES MSG_AUTHOR ON M.AUTHOR_ID = MSG_AUTHOR.EMPLOYEE_ID
WHERE
M.INCOMING = 'F' AND UPPER(M.SUBJECT) LIKE '%PAYMENT REMINDER%'
UNION ALL
-- 7. Credit Memo Created & Applied
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Credit Memo Created' AS "ActivityName",
CM.CREATED_DATE AS "EventTimestamp",
CM.CREATED_DATE AS "EventEndTime",
CM_CREATOR.FIRST_NAME || ' ' || CM_CREATOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
TRANSACTION_LINES T_LINES ON I.TRANSACTION_ID = T_LINES.APPLIED_TO_TRANSACTION_ID
JOIN
TRANSACTIONS CM ON T_LINES.TRANSACTION_ID = CM.TRANSACTION_ID
LEFT JOIN
EMPLOYEES CM_CREATOR ON CM.CREATED_BY_ID = CM_CREATOR.EMPLOYEE_ID
WHERE
CM.TRANSACTION_TYPE = 'Credit Memo'
UNION ALL
-- 8. Customer Payment Received & 9. Payment Applied to Invoice
SELECT
I.InvoiceNumber AS "InvoiceNumber",
'Customer Payment Received' AS "ActivityName", -- Can also create a separate 'Payment Applied' event if needed
PAYMENT.CREATED_DATE AS "EventTimestamp",
PAYMENT.CREATED_DATE AS "EventEndTime",
PMT_CREATOR.FIRST_NAME || ' ' || PMT_CREATOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
0 AS "IsAutomated"
FROM
Invoices I
JOIN
TRANSACTION_LINES T_LINES ON I.TRANSACTION_ID = T_LINES.APPLIED_TO_TRANSACTION_ID
JOIN
TRANSACTIONS PAYMENT ON T_LINES.TRANSACTION_ID = PAYMENT.TRANSACTION_ID
LEFT JOIN
EMPLOYEES PMT_CREATOR ON PAYMENT.CREATED_BY_ID = PMT_CREATOR.EMPLOYEE_ID
WHERE
PAYMENT.TRANSACTION_TYPE = 'Customer Payment'
UNION ALL
-- 10. Invoice Paid In Full, 11. Invoice Voided, 12. Invoice Closed
SELECT
I.InvoiceNumber AS "InvoiceNumber",
CASE
WHEN SN.NEW_VALUE_ID = 'Invoice:B' THEN 'Invoice Paid In Full' -- 'B' is status 'Paid In Full'
WHEN SN.FIELD = 'TRANSACTION.VOIDED' AND SN.NEW_VALUE = 'T' THEN 'Invoice Voided'
WHEN SN.FIELD = 'TRANSACTION.CLOSED' AND SN.NEW_VALUE = 'T' THEN 'Invoice Closed'
END AS "ActivityName",
SN.DATE_CREATED AS "EventTimestamp",
SN.DATE_CREATED AS "EventEndTime",
SN_AUTHOR.FIRST_NAME || ' ' || SN_AUTHOR.LAST_NAME AS "User",
'NetSuite' AS "SourceSystem",
SYSDATE AS "LastDataUpdate",
I.InvoiceDate AS "InvoiceDate",
I.DueDate AS "DueDate",
I.InvoiceTotalAmount AS "InvoiceTotalAmount",
I.CustomerName AS "CustomerName",
I.Region AS "Region",
CASE WHEN SN.AUTHOR_ID < 0 THEN 1 ELSE 0 END AS "IsAutomated"
FROM
Invoices I
JOIN
SYSTEM_NOTES SN ON I.TRANSACTION_ID = SN.TRANSACTION_ID
LEFT JOIN
EMPLOYEES SN_AUTHOR ON SN.AUTHOR_ID = SN_AUTHOR.EMPLOYEE_ID
WHERE
(SN.FIELD = 'TRANSACTION.STATUS' AND SN.NEW_VALUE_ID = 'Invoice:B')
OR (SN.FIELD = 'TRANSACTION.VOIDED' AND SN.NEW_VALUE = 'T')
OR (SN.FIELD = 'TRANSACTION.CLOSED' AND SN.NEW_VALUE = 'T'); Klaar om te beginnen?
Gebruik deze template om je process mining-project op te starten en inzicht te krijgen in je facturerings- en facturatieprocessen. Begin vandaag met het optimaliseren van je order-to-cash-proces.
Optimaliseer nu de facturering in NetSuite voor een snellere cashflow
Verkort de factureringscyclus in NetSuite met 30% en verbeter je cashflow.
Geen creditcard nodig. Binnen enkele minuten ingesteld.