Zum Inhalt springen

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 startet für jedes Dokument vom Typ incoming-invoice. Seine Datei workflow.yaml:

$schema: 'https://docs.acriva.de/schemas/workflow.schema.json'
format: 1
schemaVersion: 4
sdk: '1.0.0'
key: missing-fields
name: Fehlende Felder melden
template: custom
trigger:
documentType: incoming-invoice
fields: []
start: check
steps:
- 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: rejected

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');
},
});

Ein Test führt jeden dieser Fälle in der Sandbox aus und vergleicht das Ergebnis.

  • Eingabe: vendorName Bürobedarf Schmidt GmbH, invoiceNumber 2026-4711, invoiceDate 2026-10-19, dueDate 2026-11-18, totalGross 342.72
  • Ausgang: complete
  • Änderungen: keine
  • Eingabe: vendorName Bürobedarf Schmidt GmbH, invoiceNumber 2026-4712, invoiceDate null, dueDate null, totalGross 89.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.“
  • Eingabe: vendorName null, invoiceNumber null, invoiceDate null, dueDate null, totalGross null
  • 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.“