Nach Betrag weiterleiten
Eine Eingangsrechnung über 500 € gibt die Geschäftsführung frei, eine bis 500 € die Kostenstellenverantwortung. Die Freigabe der Geschäftsführung bekommt einen Hinweis, warum sie sie bekommt.
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: route-by-amountname: Nach Betrag weiterleitentemplate: customtrigger: documentType: incoming-invoicefields: []start: routesteps: - kind: script name: route label: Nach Betrag weiterleiten script: route.ts hook: onDocumentArrived inputs: - kind: field key: totalGross type: money returns: - key: lane type: enumeration values: - management - costCenter branch: lane exits: - value: management next: management - value: costCenter next: costCenter next: costCenter - kind: humanTask name: management label: Freigabe Geschäftsführung taskKind: approve assignees: [] fallback: kind: role role: owner options: excludeRequester: true excludeActorsOfSteps: [] pickFile: false next: approved onRejected: rejected - kind: humanTask name: costCenter label: Freigabe Kostenstelle 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 route.ts
Abschnitt betitelt „Das Skript route.ts“Hook: onDocumentArrived · Eingaben: totalGross · Rückgaben: lane (management, costCenter)
import { defineScript, money } from '@acriva/workflow-sdk';
/** Above this gross amount, the management approves. */const THRESHOLD = 500;
export default defineScript({ hook: 'onDocumentArrived', outputs: { lane: ['management', 'costCenter'] }, run(ctx) { const amount = ctx.document.fields.totalGross; // Without an amount the step goes on to its default next step, the cost center's approval. if (amount == null) return; ctx.log('Gross total', money.format(amount)); if (amount > THRESHOLD) { ctx.hint(`Über ${money.format(THRESHOLD)}: Die Geschäftsführung gibt frei.`); return ctx.branch('management'); } return ctx.branch('costCenter'); },});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 Rechnung ohne Bruttobetrag
Abschnitt betitelt „Eine Rechnung ohne Bruttobetrag“- Eingabe:
totalGrossnull - Ausgang: der Standard-Nachfolger
- Änderungen: keine
Eine Rechnung über 500 €
Abschnitt betitelt „Eine Rechnung über 500 €“- Eingabe:
totalGross1249.5 - Ausgang:
management - Änderungen: Hinweis an der nächsten Aufgabe: „Über 500,00 €: Die Geschäftsführung gibt frei.“
Eine Rechnung über genau 500 €
Abschnitt betitelt „Eine Rechnung über genau 500 €“- Eingabe:
totalGross500 - Ausgang:
costCenter - Änderungen: keine