Transitions
Ein Beleg durchläuft im invoiceR eine Reihe von Prozessschritten (Nodes), die über Routen verbunden sind. Eine Transition ist Programmlogik, die beim Wechsel über eine bestimmte Route auf den Beleg angewendet wird. Eine Route kann mehrere Transitions haben, und dieselbe Transition kann auf mehreren Routen eingesetzt werden.
Transition einrichten
Abschnitt betitelt „Transition einrichten“Transitions werden in der Tabelle conf.Transitions registriert:
| Spalte | Inhalt |
|---|---|
Id | neue GUID |
TenantId | in der Regel 1 |
ClassIdentifier | vollständiger Klassenname der Transition |
Description | kurze Beschreibung |
RouteId | Id der Route aus conf.Routes, auf der die Transition laufen soll |
Order | Reihenfolge, wenn eine Route mehrere Transitions hat (aufsteigend) |
INSERT INTO conf.Transitions (Id, TenantId, ClassIdentifier, Description, RouteId, [Order])VALUES (NEWID(), 1, N'enio.InvoiceR.Engine.DefaultPlugin.Transitions.FourEyeForcerTransition', N'Vier-Augen-Prinzip erzwingen', N'<Id der Route von der Kontierung zur Freigabe>', 1);Vier-Augen-Prinzip erzwingen (FourEyeForcerTransition)
Abschnitt betitelt „Vier-Augen-Prinzip erzwingen (FourEyeForcerTransition)“Klasse: enio.InvoiceR.Engine.DefaultPlugin.Transitions.FourEyeForcerTransition
Diese Transition läuft typischerweise nach der Kontierung und vor der Freigabe. Sie prüft für jede Kontierungs-Position, ob mindestens eine bestimmte Anzahl verschiedener Benutzer oder Rollen freigeben muss. Ist das nicht der Fall, legt sie für die Position eine zusätzliche Freigabe-Anfrage an. Das wirkt gleich, wie wenn jemand in der Kontierung eine manuelle Freigabe angefordert hätte.
Die Transition liest diese Einstellungen (Abschnitt WorkflowManagement:FourEyeForcer in
appsettings.json oder pro Mandant in der Datenbank, siehe Überblick):
| Einstellung | Bedeutung |
|---|---|
MinimumOfUsersForVisaRequest | Mindestanzahl Freigeber pro Position, meist 2. Bereits vorhandene Freigabe-Anfragen zählen mit. Pflicht. |
DefaultUserForEnforcing4EyePrinciple | Id des Benutzers, der die zusätzliche Freigabe erhält |
DefaultRoleFourEnforcing4EyePrinciple | Id der Rolle, die die zusätzliche Freigabe erhält |
Priority | Priorität der neuen Freigabe-Anfrage. Damit steuerst du, ob sie vor, mit oder nach den Freigaben aus dem Reglement eingeholt wird. |
CostcenterForCheckingThe4EyePrinciple | optional: Nummer einer Kostenstelle. Dann prüft die Transition nur Positionen mit dieser Kostenstelle. Leer heisst: alle Positionen. |
Trage mindestens einen Benutzer oder eine Rolle ein.
{ "WorkflowManagement": { "FourEyeForcer": { "MinimumOfUsersForVisaRequest": "2", "DefaultRoleFourEnforcing4EyePrinciple": "12", "Priority": "10" } }}Automatisches Visum für den Kontierer
Abschnitt betitelt „Automatisches Visum für den Kontierer“Diese Transitions laufen nach Abschluss der Kontierung und erteilen dem Kontierer automatisch eine Freigabe. Es gibt zwei Varianten:
SimpleAccountantVisumTransition: erteilt die Freigabe nur, wenn der Kontierer laut Visums-Reglement ohnehin freigeben müsste. Taucht er im Reglement nicht auf, ändert sich nichts.AccountantVisumTransition: legt für den Kontierer auf jeder Kontierungs-Position eine Freigabe- Anfrage an und erteilt sie gleich (sofern für ihn noch keine Anfrage besteht).
Beide Klassen liegen im Namensraum enio.InvoiceR.Engine.DefaultPlugin.Transitions. Die automatisch
erteilte Freigabe erscheint im Verlauf des Belegs.
INSERT INTO conf.Transitions (Id, TenantId, ClassIdentifier, Description, RouteId, [Order])VALUES (NEWID(), 1, N'enio.InvoiceR.Engine.DefaultPlugin.Transitions.SimpleAccountantVisumTransition', N'Automatisches Visum für Kontierer', N'<Id der Route nach der Kontierung>', 1);