Zum Inhalt springen

Vertragsabschluss

Kommt ein Vertrag an, setzt der Workflow seinen „Vertragsstatus“ auf „In Prüfung“, ohne Skript. Der Einkauf prüft den Vertrag; danach geben Geschäftsführung und Buchhaltung ihn parallel frei, beide müssen freigeben, und wer geprüft hat, gibt nicht noch einmal frei. Weist jemand zurück, wird der Vertrag wieder „Entwurf“, und der Workflow endet. Nach der Freigabe wird der Status „Zur Signatur“, und die Karte „Zur Signatur senden“ sendet den Vertrag der Reihe nach an die anfordernde Person als „Auftraggeber“ und an den Vertragspartner als „Auftragnehmer“, mit einer einfachen elektronischen Signatur (EES) und 14 Tagen Frist. Fehlen Vorname, Nachname oder E-Mail-Adresse des Vertragspartners in den drei Feldern, die der Workflow am Vertrag anlegt, erfasst die anfordernde Person sie zuerst in der Aufgabe „Vertragspartner erfassen“. Unterschreiben beide („signiert“), wird der Status „Aktiv“, und die anfordernde Person wählt in der Aufgabe „In die Vertragspartner-Akte ablegen“ unter „Akte“ die Akte des Vertragspartners, in die Acriva den signierten Vertrag mit ihren Rechten legt; die Akte wählt immer eine Person, nie die KI. Das Feld „Vertragspartner-Akte“ setzt der Workflow nicht: Damit „Rechnung gegen Vertrag prüfen“ den Vertrag findet und seine Fristen die verantwortliche Person der Akte erinnern, verknüpft eine Person es am Vertrag. Lehnt jemand ab („abgelehnt“), läuft die Frist ab („abgelaufen“) oder ist die E-Mail-Adresse ungültig, klärt die anfordernde Person das in der Aufgabe „Klären“. Der Workflow braucht eine Person, die den Vertrag hochgeladen hat, und das Add-on E-Signatur.

Der Workflow startet für jedes Dokument vom Typ contract. Seine Datei workflow.yaml:

$schema: 'https://docs.acriva.de/schemas/workflow.schema.json'
format: 1
schemaVersion: 9
sdk: '1.0.0'
key: contract-closing
name: Vertragsabschluss
template: custom
trigger:
documentType: contract
fields:
- key: partnerFirstName
kind: text
labelDe: Vorname Vertragspartner
labelEn: Partner's first name
documentTypes:
- contract
- key: partnerLastName
kind: text
labelDe: Nachname Vertragspartner
labelEn: Partner's last name
documentTypes:
- contract
- key: partnerEmail
kind: text
labelDe: E-Mail Vertragspartner
labelEn: Partner's email
documentTypes:
- contract
start: inReview
steps:
- kind: setField
name: inReview
label: Status „In Prüfung“
assignments:
- field: contractStatus
source: constant
value: inReview
next: review
- kind: humanTask
name: review
label: Vertrag prüfen
taskKind: review
assignees: []
fallback:
kind: member
member: einkauf@example.com
options:
remindAfterWorkingDays: 2
excludeRequester: false
excludeActorsOfSteps: []
pickFile: false
next: approval
onRejected: draft
- kind: humanTask
name: approval
label: Freigabe durch Geschäftsführung und Buchhaltung
taskKind: approve
assignees: []
fallback:
kind: role
role: Geschäftsführung
options:
excludeRequester: false
excludeActorsOfSteps:
- review
pickFile: false
next: forSignature
onRejected: draft
parallelApproval:
mode: all
approvers:
- kind: role
role: Geschäftsführung
- kind: role
role: Buchhaltung
- kind: setField
name: forSignature
label: Status „Zur Signatur“
assignments:
- field: contractStatus
source: constant
value: forSignature
next: partnerKnown
- kind: condition
name: partnerKnown
label: Vertragspartner vollständig?
branches:
- when:
kind: or
conditions:
- kind: compare
field: partnerFirstName
operator: isEmpty
constants: []
- kind: compare
field: partnerLastName
operator: isEmpty
constants: []
- kind: compare
field: partnerEmail
operator: isEmpty
constants: []
next: capturePartner
default: sign
- kind: humanTask
name: capturePartner
label: Vertragspartner erfassen
taskKind: capture
assignees: []
fallback:
kind: requester
options:
remindAfterWorkingDays: 2
excludeRequester: false
excludeActorsOfSteps: []
pickFile: false
next: sign
requiredFields:
fields:
- partnerFirstName
- partnerLastName
- partnerEmail
requireComment: false
- kind: signature
name: sign
label: Zur Signatur senden
signers:
- kind: requester
label: Auftraggeber
- kind: external
label: Auftragnehmer
firstNameField: partnerFirstName
lastNameField: partnerLastName
emailField: partnerEmail
ordered: true
level: ses
expiryDays: 14
fieldMode: detect
reviewer:
kind: requester
allowConfidential: false
language: de
next: active
onDeclined: clarify
onExpired: clarify
onSkipped: clarify
- kind: setField
name: active
label: Status „Aktiv“
assignments:
- field: contractStatus
source: constant
value: active
next: file
- kind: humanTask
name: file
label: In die Vertragspartner-Akte ablegen
taskKind: acknowledge
assignees: []
fallback:
kind: requester
options:
remindAfterWorkingDays: 2
excludeRequester: false
excludeActorsOfSteps: []
pickFile: true
next: signed
- kind: humanTask
name: clarify
label: Klären
taskKind: review
assignees: []
fallback:
kind: requester
options:
excludeRequester: false
excludeActorsOfSteps: []
pickFile: false
next: notSigned
onRejected: notSigned
- kind: setField
name: draft
label: Status „Entwurf“
assignments:
- field: contractStatus
source: constant
value: draft
next: rejected
- kind: end
name: signed
label: Signiert und aktiv
outcome: completed
- kind: end
name: notSigned
label: Nicht signiert
outcome: completed
- kind: end
name: rejected
label: Zurückgewiesen
outcome: rejected