Zum Inhalt springen

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.

Transitions werden in der Tabelle conf.Transitions registriert:

SpalteInhalt
Idneue GUID
TenantIdin der Regel 1
ClassIdentifiervollständiger Klassenname der Transition
Descriptionkurze Beschreibung
RouteIdId der Route aus conf.Routes, auf der die Transition laufen soll
OrderReihenfolge, 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):

EinstellungBedeutung
MinimumOfUsersForVisaRequestMindestanzahl Freigeber pro Position, meist 2. Bereits vorhandene Freigabe-Anfragen zählen mit. Pflicht.
DefaultUserForEnforcing4EyePrincipleId des Benutzers, der die zusätzliche Freigabe erhält
DefaultRoleFourEnforcing4EyePrincipleId der Rolle, die die zusätzliche Freigabe erhält
PriorityPriorität der neuen Freigabe-Anfrage. Damit steuerst du, ob sie vor, mit oder nach den Freigaben aus dem Reglement eingeholt wird.
CostcenterForCheckingThe4EyePrincipleoptional: 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"
}
}
}

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);