Je datatemplate voor crediteurenbeheer en betalingsverwerking
Je datatemplate voor crediteurenbeheer en betalingsverwerking
- Essentiële datavelden voor Sage Intacct
- Gestandaardiseerde stappen in het proces
- Specifieke extractie-instructies
Attributen voor de verwerking van crediteurenfacturen
| Naam | Beschrijving | ||
|---|---|---|---|
| Activiteitsnaam ActivityName | De specifieke actie of het gebeurtenis dat plaatsvindt in de levenscyclus van de factuur. | ||
| Beschrijving Dit attribuut legt de naam vast van de uitgevoerde stap, zoals 'Factuur Aangemaakt', 'Factuur Goedgekeurd' of 'Betaling Geboekt'. Het is belangrijk voor het reconstrueren van de processtroom en het visualiseren van de opeenvolging van gebeurtenissen in het End-to-End Cycle Time Distribution dashboard. Waarom het belangrijk is Definieert de stappen in de proceskaart en is verplicht voor elke process mining-analyse. Waar te verkrijgen Audit trail logs of systeemtransactiegeschiedenistabellen Voorbeelden Factuurconcept aangemaaktFactuur GoedgekeurdPayment Generated | |||
| Factuurnummer InvoiceNumber | De unieke IDnummer voor het leveranciersfactuurdocument. | ||
| Beschrijving Het factuurnummer dient als de definitieve case-identificatienummer voor dit proces. Het groepeert op unieke wijze alle gebeurtenissen die betrekking hebben op één leveranciersfactuur, waardoor een grondige analyse mogelijk is van het traject van ontvangst tot afwikkeling. In Sage Intacct komt dit gewoonlijk overeen met het Document Number of Record Number binnen het AP Bill object. Waarom het belangrijk is Het is de fundamentele sleutel voor het koppelen van alle procesactiviteiten aan één enkele case-instantie. Waar te verkrijgen Sage Intacct AP Bill object, veld DOCNUMBER of RECORDNO Voorbeelden INV-2023-001988722-AFEB-23-991 | |||
| Tijdstempel EventTime | De specifieke datum en tijd waarop een activiteit plaatsvond. | ||
| Beschrijving Dit attribuut registreert het exacte moment waarop het gebeurtenis plaatsvond. Het is de basis voor alle tijdsgebaseerde berekeningen, waaronder 'Gemiddelde Factuur Doorlooptijd' en 'Gemiddelde Goedkeuringsduur'. Nauwkeurige tijdstempels zijn belangrijk voor het vinden van knelpunten in het Approval Workflow Performance dashboard. Waarom het belangrijk is Verplicht om gebeurtenissen te sequensen en de doorlooptijden tussen processtappen te berekenen. Waar te verkrijgen Timestamps voor het aanmaken of wijzigen van transacties in de brontabellen. Voorbeelden 2023-10-12T08:30:00Z2023-10-12T14:45:12Z2023-10-15T09:15:00Z | |||
| Bronsysteem SourceSystem | De naam van het systeem waar het gebeurtenis is ontstaan. | ||
| Beschrijving Dit attribuut identificeert de herkomst van de data, wat voor dit proces doorgaans 'Sage Intacct' is. Als facturen echter worden ingelezen vanuit OCR-tools of externe inkoopplatforms, helpt dit veld databronnen te onderscheiden in het Compliance en Risico-overzicht. Waarom het belangrijk is Zorgt voor traceerbaarheid van datalineage, vooral in multi-systeemomgevingen. Waar te verkrijgen Hardcoded tijdens extractie of afgeleid uit verbindingsinstellingen Voorbeelden Sage IntacctBill.comExpensify | |||
| Tijdstip van extractie LastDataUpdate | De timestamp van de laatste extractie of verversing van het record. | ||
| Beschrijving Dit attribuut houdt bij wanneer de data voor het laatst is gesynchroniseerd met het process mining platform. Het helpt gebruikers de relevantie van de data in dashboards zoals Payment Batch Optimization te begrijpen en zorgt ervoor dat de analyse de meest actuele status van het crediteurengrootboek weerspiegelt. Waarom het belangrijk is Technisch veld vereist voor incrementele ladingen en controles op de recentheid van data. Waar te verkrijgen Systeemtijd op het moment van data-extractie Voorbeelden 2023-11-01T12:00:00Z2023-11-02T01:00:00Z | |||
| Aangemaakt door gebruiker CreatedBy | De gebruikers-id van de persoon die de factuur heeft ingevoerd. | ||
| Beschrijving Dit attribuut identificeert de initiator van de procescase. Het wordt gebruikt in de Manual Intervention en Touchpoints analysis om trainingsbehoeften te vinden voor specifieke gebruikers die frequent gegevenscorrectie nodig hebben of duplicaten genereren. Waarom het belangrijk is Maakt analyse van prestaties van medewerkers mogelijk en identificeert opleidingskansen. Waar te verkrijgen Sage Intacct AP Bill object, veld CREATEDBY Voorbeelden jsmithap_automatisering_botmdoe | |||
| Afdeling Department | De interne afdeling die verantwoordelijk is voor de uitgave. | ||
| Beschrijving Dit attribuut categoriseert de factuur op kostenplaats of bedrijfsfunctie. Het ondersteunt het Process Variation Analysis dashboard door te benadrukken welke afdelingen kampen met goedkeuringsvertragingen of hoge reworkingspercentages in vergelijking met het organisatiegemiddelde. Waarom het belangrijk is Maakt organisatiebrede drill-down en rootcauseanalyse mogelijk. Waar te verkrijgen Sage Intacct AP Bill object, veld DEPTID of DEPTNAME Voorbeelden IT-dienstenMarketingOperationele taken | |||
| Betaaldatum PaymentDate | De datum waarop de betaling werd uitgevoerd. | ||
| Beschrijving Dit attribuut registreert de uiteindelijke timestamp van de financiële afwikkeling. Het wordt gebruikt om de doorlooptijd te berekenen en wordt vergeleken met de vervaldatum voor de On-Time Payment Percentage KPI. Waarom het belangrijk is Markeert de voltooiing van de kernprocescyclus. Waar te verkrijgen Sage Intacct AP Payment Detail, veld WHENPAID Voorbeelden 2023-11-052023-11-10 | |||
| Factuurbedrag InvoiceAmount | Het totale factuurbedrag. | ||
| Beschrijving Dit attribuut vertegenwoordigt de totale financiële aansprakelijkheid voor de specifieke case. Het wordt gebruikt in het Dupliceren Submission Detection dashboard om facturen met identieke bedragen en leveranciers-ID's te vinden. Het maakt ook filteranalyse mogelijk op hoogwaardige versus laagwaardige transacties. Waarom het belangrijk is Essentieel voor financiële impactanalyse en risicoscoring. Waar te verkrijgen Sage Intacct AP Bill object, veld TOTALENTERED of TOTALDUE Voorbeelden 1500.00250.5010000.00 | |||
| Factuurdatum InvoiceDate | De datum waarop de factuur door de leverancier is uitgereikt. | ||
| Beschrijving Dit attribuut weerspiegelt de documentdatum die op de fysieke factuur staat vermeld. Het wordt gebruikt in combinatie met de Betalingsdatum om de End-to-End Cycle Time te berekenen. Aanzienlijke verschillen tussen de Factuurdatum en de invoerdatum kunnen duiden op vertragingen in de postkamer of bij het scannen. Waarom het belangrijk is Het startpunt voor verouderingsanalyse en de berekening van betalingstermijnen. Waar te verkrijgen Sage Intacct AP Bill object, veld WHENTOCREATE of DATECREATED Voorbeelden 2023-10-012023-10-05 | |||
| Factuurstatus InvoiceStatus | De huidige levenscyclusstatus van de factuur in het systeem. | ||
| Beschrijving Dit attribuut weerspiegelt de huidige systeemstatus (bijv. Geboekt, Betaald, Concept). Het helpt de dataset te filteren op actieve versus voltooide cases in het End-to-End Cycle Time Distribution dashboard. Waarom het belangrijk is Identificeert snel de status van de case. Waar te verkrijgen Sage Intacct AP Bill object, veld STATE Voorbeelden GeboektBetaaldConceptGedeeltelijk betaald | |||
| Inkoopordernummer PurchaseOrderNumber | Het referentienummer van de gerelateerde inkooporder. | ||
| Beschrijving Dit attribuut koppelt de factuur aan een stroomopwaarts inkoopdocument. Het is de belangrijkste drijfveer voor het Three Way Match Efficiency dashboard en de PO Compliance en Non PO Spend analysis. Cases met een nulwaarde hier duiden op non-PO uitgaven. Waarom het belangrijk is Maakt onderscheid tussen PO-gedekte en niet-PO-facturen voor compliance-analyse. Waar te verkrijgen Sage Intacct AP Bill object, veld PONUMBER of gerelateerde documentlink Voorbeelden PO-9912PO-1002null | |||
| Naam Leverancier VendorName | De naam van de leverancier of dienstverlener die de factuur heeft uitgeschreven. | ||
| Beschrijving Dit attribuut identificeert de externe entiteit aan wie betaling verschuldigd is. Het is een primaire dimensie voor het Vendor Payment Predictability dashboard, waardoor analysesten prestatie meetwaarden per leverancier kunnen groeperen en hoogrisico leveranciersrelaties of frequente handmatige contactmomenten kunnen vinden. Waarom het belangrijk is Belangrijk voor het segmenteren van analyses op basis van leveranciersprestaties en -gedrag. Waar te verkrijgen Sage Intacct AP Bill object, veld VENDORNAME Voorbeelden Acme CorpWereldwijd Services IncOffice Depot | |||
| Vervaldatum DueDate | De contractuele uiterste betaaldatum. | ||
| Beschrijving Dit attribuut geeft aan wanneer de betaling moet worden gedaan om boetes te voorkomen. Het is de noemer voor de On-Time Payment Percentage KPI. Het analyseren van betalingen die na deze datum zijn uitgevoerd, onthult compliance-lacunes en potentiële schade aan leveranciersrelaties. Waarom het belangrijk is Basislijn voor het bepalen van tijdige prestaties en SLA-naleving. Waar te verkrijgen Sage Intacct AP Bill object, veld WHENDUE Voorbeelden 2023-11-012023-11-15 | |||
| Bedrijfseenheid BusinessUnit | De juridische entiteit of locatie die aan de factuur is gekoppeld. | ||
| Beschrijving Dit attribuut onderscheidt verschillende dochterondernemingen of kantoorlocaties. Het is belangrijk voor het Compliance en Risico-overzicht om de procesnaleving te vergelijken tussen verschillende geografische of juridische entiteiten binnen de organisatie. Waarom het belangrijk is Essentieel voor multi-entiteitsbenchmarks. Waar te verkrijgen Sage Intacct AP Bill object, veld LOCATIONID of ENTITY Voorbeelden VS-HoofdkantoorEMEA-LondenAPAC-Singapore | |||
| Betalingstermijnen PaymentTerms | De overeengekomen voorwaarden voor betalingstermijnen en kortingen. | ||
| Beschrijving Dit attribuut beschrijft de regel die wordt gebruikt om de vervaldatum en kortingsdatum te berekenen (bijv. Net 30, 2/10 Net 30). Het is belangrijk voor het Early Payment Discount Analysis dashboard om facturen te vinden die in aanmerking kwamen voor gemiste besparingen. Waarom het belangrijk is Context voor het analyseren van kasstroomstrategieën en gemiste kortingskansen. Waar te verkrijgen Sage Intacct AP Bill object, veld TERMNAME Voorbeelden Netto 30Verschuldigd bij ontvangst2/10 netto 30 | |||
| Blokkade Status HoldStatus | Geeft aan of de factuur momenteel in de wacht staat voor betaling. | ||
| Beschrijving Dit attribuut markeert cases die zijn opgeschort van betalingsverwerking. Het ondersteunt het Payment Block Impact Monitor dashboard door cases te vinden die vastzitten in een geblokkeerde status. Waarom het belangrijk is Identificeert directe knelpunten die ingrijpen vereisen. Waar te verkrijgen Sage Intacct AP Bill object, veld ONHOLD Voorbeelden truefalse | |||
| Is door inkooporder gedekt IsPOBacked | Vlag die aangeeft of de factuur is gekoppeld aan een inkooporder. | ||
| Beschrijving Dit attribuut identificeert of de factuur de standaard inkoopprocedures heeft gevolgd. Het is het primaire filter voor de Purchase Order Compliance Rate KPI en helpt ad-hoc uitgaven te scheiden van beheerde uitgaven. Waarom het belangrijk is Belangrijke differentiator voor procespadanalyse. Waar te verkrijgen Calculated: Inkoopordernummer is niet null Voorbeelden truefalse | |||
| Is te laat betaald IsPaidLate | Vlag die aangeeft of de betaaldatum de vervaldatum heeft overschreden. | ||
| Beschrijving Deze vlag wordt berekend door de Betalingsdatum te vergelijken met de vervaldatum. Het dient als een direct filter voor de On-Time Payment Percentage KPI en helpt probleemgevallen te isoleren in het Vendor Payment Predictability dashboard. Waarom het belangrijk is Vereenvoudigt het filteren op SLA-overtredingen. Waar te verkrijgen Calculated: Betaaldatum > Vervaldatum Voorbeelden truefalse | |||
Activiteiten voor de verwerking van crediteurenfacturen
| Activiteit | Beschrijving | ||
|---|---|---|---|
| Factuur geboekt | Het punt waarop de factuur wordt geboekt in het grootboek. In systemen zonder goedkeuringsworkflows kan dit gelijktijdig met de indiening plaatsvinden. | ||
| Waarom het belangrijk is Geeft aan dat de financiële verplichting officieel is erkend in de boekhouding. Waar te verkrijgen Query de audit trail van APBILL voor de statuswijziging naar 'Posted'. Vastleggen Gelogd wanneer transactie wordt geboekt in het grootboek Gebeurtenistype explicit | |||
| Factuur gematcht met inkooporder | Identificeert wanneer een leveranciersfactuur wordt aangemaakt door een inkooporder of ontvangstbewijs te converteren of te koppelen. Deze activiteit valideert de efficiëntie van de driewegmatching. | ||
| Waarom het belangrijk is Belangrijk voor de KPI 'First-Pass Match Rate' en het bepalen van PO-compliance versus non-PO-uitgaven. Waar te verkrijgen Controleer het APBILL object op een niet-null waarde in de velden 'createdfrom' of 'source_id' die een koppeling met een inkooptransactie aangeven. Vastleggen Vergelijk Record ID met Bron Transactie-ID Gebeurtenistype inferred | |||
| Factuur Goedgekeurd | Een aparte goedkeuringsactie vastgelegd binnen de aangewezen goedkeuringsworkflow. Dit betekent dat een gebruiker met voldoende autoriteit de factuur voor betaling heeft geautoriseerd. | ||
| Waarom het belangrijk is Belangrijk voor de KPI 'Gemiddelde Goedkeuringsduur' en het vinden van knelpunten bij managementgoedkeuring. Waar te verkrijgen Raadpleeg de 'Examine Approval History' log behorende bij de AP-factuur om 'Approved' acties te vinden. Vastleggen Gelogd wanneer goedkeuringsactie wordt uitgevoerd Gebeurtenistype explicit | |||
| Factuur Ingediend | De overgang van de factuur van een conceptstatus naar een ingediende status, wat de goedkeuringsworkflow activeert. Dit markeert het einde van de gegevensinvoer en het begin van de goedkeuringscyclus. | ||
| Waarom het belangrijk is Essentieel voor het onderscheiden van de duur van 'Data Entry' en 'Goedkeuring' in de doorlooptijdanalyse. Waar te verkrijgen Afleiden uit de APBILL audit trail waar het statusveld verandert van 'Concept' naar 'Ingediend' of 'Wachtend op Goedkeuring'. Vastleggen Vergelijk het statusveld voor/na Gebeurtenistype inferred | |||
| Factuurconcept aangemaakt | De initiële aanmaak van de AP Bill-record in Sage Intacct, meestal in een Concept-status. Dit legt het invoerpunt vast van de factuurdata voordat deze in goedkeurings- of boekingsworkflows terechtkomt. | ||
| Waarom het belangrijk is Bepaalt de vroegste timestamp voor de procesdoorlooptijd en identificeert het begin van de aansprakelijkheidsregistratie. Waar te verkrijgen Query de audit trail van het APBILL-object voor de actie 'Create' of de initiële timestamp van het recordcreatie. Vastleggen Gelogd wanneer APBILL record voor het eerst wordt aangemaakt Gebeurtenistype explicit | |||
| Payment Generated | De aanmaak van de Betalingsrecord (Cheque, ACH, EFT) gekoppeld aan de factuur. Dit is het moment waarop de overboeking van de gelden in het systeem wordt geïnitieerd. | ||
| Waarom het belangrijk is De primaire timestamp voor 'Gemiddelde Factuur Doorlooptijd' en 'Percentage Tijdige Betalingen'. Waar te verkrijgen Identificeer de aanmaak van een APPYMT record gekoppeld aan de APBILL. Gebruik de aanmaakdatum van het betalingsobject. Vastleggen Gelogd wanneer APPYMT record wordt aangemaakt Gebeurtenistype explicit | |||
| Betaling afgestemd | De bevestiging dat de betaling door de bank is verwerkt, gemarkeerd tijdens het bankafstemmingsproces in Cash Management. | ||
| Waarom het belangrijk is Biedt de 'End-to-End Cycle Time' vanuit een cashflow perspectief, wat bevestigt dat geld daadwerkelijk de rekening heeft verlaten. Waar te verkrijgen Controleer de reconciliatiestatus of het 'Cleared Date'-veld op het APPYMT object of de gekoppelde Cash Management transactie. Vastleggen Vergelijk reconciliatiestatus Gebeurtenistype inferred | |||
| Betaling ongeldig gemaakt | De annulering van een eerder gegenereerde betaling. Dit heropent de factuurverplichting en vereist dat het betalingsproces opnieuw wordt gestart. | ||
| Waarom het belangrijk is Identificeer ernstige downstream procesfouten waarbij betalingen worden gegenereerd maar vervolgens worden ingetrokken. Waar te verkrijgen Query het APPYMT-object op status 'Void' of 'Voided' en de bijbehorende timestamp. Vastleggen Gelogd wanneer een ongeldige transactie plaatsvindt Gebeurtenistype explicit | |||
| Factuur afgewezen | Registreert wanneer een goedkeurder de factuur afwijst, waardoor deze terugkeert naar een Concept- of gedeeltelijk goedgekeurde status. Dit duidt op een proceslus of een datakwaliteitsprobleem. | ||
| Waarom het belangrijk is Brengt knelpunten in de workflow aan het licht en draagt bij aan reworkingsstatistieken. Waar te verkrijgen Raadpleeg de 'Examine Approval History' log behorende bij de AP-factuur voor 'Declined' of 'Rejected' acties. Vastleggen Gelogd wanneer afwijzingsactie wordt uitgevoerd Gebeurtenistype explicit | |||
| Factuur bijgewerkt | Registreert wijzigingen in de factuurkop of orderregels na de initiële aanmaak. Een hoge frequentie van deze activiteit duidt op handmatig herstelwerk of fouten in de data-extractie. | ||
| Waarom het belangrijk is Sleutel voor het berekenen van de 'Touchless Processing Rate' en het vinden van inefficiënte handmatige datacorrectielussen. Waar te verkrijgen Raadpleeg de APBILL audit history voor 'Update' acties uitgevoerd door een gebruiker voorafgaand aan het boeken. Vastleggen Gelogd wanneer transactie wordt gewijzigd Gebeurtenistype explicit | |||
| Factuur geselecteerd voor betaling | De opname van de factuur in een betaalbatch of selecpakketun. De status verandert doorgaans naar 'Geselecteerd', waardoor deze wordt vergrendeld voor andere betaalrondes. | ||
| Waarom het belangrijk is Analyseert 'Optimalisatie van betalingsbatches' en de vertraging tussen het besluit om te betalen en de daadwerkelijke uitvoering van de betaling. Waar te verkrijgen Afleiden uit APBILL statuswijziging naar 'Geselecteerd' of equivalent via de 'Facturen Betalen' schermactie. Vastleggen Vergelijk het statusveld voor/na Gebeurtenistype inferred | |||
| Factuur in de wacht gezet | Het toepassen van een betalingsblokkade of 'On Hold'-status op de factuur. Dit voorkomt dat de factuur wordt geselecteerd voor betalingsverwerking. | ||
| Waarom het belangrijk is Heeft directe impact op 'Payment Block Resolution Time' en visualiseert vertragingen in de betalingspijplijn. Waar te verkrijgen Afleiden uit de APBILL audit trail waar de 'On Hold' boolean of statusveld overgaat naar 'true'. Vastleggen Vergelijk het statusveld voor/na Gebeurtenistype inferred | |||
| Factuur vrijgegeven uit wachtstand | Het opheffen van de betalingsblokkade, waardoor de factuur kan doorgaan naar de betalingsselectie. Dit markeert de oplossing van het geschil of probleem. | ||
| Waarom het belangrijk is Markeert het einde van een knelpuntperiode en de hervatting van de standaard processtroom. Waar te verkrijgen Afleiden uit de APBILL audit trail waar de 'On Hold' boolean of statusveld overgaat naar 'false'. Vastleggen Vergelijk het statusveld voor/na Gebeurtenistype inferred | |||
Extractiegidsen
Stappen
AP Facturen-weergave voorbereiden Log in bij Sage Intacct en navigeer naar de crediteurenadministratie > All tab > Bills. Selecteer 'Nieuw maken View'. Geef de weergave de naam 'Process Mining - Bills Extraction'. Selecteer de volgende kolommen in deze volgorde: Invoice Number (Doc Number), Vendor Naam, Date Created, Date Posted, Due Date, Total Bedrag, State, Valuta, PO Number, Department, Created By, On Hold, Description, Record No (System ID). Stel filters in om 'Draft' facturen uit te sluiten als u alleen geboekte data wilt, of laat ze open om de volledige levenscyclus vast te leggen. Zorg ervoor dat het datumbereik uw analyseperiode beslaat (bijv. Date Created = Last 365 Days). Sla de weergave op.
AP Facturen-data exporteren Open de weergave 'Process Mining - Bills Extraction'. Klik op de 'Export'-knop en selecteer 'CSV'-formaat. Sla het bestand op als 'AP_Bills.csv'.
Weergave van geboekte betalingen voorbereiden Navigeer naar de crediteurenadministratie > All tab > Posted Payments. Maak een nieuwe weergave aan genaamd 'Process Mining - Payments'. Selecteer kolommen: Check/Payment Number, Payment Date, Vendor Naam, Transaction Bedrag, Payment Method, State (Void/Cleared), Date Reconciled, Bill Number (Reference), Record No. Sla de weergave op.
Betalingsdata exporteren Open de weergave 'Process Mining - Payments'. Klik op 'Export' en selecteer 'CSV'. Sla het bestand op als 'AP_Payments.csv'.
Optioneel: Audit Trail voor workflowgeschiedenis Standaard aangepaste weergaven in Intacct tonen alleen de huidige status en de laatste wijzigingsdatum. Om historische gebeurtenissen zoals 'Invoice Declined' of specifieke goedkeuringstijdstempels vast te leggen, moet u de Audit History exporteren. Navigeer naar Reports > Setup > Audit Trail. Configureer het audit trail om te kijken naar het 'AP Bill'-object. Selecteer actietypen: Add, Modify, Approve, Decline. Exporteer dit rapport als 'AP_Audit_History.csv'.
Transformatiescript uitvoeren Gebruik het Python-script uit de Query-sectie om deze bestanden samen te voegen. Het script importeert 'AP_Bills.csv', 'AP_Payments.csv' en optioneel 'AP_Audit_History.csv' om de vereiste Event Log-structuur te genereren.
Verifiëren en formatteren Open de resulterende 'Event_Log_Output.csv'. Zorg ervoor dat 'EventTime' in ISO 8601-formaat (JJJJ-MM-DD UU:MM:SS) is. Controleer of 'InvoiceNumber' voor alle rijen is ingevuld. Upload de uiteindelijke CSV naar ProcessMind.
Configuratie
- Configuratie van de weergave: Zorg dat het 'Aantal records' in de instellingen hoog genoeg is om alle transacties mee te nemen, of gebruik de exportfunctie 'Volgende pagina' als er beperkingen gelden.
- Datumverwerking: Intacct exporteert datums in het lokale formaat van de gebruiker (bijv. MM/DD/JJJJ). Het transformatiescript gaat uit van de standaard Amerikaanse indeling; pas het script aan als uw gebruikersprofiel DD/MM/JJJJ hanteert.
- Veldrechten: Controleer of de gebruiker die de weergave aanmaakt 'List'- en 'View'-rechten heeft voor de crediteurenadministratie Bills en Posted Payments.
- Historische granulariteit: Zonder de export van de Audit Trail zijn activiteiten zoals 'Invoice Approved' gebaseerd op de 'Date Posted'-proxy, en toont 'Invoice Updated' enkel het tijdsTip van de laatste wijziging.
- Filtering: Gebruik een filter op 'Date Created' >= [Startdatum] om het datavolume te beperken. Vermijd filtering op 'State', tenzij u specifiek 'Voided' of historische records wilt uitsluiten.
a Voorbeeldquery config
import pandas as pd
import numpy as np
from datetime import datetime
# CONFIGURATION
# Update these filenames to match your exported files
FILE_BILLS = 'AP_Bills.csv'
FILE_PAYMENTS = 'AP_Payments.csv'
# Set to None if Audit History is unavailable
FILE_AUDIT = 'AP_Audit_History.csv'
# COLUMNS MAPPING (Adjust based on your View column headers)
COL_BILL_NUM = 'Invoice Number'
COL_VENDOR = 'Vendor Name'
COL_AMOUNT = 'Total Amount'
COL_CREATED = 'Date Created'
COL_POSTED = 'Date Posted'
COL_DUE = 'Due Date'
COL_STATE = 'State'
COL_PO = 'PO Number'
COL_HOLD = 'On Hold'
COL_PAY_DATE = 'Payment Date'
COL_PAY_REF = 'Check/Payment Number'
COL_PAY_BILL_REF = 'Bill Number'
COL_PAY_STATE = 'State'
# OUTPUT STRUCTURE
event_log_columns = [
'InvoiceNumber', 'ActivityName', 'EventTime', 'SourceSystem',
'LastDataUpdate', 'VendorName', 'InvoiceAmount', 'PurchaseOrderNumber',
'InvoiceDate', 'DueDate', 'InvoiceStatus'
]
def run_extraction():
events = []
current_time = datetime.now().isoformat()
# 1. LOAD BILLS
try:
df_bills = pd.read_csv(FILE_BILLS)
# Clean formatting (remove currency symbols if present)
df_bills[COL_AMOUNT] = df_bills[COL_AMOUNT].replace('[\\$,]', '', regex=True).astype(float)
except FileNotFoundError:
print('Bills file not found.')
return
# 2. LOAD PAYMENTS
try:
df_pay = pd.read_csv(FILE_PAYMENTS)
except FileNotFoundError:
print('Payments file not found.')
df_pay = pd.DataFrame()
# PROCESSING BILLS
for index, row in df_bills.iterrows():
invoice_num = str(row[COL_BILL_NUM])
vendor = row[COL_VENDOR]
amount = row[COL_AMOUNT]
po_num = str(row[COL_PO]) if pd.notna(row[COL_PO]) else None
due_date = row[COL_DUE]
status = row[COL_STATE]
# Common attributes for this invoice
base_attr = {
'InvoiceNumber': invoice_num,
'SourceSystem': 'Sage Intacct',
'LastDataUpdate': current_time,
'VendorName': vendor,
'InvoiceAmount': amount,
'PurchaseOrderNumber': po_num,
'DueDate': due_date,
'InvoiceStatus': status
}
# Activity: Invoice Draft Created
if pd.notna(row[COL_CREATED]):
events.append({**base_attr,
'ActivityName': 'Invoice Draft Created',
'EventTime': row[COL_CREATED],
'InvoiceDate': row[COL_CREATED]})
# Activity: Invoice Matched to PO
if po_num and pd.notna(row[COL_CREATED]):
events.append({**base_attr,
'ActivityName': 'Invoice Matched to PO',
'EventTime': row[COL_CREATED],
'InvoiceDate': row[COL_CREATED]})
# Activity: Invoice Posted
if pd.notna(row[COL_POSTED]):
events.append({**base_attr,
'ActivityName': 'Invoice Posted',
'EventTime': row[COL_POSTED]})
# In standard views, Posted often implies Submission and Approval if no audit trail
# We generate proxy events if Audit Trail is missing
if not FILE_AUDIT:
events.append({**base_attr,
'ActivityName': 'Invoice Submitted',
'EventTime': row[COL_POSTED]})
events.append({**base_attr,
'ActivityName': 'Invoice Approved',
'EventTime': row[COL_POSTED]})
# Activity: Invoice Placed on Hold
if str(row[COL_HOLD]).lower() in ['true', 'yes', 'on hold']:
# Time is approximate (Last Modified) as View doesn't track hold time
events.append({**base_attr,
'ActivityName': 'Invoice Placed on Hold',
'EventTime': row.get('Date Modified', row[COL_CREATED])})
# PROCESSING PAYMENTS
# Intacct payment export might list multiple bills per check line or require join logic
# Assuming direct link via Bill Number
if not df_pay.empty:
for index, row in df_pay.iterrows():
bill_ref = str(row[COL_PAY_BILL_REF])
# Only process if this payment links to a bill we know
# (In a real scenario, merge on Bill Number)
pay_attr = {
'InvoiceNumber': bill_ref,
'SourceSystem': 'Sage Intacct',
'LastDataUpdate': current_time,
'ActivityName': 'Payment Generated',
'EventTime': row[COL_PAY_DATE]
}
events.append(pay_attr)
if str(row[COL_PAY_STATE]).lower() == 'void':
events.append({**pay_attr, 'ActivityName': 'Payment Voided', 'EventTime': row[COL_PAY_DATE]})
if 'Date Reconciled' in row and pd.notna(row['Date Reconciled']):
events.append({**pay_attr, 'ActivityName': 'Payment Reconciled', 'EventTime': row['Date Reconciled']})
# 3. OUTPUT
df_events = pd.DataFrame(events)
# Ensure dates are ISO format
df_events['EventTime'] = pd.to_datetime(df_events['EventTime']).dt.strftime('%Y-%m-%d %H:%M:%S')
# Final Select
df_final = df_events[event_log_columns]
df_final.to_csv('Event_Log_Output.csv', index=False)
print(f'Successfully exported {len(df_final)} events.')
if __name__ == '__main__':
run_extraction() Stappen
Webservicesessie tot stand brengen: Authenticeer bij het Sage Intacct Web Services 3.0-endpoint met uw Sender ID, Password, Company ID, Gebruiker ID en Gebruiker Password om een session ID te verkrijgen.
Verplichte objecten vinden: U moet data extraheren uit drie primaire objecten om de volledige levenscyclus vast te leggen:
APBILL(Factuurheaders),APPYMTDETAIL(Betaalgegevens gekoppeld aan facturen) enAUDITTRAIL(Workflowgeschiedenis).Factuurheaderdata extraheren: Gebruik de
readByQuery-methode op hetAPBILL-object. Selecteer de veldenRECORDNO,DOCNUMBER,WHENCREATED,WHENPOSTED,STATE,VENDORNAME,TOTALENTERED,PONUMBER,DUE_DATE. Filter op datumbereik met behulp vanWHENCREATED.Betalingsdata extraheren: Gebruik
readByQueryopAPPYMTDETAIL. SelecteerRECORDNO,WHENCREATED,PAYMENTDATE,TRX_AMOUNT,DOCNUMBER(Betalingsreferentie) enBILLRECORDNO(Foreign Key naar APBILL). Zorg ervoor dat u deCLEARED-status of -datum ophaalt, indien beschikbaar, voor afstemming.Auditgeschiedenis extraheren: Gebruik
readByQueryop hetAUDITTRAIL-object. Filter waarOBJECTTYPE= 'APBILL'. Dit is belangrijk voor het vastleggen van goedkeurings-, afwijzings-, wacht- en annuleringsgebeurtenissen die niet als tijdstempels in de headertabel worden opgeslagen. SelecteerOBJECTKEY,LOGTYPE,MESSAGE,WHENDOCCURREDenUSERID.Data voorbereiden (staging): Laad de XML/JSON-responses van deze drie API-aanroepen in een staging database (SQL Server, Snowflake, Postgres, etc.). De API ondersteunt geen complexe joins of unions in één aanroep; transformatie moet dus na extractie plaatsvinden.
Transformatiescript uitvoeren: Voer het SQL-script uit, beschikbaar in de Query-sectie, op uw staged tabellen. Dit script verenigt de statische headerdata met het transactionele auditlog om het unieke event log te creëren.
Activiteitstypen bevestigen: Controleer de output op specifieke trefwoorden in de Audit Trail-berichten (zoals Approved, Declined) en zorg ervoor dat uw string-matching logica de specifieke bewoordingen van uw Intacct-configuratie dekt.
Datums formatteren: Zorg ervoor dat de
EventTime-kolom is geformatteerd volgens de ISO 8601 (JJJJ-MM-DD UU:MM:SS)-standaarden tijdens de uiteindelijke export.Event Log exporteren: Exporteer het resultaat van de SQL-query als een CSV- of Parquet-bestand voor upload naar ProcessMind.
Configuratie
- API Endpoint: https://api.intacct.com/ia/xml/xmlgw.phtml
- Method:
readByQuery(Web Services 3.0) - Page Size: Stel
pagesizein op 1000 (maximaal aanbevolen) om de HTTP-overhead te minimaliseren. Implementeer een loop met deresultIdom de volgende pagina's op te halen. - Date Filtering: Gebruik standaard SQL-operators (>=, <, AND) in uw query-string voor
WHENCREATED-kolommen om de extractieperiode te beperken (bijv. laatste 365 dagen). - Permissions: De extractie-gebruiker heeft 'List'- en 'View'-rechten nodig voor de crediteurenadministratie en het recht op 'Audit Trail' (vaak te vinden in de instellingen van Platform Services of Company Admin).
- Object Koppelinging:
APBILL.RECORDNOis de primary key die wordt gebruikt om te koppelen metAPPYMTDETAIL.BILLRECORDNOenAUDITTRAIL.OBJECTKEY.
a Voorbeeldquery sql
/*
PROCESSMIND TRANSFORMATION SCRIPT
Prerequisite: Data from APBILL, APPYMTDETAIL, and AUDITTRAIL
must be extracted via API and staged in tables with those names.
*/
/* 1. Invoice Draft Created */
SELECT
H.DOCNUMBER AS InvoiceNumber,
'Invoice Draft Created' AS ActivityName,
H.WHENCREATED AS EventTime,
'Sage Intacct' AS SourceSystem,
GETDATE() AS LastDataUpdate,
H.VENDORNAME AS VendorName,
H.TOTALENTERED AS InvoiceAmount,
H.PONUMBER AS PurchaseOrderNumber,
H.WHENCREATED AS InvoiceDate,
H.DUE_DATE AS DueDate,
NULL AS Department,
H.CREATEDBY AS CreatedBy,
H.STATE AS InvoiceStatus,
NULL AS PaymentDate
FROM APBILL H
UNION ALL
/* 2. Invoice Matched to PO (Derived from existence of PO Number at creation) */
SELECT
H.DOCNUMBER,
'Invoice Matched to PO',
H.WHENCREATED, -- Occurs effectively at creation if PO links
'Sage Intacct',
GETDATE(),
H.VENDORNAME,
H.TOTALENTERED,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
H.CREATEDBY,
H.STATE,
NULL
FROM APBILL H
WHERE H.PONUMBER IS NOT NULL AND H.PONUMBER <> ''
UNION ALL
/* 3. Invoice Posted (Header Timestamp) */
SELECT
H.DOCNUMBER,
'Invoice Posted',
H.WHENPOSTED,
'Sage Intacct',
GETDATE(),
H.VENDORNAME,
H.TOTALENTERED,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
H.CREATEDBY,
H.STATE,
NULL
FROM APBILL H
WHERE H.WHENPOSTED IS NOT NULL
UNION ALL
/* 4. Payment Generated */
SELECT
H.DOCNUMBER,
'Payment Generated',
P.WHENCREATED,
'Sage Intacct',
GETDATE(),
H.VENDORNAME,
P.TRX_AMOUNT,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
P.CREATEDBY,
H.STATE,
P.PAYMENTDATE
FROM APPYMTDETAIL P
JOIN APBILL H ON P.BILLRECORDNO = H.RECORDNO
UNION ALL
/* 5. Payment Reconciled */
SELECT
H.DOCNUMBER,
'Payment Reconciled',
P.WHENCLEARED,
'Sage Intacct',
GETDATE(),
H.VENDORNAME,
P.TRX_AMOUNT,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
P.CREATEDBY,
H.STATE,
P.PAYMENTDATE
FROM APPYMTDETAIL P
JOIN APBILL H ON P.BILLRECORDNO = H.RECORDNO
WHERE P.WHENCLEARED IS NOT NULL
UNION ALL
/* 6. Workflow Activities from Audit Trail */
/* Covers: Updated, Submitted, Approved, Declined, Hold, Released, Voided, Selected */
SELECT
H.DOCNUMBER,
CASE
WHEN A.MESSAGE LIKE '%Submitted%' THEN 'Invoice Submitted'
WHEN A.MESSAGE LIKE '%Approved%' THEN 'Invoice Approved'
WHEN A.MESSAGE LIKE '%Declined%' THEN 'Invoice Declined'
WHEN A.MESSAGE LIKE '%Hold%' AND A.LOGTYPE = 'Add' THEN 'Invoice Placed on Hold'
WHEN A.MESSAGE LIKE '%Hold%' AND A.LOGTYPE = 'Remove' THEN 'Invoice Released from Hold'
WHEN A.MESSAGE LIKE '%Voided%' THEN 'Payment Voided'
WHEN A.MESSAGE LIKE '%Selected for payment%' THEN 'Invoice Selected for Payment'
WHEN A.MESSAGE LIKE '%Modified%' THEN 'Invoice Updated'
ELSE 'System Activity'
END AS ActivityName,
A.WHENDOCCURRED AS EventTime,
'Sage Intacct' AS SourceSystem,
GETDATE() AS LastDataUpdate,
H.VENDORNAME,
H.TOTALENTERED,
H.PONUMBER,
H.WHENCREATED,
H.DUE_DATE,
NULL,
A.USERID AS CreatedBy,
H.STATE,
NULL
FROM AUDITTRAIL A
JOIN APBILL H ON A.OBJECTKEY = CAST(H.RECORDNO AS VARCHAR(50))
WHERE A.OBJECTTYPE = 'APBILL'
AND (
A.MESSAGE LIKE '%Submitted%'
OR A.MESSAGE LIKE '%Approved%'
OR A.MESSAGE LIKE '%Declined%'
OR A.MESSAGE LIKE '%Hold%'
OR A.MESSAGE LIKE '%Voided%'
OR A.MESSAGE LIKE '%Selected for payment%'
OR A.MESSAGE LIKE '%Modified%'
)
/* Exclude creation updates to avoid duplication with Invoice Draft Created */
AND NOT (A.MESSAGE LIKE '%Modified%' AND ABS(DATEDIFF(second, A.WHENDOCCURRED, H.WHENCREATED)) < 60)