Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Schnittstelle 5328: WebZerf2 — Zeitdatei lokal importieren
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. Teilweise dokumentiert: Dateileser/Buchungs-/Antrags-SPs belegt; allgemeiner ZW-Motor Q11 offen; Nutzerprüfung offen. Keine Schnittstelle ausgeführt.
Identität und Quellenstand
eProgramm.ImportWebZerfFile = 5328. Aktive feste Registrierung → cSchnittWebZerf2.Import_ZeitFile (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.
Parameter, Datei und Abgrenzung
PFAD ist FileImport, kein Ordner. SetFile verlangt eine bestehende Datei; ValueNothing kann vor dem Fach-Try abbrechen. IO.File.ReadAllText: UTF-8 mit BOM-Erkennung; danach StringReader und Split(';'), kein CSV-Quotesparser und kein Header. Sieben Positionen: WebID; PersonID; Datum (kulturabhängig); Kennung; Manuell (0False/sonstTrue); PepID (leer0); Gelöscht (0False/sonstTrue). Feldzahl ungeprüft. Apostroph am Zeilenanfang → SetFehler statt Buchung. Keine Archivierung oder Dateilöschung.
Kein ServerSec-Guard, HTTP-Download/-Upload, Batch, Key oder PIN. Nicht den gesamten ZeitSync3520-Pfad allein wegen derselben Klasse übernehmen.
Buchungswege und SQL
Personen.webzerf_buchung_manuell_antrag (nichtNULL) überschreibt Webzerf_AntragDefault. Nur Feld5 exakt1 und NeedAntrag nutzen Anträge: PepID>0/Gelöscht → Zeit_Loeschantrag(@Antragleer); >0/nichtgelöscht zunächst bei WebID>0 Löschantrag, dann ANTRAG_AntragBuchung. Bei PepID⇐0 immer Neuantrag, auch bei GelöschtTrue. Beide SQL-Pfade bewegen Anträge und Zeitereignisse_K, keine direkte Genehmigung. Filiale/Kennzeichen0; Zeit_Loeschantrag nur im tatsächlich erreichten Antragleer-Zweig.
Sonst webzerf_ZeitbuchungAdd2(PID,Datum,PepID,WebID,Kennung,Manuell,Gelöscht→@Delete). Gültige ITORGA.Filiale erforderlich. A/Terminal0/Kennzeichen0-Duplikatguard unabhängig von gelieferter Kennung. Bestehender Match FremdID=WebID ODER ID=PepID ohne PID-Filter: Datum/Kennung/Terminal/geloescht/ts aktualisieren, keine PID-/Filiale-/FremdID-Korrektur. Sonst INSERT. CStatus1/tsGETDATE für aktive ITZeit am Tag; @PersonID=@PersonID begrenzt die Person nicht.
Gesamter Import-Catch → Stopp, frühere Writes bleiben. Danach immer Calc(CALCMinDate,heute), auch bei leerem oder fehlerhaftem Inhalt. ImportZeitenBoolean ohne Return(False) wird ignoriert; äußerer Einstieg gibt Fehlerfrei zurück. Motor-Ausgänge/Einstellungen nur belegte Teilmenge CALCENTRY, Q11 offen.
Befunde und Abnahme
⚠ Feldzahl, globaler OR-ID-Match, tautologischer CStatus-Personenfilter, ignoriertes Löschflag bei Neuantrag und Calc nach Teilfehler. Datei-/Antrags-/Wiederholungsvertrag Q19. Der fehlende cWebData-Formatter aus Q17 wird hier nicht verwendet.
Einstellungen und gemeinsame Nebenwirkungen
Gemeinsames Profil: BASE (interne Referenz).
Gemeinsames Profil: CALCENTRY (interne Referenz).
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|---|---|---|---|---|
| 5328-S001 | Webzerf_AntragDefault / Webzerf_AntragDefault | False | Client-Antragsverzweigung | Personenüberschreibung wenn nichtNULL; nur Manuell exakt1 | SET,B |
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 |
|---|---|---|---|---|---|
| 5328-D001 | Personen.PersonID | SELECT | NichtNULL personenspezifischer Antragsschalter | Lokaler Dateiimport | B |
| 5328-D002 | Personen.webzerf_buchung_manuell_antrag | SELECT | NichtNULL personenspezifischer Antragsschalter | Lokaler Dateiimport | B |
| 5328-D003 | ITORGA.PersonenStammID | SELECT | Add2-Filiallookup | gültiger Datumstag | SQL |
| 5328-D004 | ITORGA.von | SELECT | Add2-Filiallookup | gültiger Datumstag | SQL |
| 5328-D005 | ITORGA.bis2 | SELECT | Add2-Filiallookup | gültiger Datumstag | SQL |
| 5328-D006 | ITORGA.Filiale | SELECT | Add2-Filiallookup | gültiger Datumstag | SQL |
| 5328-D007 | Zeitereignisse.Datum | SELECT | A-Duplikatguard und globaler OR-ID-Match | Direktbuchungszweig | SQL |
| 5328-D008 | Zeitereignisse.PersonID | SELECT | A-Duplikatguard und globaler OR-ID-Match | Direktbuchungszweig | SQL |
| 5328-D009 | Zeitereignisse.Terminal | SELECT | A-Duplikatguard und globaler OR-ID-Match | Direktbuchungszweig | SQL |
| 5328-D010 | Zeitereignisse.Kennzeichen | SELECT | A-Duplikatguard und globaler OR-ID-Match | Direktbuchungszweig | SQL |
| 5328-D011 | Zeitereignisse.Kennung | SELECT | A-Duplikatguard und globaler OR-ID-Match | Direktbuchungszweig | SQL |
| 5328-D012 | Zeitereignisse.FremdID | SELECT | A-Duplikatguard und globaler OR-ID-Match | Direktbuchungszweig | SQL |
| 5328-D013 | Zeitereignisse.ID | SELECT | A-Duplikatguard und globaler OR-ID-Match | Direktbuchungszweig | SQL |
| 5328-D014 | Zeitereignisse.Datum | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D015 | Zeitereignisse.PersonID | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D016 | Zeitereignisse.Terminal | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D017 | Zeitereignisse.Kennzeichen | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D018 | Zeitereignisse.Kennung | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D019 | Zeitereignisse.Filiale | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D020 | Zeitereignisse.FremdID | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D021 | Zeitereignisse.geloescht | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D022 | Zeitereignisse.ts | INSERT | Webdaten;Terminal−1/0, Kennzeichen0,FilialeLookup,tsjetzt | Guard frei, ID-Match fehlt | SQL |
| 5328-D023 | Zeitereignisse.Datum | UPDATE | Webdaten; keine PID-/Filiale-/FremdID-Änderung | FremdID=WebID ODER ID=PepID, ohnePIDfilter | SQL |
| 5328-D024 | Zeitereignisse.Kennung | UPDATE | Webdaten; keine PID-/Filiale-/FremdID-Änderung | FremdID=WebID ODER ID=PepID, ohnePIDfilter | SQL |
| 5328-D025 | Zeitereignisse.Terminal | UPDATE | Webdaten; keine PID-/Filiale-/FremdID-Änderung | FremdID=WebID ODER ID=PepID, ohnePIDfilter | SQL |
| 5328-D026 | Zeitereignisse.geloescht | UPDATE | Webdaten; keine PID-/Filiale-/FremdID-Änderung | FremdID=WebID ODER ID=PepID, ohnePIDfilter | SQL |
| 5328-D027 | Zeitereignisse.ts | UPDATE | Webdaten; keine PID-/Filiale-/FremdID-Änderung | FremdID=WebID ODER ID=PepID, ohnePIDfilter | SQL |
| 5328-D028 | ITZeit.PersonenStammID | SELECT | CStatus-Tagesaktivität, nicht Importperson begrenzt | IsAktiv1 | SQL |
| 5328-D029 | ITZeit.von | SELECT | CStatus-Tagesaktivität, nicht Importperson begrenzt | IsAktiv1 | SQL |
| 5328-D030 | ITZeit.bis2 | SELECT | CStatus-Tagesaktivität, nicht Importperson begrenzt | IsAktiv1 | SQL |
| 5328-D031 | ITZeit.IsAktiv | SELECT | CStatus-Tagesaktivität, nicht Importperson begrenzt | IsAktiv1 | SQL |
| 5328-D032 | CStatus.PersonenStammID | SELECT | Statusmatch auf Buchungstag | @PersonID=@PersonID ist tautologisch | SQL |
| 5328-D033 | CStatus.Datum | SELECT | Statusmatch auf Buchungstag | @PersonID=@PersonID ist tautologisch | SQL |
| 5328-D034 | CStatus.CStatus | UPDATE | 1/GETDATE(), potentiell alle aktiven Personen des Tages | neues/importiertes Ereignis, ITORGA gefunden | SQL |
| 5328-D035 | CStatus.ts | UPDATE | 1/GETDATE(), potentiell alle aktiven Personen des Tages | neues/importiertes Ereignis, ITORGA gefunden | SQL |
| 5328-D036 | Anträge.ID | SELECT | Existenz/Result unbearbeiteter Tageskopf | Antragspfad | A,DEL |
| 5328-D037 | Anträge.PersonID | SELECT | Existenz/Result unbearbeiteter Tageskopf | Antragspfad | A,DEL |
| 5328-D038 | Anträge.Datum | SELECT | Existenz/Result unbearbeiteter Tageskopf | Antragspfad | A,DEL |
| 5328-D039 | Anträge.Art | SELECT | Existenz/Result unbearbeiteter Tageskopf | Antragspfad | A,DEL |
| 5328-D040 | Anträge.tsBearbeitung | SELECT | Existenz/Result unbearbeiteter Tageskopf | Antragspfad | A,DEL |
| 5328-D041 | Anträge.PersonID | INSERT | PID,Datum.Date dreifach,Z,jetzt,fnUserId | kein unbearbeiteter Tageskopf | A,DEL |
| 5328-D042 | Anträge.Datum | INSERT | PID,Datum.Date dreifach,Z,jetzt,fnUserId | kein unbearbeiteter Tageskopf | A,DEL |
| 5328-D043 | Anträge.DatumVon | INSERT | PID,Datum.Date dreifach,Z,jetzt,fnUserId | kein unbearbeiteter Tageskopf | A,DEL |
| 5328-D044 | Anträge.DatumBis | INSERT | PID,Datum.Date dreifach,Z,jetzt,fnUserId | kein unbearbeiteter Tageskopf | A,DEL |
| 5328-D045 | Anträge.Art | INSERT | PID,Datum.Date dreifach,Z,jetzt,fnUserId | kein unbearbeiteter Tageskopf | A,DEL |
| 5328-D046 | Anträge.tsAuftrag | INSERT | PID,Datum.Date dreifach,Z,jetzt,fnUserId | kein unbearbeiteter Tageskopf | A,DEL |
| 5328-D047 | Anträge.UserIDAuftrag | INSERT | PID,Datum.Date dreifach,Z,jetzt,fnUserId | kein unbearbeiteter Tageskopf | A,DEL |
| 5328-D048 | Zeitereignisse_K.ID | SELECT | Buchungs-/Löschantrags-Dedup, nur erreichbare SP-Zweige | Antragspfad | A,DEL |
| 5328-D049 | Zeitereignisse_K.PersonID | SELECT | Buchungs-/Löschantrags-Dedup, nur erreichbare SP-Zweige | Antragspfad | A,DEL |
| 5328-D050 | Zeitereignisse_K.Datum | SELECT | Buchungs-/Löschantrags-Dedup, nur erreichbare SP-Zweige | Antragspfad | A,DEL |
| 5328-D051 | Zeitereignisse_K.Kennung | SELECT | Buchungs-/Löschantrags-Dedup, nur erreichbare SP-Zweige | Antragspfad | A,DEL |
| 5328-D052 | Zeitereignisse_K.FremdID | SELECT | Buchungs-/Löschantrags-Dedup, nur erreichbare SP-Zweige | Antragspfad | A,DEL |
| 5328-D053 | Zeitereignisse_K.ZEID | SELECT | Buchungs-/Löschantrags-Dedup, nur erreichbare SP-Zweige | Antragspfad | A,DEL |
| 5328-D054 | Zeitereignisse_K.s | SELECT | Buchungs-/Löschantrags-Dedup, nur erreichbare SP-Zweige | Antragspfad | A,DEL |
| 5328-D055 | Zeitereignisse_K.Datum | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D056 | Zeitereignisse_K.PersonID | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D057 | Zeitereignisse_K.Kennung | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D058 | Zeitereignisse_K.ts | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D059 | Zeitereignisse_K.ZEID | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D060 | Zeitereignisse_K.s | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D061 | Zeitereignisse_K.Kommentar | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D062 | Zeitereignisse_K.Filiale | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D063 | Zeitereignisse_K.Kennzeichen | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D064 | Zeitereignisse_K.FremdID | INSERT | Neuer Buchungsantrag:WebDatum/PID/Kennung,jetzt,0,N,leer,0,0,WebID | manuell1,NeedAntrag | A |
| 5328-D065 | Zeitereignisse.ID | SELECT | Vorhandenes Ereignis→Löschantrag | PepID>0,@Antragleer | DEL |
| 5328-D066 | Zeitereignisse.Datum | SELECT | Vorhandenes Ereignis→Löschantrag | PepID>0,@Antragleer | DEL |
| 5328-D067 | Zeitereignisse.PersonID | SELECT | Vorhandenes Ereignis→Löschantrag | PepID>0,@Antragleer | DEL |
| 5328-D068 | Zeitereignisse.Kennung | SELECT | Vorhandenes Ereignis→Löschantrag | PepID>0,@Antragleer | DEL |
| 5328-D069 | Zeitereignisse.Filiale | SELECT | Vorhandenes Ereignis→Löschantrag | PepID>0,@Antragleer | DEL |
| 5328-D070 | Zeitereignisse.Kennzeichen | SELECT | Vorhandenes Ereignis→Löschantrag | PepID>0,@Antragleer | DEL |
| 5328-D071 | Zeitereignisse.FremdID | SELECT | Vorhandenes Ereignis→Löschantrag | PepID>0,@Antragleer | DEL |
| 5328-D072 | Zeitereignisse_K.Datum | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D073 | Zeitereignisse_K.PersonID | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D074 | Zeitereignisse_K.Kennung | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D075 | Zeitereignisse_K.ts | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D076 | Zeitereignisse_K.USERID | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D077 | Zeitereignisse_K.ZEID | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D078 | Zeitereignisse_K.s | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D079 | Zeitereignisse_K.Filiale | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D080 | Zeitereignisse_K.Kennzeichen | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D081 | Zeitereignisse_K.FremdID | INSERT | Ereigniskopie,jetzt,fnUserId,PepID,D,WebID/Quell-FremdID | Löschposition fehlt | DEL |
| 5328-D082 | Zeitereignisse_K.FremdID | UPDATE | WebID ergänzen; abweichende vorhandeneID nichtüberschreiben | Antrag vorhanden und FremdIDNULL/gleich | A,DEL |
| 5328-D083 | tblUser.Name | SELECT | fnUserId: min(UserID),Name=RIGHT(SUSER_NAME(),25),sonst0 | Antragskopf/-position | USER |
| 5328-D084 | tblUser.UserID | SELECT | fnUserId: min(UserID),Name=RIGHT(SUSER_NAME(),25),sonst0 | Antragskopf/-position | USER |
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 BASE
Einstellungen
| Beziehung | Schlüssel / Variable | Default | Einfluss | Wirkung | Beleg |
|---|---|---|---|---|---|
| BASE-S001 | MAIL_SCHNITTSTELLEONSUCCESS / MAIL_SchnittstelleOnSuccess | False | Basis | Direkte Mail bei Result 0 oder1, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S002 | MAIL_SCHNITTSTELLEONERROR / MAIL_SchnittstelleOnError | False | Basis | Direkte Mail bei Result 1 oder2, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S003 | SCHNITT_MELDUNG_SchnittstelleOnSuccess / SCHNITT_MELDUNG_SchnittstelleOnSuccess | False | Basis/API | sendmail=1 bei Result 0 oder1, nicht MANUELL/SILENT; API-Meldung sonst weiterhin sendmail=0 | BASE:BASE, BASE:SET |
| BASE-S004 | SCHNITT_MELDUNG_SchnittstelleOnError / SCHNITT_MELDUNG_SchnittstelleOnError | True | Basis/API | sendmail=1 bei Result 1 oder2, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S005 | MAIL_SCHNITTSTELLETO / MAIL_SchnittstelleTo | leer | Ersatz bei leerem MAILTO; Semikolonliste | BASE:MAIL, BASE:SET | |
| BASE-S006 | MAIL_SMTP_SERVER / MAIL_SMTPServer | leer | SMTP | Server für direkten Versand | BASE:MAIL, BASE:SET |
| BASE-S007 | MAIL_USER / MAIL_User | leer | SMTP | Nichtleer setzt NetworkCredential und überschreibt Defaultcredentials | BASE:MAIL, BASE:SET |
| BASE-S008 | MAIL_PASS / MAIL_Pass | leer; verschlüsselte Einstellung | SMTP | Passwort für explizite Credentials; kein Geheimnis dokumentiert | BASE:MAIL, BASE:SET |
| BASE-S009 | MAIL_USEDEFAULTCREDENTIALS / MAIL_UseDefaultCredentials | False | SMTP | SmtpClient.UseDefaultCredentials; ggf. durch MAIL_USER überschrieben | BASE:MAIL, BASE:SET |
| BASE-S010 | MAIL_SSL / MAIL_SSL | True | SMTP | SmtpClient.EnableSsl | BASE:MAIL, BASE:SET |
| BASE-S011 | MAIL_TESTADRESSE / MAIL_TestAdresse | nichtleere Testadresse im Quellcode (Wert bewusst nicht kopiert) | SMTP | Nichtleer ersetzt tatsächlichen To-Empfänger, auch wenn MAILTO gesetzt | BASE:MAIL, BASE:SET |
| BASE-S012 | MAIL_FROM / MAIL_From | leer | SMTP | Absenderadresse | BASE:MAIL, BASE:SET |
| BASE-S013 | MAIL_FROM_NAME / MAIL_FromName | leer | SMTP | Absendername | BASE:MAIL, BASE:SET |
| BASE-S014 | GLOBAL_LOGLEVEL / GLOBAL_LOGLEVEL | 50 | Logging | Persistenz bei InfoLevel>=Schwelle; Start/Erfolg51, ImportError102 | BASE:INIT, BASE:LOG, BASE:SET |
| BASE-S015 | GLOBAL_LOGLEVELEVLOG / GLOBAL_LOGLEVELEVENTLOG | 0 | Logging | Eventlog bei Level>Schwelle, Schwelle>0 und Level<200 | BASE:INIT, BASE:LOG, BASE:SET |
Datenbeziehungen
DB-Rolle Anmeldung; Logging über cInfoTools-Verbindung. Keine Geheimnisse/Livewerte. Indizes verknüpfen jede Mitglieds-ID mit diesen Beziehungen, auch wenn die Details nur einmal stehen.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| BASE-D001 | Dokumente.oFilename | INSERT | MAIL_BODY | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D002 | Dokumente.oFilesize | INSERT | Byteanzahl Body | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D003 | Dokumente.Daten | INSERT | cFn.StringToByteArray(MailBody) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D004 | Dokumente.UserID | INSERT | dbo.fnUserId() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D005 | Dokumente.ts | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D006 | Outbox.mTo | INSERT | MAILTO oder MAIL_SCHNITTSTELLETO; je Semikolonadresse | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D007 | Outbox.mCc | INSERT | leer | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D008 | Outbox.mFrom | INSERT | leer | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D009 | Outbox.mSubject | INSERT | Statusabhängiger Betreff | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D010 | Outbox.mBodyID | INSERT | ID des gespeicherten Bodys | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D011 | Outbox.mBodyHtml | INSERT | False | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D012 | Outbox.mDelayUntil | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D013 | Outbox.mStatus | INSERT | 1 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D014 | Outbox.mSize | INSERT | Bodyzeichenanzahl (ohne Anhänge) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D015 | Outbox.refArt | INSERT | 0 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D016 | Outbox.RefID | INSERT | 0 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D017 | Outbox.MailArt | INSERT | 5 (SchnittstellenMeldung) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D018 | Outbox.UserID | INSERT | fnUserId() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D019 | Outbox.ts | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D020 | Outbox.ID | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D021 | Outbox.mFrom | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D022 | Outbox.mTo | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D023 | Outbox.mCc | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D024 | Outbox.mBodyID | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D025 | Outbox.mSubject | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D026 | Outbox.mBodyHtml | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D027 | Outbox.mStatus | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D028 | Outbox.mDelayUntil | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D029 | Outbox.MailArt | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D030 | Outbox.mSent | UPDATE | Erfolg → getdate() | Versandpfad | BASE:MAIL |
| BASE-D031 | Outbox.mStatus | UPDATE | Erfolg → 0; Fehler → +1, bei Status 20 pauschal -1 ohne WHERE | Versandpfad | BASE:MAIL |
| BASE-D032 | Outbox.mDelayUntil | UPDATE | Fehler → Staffel 2/5/10/30 Minuten; ab Status 12 CASE ohne ELSE → NULL | Versandpfad | BASE:MAIL |
| BASE-D033 | Dokumente.ID | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D034 | Dokumente.oFilename | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D035 | Dokumente.Daten | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D036 | OutboxAttachment.OutBoxID | SELECT | Anhangszuordnung; diese Basisaufrufe erstellt selbst keine Anhänge | SendOutbox kann ältere Mailart-5-Einträge versenden | BASE:MAIL |
| BASE-D037 | OutboxAttachment.DokumenteID | SELECT | Anhangszuordnung; diese Basisaufrufe erstellt selbst keine Anhänge | SendOutbox kann ältere Mailart-5-Einträge versenden | BASE:MAIL |
| BASE-D038 | Pep3Log.UserID | INSERT | fnUserId() | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D039 | Pep3Log.Datum | INSERT | getdate() | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D040 | Pep3Log.Kurz | INSERT | Kurztext max255 | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D041 | Pep3Log.LogText | INSERT | Protokoll | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D042 | Pep3Log.Modul | INSERT | Modulname max50 | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D043 | Pep3Log.InfoLevel | INSERT | Start/Erfolg=51; Importfehler=102; weitere Mail-Meldungen | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D044 | tblUser.Name | SELECT | fnUserId: min(UserID) WHERE Name=RIGHT(SUSER_NAME(),25), sonst 0 | Mail-/Logpersistenz | BASE:USER |
| BASE-D045 | tblUser.UserID | SELECT | fnUserId: min(UserID) WHERE Name=RIGHT(SUSER_NAME(),25), sonst 0 | Mail-/Logpersistenz | BASE:USER |
Weitere Ausgänge und Grenzen
Logdateien unter ApplicationData/PEP/LogFiles; kontextabhängig Windows-Eventlog. Start/Erfolg InfoLevel 51, Importfehler 102; Schwellen beeinflussen Persistenz. SQL-fnUserId liest tblUser anhand RIGHT(SUSER_NAME(),25). API Send(MELDUNG) nutzt Anmeldungskontext und fest codierten Endpoint; dessen Serverimplementierung fehlt in dieser Quellenbasis (Q01).
Bekannte gemeinsame Befunde aus Pilot: Outbox-Retry bei Status 20 setzt mStatus=-1 ohne WHERE; Retry-CASE ab Status 12 ohne ELSE → NULL. Nicht korrigiert. Keine Kundendaten oder Zugangswerte übertragen.
Gemeinsame Nebenwirkungen CALCENTRY — ausdrücklich nur Teilabdeckung
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 |
Quellenverzeichnis
| Kürzel | Quelldatei am geprüften Commit |
|---|---|
| E | PEP4/ZW/Allgemein.vb |
| P | PEP4/cSchnittstellen/Programme/cProgramme.vb |
| PRJ | PEP4/cSchnittstellen/cSchnittstellen.vbproj |
| B | PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnittWebZerf2.vb |
| SQL | Sqlfiles/PEP4Functions/webzerf_ZeitbuchungAdd2.sql |
| A | Sqlfiles/PEP4Functions/ANTRAG_AntragBuchung.sql |
| DEL | Sqlfiles/PEP4Functions/Zeit_Loeschantrag.sql |
| USER, BASE:USER | Sqlfiles/PEP4Functions/fnUserId.sql |
| SET, BASE:SET, CALCENTRY:SET | PEP4/ZW/Einstellungen/cEinstellungenZw.vb |
| BASE:BASE | PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb |
| BASE:MAIL | PEP4/cKommunikation/cMail.vb |
| BASE:API | PEP4/cSchnittstellen/cApiCall.vb |
| BASE:LOG | PEP4/cTools/cInfoTools.vb |
| BASE:INIT, CALCENTRY:INIT | PEP4/ZW/Einstellungen/cSetting.vb |
| BASE:DOC | PEP4/cHilfsprogramme/cDocument.vb |
| 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 Codekorrektur.