Erinnerung vor Fälligkeit
Eine Eingangsrechnung prüft zuerst die Kostenstellenverantwortung sachlich, die Zahlung gibt danach die Buchhaltung frei. Drei Tage vor der Fälligkeit erinnert das Skript die Buchhaltung an die noch offene Zahlungsfreigabe und sagt dazu, ob die sachliche Prüfung die Rechnung beanstandet hat. Eine beanstandete Rechnung bekommt außerdem das Schlagwort „Prüfen“ und einen Hinweis an der Zahlungsfreigabe.
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: due-date-remindername: Erinnerung vor Fälligkeittemplate: customtrigger: documentType: incoming-invoicefields: []start: reviewsteps: - kind: humanTask name: review label: Sachliche Prüfung taskKind: review assignees: - when: null assignee: kind: costCenterResponsible fallback: kind: role role: Buchhaltung options: excludeRequester: true excludeActorsOfSteps: [] pickFile: false next: beforeDue onRejected: beforeDue - kind: timer name: beforeDue label: Drei Tage vor Fälligkeit dateField: dueDate daysBefore: 3 next: remind - kind: script name: remind label: An die Zahlungsfreigabe erinnern script: remind.ts hook: onTimer inputs: - kind: field key: vendorName type: text - kind: field key: invoiceNumber type: text - kind: field key: dueDate type: date - kind: field key: totalGross type: money returns: [] exits: [] next: approve - kind: humanTask name: approve label: Zahlungsfreigabe taskKind: approve assignees: - when: null assignee: kind: role role: Buchhaltung fallback: kind: role role: Buchhaltung options: excludeRequester: true excludeActorsOfSteps: - review pickFile: false next: approved onRejected: rejected - kind: end name: approved label: Freigegeben outcome: approved - kind: end name: rejected label: Zurückgewiesen outcome: rejectedDas Skript remind.ts
Abschnitt betitelt „Das Skript remind.ts“Hook: onTimer · Eingaben: vendorName, invoiceNumber, dueDate, totalGross · Rückgaben: keine
import { date, defineScript, money } from '@acriva/workflow-sdk';
export default defineScript({ hook: 'onTimer', run(ctx) { const { vendorName, invoiceNumber, dueDate, totalGross } = ctx.document.fields; if (dueDate == null) return;
// The timer fires 3 days before the due date, or at once when the review ended later than that. const days = date.daysBetween(ctx.today(), dueDate); const due = days > 1 ? `ist in ${days} Tagen fällig (am ${date.format(dueDate)})` : days === 1 ? `ist morgen fällig (am ${date.format(dueDate)})` : days === 0 ? 'ist heute fällig' : `ist seit dem ${date.format(dueDate)} überfällig`; const invoice = [ `Die Rechnung ${invoiceNumber ?? 'ohne Nummer'}`, vendorName == null ? '' : ` von ${vendorName}`, totalGross == null ? '' : ` über ${money.format(totalGross)}`, ].join('');
// The last task is the review: approved, the payment approval is all that is left; objected to, it needs a clarification. const objected = ctx.instance.lastTaskOutcome === 'Rejected'; const next = objected ? 'Die sachliche Prüfung hat sie beanstandet: Bitte klären Sie sie vor der Zahlung mit dem Lieferanten.' : 'Die sachliche Prüfung ist erledigt, die Zahlungsfreigabe fehlt noch.'; ctx.notify({ to: [{ role: 'Buchhaltung' }], text: `${invoice} ${due}. ${next}` }); if (objected) { ctx.hint( 'Die sachliche Prüfung hat diese Rechnung beanstandet. Den Grund finden Sie im Verlauf.', ); ctx.addTag('Prüfen'); } },});Was es tut
Abschnitt betitelt „Was es tut“Ein Test führt jeden dieser Fälle in der Sandbox aus und vergleicht das Ergebnis.
Die sachliche Prüfung hat beanstandet
Abschnitt betitelt „Die sachliche Prüfung hat beanstandet“- Eingabe:
vendorNameDeutsche Bahn AG,invoiceNumberDB-88213,dueDate2026-10-25,totalGross1287.4, Ergebnis der letzten AufgabeRejected, heute2026-10-22 - Ausgang: der Standard-Nachfolger
- Änderungen: Benachrichtigung an die Rolle
Buchhaltung: „Die Rechnung DB-88213 von Deutsche Bahn AG über 1.287,40 € ist in 3 Tagen fällig (am 25.10.2026). Die sachliche Prüfung hat sie beanstandet: Bitte klären Sie sie vor der Zahlung mit dem Lieferanten.“; Hinweis an der nächsten Aufgabe: „Die sachliche Prüfung hat diese Rechnung beanstandet. Den Grund finden Sie im Verlauf.“; Schlagwort „Prüfen“
Die Prüfung dauerte über die Fälligkeit hinaus
Abschnitt betitelt „Die Prüfung dauerte über die Fälligkeit hinaus“- Eingabe:
vendorNamenull,invoiceNumberRE-55120,dueDate2026-10-20,totalGrossnull, Ergebnis der letzten AufgabeApproved, heute2026-10-22 - Ausgang: der Standard-Nachfolger
- Änderungen: Benachrichtigung an die Rolle
Buchhaltung: „Die Rechnung RE-55120 ist seit dem 20.10.2026 überfällig. Die sachliche Prüfung ist erledigt, die Zahlungsfreigabe fehlt noch.“
Geprüft, die Zahlungsfreigabe fehlt noch
Abschnitt betitelt „Geprüft, die Zahlungsfreigabe fehlt noch“- Eingabe:
vendorNameBürobedarf Schmidt GmbH,invoiceNumber2026-4711,dueDate2026-10-25,totalGross342.72, Ergebnis der letzten AufgabeApproved, heute2026-10-22 - Ausgang: der Standard-Nachfolger
- Änderungen: Benachrichtigung an die Rolle
Buchhaltung: „Die Rechnung 2026-4711 von Bürobedarf Schmidt GmbH über 342,72 € ist in 3 Tagen fällig (am 25.10.2026). Die sachliche Prüfung ist erledigt, die Zahlungsfreigabe fehlt noch.“