Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
1224 — Sauer-Zeitereignisse importieren
Dokumentation ins Wiki übernommen am 02.10.2026. Das ist keine Laufzeitabnahme.
Technische Referenz zum aktiven Programm eProgramm.ImpZeitereignisseSauer. Sie beschreibt Eingänge, tatsächliche Schreibwirkung und Grenzen am genannten Quellenstand. Importkette dokumentiert; allgemeine Zeitberechnung noch Teilanalyse (Q11).
Wichtig: ⚠ E-Satzprüfung / Teilanalyse Calc Q11. Prüfe vor einem späteren Test die beschriebenen Fälle.
Aufruf und Parameter
Delegate: cSchnittZeitereignisseSauer.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 | FileImport | 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 FileImport, kein Dateinamenfilter speziell gesetzt. Fehlender Schlüssel/Datei→False; Value.ToString/IMP-Erzeugung vor Try können ungefangen scheitern. Eingang ist eine zeilenweise Festbreitendatei über StreamReader-Default UTF8/BOM. Kein Headerüberspringen. Nur Zeilen mit Länge>=24 und erstem Zeichen A oder E; andere still ignoriert.
| Satz / Position ab1 | Inhalt | Verwendung |
|---|---|---|
| A/E,2–5 | Transponder | SP varchar50; Dedupmarker BIGINT |
| A,6–7 /9–10 /12–15 | Tag/Monat/Jahr | DateSerial |
| A,16–17 /19–20 /22–23 | Stunde/Minute/Sekunde | AddHours/Minutes/Seconds |
| E,28–29 /31–32 /34–37 | Tag/Monat/Jahr | DateSerial |
| E,38–39 /41–42 /44–45 | Stunde/Minute/Sekunde | AddHours/Minutes/Seconds |
A→KennungK, E→G; Terminal0/Kennzeichen0. 1224-F01: E benötigt mindestens45 Zeichen, die Prüfung verlangt nur24. Kurze E-Zeile bricht den gesamten weiteren Dateilauf ab; bereits eingefügte Sätze bleiben bestehen.
Aufrufe und Betrieb
Je Satz exec ZeitbuchungAddTransponderNoDup→ZeitbuchungAddTransponder→GetPersonIDFromTransponder/TransponderVergleich. Direkte Ausgänge: Dedupmarker, Zeitereignisse oder ZeitereignisseBuffer, breite CStatus-Markierung; siehe TPIMPORT. Terminal0 ohne passende Uhr führt in Buffer, nicht automatisch in die eigene Stammfiliale.
Dateiimport hat einen Catch um gesamte Schleife, loggt Exception, liefert Not bolFehler. SQL-Standard30s, keine Transaktion; StreamReader wird auf Fehlerpfad nicht normal geschlossen. LOG/yyyyMMdd_HHmmss_Import_Zeitereignisse_Sauer.log im Arbeitsordner. Nur bei ImportTrue nach IMP verschieben; vorhandene gleichnamige Archivdatei zuerst löschen.
Allgemeines Calc läuft im Import nach erfolgreicher Schleife und nochmals außen nach Archivierung, also normalerweise zweimal. Bei abgefangenem ImportFalse läuft der äußere Calc trotzdem; bei äußerer Exception/Archivfehler sofortFalse, kein äußerer Calc. Motorabdeckung Q11 offen; kein Importsatz-/Personenfilter, siehe CALCENTRY.
Rückgabe Success bestätigt Importstatus, nicht Calc-Erfolg. Testvorschläge: kurzer E-Satz, Terminal0 ohne Uhr, Folgefehler nach Dedupmarker, erneute Datei, Teilfehler und doppelte globale Berechnung. Synthetischer Dateivertrag Q15.
Direkte Einstellungen
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|---|---|---|---|---|
| 1224-S001 | Terminal_UseTransponder2 / Terminal_UseTransponder2 | False | VB→Wrapper→Personauflösung | Erlaubt zusätzlich Personen.Transponder2 | 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/cSchnittZeitereignisseSauer.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.