Lieferantenstammdaten aus einer Excel-Liste
Ihre Lieferantenliste führen Sie in Excel: Name, Kreditorenkonto, Zahlungsziel in Tagen und ob der Lieferant gesperrt ist. Laden Sie die XLSX-Datei in eine Datentabelle lieferanten mit dem Namen als Schlüsselspalte hoch; eine neue Fassung der Liste laden Sie einfach erneut hoch. Das Skript sucht den Lieferanten der Rechnung in der Tabelle, setzt das Kreditorenkonto und den Tag, bis zu dem die Rechnung zu zahlen ist, zwei Felder, die der Workflow selbst deklariert. Einen gesperrten Lieferanten markiert es mit dem Schlagwort „Prüfen“, und für einen Lieferanten, der in der Liste fehlt, bekommt die Freigabe einen Hinweis. Brauchen Sie je Lieferant nur Kostenstelle und Sachkonto, genügt eine Karte: Kontierung aus einer Datentabelle.
Der Workflow
Abschnitt betitelt „Der Workflow“Der Workflow startet für jedes Dokument vom Typ incoming-invoice. Seine Datei workflow.yaml:
$schema: 'https://docs.acriva.de/schemas/workflow.schema.json'format: 1schemaVersion: 4sdk: '1.0.0'key: vendor-master-dataname: Lieferantenstammdaten aus der Lieferantenlistetemplate: customtrigger: documentType: incoming-invoicefields: - key: creditorAccount kind: text labelDe: Kreditorenkonto labelEn: Creditor account documentTypes: - incoming-invoice - key: paymentDue kind: date labelDe: Zahlbar bis labelEn: Payable by documentTypes: - incoming-invoicestart: enrichsteps: - kind: script name: enrich label: Stammdaten des Lieferanten script: enrich.ts hook: onDocumentArrived inputs: - kind: field key: vendorName type: text - kind: field key: invoiceDate type: date - kind: table key: lieferanten returns: [] exits: [] next: approve - kind: humanTask name: approve label: Freigabe taskKind: approve assignees: - when: null assignee: kind: costCenterResponsible fallback: kind: role role: Buchhaltung options: excludeRequester: true excludeActorsOfSteps: [] pickFile: false next: approved onRejected: rejected - kind: end name: approved label: Freigegeben outcome: approved - kind: end name: rejected label: Zurückgewiesen outcome: rejectedDas Skript enrich.ts
Abschnitt betitelt „Das Skript enrich.ts“Hook: onDocumentArrived · Eingaben: vendorName, invoiceDate, Datentabelle lieferanten · Rückgaben: keine
import { date, defineScript } from '@acriva/workflow-sdk';
export default defineScript({ hook: 'onDocumentArrived', async run(ctx) { const { vendorName, invoiceDate } = ctx.document.fields; if (vendorName == null) return; // The row whose key column (the vendor's name) holds the name, or null when the list has none. const vendor = await ctx.tables.lookup('lieferanten', vendorName); if (vendor === null) { ctx.hint( `„${vendorName}“ steht nicht in der Lieferantenliste. Bitte ergänzen Sie den Lieferanten in der Datentabelle Lieferanten.`, ); return; } if (vendor.gesperrt) { ctx.addTag('Prüfen'); ctx.hint( `„${vendorName}“ ist in der Lieferantenliste gesperrt. Bitte klären Sie, ob die Rechnung bezahlt wird.`, ); } if (vendor.kreditorenkonto) ctx.setField('creditorAccount', vendor.kreditorenkonto); if (invoiceDate != null && vendor.zahlungszielTage != null) ctx.setField('paymentDue', date.addDays(invoiceDate, vendor.zahlungszielTage)); },});Was es tut
Abschnitt betitelt „Was es tut“Ein Test führt jeden dieser Fälle in der Sandbox aus und vergleicht das Ergebnis.
Ein gesperrter Lieferant
Abschnitt betitelt „Ein gesperrter Lieferant“- Eingabe:
vendorNameBillig-Druck Ltd.,invoiceDate2026-10-15 - Datentabelle
lieferanten: 3 ZeilennameTelekom Deutschland GmbH,kreditorenkonto70012,zahlungszielTage30,gesperrtfalsenameBürobedarf Schmidt KG,kreditorenkonto70044,zahlungszielTage14,gesperrtfalsenameBillig-Druck Ltd.,kreditorenkonto70091,zahlungszielTagenull,gesperrttrue
- Ausgang: der Standard-Nachfolger
- Änderungen: Schlagwort „Prüfen“; Hinweis an der nächsten Aufgabe: „„Billig-Druck Ltd.“ ist in der Lieferantenliste gesperrt. Bitte klären Sie, ob die Rechnung bezahlt wird.“; Feld
creditorAccount=70091
Ein Lieferant aus der Liste
Abschnitt betitelt „Ein Lieferant aus der Liste“- Eingabe:
vendorNameTelekom Deutschland GmbH,invoiceDate2026-10-15 - Datentabelle
lieferanten: 3 ZeilennameTelekom Deutschland GmbH,kreditorenkonto70012,zahlungszielTage30,gesperrtfalsenameBürobedarf Schmidt KG,kreditorenkonto70044,zahlungszielTage14,gesperrtfalsenameBillig-Druck Ltd.,kreditorenkonto70091,zahlungszielTagenull,gesperrttrue
- Ausgang: der Standard-Nachfolger
- Änderungen: Feld
creditorAccount=70012; FeldpaymentDue=2026-11-14
Ein Lieferant, der in der Liste fehlt
Abschnitt betitelt „Ein Lieferant, der in der Liste fehlt“- Eingabe:
vendorNameNeue Firma AG,invoiceDate2026-10-15 - Datentabelle
lieferanten: 3 ZeilennameTelekom Deutschland GmbH,kreditorenkonto70012,zahlungszielTage30,gesperrtfalsenameBürobedarf Schmidt KG,kreditorenkonto70044,zahlungszielTage14,gesperrtfalsenameBillig-Druck Ltd.,kreditorenkonto70091,zahlungszielTagenull,gesperrttrue
- Ausgang: der Standard-Nachfolger
- Änderungen: Hinweis an der nächsten Aufgabe: „„Neue Firma AG“ steht nicht in der Lieferantenliste. Bitte ergänzen Sie den Lieferanten in der Datentabelle Lieferanten.“