Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
1225 — Moses-Zeitereignisse aus CSV-Ordner
Dokumentation ins Wiki übernommen am 02.10.2026. Das ist keine Laufzeitabnahme.
Technische Referenz zum aktiven Programm eProgramm.ImpZeitereignisseMoses. Sie beschreibt Eingänge, tatsächliche Schreibwirkung und Grenzen am genannten Quellenstand. Importkette dokumentiert; allgemeine Zeitberechnung noch Teilanalyse (Q11).
Wichtig: ⚠ Transponder2 nicht weitergereicht / Teilanalyse Calc Q11. Prüfe vor einem späteren Test die beschriebenen Fälle.
Aufruf und Parameter
Delegate: cSchnittZeitereignisseMoses.Ausführen. Active=True, Automatik=true, ManuellerAufruf=true, NurAufServer=false. Registrierung/Defaults, keine bestätigten Jobs. Run prüft die Serverbindung nicht selbst.
| Parameter | Dialogtyp | Fester Wert | DefaultValue |
|---|---|---|---|
| PFAD | Folder | nicht fest | nicht gesetzt |
MAILTO und der von RunWithDialog gesetzte MANUELL-Schlüssel sind Registrierung/Dialogzustand, keine ZW-Einstellung. Eine Auswertung durch die Basis ist nur bei ausdrücklich belegtem BASE-Pfad anzunehmen.
Ein-/Ausgänge und Parameter
PFAD ist Folder. Fehlender Schlüssel/Ordner→False; leeres Value/IMP-Erzeugung vor Try können ungefangen scheitern. Alle *.csv im Ordner, nicht rekursiv, nicht sortiert. TextFieldParser Encoding.Default, Komma, TrimWhiteSpace=True, Quotes=True; keine Kopfzeile übersprungen und keine Feldzahlprüfung.
| Position ab1 | Inhalt / Format | Verwendung |
|---|---|---|
| 1 | Transponderrest | MOSES+Trim(Rest) |
| 2 | Terminalnummer | bigint-Parameter; kein Mapping in VB |
| 3 | nicht gelesen | bleibt ungenutzt |
| 4 | Datum dd?MM?yyyy | Teilstrings1–2,4–5,7–10→DateSerial |
| 5 | Uhrzeit HH?mm | Teilstrings1–2,4–5; Sekunden0 |
| 6 | nicht gelesen | bleibt ungenutzt |
| 7 | Richtung | exakt1→K, alle anderen Werte→G |
Mindestens7 Felder für den aktiven Pfad nötig; zusätzliche ignoriert. Trennzeichen innerhalb Datum/Zeit nicht gesondert geprüft. Terminal aus Datei, Kennzeichen0. SP ZeitbuchungAddTransponderNoDupMoses ersetzt Präfix im BIGINT-Marker durch9999, echte Personauflösung behält MOSES.
Aufrufe und Befunde
Wrapper→ZeitbuchungAddTransponder→Personen-/Zeit-/Orgaauflösung; TPIMPORT enthält Ausgänge/Dedup/Buffern/CStatus. 1225-F01: UseTransponder2 wird von VB übergeben, im Moses-Wrapper aber nicht an Folge-SP weitergereicht, also dort False. Zweiter Ausweis kann trotz aktiviertem Schalter nicht zugeordnet werden.
Datei-Catch umfasst gesamte Schleife: eine Fehlzeile beendet den Rest dieser Datei, schreibt Log und liefertFalse; folgende Dateien können trotzdem folgen. Logname fälschlich _Import_Zeitereignisse_Sauer.log; Sekundenauflösung kann bei mehreren Dateien denselben Namen überschreiben. Nur erfolgreiche Dateien nach IMP, altes gleichnamiges Archiv vorher gelöscht. SQL30s, keine Transaktion; Fehlerpfad schließt Parser nicht regulär.
Calc im Import nach jeder vollständig gelesenen Datei, außerdem einmal außen nach allen Dateien. Der äußere Calc läuft auch bei ImportFalse und bei leerem Ordner; bei äußerer Datei-/Archivexception sofortFalse. Kein Personenfilter, Q11 offen. Success wird über Dateien gesammelt, bestätigt nicht Berechnungserfolg.
Tests: CSV-Header/kurze Zeile, Transponder2-only, nichtnumerischer Rest, unbekanntes Terminal, Richtungswert ungleich1, gleichnamige Archive/Logs und Teilimport. Liefervertrag Q15.
Direkte Einstellungen
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|---|---|---|---|---|
| 1225-S001 | Terminal_UseTransponder2 / Terminal_UseTransponder2 | False | VB→Wrapper→Personauflösung | Übergeben, aber vom Moses-Wrapper nicht weitergereicht; Folge-SP benutztFalse | B,SET,TPIMPORT |
Direkte Feldbeziehungen
Keine separate direkte Fachbeziehung; tatsächliche Wirkung steht im Ablauf und gegebenenfalls in den ausdrücklich zugeordneten Profilen.
Direkte Rückmeldung und Logging (LEGACY)
Nur Info-/Logmeldungen, kein BASE-Start/Ende und keine daraus abgeleitete Mail/API. Dialoge hängen von SupressDialogs ab. Benutzerzuordnung über fnUserId/tblUser. Logging ist nicht mit dem Fachimport atomar; Defaults sind keine Livewerte.
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 |
Gemeinsamer Datenpfad TPIMPORT
Stand:2026-10-02, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Explizite Mitglieder1224/1225/1226. Gilt nur für deren fest gelieferte K/G-Kennungen, Kennzeichen0 und Terminal0 bzw. Dateiterminal. Keine anderen Datafox-/Tür-/Lernpfade aus Namensähnlichkeit übernehmen.
Ablauf und Grenzen
1224/1226→ZeitbuchungAddTransponderNoDup mit sechs Argumenten.1225→ZeitbuchungAddTransponderNoDupMoses: Dedup-Person ersetzt MOSES durch9999; beim Aufruf von ZeitbuchungAddTransponder fehlt das sechste Argument, sodass UseTransponder2=False gilt, obwohl VB den Schalter an den Wrapper übergibt.
ZeitereignisseImportiert.Person ist BIGINT(U96): Rohtransponder muss numerisch konvertierbar sein; Moses benötigt nach Präfixersetzung einen numerischen Rest. Verschiedene Rohschreibweisen können denselben Zahlenmarker teilen. Kein UNIQUE-Index und keine Transaktion: parallele Prüfungen können doppelt schreiben; Marker bleibt bei Folgefehlern bestehen. Terminal/Filiale/Kennzeichen sind nicht Teil dieses Markers.
UDF GetPersonIDFromTransponder nimmt varchar15 entgegen (SP varchar50), TransponderVergleich varchar20: lange Codes können gekürzt werden. Vergleich trimmt und füllt führende Nullen; leer/0 unzulässig. Genau eine Joinzeile aus Personen/ITZeit/ITORGA erforderlich; auch überlappende Historien können Mehrdeutigkeit erzeugen. Tag über CONVERT(date), ZETage-Bit über DATEPART(weekday): DATEFIRST-abhängig.
Uhren.ID→Filiale, dann ITUmbuchung konkret/NULL, danach aktive Filiale. Ohne Person oder Filiale geht der Satz in Buffer mit QuelleT; NULL-Gleichheit in der Buffer-Existenzprüfung schützt nicht zuverlässig vor Duplikaten. Aufgelöste Ereignisse werden nur bei fehlendem Sechs-Felder-Match angefügt, nicht aktualisiert.
TP-F01: CStatus-Personenfilter tautologisch; alle aktiven ITZeit-Personen des Tags können markiert werden. ts wird in dieser SP nicht geändert. Das ist noch keine Berechnung.
Alle drei Importe liefern Kennzeichen0, nicht NULL. Deshalb sind der GetEinstellungZw/CALC_ZE_KOSTENSTELLE_EINTRAGEN/ITPEP-Fallback und die L-/Tür-Kennungspfade hier nicht erreichbar und nicht diesen drei IDs als Wirkung indiziert. Der allgemeine Calc-Folgepfad wird separat teilanalysiert.
Kanonische Feldbeziehungen
DB-Rolle Anmeldung; SPs/UDF lokal, Installationsschema Q02. Dedup und Fachschreiben nicht atomar.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| TPIMPORT-D001 | ZeitereignisseImportiert.Person | SELECT/INSERT | Dedupmarker vor Folge-SP; Person BIGINT, Rohtransponder bzw. MOSES→9999 | Noch nicht importierter Marker; Terminal/Filiale/Kennzeichen nicht im Schlüssel | TPIMPORT:ND,TPIMPORT:NDM,TPIMPORT:U96 |
| TPIMPORT-D002 | ZeitereignisseImportiert.Datum | SELECT/INSERT | Dedupmarker vor Folge-SP; Person BIGINT, Rohtransponder bzw. MOSES→9999 | Noch nicht importierter Marker; Terminal/Filiale/Kennzeichen nicht im Schlüssel | TPIMPORT:ND,TPIMPORT:NDM,TPIMPORT:U96 |
| TPIMPORT-D003 | ZeitereignisseImportiert.Kennung | SELECT/INSERT | Dedupmarker vor Folge-SP; Person BIGINT, Rohtransponder bzw. MOSES→9999 | Noch nicht importierter Marker; Terminal/Filiale/Kennzeichen nicht im Schlüssel | TPIMPORT:ND,TPIMPORT:NDM,TPIMPORT:U96 |
| TPIMPORT-D004 | Personen.PersonID | SELECT | Gültige aktive Person; Transponder2 nur UseTransponder2=True | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D005 | Personen.Transponder | SELECT | Gültige aktive Person; Transponder2 nur UseTransponder2=True | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D006 | Personen.Transponder2 | SELECT | Gültige aktive Person; Transponder2 nur UseTransponder2=True | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D007 | Personen.ZETage | SELECT | Gültige aktive Person; Transponder2 nur UseTransponder2=True | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D008 | Personen.Eintritt | SELECT | Gültige aktive Person; Transponder2 nur UseTransponder2=True | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D009 | Personen.Austritt | SELECT | Gültige aktive Person; Transponder2 nur UseTransponder2=True | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D010 | Personen.InZw | SELECT | Gültige aktive Person; Transponder2 nur UseTransponder2=True | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D011 | Personen.aktiv | SELECT | Gültige aktive Person; Transponder2 nur UseTransponder2=True | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D012 | ITZeit.PersonenStammID | SELECT | Gültiger aktiver Zeitstamm | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D013 | ITZeit.von | SELECT | Gültiger aktiver Zeitstamm | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D014 | ITZeit.bis2 | SELECT | Gültiger aktiver Zeitstamm | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D015 | ITZeit.IsAktiv | SELECT | Gültiger aktiver Zeitstamm | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D016 | ITORGA.PersonenStammID | SELECT | Gültiger Organisationssatz | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D017 | ITORGA.von | SELECT | Gültiger Organisationssatz | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D018 | ITORGA.bis2 | SELECT | Gültiger Organisationssatz | Normaler K/G-Pfad | TPIMPORT:PID |
| TPIMPORT-D019 | Uhren.ID | SELECT | Terminal→Filiale; Terminal0 muss existieren | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D020 | Uhren.FilialID | SELECT | Terminal→Filiale; Terminal0 muss existieren | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D021 | ITUmbuchung.PersonID | SELECT | Person/Tag; erst konkrete Altfiliale, dann NULL-Altfiliale | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D022 | ITUmbuchung.FilialeAlt | SELECT | Person/Tag; erst konkrete Altfiliale, dann NULL-Altfiliale | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D023 | ITUmbuchung.FilialeNeu | SELECT | Person/Tag; erst konkrete Altfiliale, dann NULL-Altfiliale | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D024 | ITUmbuchung.von | SELECT | Person/Tag; erst konkrete Altfiliale, dann NULL-Altfiliale | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D025 | ITUmbuchung.bis2 | SELECT | Person/Tag; erst konkrete Altfiliale, dann NULL-Altfiliale | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D026 | Filialen.FilialID | SELECT | Ziel aktiv nach Umbuchung | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D027 | Filialen.aktiv | SELECT | Ziel aktiv nach Umbuchung | Normaler K/G-Pfad | TPIMPORT:ADD |
| TPIMPORT-D028 | Zeitereignisse.Datum | SELECT/INSERT | Existenzprüfung und Einfügen auf sechs Feldern; Kennzeichen0 | Person und aktive Filiale aufgelöst | TPIMPORT:ADD |
| TPIMPORT-D029 | Zeitereignisse.PersonID | SELECT/INSERT | Existenzprüfung und Einfügen auf sechs Feldern; Kennzeichen0 | Person und aktive Filiale aufgelöst | TPIMPORT:ADD |
| TPIMPORT-D030 | Zeitereignisse.Terminal | SELECT/INSERT | Existenzprüfung und Einfügen auf sechs Feldern; Kennzeichen0 | Person und aktive Filiale aufgelöst | TPIMPORT:ADD |
| TPIMPORT-D031 | Zeitereignisse.Kennzeichen | SELECT/INSERT | Existenzprüfung und Einfügen auf sechs Feldern; Kennzeichen0 | Person und aktive Filiale aufgelöst | TPIMPORT:ADD |
| TPIMPORT-D032 | Zeitereignisse.Kennung | SELECT/INSERT | Existenzprüfung und Einfügen auf sechs Feldern; Kennzeichen0 | Person und aktive Filiale aufgelöst | TPIMPORT:ADD |
| TPIMPORT-D033 | Zeitereignisse.Filiale | SELECT/INSERT | Existenzprüfung und Einfügen auf sechs Feldern; Kennzeichen0 | Person und aktive Filiale aufgelöst | TPIMPORT:ADD |
| TPIMPORT-D034 | Zeitereignisse.ts | INSERT | GETDATE() | Neuer aufgelöster K/G-Satz | TPIMPORT:ADD |
| TPIMPORT-D035 | ZeitereignisseBuffer.Datum | SELECT/INSERT | Nicht aufgelöstes Ereignis, Quelle=T; Vergleich mit NULL ist nicht nullsicher | Person oder Filiale NULL | TPIMPORT:ADD |
| TPIMPORT-D036 | ZeitereignisseBuffer.Zeitausweis | SELECT/INSERT | Nicht aufgelöstes Ereignis, Quelle=T; Vergleich mit NULL ist nicht nullsicher | Person oder Filiale NULL | TPIMPORT:ADD |
| TPIMPORT-D037 | ZeitereignisseBuffer.Terminal | SELECT/INSERT | Nicht aufgelöstes Ereignis, Quelle=T; Vergleich mit NULL ist nicht nullsicher | Person oder Filiale NULL | TPIMPORT:ADD |
| TPIMPORT-D038 | ZeitereignisseBuffer.Kennzeichen | SELECT/INSERT | Nicht aufgelöstes Ereignis, Quelle=T; Vergleich mit NULL ist nicht nullsicher | Person oder Filiale NULL | TPIMPORT:ADD |
| TPIMPORT-D039 | ZeitereignisseBuffer.Kennung | SELECT/INSERT | Nicht aufgelöstes Ereignis, Quelle=T; Vergleich mit NULL ist nicht nullsicher | Person oder Filiale NULL | TPIMPORT:ADD |
| TPIMPORT-D040 | ZeitereignisseBuffer.PersonenStammID | SELECT/INSERT | Nicht aufgelöstes Ereignis, Quelle=T; Vergleich mit NULL ist nicht nullsicher | Person oder Filiale NULL | TPIMPORT:ADD |
| TPIMPORT-D041 | ZeitereignisseBuffer.Filiale | SELECT/INSERT | Nicht aufgelöstes Ereignis, Quelle=T; Vergleich mit NULL ist nicht nullsicher | Person oder Filiale NULL | TPIMPORT:ADD |
| TPIMPORT-D042 | ZeitereignisseBuffer.Quelle | SELECT/INSERT | Nicht aufgelöstes Ereignis, Quelle=T; Vergleich mit NULL ist nicht nullsicher | Person oder Filiale NULL | TPIMPORT:ADD |
| TPIMPORT-D043 | CStatus.PersonenStammID | SELECT | Join auf ITZeit; @PersonID=@PersonID statt Spaltenfilter | Neues aufgelöstes Ereignis, alle aktiven Personen am Tag | TPIMPORT:ADD |
| TPIMPORT-D044 | CStatus.Datum | SELECT | Join auf ITZeit; @PersonID=@PersonID statt Spaltenfilter | Neues aufgelöstes Ereignis, alle aktiven Personen am Tag | TPIMPORT:ADD |
| TPIMPORT-D045 | ITZeit.PersonenStammID | SELECT | Tagesgültigkeit für breite CStatus-Markierung | Neues aufgelöstes Ereignis | TPIMPORT:ADD |
| TPIMPORT-D046 | ITZeit.von | SELECT | Tagesgültigkeit für breite CStatus-Markierung | Neues aufgelöstes Ereignis | TPIMPORT:ADD |
| TPIMPORT-D047 | ITZeit.bis2 | SELECT | Tagesgültigkeit für breite CStatus-Markierung | Neues aufgelöstes Ereignis | TPIMPORT:ADD |
| TPIMPORT-D048 | ITZeit.IsAktiv | SELECT | Tagesgültigkeit für breite CStatus-Markierung | Neues aufgelöstes Ereignis | TPIMPORT:ADD |
| TPIMPORT-D049 | CStatus.CStatus | UPDATE | 1; ts wird hier nicht gesetzt, kein CStatus⇐0-Filter | Alle aktiven ITZeit-Personen des Buchungstags | TPIMPORT:ADD |
Gemeinsamer Datenpfad CALCENTRY
Stand02.10.2026, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Explizite Mitglieder1224/1225/1226; keine vollständige Motoranalyse, Q11 offen. Weitere Leser/Schreiber/Einstellungen nicht als ausgeschlossen behandeln.
cSetting.Init erstellt und initialisiert cCalcZw. Calc(Von,Bis) wählt über CALC_USESCHICHT V1/V2. V1 ignoriert die übergebenen Grenzen und verarbeitet offene Statuslisten, nicht nur Personen der Importdatei. V2 verwendet sie in GetListCalc_V2, startet aber ebenso mit FehlerStammMarkieren(-1,NULL,NULL). Beide fangen Exceptions intern; der Dateimport-Erfolg beweist keine erfolgreiche Berechnung.
Aufgelöster Einstieg: CALC_FehlerStammMarkieren→BatchZe/GetListCalcZe/SaveAz bzw. Schicht/V2; BatchAz→Regelmodelle/UpdateAz→Calc_SaveBz/Calc_SetStatus/BerechnetKonten; optional PeriodenAbschluss und Zusatzleistungen. SP-/Regel-/Nettozeit-Folgefelder außerhalb der unten direkt geprüften IO-Schreibstellen sind noch nicht vollständig aufgelöst. Kein Provisions-/PEP-Gruppenlauf allein aus Namen ableiten. Ältere Teilanalyse1073 und FrageQ11 sind zusätzliche Einstiegshilfen, keine automatische Profilmitgliedschaft.
Die folgenden Beziehungen dokumentieren nachgewiesene direkte V1-/IO-Wirkungen. Keine Gesamttransaktion; Varianten erreichen nicht zwingend jede Zeile. Aufrufhäufigkeit und Fehler-/Archivzeitpunkt stehen je Import.
Einstellungen (Teilmenge)
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|---|---|---|---|---|
| CALCENTRY-S001 | CALC_MINDATE / CALCMinDate | 1.1.2011 | Calc→FehlerStammMarkieren/GetListCalcBz | Untergrenze; kein verlässlicher Importsatz-/Personenfilter | CALCENTRY:CALC,CALCENTRY:IO,CALCENTRY:SET |
| CALCENTRY-S002 | CALC_USESCHICHT / CALC_UseSchicht | 0 | Calc-Dispatcher | <2 V1, sonst V2; V1=1 nutzt Schichtpfad | CALCENTRY:CALC,CALCENTRY:CALC2,CALCENTRY:SET |
| CALCENTRY-S003 | CALC_BLOCKSIZE / CALCBlockSize | 500 | Listenverarbeitung | Blockgröße der Folgezeitberechnung | CALCENTRY:IO,CALCENTRY:CALC2,CALCENTRY:SET |
| CALCENTRY-S004 | CALC_SALDO_ABSCHLUSS / CALC_SALDO_ABSCHLUSS | False | Calc V1/V2 | Optionaler Periodenabschluss; rekursive Feldkette Q11 | CALCENTRY:CALC,CALCENTRY:CALC2,CALCENTRY:SET |
| CALCENTRY-S005 | CALC_ZE_TAGESGRENZE / CALC_TagesGrenze | 0 | V1 SaveAz | Verschiebt Tagesfenster beim Ersetzen von Arbeitszeiten | CALCENTRY:IO,CALCENTRY:SET |
Feldbeziehungen (Teilmenge)
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| CALCENTRY-D001 | Arbeitszeiten.Person | SELECT | Filter des V1-DELETE: Person und Tagesfenster mit CALC_TagesGrenze, nur automatisch aus Ereignissen | SaveAz/SaveAzSchicht, nicht jeder Datensatz wird bearbeitet | CALCENTRY:IO |
| CALCENTRY-D002 | Arbeitszeiten.Kommen | SELECT | Filter des V1-DELETE: Person und Tagesfenster mit CALC_TagesGrenze, nur automatisch aus Ereignissen | SaveAz/SaveAzSchicht, nicht jeder Datensatz wird bearbeitet | CALCENTRY:IO |
| CALCENTRY-D003 | Arbeitszeiten.Zeitereignisse | SELECT | Filter des V1-DELETE: Person und Tagesfenster mit CALC_TagesGrenze, nur automatisch aus Ereignissen | SaveAz/SaveAzSchicht, nicht jeder Datensatz wird bearbeitet | CALCENTRY:IO |
| CALCENTRY-D004 | Arbeitszeiten.— Zeilen | DELETE | V1 ersetzt aus Ereignissen erzeugte Arbeitszeiten im gefilterten Tagesfenster | SaveAz; SaveAzSchicht zusätzlich nach Zeitereignis | CALCENTRY:IO |
| CALCENTRY-D005 | Arbeitszeiten.Manuell | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D006 | Arbeitszeiten.Person | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D007 | Arbeitszeiten.Kommen | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D008 | Arbeitszeiten.Gehen | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D009 | Arbeitszeiten.P | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D010 | Arbeitszeiten.Kennzeichen | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D011 | Arbeitszeiten.Korrektur | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D012 | Arbeitszeiten.Bereich | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D013 | Arbeitszeiten.Zeitereignisse | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D014 | Arbeitszeiten.Zeitereignis | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D015 | Arbeitszeiten.Filiale | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D016 | Arbeitszeiten.ChangeDate | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D017 | Arbeitszeiten.UserID | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D018 | Arbeitszeiten.Versatz | INSERT | Berechnete Arbeitszeiten; Zeitereignisse=True, ts=GETDATE,UserID=NULL,Filiale0→NULL | V1 SaveAz; Schichtvarianten siehe offene Q11 | CALCENTRY:IO |
| CALCENTRY-D019 | Arbeitszeiten.ID | SELECT | UpdateAz-Match und Nettozeit-Eingaben | Berechnung ausgewählter Arbeitszeiten | CALCENTRY:IO |
| CALCENTRY-D020 | Arbeitszeiten.Kommen | SELECT | UpdateAz-Match und Nettozeit-Eingaben | Berechnung ausgewählter Arbeitszeiten | CALCENTRY:IO |
| CALCENTRY-D021 | Arbeitszeiten.Gehen | SELECT | UpdateAz-Match und Nettozeit-Eingaben | Berechnung ausgewählter Arbeitszeiten | CALCENTRY:IO |
| CALCENTRY-D022 | Arbeitszeiten.Kennzeichen | SELECT | UpdateAz-Match und Nettozeit-Eingaben | Berechnung ausgewählter Arbeitszeiten | CALCENTRY:IO |
| CALCENTRY-D023 | Arbeitszeiten.p | SELECT | UpdateAz-Match und Nettozeit-Eingaben | Berechnung ausgewählter Arbeitszeiten | CALCENTRY:IO |
| CALCENTRY-D024 | Arbeitszeiten.KommenCalc | UPDATE | Berechnete Grenzen/Nettozeit und ±1/0 Tagversatz; Fehlerreset Grenzen=NULL,Netto=0 | UpdateAz; Buchungstag beim Fehlerreset nicht geändert | CALCENTRY:IO |
| CALCENTRY-D025 | Arbeitszeiten.GehenCalc | UPDATE | Berechnete Grenzen/Nettozeit und ±1/0 Tagversatz; Fehlerreset Grenzen=NULL,Netto=0 | UpdateAz; Buchungstag beim Fehlerreset nicht geändert | CALCENTRY:IO |
| CALCENTRY-D026 | Arbeitszeiten.Netto1 | UPDATE | Berechnete Grenzen/Nettozeit und ±1/0 Tagversatz; Fehlerreset Grenzen=NULL,Netto=0 | UpdateAz; Buchungstag beim Fehlerreset nicht geändert | CALCENTRY:IO |
| CALCENTRY-D027 | Arbeitszeiten.Netto2 | UPDATE | Berechnete Grenzen/Nettozeit und ±1/0 Tagversatz; Fehlerreset Grenzen=NULL,Netto=0 | UpdateAz; Buchungstag beim Fehlerreset nicht geändert | CALCENTRY:IO |
| CALCENTRY-D028 | Arbeitszeiten.Buchungstag | UPDATE | Berechnete Grenzen/Nettozeit und ±1/0 Tagversatz; Fehlerreset Grenzen=NULL,Netto=0 | UpdateAz; Buchungstag beim Fehlerreset nicht geändert | CALCENTRY:IO |
Quellen und Prüfstand
Geprüft am02.10.2026 gegen master, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Kein aktueller Installations-/Live-Schema-/DLL-/Jobabgleich. Aprocon bezeichnet die externe Datenbankrolle, keinen bestätigten Schemanamen. Defaults/Computed-Spalten sind gesonderte Schemawirkung. Q02:Installationsgrenze; Q11:offene Motoranalyse; Q13/Q15:Liefer-/Einheiten-/Ersatzverträge.
| Kürzel | Quelldatei am Commit |
|---|---|
| E | PEP4/ZW/Allgemein.vb |
| P, LEGACY:P | PEP4/cSchnittstellen/Programme/cProgramme.vb |
| PRJ | PEP4/cSchnittstellen/cSchnittstellen.vbproj |
| B | PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnittZeitereignisseMoses.vb |
| SET, LEGACY:SET, CALCENTRY:SET | PEP4/ZW/Einstellungen/cEinstellungenZw.vb |
| LEGACY:INFO | PEP4/cTools/cInfoTools.vb |
| LEGACY:INIT, CALCENTRY:INIT | PEP4/ZW/Einstellungen/cSetting.vb |
| LEGACY:FN | Sqlfiles/PEP4Functions/fnUserId.sql |
| TPIMPORT:ND | Sqlfiles/PEP4Functions/ZeitbuchungAddTransponderNoDup.sql |
| TPIMPORT:NDM | Sqlfiles/PEP4Functions/ZeitbuchungAddTransponderNoDupMoses.sql |
| TPIMPORT:ADD | Sqlfiles/PEP4Functions/ZeitbuchungAddTransponder.sql |
| TPIMPORT:PID | Sqlfiles/PEP4Functions/GetPersonIDFromTransponder.sql |
| TPIMPORT:TV | Sqlfiles/PEP4Functions/TransponderVergleich.sql |
| TPIMPORT:U96 | Sqlfiles/PEP4Update/update_0096.sql |
| CALCENTRY:CALC | PEP4/ZW/cCalcZw.vb |
| CALCENTRY:CALC2 | PEP4/ZW/cCalcZw_2.vb |
| CALCENTRY:IO | PEP4/ZW/cCalcIO.vb |
Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Fehlerkorrektur.