Zum Inhalt springen

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 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: 9
sdk: '1.0.0'
key: invoice-contract-check
name: Rechnung gegen Vertrag prüfen
template: custom
trigger:
documentType: incoming-invoice
fields: []
start: match
steps:
- 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