Fehlende Felder melden
Fehlt einer Eingangsrechnung die Rechnungsnummer, das Rechnungsdatum, das Fälligkeitsdatum oder der Bruttobetrag, benachrichtigt das Skript die Buchhaltung und nennt die fehlenden Angaben. Die Rechnung bekommt das Schlagwort „Prüfen“ und geht zuerst zur Ergänzung, danach zur Freigabe. Ohne Skript prüft die Karte Pflichtangaben prüfen diese Angaben bis auf das Fälligkeitsdatum und weitere Pflichtangaben und nennt der nächsten Aufgabe, was fehlt.
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: missing-fieldsname: Fehlende Felder meldentemplate: customtrigger: documentType: incoming-invoicefields: []start: checksteps: - kind: script name: check label: Pflichtangaben prüfen script: check.ts hook: onDocumentArrived inputs: - kind: field key: vendorName type: text - kind: field key: invoiceNumber type: text - kind: field key: invoiceDate type: date - kind: field key: dueDate type: date - kind: field key: totalGross type: money returns: - key: details type: enumeration values: - complete - missing branch: details exits: - value: complete next: approve - value: missing next: fix next: approve - kind: humanTask name: fix label: Fehlende Angaben ergänzen taskKind: fix assignees: - when: null assignee: kind: role role: Buchhaltung fallback: kind: role role: Buchhaltung options: excludeRequester: false excludeActorsOfSteps: [] pickFile: false 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 check.ts
Abschnitt betitelt „Das Skript check.ts“Hook: onDocumentArrived · Eingaben: vendorName, invoiceNumber, invoiceDate, dueDate, totalGross · Rückgaben: details (complete, missing)
import { defineScript } from '@acriva/workflow-sdk';
export default defineScript({ hook: 'onDocumentArrived', outputs: { details: ['complete', 'missing'] }, run(ctx) { const { vendorName, invoiceNumber, invoiceDate, dueDate, totalGross } = ctx.document.fields; // The details an invoice needs before it is approved, with the name the notice gives each. const required = [ { label: 'Rechnungsnummer', value: invoiceNumber }, { label: 'Rechnungsdatum', value: invoiceDate }, { label: 'Fälligkeitsdatum', value: dueDate }, { label: 'Bruttobetrag', value: totalGross }, ]; const missing = required.filter((detail) => detail.value == null).map((detail) => detail.label); if (missing.length === 0) return ctx.branch('complete');
const invoice = vendorName == null ? 'Einer Eingangsrechnung' : `Der Rechnung von ${vendorName}`; ctx.notify({ to: [{ role: 'Buchhaltung' }], text: `${invoice} fehlen diese Angaben: ${missing.join(', ')}. Bitte ergänzen Sie sie.`, }); ctx.addTag('Prüfen'); ctx.hint(`Es fehlen: ${missing.join(', ')}.`); return ctx.branch('missing'); },});Was es tut
Abschnitt betitelt „Was es tut“Ein Test führt jeden dieser Fälle in der Sandbox aus und vergleicht das Ergebnis.
Eine vollständige Rechnung
Abschnitt betitelt „Eine vollständige Rechnung“- Eingabe:
vendorNameBürobedarf Schmidt GmbH,invoiceNumber2026-4711,invoiceDate2026-10-19,dueDate2026-11-18,totalGross342.72 - Ausgang:
complete - Änderungen: keine
Rechnungs- und Fälligkeitsdatum fehlen
Abschnitt betitelt „Rechnungs- und Fälligkeitsdatum fehlen“- Eingabe:
vendorNameBürobedarf Schmidt GmbH,invoiceNumber2026-4712,invoiceDatenull,dueDatenull,totalGross89.9 - Ausgang:
missing - Änderungen: Benachrichtigung an die Rolle
Buchhaltung: „Der Rechnung von Bürobedarf Schmidt GmbH fehlen diese Angaben: Rechnungsdatum, Fälligkeitsdatum. Bitte ergänzen Sie sie.“; Schlagwort „Prüfen“; Hinweis an der nächsten Aufgabe: „Es fehlen: Rechnungsdatum, Fälligkeitsdatum.“
Eine Rechnung, bei der nichts erkannt wurde
Abschnitt betitelt „Eine Rechnung, bei der nichts erkannt wurde“- Eingabe:
vendorNamenull,invoiceNumbernull,invoiceDatenull,dueDatenull,totalGrossnull - Ausgang:
missing - Änderungen: Benachrichtigung an die Rolle
Buchhaltung: „Einer Eingangsrechnung fehlen diese Angaben: Rechnungsnummer, Rechnungsdatum, Fälligkeitsdatum, Bruttobetrag. Bitte ergänzen Sie sie.“; Schlagwort „Prüfen“; Hinweis an der nächsten Aufgabe: „Es fehlen: Rechnungsnummer, Rechnungsdatum, Fälligkeitsdatum, Bruttobetrag.“