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
Abschnitt betitelt „Der Workflow“Der Workflow startet für jedes Dokument vom Typ contract. Seine Datei workflow.yaml:
$schema: 'https://docs.acriva.de/schemas/workflow.schema.json'format: 1schemaVersion: 9sdk: '1.0.0'key: contract-closingname: Vertragsabschlusstemplate: customtrigger: documentType: contractfields: - 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: - contractstart: inReviewsteps: - 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