Inhaltsverzeichnis

Schnittstelle 6001: Urlaubsanspruch — aktuelles Jahr und Folgejahr berechnen

Dokumentation ins Wiki übernommen am 02.10.2026. Das ist keine Laufzeitabnahme.

Diese technische Referenz beschreibt die Eingänge, Datenwirkung und Ausgänge dieser Kennung im statisch geprüften Desktop-Quellenstand. Nutzerprüfung offen.

Dokumentiert / statisch geprüft: 2026-10-02. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt.

Identität und Quellenstand

eProgramm.CalcUrlaub = 6001. Aktive feste Registrierung → cProgramme.CalcUrlaub (E,P). Projekteinschluss der genannten VB-Quellen geprüft (PRJ). Active=True, InAutomatik=true, ManuellerAufruf=true, NurAufServer=false. Kennzeichen beschreiben Registrierung/Defaults, nicht eingerichtete Jobs; Run selbst prüft keine Serverbindung.

seegerstefan/pep4desktop, master, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Lokale .DS_Store-/cPep/PEP-Abweichungen nicht vermischt; Fachquellen cSchnittstellen/ZW/Sqlfiles unverändert. Kein Remote-/Installationsabgleich.

Zweck und Parameter

Keine fachlichen Laufparameter oder Dateien. cProgramme ruft cCalcUrlaub.CalcUrlaub(Settings,heute.Jahr,-1) und dasselbe für Jahr+1 auf. Direkte Meldungen, keine BASE-Mail/API. Äußerer Fehler False, sonst Erfolg True. Keine gemeinsame Transaktion über Personen/Jahre.

Eingänge und Berechnung

RMUrlaub(ID,Rundung,Art,BasisTage,VollNachSechsMonaten,BefristungBeachten) und RMUrlaubAlter(RMUrlaub,BeschaeftigungJahre,AlterJahre,Urlaub) füllen die Anspruchsmatrix. VollNachSechsMonaten wird geladen, nicht bei dieser Berechnung angewendet. Personen mit RMUrlaub nichtNULL: PersonID/GebDat/Eintritt/Austritt/EndeBefristung/RMUrlaub. Vorhandener Art1-Anspruch desselben Jahres kann über MAX(RMUrlaub) den Personenstandard überschreiben.

ITZeit-RMAZPlanID am jüngsten von⇐Jahresende bestimmt Verhältnis der im ReMo-Cache aus RMAZPlan.TageUrlaub geladenen Urlaubstage zu RMUrlaub.BasisTage; fehlendes Modell oder BasisTage0 → Faktor1. Urlaubberechtigte ITZeit-Zeiträume (HatUrlaubsanspruch1) bilden Tagesmaske; Eintritt/Austritt und optional Befristung begrenzen. CALC_URLAUB_TAGEMONAT: −1 anteiliger Monat, −2 zweite Monatshälfte komplett,0 ganzer Monat, sonst Mindesttage. Aktive Tage und Monate werden aufs Jahr verteilt.

Alter am01.01.Jahr; Betriebszugehörigkeit Variante1 volleJahre am01.01., Variante2 Jahresdifferenz; Bereich0..120. Tarifmatrix × Wochenfaktor × Monate/12. ITSonderurlaub(von/bis/Sonderurlaub) tagegewichtet über dieselbe Maske, anschließend ebenfalls Faktor. Rundung je RMUrlaub.Rundung:1 auf,2 kaufmännisch,3 ab mit CALC_URLAUB_RUNDUNG Nachkommastellen;4 halbe Tage; sonst unverändert. Rundungshelpers im cFn, keine DB-Wirkung.

Ausgang und SQL

Direkte parametrisierte UPDATE/INSERT-Befehle, keine Fach-SP. SELECT verwendet dbo.fnVarcharToList('-1') oder Liste='-1': hier wirklich alle Personen; UDF schreibt nur lokale Rückgabetabelle.

Je Person/Jahr Art1 Tarif und Art2 Sonderurlaub: UPDATE UrlaubsAnspruch.Anspruch bei Person/GültigVon01.01.Jahr/Art; nur wenn keine Zeile und Anspruch>0 INSERT(GültigVon,Person,Anspruch,Art,TypU,KommentarUrlaub,RMUrlaub). Bestehender Nullanspruch bleibt Zeile mit0, alte RMUrlaub/Kommentar/Typ werden im UPDATE nicht verändert. GültigBis wird nicht gesetzt, computed GültigBis2 fällt auf2099 zurück. Defaults beim INSERT: tsGETDATE,AbtragungZ/P0,UserIDNULL nach0550; keine aktuelle ID/Jahr-Spalte nach0743. Kein allgemeiner Calc-ZW/PEP-Lauf gestartet.

Befunde

⚠ Sonderurlaub-nur-Art2-Zweig ist innerhalb des äußeren Art=1-Blocks und dadurch unerreichbar; RMUrlaub.Art2 erhält hier keine Berechnung. VollNachSechsMonaten ungenutzt. Index120 wird für Alter120 nicht berechnet (Alter<120). Zwei Jahre/Teilfehler ohne Transaktion, überlappende ITZeit-Modellzeilen können scalar SELECT scheitern. Synthetische Anspruchs-/Befristungs-/Rundungsabnahme Q19; Code nicht korrigiert.

Einstellungen und gemeinsame Nebenwirkungen

Gemeinsames Profil: LEGACY (interne Referenz).

Beziehung Schlüssel / Variable Default Einflussweg Wirkung Beleg
6001-S001 CALC_URLAUB_TAGEMONAT / CALCUrlaubTageMonat 0 cPerson.Monate Monatsanteilsregel anhand ITZeit-Tagesmaske U,SET
6001-S002 CALC_URLAUB_RUNDUNG / CALC_UrlaubRundung 0 Rundungshelpers Nachkommastellen bei RM-Rundung1/2/3 U,SET
6001-S003 CALC_UrlaubsKontingent_Betriebzugehörigkeit_Art / CALC_UrlaubsKontingent_Betriebzugehörigkeit_Art 1 Anspruchsmatrix 1 volle Jahre am01.01.,2 Jahresdifferenz U,SET

Defaults sind keine Livewerte. Melde-/Datei-/DB-Wirkungen sind nicht atomar.

Feldbeziehungen

DB-Rolle PEP4-Anmeldedatenbank, soweit nicht ausdrücklich Aprocon oder Import angegeben. Unqualifizierte Objektschemata nicht als Live-dbo-Vertrag behaupten. INSERT-Defaults/Computed-Spalten sind gesonderte Schemawirkung, kein explizites UPDATE.

Beziehung Tabelle.Feld Operation Datenfluss / Verwendung Bedingung Beleg
6001-D001 RMUrlaub.ID SELECT Urlaubsmodell; VollNachSechsMonaten nur geladen, ungenutzt Beide Jahre U
6001-D002 RMUrlaub.Rundung SELECT Urlaubsmodell; VollNachSechsMonaten nur geladen, ungenutzt Beide Jahre U
6001-D003 RMUrlaub.Art SELECT Urlaubsmodell; VollNachSechsMonaten nur geladen, ungenutzt Beide Jahre U
6001-D004 RMUrlaub.BasisTage SELECT Urlaubsmodell; VollNachSechsMonaten nur geladen, ungenutzt Beide Jahre U
6001-D005 RMUrlaub.BefristungBeachten SELECT Urlaubsmodell; VollNachSechsMonaten nur geladen, ungenutzt Beide Jahre U
6001-D006 RMUrlaub.VollNachSechsMonaten SELECT Urlaubsmodell; VollNachSechsMonaten nur geladen, ungenutzt Beide Jahre U
6001-D007 RMUrlaubAlter.RMUrlaub SELECT Matrix vonAlter/Betriebszugehörigkeit Beide Jahre U
6001-D008 RMUrlaubAlter.BeschaeftigungJahre SELECT Matrix vonAlter/Betriebszugehörigkeit Beide Jahre U
6001-D009 RMUrlaubAlter.AlterJahre SELECT Matrix vonAlter/Betriebszugehörigkeit Beide Jahre U
6001-D010 RMUrlaubAlter.Urlaub SELECT Matrix vonAlter/Betriebszugehörigkeit Beide Jahre U
6001-D011 Personen.PersonID SELECT Anspruchsberechtigte Stammdaten, allePersonen mitRMUrlaub Liste=-1 Sonderfall ist korrekt umgesetzt U
6001-D012 Personen.GebDat SELECT Anspruchsberechtigte Stammdaten, allePersonen mitRMUrlaub Liste=-1 Sonderfall ist korrekt umgesetzt U
6001-D013 Personen.Eintritt SELECT Anspruchsberechtigte Stammdaten, allePersonen mitRMUrlaub Liste=-1 Sonderfall ist korrekt umgesetzt U
6001-D014 Personen.Austritt SELECT Anspruchsberechtigte Stammdaten, allePersonen mitRMUrlaub Liste=-1 Sonderfall ist korrekt umgesetzt U
6001-D015 Personen.EndeBefristung SELECT Anspruchsberechtigte Stammdaten, allePersonen mitRMUrlaub Liste=-1 Sonderfall ist korrekt umgesetzt U
6001-D016 Personen.RMUrlaub SELECT Anspruchsberechtigte Stammdaten, allePersonen mitRMUrlaub Liste=-1 Sonderfall ist korrekt umgesetzt U
6001-D017 Urlaubsanspruch.Person SELECT VorhandenesModell Art1 imJahr / UPDATE-Match MAX(RMUrlaub) U
6001-D018 Urlaubsanspruch.GültigVon SELECT VorhandenesModell Art1 imJahr / UPDATE-Match MAX(RMUrlaub) U
6001-D019 Urlaubsanspruch.Art SELECT VorhandenesModell Art1 imJahr / UPDATE-Match MAX(RMUrlaub) U
6001-D020 Urlaubsanspruch.RMUrlaub SELECT VorhandenesModell Art1 imJahr / UPDATE-Match MAX(RMUrlaub) U
6001-D021 ITZeit.PersonenStammID SELECT Stichtagsmodell und Urlaubberechtigungsmaske Jahresgrenzen U
6001-D022 ITZeit.von SELECT Stichtagsmodell und Urlaubberechtigungsmaske Jahresgrenzen U
6001-D023 ITZeit.bis SELECT Stichtagsmodell und Urlaubberechtigungsmaske Jahresgrenzen U
6001-D024 ITZeit.RMAZPlanID SELECT Stichtagsmodell und Urlaubberechtigungsmaske Jahresgrenzen U
6001-D025 ITZeit.HatUrlaubsanspruch SELECT Stichtagsmodell und Urlaubberechtigungsmaske Jahresgrenzen U
6001-D026 RMAZPlan.ID SELECT Vorhandener ReMo-Cache: TageJeWocheUrlaub; kein frischer SQL-Ladevorgang im Programm Cache laden separat; Herkunft belegt RM
6001-D027 RMAZPlan.TageUrlaub SELECT Vorhandener ReMo-Cache: TageJeWocheUrlaub; kein frischer SQL-Ladevorgang im Programm Cache laden separat; Herkunft belegt RM
6001-D028 ITSonderurlaub.PersonenStammID SELECT Tagegewichteter Sonderurlaub Ein-/Austritts-/Jahresgrenzen U
6001-D029 ITSonderurlaub.von SELECT Tagegewichteter Sonderurlaub Ein-/Austritts-/Jahresgrenzen U
6001-D030 ITSonderurlaub.bis SELECT Tagegewichteter Sonderurlaub Ein-/Austritts-/Jahresgrenzen U
6001-D031 ITSonderurlaub.Sonderurlaub SELECT Tagegewichteter Sonderurlaub Ein-/Austritts-/Jahresgrenzen U
6001-D032 Urlaubsanspruch.Anspruch UPDATE TarifArt1/SonderArt2 VorhandenerPerson/01.01.Jahr/Art U
6001-D033 Urlaubsanspruch.GültigVon INSERT 01.01.Jahr/Tarif oderSonder/U/Urlaub/Modell Nurfehlend undAnspruch>0 U
6001-D034 Urlaubsanspruch.Person INSERT 01.01.Jahr/Tarif oderSonder/U/Urlaub/Modell Nurfehlend undAnspruch>0 U
6001-D035 Urlaubsanspruch.Anspruch INSERT 01.01.Jahr/Tarif oderSonder/U/Urlaub/Modell Nurfehlend undAnspruch>0 U
6001-D036 Urlaubsanspruch.Art INSERT 01.01.Jahr/Tarif oderSonder/U/Urlaub/Modell Nurfehlend undAnspruch>0 U
6001-D037 Urlaubsanspruch.Typ INSERT 01.01.Jahr/Tarif oderSonder/U/Urlaub/Modell Nurfehlend undAnspruch>0 U
6001-D038 Urlaubsanspruch.Kommentar INSERT 01.01.Jahr/Tarif oderSonder/U/Urlaub/Modell Nurfehlend undAnspruch>0 U
6001-D039 Urlaubsanspruch.RMUrlaub INSERT 01.01.Jahr/Tarif oderSonder/U/Urlaub/Modell Nurfehlend undAnspruch>0 U
6001-D040 Urlaubsanspruch.ts DEFAULT GETDATE/0/0 INSERT nachSchema D100,D743
6001-D041 Urlaubsanspruch.AbtragungZ DEFAULT GETDATE/0/0 INSERT nachSchema D100,D743
6001-D042 Urlaubsanspruch.AbtragungP DEFAULT GETDATE/0/0 INSERT nachSchema D100,D743
6001-D043 Urlaubsanspruch.GültigBis2 COMPUTED ISNULL(GültigBis,31.12.2099) GültigBis nicht gesetzt D744

Teststatus und Pflege

Keine Laufzeit-/Live-Schema-/Lieferformat-Abnahme, keine Codekorrektur. Q02 gilt für kundenspezifische Trigger/Constraints/DLLs/Jobs; weitere Grenzen siehe oben und Fragen (interne Referenz). Nicht indizierte Folgefelder einer Teilanalyse sind unbekannt, nicht wirkungslos.

Gemeinsame Nebenwirkungen LEGACY

Einstellungen

Beziehung Schlüssel / Variable Default Einfluss Wirkung Beleg
LEGACY-S001 GLOBAL_LOGLEVEL / GLOBAL_LOGLEVEL 50 Init → Info.LogLevel Meldung ab einschließlich Grenzwert in Datei/DB; verändert keine Fachdaten LEGACY:SET, LEGACY:INIT, LEGACY:INFO
LEGACY-S002 GLOBAL_LOGLEVELEVLOG / GLOBAL_LOGLEVELEVENTLOG 0 Init → Info.LogLevelEvLog Windows-Ereignisprotokoll nur bei Level > Grenze, Grenze > 0 und Level < 200 LEGACY:SET, LEGACY:INIT, LEGACY:INFO

Beide gezeigten Settings-Konstruktoren setzen AlwaysToFile=True. Oberhalb LogLevel werden Datei UND DB versucht; bei False nur DB, Datei als Fehlerfallback. Datei unter ApplicationData/PEP/LogFiles/yyyyMMdd_peplog.txt (Append). DB-Fehler werden als False abgefangen, verhindern nicht zwingend den Import. EventLog-Fehler werden geschluckt. Direkte Fachcommands des Block 07 setzen kein Timeout; SQL_TIMEOUT ist in diesen zehn Pfaden nicht gelesen. Keine zusätzliche fachliche ZW-Einstellung nachgewiesen, auch nicht in spCalcUmsatzPlan.

Datenbeziehungen

DB-Rolle PEP4-Anmeldedatenbank. Log schreibt über eigene Verbindung; nicht atomar mit Fachoperationen. fnUserId liest minimalen UserID zum rechten 25-Zeichen-Teil von SUSER_NAME(), sonst 0.

Beziehung Tabelle.Feld Operation Datenfluss / Verwendung Bedingung Beleg
LEGACY-D001 Pep3Log.UserID INSERT dbo.fnUserId() Meldungslevel erreicht DB-Log LEGACY:INFO, LEGACY:FN
LEGACY-D002 Pep3Log.Datum INSERT getdate() Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D003 Pep3Log.Kurz INSERT Kurztext, maximal 255 Zeichen Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D004 Pep3Log.LogText INSERT Detailtext einschließlich Pfad/ggf. Exception Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D005 Pep3Log.Modul INSERT Modulbezeichnung, maximal 50 Zeichen Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D006 Pep3Log.InfoLevel INSERT 51, 102 oder 105 je Meldung Meldungslevel erreicht DB-Log LEGACY:INFO
LEGACY-D007 tblUser.Name SELECT Abgleich RIGHT(SUSER_NAME(),25) fnUserId bei Log-INSERT LEGACY:FN
LEGACY-D008 tblUser.UserID SELECT MIN(UserID), fehlend → 0 fnUserId bei Log-INSERT LEGACY:FN

Quellenverzeichnis

Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Codekorrektur.