Rechnung gegen Vertrag prüfen
Vor der Freigabe prüft die Karte „Rechnung prüfen“ mit „Rechnung gegen Vertrag prüfen“ eine Eingangsrechnung gegen den Vertrag ihres Lieferanten, ohne Skript und ohne KI: Sie sucht unter den Verträgen vom Typ „Vertrag“ den einen, dessen „Vertragspartner-Akte“ die Akte des bestätigten Lieferanten der Rechnung ist, wo immer der Vertrag abgelegt ist, und prüft seinen Status, seine Laufzeit am Rechnungsdatum und den Bruttobetrag gegen den „Vertragswert“ je Zeitraum („Wert je“) mit 5 % Toleranz. Passt die Rechnung („passt“), geht sie zur Freigabe. Weicht sie ab („Abweichung“), etwa weil der Vertrag gekündigt ist, die Laufzeit nicht passt oder der Betrag darüber liegt, klärt die Buchhaltung das zuerst; der Hinweis nennt den Grund, nie den Vertragswert. Ohne Lieferanten-Akte oder Vertrag („kein Vertrag“) geht die Rechnung wie gewohnt zur Freigabe. „passt“ gibt nichts frei: Eine Person gibt weiterhin frei. Der Vertrag erscheint am Workflow nur für Personen, die ihn öffnen dürfen. Braucht den Workflow-Designer.
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: 9sdk: '1.0.0'key: invoice-contract-checkname: Rechnung gegen Vertrag prüfentemplate: customtrigger: documentType: incoming-invoicefields: []start: matchsteps: - kind: invoiceCheck name: match label: Rechnung gegen Vertrag prüfen check: contractMatch next: approval onDeviation: clarify onNotFound: approval contract: contractType: contract tolerancePercent: 5 - kind: humanTask name: clarify label: Abweichung vom Vertrag klären taskKind: review assignees: [] fallback: kind: role role: Buchhaltung options: excludeRequester: false excludeActorsOfSteps: [] pickFile: false next: approval onRejected: rejected - kind: humanTask name: approval label: Freigabe taskKind: approve assignees: [] fallback: kind: role role: Geschäftsführung 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