====== Schnittstelle 1214: Zalaris-Stammdaten KaDeWe ====== Dokumentiert / statisch geprüft: **2026-10-02**. Statisch dokumentiert einschließlich der nachgearbeiteten lokalen Folgeketten; Nutzerprüfung offen. Keine Schnittstelle ausgeführt. ===== Identität und Quellenstand ===== ''eProgramm.ZalarisImportStammdatenKaDeWe = 1214''. Aktive feste Registrierung → ''cSchnittZalarisImportStammdaten.AusführenStamm_KaDeWe''; Projekteinschluss bestätigt (E,P,PRJ). Active=True, InAutomatik=True und ManuellerAufruf=True (Registrierung bzw. Klassendefault); NurAufServer=False (Default bzw. Registrierung). Keine Aussage über eingerichtete Automatik oder produktive Nutzung. ''seegerstefan/pep4desktop'', master, Commit ''f1d82a003b62f2658f06eaa943dc685ab219bdf3''. Lokale .DS_Store-/cPep/PEP-Abweichungen außerhalb dieser Fachquellen bleiben unberührt; kein Remote-/Deploymentabgleich. ===== Zweck und Abdeckung ===== Zalaris-CSV-Sätze → Personal-/Organisations-/Zeitstämme und Nachberechnungsmarkierung. Anschließend allgemeine Zeitberechnung **und** PEP-Berechnung. Lokale aktive Version2-Import-/Transformkette und erreichbare Rechenmotoren sind statisch beschrieben; Azubi-Schemaergänzung bleibt als konkreter Code-/Schemawiderspruch unbelegt (Q14). Live-Trigger, Binärabweichungen und unbestätigte Migrationen sind keine belegten lokalen Wirkungen. PFAD=Folder, SetPfad/CreateImpPfad. Namen/IT-Dateivertrag, Sortierung, Fehler-/Archivverhalten im gemeinsamen Profil unten; keine Saldo-/Urlaubsanspruch- oder Version1-Pfade aus ähnlich benannten Methoden übernehmen. ===== SQL-Aufrufkette und Variante ===== SCHNITT_ZALARIS_PERSONAL_KADEWE → BASIS_KADEWE → RM_KADEWE → SCHNITT_ZALARIS_STAMM → PERSONALMAIN_KADEWE → SCHNITT_ZALARIS_PERSONALHOB → SCHNITT_ZALARIS_NACHBERECHNUNG → SCHNITT_ZALARIS_INAKTIV (→KontingentKorrektur) → SCHNITT_ZALARIS_INAKTIVE_KADEWE. Namen vorher separat SCHNITT_KADEWEZA_NAMEN. Resetgrenze für ITORGA/ITZahlung/ITZeit/ITProvision/ITZeitausweis **01.06.2023**, unabhängig vom Parser-Mindestdatum. Inserts haben nicht denselben festen Datumsfilter; Wiederholung kann daher Historien vor Resetgrenze duplizieren. Personen müssen für die meisten Stamminserts existieren (Namenlieferung). Keine übergreifende Transaktion. KDW erzeugt/ersetzt Provision, stellt StundenVK/FaktorVJ/FaktorPlan nach Person/von wieder her; erzeugt Zeitausweise, HOB-Zeitsätze und Abschlussregeln. INAKTIVE_KADEWE löscht **global** jeweils neueste Abteilung0-Orga in Schleife und schreibt Personen.Austritt aus verbleibendem neuestem bis. ===== Berechnungsnachfolge und Betriebsgrenze ===== Settings.Calc.Calc(CALCMinDate,Now.Date) wählt CALC_USESCHICHT<2→V1 (Statuslisten), sonstV2. **Beide** rufen Settings.Calc.CalcPep() ohne Personen-/Datumsargumente auf, auch wenn ImportStamm nur per Exit Sub beendet wurde. CalcPep ruft PepCalcNettoPerson(NULL,NULL,NULL), PepBerechnungLaden(-1,CALCMinDate,NULL,False), je Datensatz PepPlanLaden, CalcAZ.Berechnen und cCalcStatus.SpeichernPepClassic. Rechen-/Regel-/Persistenzkette siehe die zugeordneten vollständigen Motorprofile; Rückgabe von CalcPep wird ignoriert. SQLEx nutzt SQL_TIMEOUT, Parsercommands30s; CalcPep Laden0, PepPlanLaden600s; keine Importatomarität durch diese Timeouts. Archive können überschrieben werden **vor** erfolgreichem Transform. BASIS/RM/STAMM/INAKTIV und Main wirken teils global, nicht nur auf gelieferte Personen. ===== Befunde / Testvorbereitung ===== Namen-GebDat-Arraylängenbug, fortwirkende optionale AZPR und nicht behandelte eResult.Fehler siehe ZAL. U714 zeigt IT0001 ohne Azubi; keine passende Ergänzung gefunden, dennoch Parser/View/Main aktiv mit Azubi. Q14 verlangt anonymisierte installierte DDL/zugehörige Migration und synthetische Lieferdateien. Vor Test Überlappungen, Historien vor 01.06.2023, NULL-Ende der View, Archivkollisionen und globale Austritts-/HOB-Wirkung klären. Kein Test oder Codefix. Gemeinsames Profil: ZAL (interne Referenz). ===== Systemeinstellungen und gemeinsame Nebenwirkungen ===== Gemeinsames Profil: BASE (interne Referenz). ^ Beziehung ^ Schlüssel / Variable ^ Default ^ Einflussweg ^ Wirkung ^ Beleg ^ | 1214-S001 | ''SQL_TIMEOUT'' / ''SQLTimeOut'' | 60 | Explizite CommandTimeout-Zuweisung | Timeout nur bei den im Betrieb benannten Commands; Standardcommands weiterhin 30 Sekunden | B,SET | | 1214-S002 | ''SCHNITT_KaDeWeZa_DatMin'' / ''SCHNITT_KaDeWeZa_DatMin'' | 1.4.2023 | IT-Parser | bis>=Minimum und von ggf.gekürzt; **ändert feste SQL-Resetgrenze nicht** | B,SET | | 1214-S003 | ''SCHNITT_SAP_RESUMEONERROR'' / ''SCHNITT_SAP_RESUMEONERROR'' | True | IT0001/0007/Namen-Zeilenfehler | True→Fehlerstatus, vom Caller teilweise ignoriert; IT0050 immerStopp | B,SET | | 1214-S004 | ''CALC_MINDATE'' / ''CALCMinDate'' | 1.1.2011 | CalcPep/Calc | Berechnungsuntergrenze; Folgeeffekte im Motorprofil | CALC,SET | | 1214-S005 | ''CALC_USESCHICHT'' / ''CALC_UseSchicht'' | 0 | Calc-Dispatcher | <2 V1, sonstV2; weitere Motoreinstellungen Q11 | CALC,SET | Nur belegte Profilzuordnung; Fachdaten und Rückmeldung sind nicht atomar. Defaults sind keine Livewerte. ===== Feldbeziehungen ===== Unqualifizierte Fachobjekte in der Anmeldedatenbank; ''Import.dbo'' ausdrücklich Importdatenbank. Dateifelder stehen separat im Dateivertrag. ^ Beziehung ^ Tabelle.Feld ^ Operation ^ Datenfluss / Verwendung ^ Bedingung ^ Beleg ^ | 1214-D001 | ''Tage.Datum'' | SELECT | MAX(Datum) geladen, lokale @MaxDat danach ungenutzt | Main-SP | MAIN | | 1214-D002 | ''Personen.PersonID'' | SELECT | Person existiert? | Main-INSERTs | MAIN | | 1214-D003 | ''ITORGA.PersonenStammID'' | SELECT | Importpersonen/Zeitgrenze; später globale minvon/maxFiliale | Main | MAIN | | 1214-D004 | ''ITORGA.von'' | SELECT | Importpersonen/Zeitgrenze; später globale minvon/maxFiliale | Main | MAIN | | 1214-D005 | ''ITORGA.— Zeilen'' | DELETE | Importpersonen IT0001 mit von>=01.06.2023 | Feste Grenze, nicht Einstellung-DatMin | MAIN | | 1214-D006 | ''ITORGA.PersonenStammID'' | INSERT | IT0001.Person | IT0001-Person existiert; Einfügungen auch vor Resetgrenze möglich | MAIN | | 1214-D007 | ''ITORGA.von'' | INSERT | von | IT0001-Person existiert; Einfügungen auch vor Resetgrenze möglich | MAIN | | 1214-D008 | ''ITORGA.bis'' | INSERT | bis9999→NULL | IT0001-Person existiert; Einfügungen auch vor Resetgrenze möglich | MAIN | | 1214-D009 | ''ITORGA.Filiale'' | INSERT | 10000+Teilbereich | IT0001-Person existiert; Einfügungen auch vor Resetgrenze möglich | MAIN | | 1214-D010 | ''ITORGA.Abteilung'' | INSERT | Stat0→0, sonst Kostenstelle | IT0001-Person existiert; Einfügungen auch vor Resetgrenze möglich | MAIN | | 1214-D011 | ''ITORGA.Hierarchiestufe'' | INSERT | 1 | IT0001-Person existiert; Einfügungen auch vor Resetgrenze möglich | MAIN | | 1214-D012 | ''ITORGA.Kostenstelle'' | INSERT | 1 | IT0001-Person existiert; Einfügungen auch vor Resetgrenze möglich | MAIN | | 1214-D013 | ''ITORGA.Azubi'' | INSERT | IT0001.Azubi (Schemafrage) | IT0001-Person existiert; Einfügungen auch vor Resetgrenze möglich | MAIN | | 1214-D014 | ''ITZahlung.PersonenStammID'' | SELECT | Importpersonen/Resetgrenze | Main | MAIN | | 1214-D015 | ''ITZahlung.von'' | SELECT | Importpersonen/Resetgrenze | Main | MAIN | | 1214-D016 | ''ITZahlung.— Zeilen'' | DELETE | IT0001-Personen mit von>=01.06.2023 | Keine allgemeine Historienteilung | MAIN | | 1214-D017 | ''ITZahlung.PersonenStammID'' | INSERT | IT0001 Person/von/bis9999→NULL/Tarif | Existierende Person | MAIN | | 1214-D018 | ''ITZahlung.von'' | INSERT | IT0001 Person/von/bis9999→NULL/Tarif | Existierende Person | MAIN | | 1214-D019 | ''ITZahlung.bis'' | INSERT | IT0001 Person/von/bis9999→NULL/Tarif | Existierende Person | MAIN | | 1214-D020 | ''ITZahlung.TarifGruppe'' | INSERT | IT0001 Person/von/bis9999→NULL/Tarif | Existierende Person | MAIN | | 1214-D021 | ''ITProvision.PersonenStammID'' | SELECT | Globale Sicherung #ITProvision | GKK nur liest; KDW später rückspielt | MAIN | | 1214-D022 | ''ITProvision.von'' | SELECT | Globale Sicherung #ITProvision | GKK nur liest; KDW später rückspielt | MAIN | | 1214-D023 | ''ITProvision.StundenVK'' | SELECT | Globale Sicherung #ITProvision | GKK nur liest; KDW später rückspielt | MAIN | | 1214-D024 | ''ITProvision.FaktorVJ'' | SELECT | Globale Sicherung #ITProvision | GKK nur liest; KDW später rückspielt | MAIN | | 1214-D025 | ''ITProvision.FaktorPlan'' | SELECT | Globale Sicherung #ITProvision | GKK nur liest; KDW später rückspielt | MAIN | | 1214-D026 | ''ITProvision.— Zeilen'' | DELETE | IT0001-Personen von>=01.06.2023 | Main | MAIN | | 1214-D027 | ''ITProvision.PersonenStammID'' | INSERT | IT0050 Person/von/bis9999→NULL/Provision | Person existiert | MAIN | | 1214-D028 | ''ITProvision.von'' | INSERT | IT0050 Person/von/bis9999→NULL/Provision | Person existiert | MAIN | | 1214-D029 | ''ITProvision.bis'' | INSERT | IT0050 Person/von/bis9999→NULL/Provision | Person existiert | MAIN | | 1214-D030 | ''ITProvision.Kennzeichen'' | INSERT | IT0050 Person/von/bis9999→NULL/Provision | Person existiert | MAIN | | 1214-D031 | ''ITProvision.StundenVK'' | UPDATE | Backup nach Person/von | Wiederherstellung vorhandener Werte | MAIN | | 1214-D032 | ''ITProvision.FaktorVJ'' | UPDATE | Backup nach Person/von | Wiederherstellung vorhandener Werte | MAIN | | 1214-D033 | ''ITProvision.FaktorPlan'' | UPDATE | Backup nach Person/von | Wiederherstellung vorhandener Werte | MAIN | | 1214-D034 | ''Personen.Eintritt'' | SELECT/UPDATE | min(ITORGA.von) | **Alle** Personen mit NULL-Wert und Orga, nicht nur Import | MAIN | | 1214-D035 | ''Personen.StartPEP'' | SELECT/UPDATE | min(ITORGA.von) | **Alle** Personen mit NULL-Wert und Orga, nicht nur Import | MAIN | | 1214-D036 | ''Personen.StartZW'' | SELECT/UPDATE | 01.01.2022 | **Alle** Personen mit NULL-Wert und Orga, nicht nur Import | MAIN | | 1214-D037 | ''AuszahlungsGruppen.ID'' | SELECT/INSERT | 0/kein | Fehlt ID0 | MAIN | | 1214-D038 | ''AuszahlungsGruppen.Bezeichnung'' | SELECT/INSERT | 0/kein | Fehlt ID0 | MAIN | | 1214-D039 | ''ITZeit.PersonenStammID'' | SELECT | Personen aus View und Resetgrenze | Main | MAIN | | 1214-D040 | ''ITZeit.von'' | SELECT | Personen aus View und Resetgrenze | Main | MAIN | | 1214-D041 | ''ITZeit.— Zeilen'' | DELETE | View-Personen mit von>=01.06.2023 | GKK auch HOB-Personen, obwohl kein HOB-Insert | MAIN | | 1214-D042 | ''RM.ID'' | SELECT | KDW20000/GKK10000+Teilbereich+Z | Main Zeitzuordnung | MAIN | | 1214-D043 | ''RM.Bezeichnung'' | SELECT | KDW20000/GKK10000+Teilbereich+Z | Main Zeitzuordnung | MAIN | | 1214-D044 | ''RMAZPlan.ID'' | SELECT | minID LabelV; HOB feste2 | Main Zeitzuordnung | MAIN | | 1214-D045 | ''RMAZPlan.Bezeichnung'' | SELECT | minID LabelV; HOB feste2 | Main Zeitzuordnung | MAIN | | 1214-D046 | ''ITZeit.PersonenStammID'' | INSERT | View.Person | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D047 | ''ITZeit.von'' | INSERT | View.von | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D048 | ''ITZeit.bis'' | INSERT | View.bis (9999 bereitsNULL) | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D049 | ''ITZeit.RMID'' | INSERT | 20000+Teilbereich+'Z'; HOB V46/sonst47 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D050 | ''ITZeit.RMAZPlanID'' | INSERT | minID LabelV; HOB2 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D051 | ''ITZeit.Waz'' | INSERT | View.WAZ; HOB V→WAZ sonst MAZ*12/52.143 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D052 | ''ITZeit.MAZ'' | INSERT | View.MAZ | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D053 | ''ITZeit.Auszahlung'' | INSERT | 0; HOB9 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D054 | ''ITZeit.SollArt'' | INSERT | 12; HOBNULL | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D055 | ''ITZeit.GutschriftGanztagBuchung'' | INSERT | 13; HOBNULL | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D056 | ''ITZeit.GutschriftGanztagTagesart'' | INSERT | FTA→11, sonst12; HOBNULL | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D057 | ''ITZeit.Wegezeit'' | INSERT | WZ+UZ; HOB0 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D058 | ''ITZeit.RollSystem'' | INSERT | NULL | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D059 | ''ITZeit.JAZBerechnung'' | INSERT | VZTZ V→1, sonst2 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D060 | ''ITZeit.IsAktiv'' | INSERT | Stat>0→1, sonst0 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D061 | ''ITZeit.VorgabeArt'' | INSERT | 0 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D062 | ''ITZeit.GutschriftPauschal'' | INSERT | Nur HOB0 | Alle gültigen View-Personen; HOB Kostenstelle/10000=199 | MAIN | | 1214-D063 | ''ITPEP.PersonenStammID'' | SELECT | Person hat überhaupt einen PEP-Satz? | **Alle** Orga-Personen | MAIN | | 1214-D064 | ''ITORGA.Filiale'' | SELECT | maxFiliale für neue PEP-Zuordnung | **Alle** Orga-Personen | MAIN | | 1214-D065 | ''ITPEP.PersonenStammID'' | INSERT | Person/minOrgaVon/maxOrgaFiliale/1 | Alle Personen ohne ITPep, nicht nur Import | MAIN | | 1214-D066 | ''ITPEP.von'' | INSERT | Person/minOrgaVon/maxOrgaFiliale/1 | Alle Personen ohne ITPep, nicht nur Import | MAIN | | 1214-D067 | ''ITPEP.PepGruppe'' | INSERT | Person/minOrgaVon/maxOrgaFiliale/1 | Alle Personen ohne ITPep, nicht nur Import | MAIN | | 1214-D068 | ''ITPEP.Anteil'' | INSERT | Person/minOrgaVon/maxOrgaFiliale/1 | Alle Personen ohne ITPep, nicht nur Import | MAIN | | 1214-D069 | ''ITZeitausweis.— Zeilen'' | DELETE | View-Personen von>=01.06.2023 | Main | MAIN | | 1214-D070 | ''ITZeitausweis.PersonID'' | INSERT | IT0050 Person/von/bis **9999 bleibt9999**/Zeitausweis/Z/now/0 | Person existiert | MAIN | | 1214-D071 | ''ITZeitausweis.von'' | INSERT | IT0050 Person/von/bis **9999 bleibt9999**/Zeitausweis/Z/now/0 | Person existiert | MAIN | | 1214-D072 | ''ITZeitausweis.bis'' | INSERT | IT0050 Person/von/bis **9999 bleibt9999**/Zeitausweis/Z/now/0 | Person existiert | MAIN | | 1214-D073 | ''ITZeitausweis.Zeitausweis'' | INSERT | IT0050 Person/von/bis **9999 bleibt9999**/Zeitausweis/Z/now/0 | Person existiert | MAIN | | 1214-D074 | ''ITZeitausweis.Art'' | INSERT | IT0050 Person/von/bis **9999 bleibt9999**/Zeitausweis/Z/now/0 | Person existiert | MAIN | | 1214-D075 | ''ITZeitausweis.ts'' | INSERT | IT0050 Person/von/bis **9999 bleibt9999**/Zeitausweis/Z/now/0 | Person existiert | MAIN | | 1214-D076 | ''ITZeitausweis.UserID'' | INSERT | IT0050 Person/von/bis **9999 bleibt9999**/Zeitausweis/Z/now/0 | Person existiert | MAIN | | 1214-D077 | ''Personen.LastEAP'' | UPDATE | getdate() | View-Personen | MAIN | | 1214-D078 | ''ITORGA.Abteilung'' | SELECT | Abteilung/10000=199 | HOB-SP | HOB | | 1214-D079 | ''ITORGA.PersonenStammID'' | SELECT | Abteilung/10000=199 | HOB-SP | HOB | | 1214-D080 | ''Personen.PersonID'' | SELECT | HOB-Titel | HOB-SP | HOB | | 1214-D081 | ''Personen.Titel'' | SELECT | HOB-Titel | HOB-SP | HOB | | 1214-D082 | ''ITZeit.MonatsAbschlussTag'' | UPDATE | Tag0, TitelAT1→4/AT2→5/sonst6 | Alle Zeit-Sätze der HOB-Personen, kein Datumfilter | HOB | | 1214-D083 | ''ITZeit.MonatsAbschlussArt'' | UPDATE | Tag0, TitelAT1→4/AT2→5/sonst6 | Alle Zeit-Sätze der HOB-Personen, kein Datumfilter | HOB | | 1214-D084 | ''ITORGA.ID'' | SELECT | ROW_NUMBER neueste Orga je Person | InaktiveKDW | INK | | 1214-D085 | ''ITORGA.PersonenStammID'' | SELECT | ROW_NUMBER neueste Orga je Person | InaktiveKDW | INK | | 1214-D086 | ''ITORGA.Abteilung'' | SELECT | ROW_NUMBER neueste Orga je Person | InaktiveKDW | INK | | 1214-D087 | ''ITORGA.von'' | SELECT | ROW_NUMBER neueste Orga je Person | InaktiveKDW | INK | | 1214-D088 | ''ITORGA.bis'' | SELECT | ROW_NUMBER neueste Orga je Person | InaktiveKDW | INK | | 1214-D089 | ''ITORGA.— Zeilen'' | DELETE | Neueste Orga wenn Abteilung0; Schleife bis keine mehr | **Global**, nicht nur Importpersonen | INK | | 1214-D090 | ''Personen.Austritt'' | UPDATE | bis des verbleibenden neuesten Orga-Satzes | Globaler Join neueste Orga | INK | ===== Teststatus und Pflege ===== Keine Laufzeit-/Live-Schema-/Lieferformat-Abnahme. Fachbefunde und Grenzen siehe oben und Fragen (interne Referenz); kundenspezifische Trigger/Constraints, DLLs und Jobs bleiben Q02. Nutzerprüfung offen. ===== Gemeinsame Nebenwirkungen ZAL ===== Stand:2026-10-02, Commit ''f1d82a003b62f2658f06eaa943dc685ab219bdf3''. Nur aktive Version2 der IDs **1214/1215**. Beide Einzelbeschreibungen nennen BASE zusätzlich; ZAL enthält nur gemeinsame Fachbeziehungen. **Teilanalysen:** allgemeine Calc/CalcPep-Feldwirkung und konkrete Schemaergänzung Azubi bleiben offen (Q11/Q14). Keine Laufzeitausführung. ==== Dateivertrag und Ablauf ==== PFAD ist Folder. Root-Namenfiles ''*SAP_PEP4_NAMEN.csv'' unsortiert vor IT-Import. IT-Dateinamen enthalten SAP_PEP4_IT und numerisches Datumpräfix Zeichen1–8 sowie Uhrzeit10–15; Sortieren verschiebt nach TOIMP_Datum_Zeit (vorhandenes gleichnamiges Ziel wird gelöscht). TOIMP-Ordner alphabetisch. Satz braucht je genau eine it0001.csv/it0007.csv/it0050.csv; Dublette Stop. **Globales Staging-TRUNCATE vor Vollständigkeitsprüfung**, gemeinsame Tabellen nicht parallel betreiben. Semikolon/Quotes/Trim, **keine Kopfzeile**. Namen UTF8; IT Encoding.Default. Positionen ab1: ^ Datei ^ Positionen / Transformation ^ | NAMEN | 1 PersonID,2 Nachname,3 Vorname,4 Geburt YYYYMMDD,5 Tel,6 Mail | | IT0001 V2 | 1 Person,2 von,3 bis,4 Stat,5 Teilbereich,6 Kostenstelle (H/B/M→0),7 Tarif,8 Azubi | | IT0007 | 1 Person,2 von,3 bis,4 MAZ,5 WAZ,6 VZTZ,7 AZPR optional | | IT0050 V2 | 1 Person,2 von,3 bis,4 FT,5 WZ,6 Zeitausweis,7 UZ,8 Provision (leer→DBNull) | von/bis=CharToDate YYYYMMDD; nur bis>=SCHNITT_KaDeWeZa_DatMin, von ggf. auf Mindestdatum gekürzt. Keine feste validierte Dateifeldzahl. NAMEN-Bug: GebDat wird nur konvertiert, wenn **Arraylänge8** statt Datumsstringlänge8; normale sechs Felder→NULL, SP überschreibt vorhandenen Geburtstag damit. IT0007-AZPR wird bei fehlender7.Spaltе nicht pro Zeile zurückgesetzt: nach vorhandener AZPR kann Vorzeilenwert weiterleben. ==== SQL- und Fehlerpfad ==== Namen: SCHNITT_Namen leeren → Parser → SCHNITT_KADEWEZA_NAMEN (beide Varianten!) → IMP. IT: drei Stagings leeren → V2-Parser → **Dateien vor Transform-SP nach IMP verschieben** → kundenspezifischer Wrapper. MoveFile ersetzt gleichnamige Archivdateien; Archiv kein Erfolgsnachweis. Nichtleeres TOIMP-Verzeichnis→Stopp. IT0001/0007-Zeilenfehler: RESUMEONERROR=True→eResult.Fehler; dieser Zwischenstatus wird vom aufrufenden SelectCase **nicht behandelt**. Teilimport kann ohne Fehlerstatus weiterlaufen. IT0050-V2 setzt bei Zeilenfehler immer FehlerUndStopp. SQLEx setzt Fehlerstatus bei Exception, Rückgabe im Transform/Namenpfad ignoriert. Ein Exit Sub aus ImportStamm verhindert im Außenpfad Calc/CalcPep **nicht automatisch**. Wrapperfolge: BASIS_Kunde → RM_Kunde → STAMM → PERSONALMAIN_Kunde → (KDW HOB) → NACHBERECHNUNG → INAKTIV → (KDW INAKTIVE_KADEWE). INAKTIV ruft KontingentKorrektur. View SCHNITT_IT00XX schneidet die drei Gültigkeitsintervalle über Person; bis9999 wirdNULL. NACHBERECHNUNG vergleicht Datum<=View.bis, dadurch matcht **offenes NULL-Ende nicht**. BASIS legt fehlende Rundung/Labels an; KDW-Präfix20000+Teilbereich, GKK10000+Teilbereich. RM ergänzt ModelleZ/O und **alle** RM ohne Calc/Pause (nicht nur neue Importmodelle). STAMM legt Filialen10000+Teilbereich, Gruppen für alle Filialen und Abteilungen an. INAKTIV begrenzt/löscht ITPEP/Planung/UrlaubsAbtragung nach neuester offener Abteilung0; KontingentKorrektur reaggregiert **alle** Ansprüche. Personen.aktiv wird global neu bestimmt. SQLEx-Timeout=SQL_TIMEOUT, Parser-Insertcommands Standard30s. Keine übergreifende Transaktion; Dateisortierung/Archiv/SQL können auseinanderfallen. ==== Belegkürzel und Grenzen ==== NAM=SQL1, VIEW=SQL2, BASIS=SQL3/4, RM=SQL5/6, STAMM=SQL7, NACH=SQL8, INAKTIV=SQL9, KONT=SQL10; MAIN verweist auf die Variante in der Einzelbeschreibung. U714 erstellt IT0001 ohne Azubi, U770 ergänzt Tarif/Zeitausweis, U785 Provision, U852 AZPR. In der dekodierten Migrationensuche keine Ergänzung SCHNITT_IT0001.Azubi gefunden; aktive Parser/View/Main verlangen sie. Benötigt: installierte Definition/zugehörige Migration, synthetischer Liefervertrag (Q14), kein Datenbankzugriff automatisch freigegeben. ==== Feldbeziehungen ==== Unqualifizierte Objekte in der Anmeldedatenbank; #Tempobjekte dienen nur SQL-Interna. Rechenmotorwirkung **nicht vollständig** in diesen Zeilen; nicht als Ausschluss unbekannter Felder nutzen. ^ Beziehung ^ Tabelle.Feld ^ Operation ^ Datenfluss / Verwendung ^ Bedingung ^ Beleg ^ | ZAL-D001 | ''SCHNITT_Namen.— Zeilen'' | TRUNCATE | Gesamte Tabelle vor jeweiliger Datei/Satzgruppe | Namen je Datei, IT je Ordner | ZAL:B | | ZAL-D002 | ''SCHNITT_Namen.PersonID'' | INSERT | Dateiposition1; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D003 | ''SCHNITT_Namen.Nachname'' | INSERT | Dateiposition2; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D004 | ''SCHNITT_Namen.Vorname'' | INSERT | Dateiposition3; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D005 | ''SCHNITT_Namen.GebDat'' | INSERT | Dateiposition4; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D006 | ''SCHNITT_Namen.Tel'' | INSERT | Dateiposition5; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D007 | ''SCHNITT_Namen.Mail'' | INSERT | Dateiposition6; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D008 | ''SCHNITT_Namen.PersonID'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D009 | ''SCHNITT_Namen.Nachname'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D010 | ''SCHNITT_Namen.Vorname'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D011 | ''SCHNITT_Namen.GebDat'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D012 | ''SCHNITT_Namen.Tel'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D013 | ''SCHNITT_Namen.Mail'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D014 | ''SCHNITT_IT0001.— Zeilen'' | TRUNCATE | Gesamte Tabelle vor jeweiliger Datei/Satzgruppe | Namen je Datei, IT je Ordner | ZAL:B | | ZAL-D015 | ''SCHNITT_IT0001.Person'' | INSERT | Dateiposition1; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D016 | ''SCHNITT_IT0001.von'' | INSERT | Dateiposition2; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D017 | ''SCHNITT_IT0001.bis'' | INSERT | Dateiposition3; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D018 | ''SCHNITT_IT0001.Stat'' | INSERT | Dateiposition4; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D019 | ''SCHNITT_IT0001.Teilbereich'' | INSERT | Dateiposition5; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D020 | ''SCHNITT_IT0001.Kostenstelle'' | INSERT | Dateiposition6; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D021 | ''SCHNITT_IT0001.Tarif'' | INSERT | Dateiposition7; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D022 | ''SCHNITT_IT0001.Azubi'' | INSERT | Dateiposition8; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D023 | ''SCHNITT_IT0001.Person'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D024 | ''SCHNITT_IT0001.von'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D025 | ''SCHNITT_IT0001.bis'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D026 | ''SCHNITT_IT0001.Stat'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D027 | ''SCHNITT_IT0001.Teilbereich'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D028 | ''SCHNITT_IT0001.Kostenstelle'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D029 | ''SCHNITT_IT0001.Tarif'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D030 | ''SCHNITT_IT0001.Azubi'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D031 | ''SCHNITT_IT0007.— Zeilen'' | TRUNCATE | Gesamte Tabelle vor jeweiliger Datei/Satzgruppe | Namen je Datei, IT je Ordner | ZAL:B | | ZAL-D032 | ''SCHNITT_IT0007.Person'' | INSERT | Dateiposition1; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D033 | ''SCHNITT_IT0007.von'' | INSERT | Dateiposition2; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D034 | ''SCHNITT_IT0007.bis'' | INSERT | Dateiposition3; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D035 | ''SCHNITT_IT0007.Maz'' | INSERT | Dateiposition4; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D036 | ''SCHNITT_IT0007.Waz'' | INSERT | Dateiposition5; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D037 | ''SCHNITT_IT0007.VZTZ'' | INSERT | Dateiposition6; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D038 | ''SCHNITT_IT0007.AZPR'' | INSERT | Dateiposition7; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D039 | ''SCHNITT_IT0007.Person'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D040 | ''SCHNITT_IT0007.von'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D041 | ''SCHNITT_IT0007.bis'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D042 | ''SCHNITT_IT0007.Maz'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D043 | ''SCHNITT_IT0007.Waz'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D044 | ''SCHNITT_IT0007.VZTZ'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D045 | ''SCHNITT_IT0007.AZPR'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D046 | ''SCHNITT_IT0050.— Zeilen'' | TRUNCATE | Gesamte Tabelle vor jeweiliger Datei/Satzgruppe | Namen je Datei, IT je Ordner | ZAL:B | | ZAL-D047 | ''SCHNITT_IT0050.Person'' | INSERT | Dateiposition1; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D048 | ''SCHNITT_IT0050.von'' | INSERT | Dateiposition2; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D049 | ''SCHNITT_IT0050.bis'' | INSERT | Dateiposition3; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D050 | ''SCHNITT_IT0050.FT'' | INSERT | Dateiposition4; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D051 | ''SCHNITT_IT0050.WZ'' | INSERT | Dateiposition5; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D052 | ''SCHNITT_IT0050.Zeitausweis'' | INSERT | Dateiposition6; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D053 | ''SCHNITT_IT0050.UZ'' | INSERT | Dateiposition7; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D054 | ''SCHNITT_IT0050.Provision'' | INSERT | Dateiposition8; Umrechnung/Filter siehe Vertrag | Namen UTF8, IT Encoding.Default; Azubi-DDL-Lücke | ZAL:B | | ZAL-D055 | ''SCHNITT_IT0050.Person'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D056 | ''SCHNITT_IT0050.von'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D057 | ''SCHNITT_IT0050.bis'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D058 | ''SCHNITT_IT0050.FT'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D059 | ''SCHNITT_IT0050.WZ'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D060 | ''SCHNITT_IT0050.Zeitausweis'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D061 | ''SCHNITT_IT0050.UZ'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D062 | ''SCHNITT_IT0050.Provision'' | SELECT | Namenübernahme bzw. View/SQL-Folgekette | Transform erreicht; schemaabhängig | ZAL:NAM, ZAL:VIEW, ZAL:MAIN | | ZAL-D063 | ''Personen.PersonID'' | SELECT/INSERT | Neue IDs aus SCHNITT_Namen | Namen-SP, beide Varianten | ZAL:NAM | | ZAL-D064 | ''Personen.Nachname'' | INSERT/UPDATE | Nachname/Vorname/GebDat/Tel/Mail | Nach PersonID; GebDat bei sechs DateifeldernNULL | ZAL:NAM | | ZAL-D065 | ''Personen.Vorname'' | INSERT/UPDATE | Nachname/Vorname/GebDat/Tel/Mail | Nach PersonID; GebDat bei sechs DateifeldernNULL | ZAL:NAM | | ZAL-D066 | ''Personen.GebDat'' | INSERT/UPDATE | Nachname/Vorname/GebDat/Tel/Mail | Nach PersonID; GebDat bei sechs DateifeldernNULL | ZAL:NAM | | ZAL-D067 | ''Personen.Telefon1'' | INSERT/UPDATE | Nachname/Vorname/GebDat/Tel/Mail | Nach PersonID; GebDat bei sechs DateifeldernNULL | ZAL:NAM | | ZAL-D068 | ''Personen.Mail'' | INSERT/UPDATE | Nachname/Vorname/GebDat/Tel/Mail | Nach PersonID; GebDat bei sechs DateifeldernNULL | ZAL:NAM | | ZAL-D069 | ''SCHNITT_IT00XX.Person'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D070 | ''SCHNITT_IT00XX.von'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D071 | ''SCHNITT_IT00XX.bis'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D072 | ''SCHNITT_IT00XX.Stat'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D073 | ''SCHNITT_IT00XX.Teilbereich'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D074 | ''SCHNITT_IT00XX.Kostenstelle'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D075 | ''SCHNITT_IT00XX.Azubi'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D076 | ''SCHNITT_IT00XX.FT'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D077 | ''SCHNITT_IT00XX.WZ'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D078 | ''SCHNITT_IT00XX.UZ'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D079 | ''SCHNITT_IT00XX.Maz'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D080 | ''SCHNITT_IT00XX.Waz'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D081 | ''SCHNITT_IT00XX.VZTZ'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D082 | ''SCHNITT_IT00XX.Tarif'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D083 | ''SCHNITT_IT00XX.Zeitausweis'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D084 | ''SCHNITT_IT00XX.Provision'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D085 | ''SCHNITT_IT00XX.AZPR'' | VIEW/SELECT | Zeitintervall-Schnitt über Person, A/B Überlappung; Enddatum9999→NULL | View aus drei IT-Stagingtabellen | ZAL:VIEW | | ZAL-D086 | ''RMRundung.Bezeichnung'' | SELECT/INSERT | kein | Fehlende Labels; Präfix KDW20000+/GKK10000+Teilbereich | ZAL:BASIS | | ZAL-D087 | ''RMZuschlag.Bezeichnung'' | SELECT/INSERT | kein sowie Teilbereichpräfix_S1/_S2 | Fehlende Labels; Präfix KDW20000+/GKK10000+Teilbereich | ZAL:BASIS | | ZAL-D088 | ''RMRahmen.Bezeichnung'' | SELECT/INSERT | kein sowie Teilbereichpräfix_S1/_S2 | Fehlende Labels; Präfix KDW20000+/GKK10000+Teilbereich | ZAL:BASIS | | ZAL-D089 | ''RMPausengrenzen.Bezeichnung'' | SELECT/INSERT | Teilbereichpräfix | Fehlende Labels; Präfix KDW20000+/GKK10000+Teilbereich | ZAL:BASIS | | ZAL-D090 | ''Regionen.ID'' | SELECT/INSERT | 0/kein | Fehlender Basissatz | ZAL:BASIS | | ZAL-D091 | ''Regionen.Bezeichnung'' | SELECT/INSERT | 0/kein | Fehlender Basissatz | ZAL:BASIS | | ZAL-D092 | ''RM.Bezeichnung'' | SELECT/INSERT | Teilbereichpräfix+Z/O | Fehlendes Modell | ZAL:RM | | ZAL-D093 | ''RM.ID'' | SELECT | Modellzuordnung; **alle** RM ohne Calc/Pause | RM-Ergänzung | ZAL:RM | | ZAL-D094 | ''RM.Bezeichnung'' | SELECT | Modellzuordnung; **alle** RM ohne Calc/Pause | RM-Ergänzung | ZAL:RM | | ZAL-D095 | ''RMRahmen.ID'' | SELECT | Präfix_S1 | RM-Ergänzung | ZAL:RM | | ZAL-D096 | ''RMRahmen.Bezeichnung'' | SELECT | Präfix_S1 | RM-Ergänzung | ZAL:RM | | ZAL-D097 | ''RMZuschlag.ID'' | SELECT | ModellZ→Präfix_S1, sonstkein | RM-Ergänzung | ZAL:RM | | ZAL-D098 | ''RMZuschlag.Bezeichnung'' | SELECT | ModellZ→Präfix_S1, sonstkein | RM-Ergänzung | ZAL:RM | | ZAL-D099 | ''RMRundung.ID'' | SELECT | kein | RM-Ergänzung | ZAL:RM | | ZAL-D100 | ''RMRundung.Bezeichnung'' | SELECT | kein | RM-Ergänzung | ZAL:RM | | ZAL-D101 | ''RMPausengrenzen.ID'' | SELECT | Präfix | RM-Ergänzung | ZAL:RM | | ZAL-D102 | ''RMPausengrenzen.Bezeichnung'' | SELECT | Präfix | RM-Ergänzung | ZAL:RM | | ZAL-D103 | ''RMCalc.RMID'' | SELECT | Existiert irgendein Calc-Satz? | Alle RM | ZAL:RM | | ZAL-D104 | ''RMCalc.von'' | INSERT | 1.1.2000/RM-ID/Lookup-IDs/0/0/0 | RM ohne Calc, auch Nichtimportmodelle | ZAL:RM | | ZAL-D105 | ''RMCalc.RMID'' | INSERT | 1.1.2000/RM-ID/Lookup-IDs/0/0/0 | RM ohne Calc, auch Nichtimportmodelle | ZAL:RM | | ZAL-D106 | ''RMCalc.RMRahmenID'' | INSERT | 1.1.2000/RM-ID/Lookup-IDs/0/0/0 | RM ohne Calc, auch Nichtimportmodelle | ZAL:RM | | ZAL-D107 | ''RMCalc.RMZuschlagID'' | INSERT | 1.1.2000/RM-ID/Lookup-IDs/0/0/0 | RM ohne Calc, auch Nichtimportmodelle | ZAL:RM | | ZAL-D108 | ''RMCalc.RMRundung'' | INSERT | 1.1.2000/RM-ID/Lookup-IDs/0/0/0 | RM ohne Calc, auch Nichtimportmodelle | ZAL:RM | | ZAL-D109 | ''RMCalc.SollArt'' | INSERT | 1.1.2000/RM-ID/Lookup-IDs/0/0/0 | RM ohne Calc, auch Nichtimportmodelle | ZAL:RM | | ZAL-D110 | ''RMCalc.GutschriftArt'' | INSERT | 1.1.2000/RM-ID/Lookup-IDs/0/0/0 | RM ohne Calc, auch Nichtimportmodelle | ZAL:RM | | ZAL-D111 | ''RMCalc.GutschriftTagesart'' | INSERT | 1.1.2000/RM-ID/Lookup-IDs/0/0/0 | RM ohne Calc, auch Nichtimportmodelle | ZAL:RM | | ZAL-D112 | ''RMPause.RMID'' | SELECT | Existiert irgendein Pause-Satz? | Alle RM | ZAL:RM | | ZAL-D113 | ''RMPause.von'' | INSERT | 1.1.2000/RM-ID/1/Lookup-ID/1 | RM ohne Pause | ZAL:RM | | ZAL-D114 | ''RMPause.RMID'' | INSERT | 1.1.2000/RM-ID/1/Lookup-ID/1 | RM ohne Pause | ZAL:RM | | ZAL-D115 | ''RMPause.PausenArt'' | INSERT | 1.1.2000/RM-ID/1/Lookup-ID/1 | RM ohne Pause | ZAL:RM | | ZAL-D116 | ''RMPause.RMPausenGrenzenID'' | INSERT | 1.1.2000/RM-ID/1/Lookup-ID/1 | RM ohne Pause | ZAL:RM | | ZAL-D117 | ''RMPause.Basis'' | INSERT | 1.1.2000/RM-ID/1/Lookup-ID/1 | RM ohne Pause | ZAL:RM | | ZAL-D118 | ''Filialen.FilialID'' | SELECT/INSERT | 10000+Teilbereich als ID/Bezeichnungen, Mandant1/Region0/LandX; zusätzlich0 Import/Imp | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D119 | ''Filialen.Bezeichnung'' | SELECT/INSERT | 10000+Teilbereich als ID/Bezeichnungen, Mandant1/Region0/LandX; zusätzlich0 Import/Imp | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D120 | ''Filialen.KurzBez'' | SELECT/INSERT | 10000+Teilbereich als ID/Bezeichnungen, Mandant1/Region0/LandX; zusätzlich0 Import/Imp | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D121 | ''Filialen.Mandant'' | SELECT/INSERT | 10000+Teilbereich als ID/Bezeichnungen, Mandant1/Region0/LandX; zusätzlich0 Import/Imp | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D122 | ''Filialen.Region'' | SELECT/INSERT | 10000+Teilbereich als ID/Bezeichnungen, Mandant1/Region0/LandX; zusätzlich0 Import/Imp | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D123 | ''Filialen.Land'' | SELECT/INSERT | 10000+Teilbereich als ID/Bezeichnungen, Mandant1/Region0/LandX; zusätzlich0 Import/Imp | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D124 | ''PepGruppen.PEPGruppenID'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D125 | ''PepGruppen.PEPGruppenBez'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D126 | ''PepGruppen.PepGruppenBezKurz'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D127 | ''PepGruppen.Filiale'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D128 | ''PepGruppen.InUebersicht'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D129 | ''PepGruppen.InUmsatzPlanung'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D130 | ''PepGruppen.InFilialUmsatz'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D131 | ''PepGruppen.Etage'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D132 | ''PepGruppen.aktiv'' | SELECT/INSERT | Je **aller** Filialen GruppeID=FilialID, Import/Imp, Flags0/Etage-/aktiv0; zusätzlich0 | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D133 | ''Abteilungen.AbteilungID'' | SELECT/INSERT | Kostenstelle/Nummer; zusätzlich0 inaktiv | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D134 | ''Abteilungen.Bezeichnung'' | SELECT/INSERT | Kostenstelle/Nummer; zusätzlich0 inaktiv | Nur fehlende Basisstämme | ZAL:STAMM | | ZAL-D135 | ''ITORGA.PersonenStammID'' | SELECT | Neueste offene Orga Abteilung0→Austritt=von-1; später global neueste Orga für aktiv | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D136 | ''ITORGA.von'' | SELECT | Neueste offene Orga Abteilung0→Austritt=von-1; später global neueste Orga für aktiv | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D137 | ''ITORGA.bis'' | SELECT | Neueste offene Orga Abteilung0→Austritt=von-1; später global neueste Orga für aktiv | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D138 | ''ITORGA.Abteilung'' | SELECT | Neueste offene Orga Abteilung0→Austritt=von-1; später global neueste Orga für aktiv | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D139 | ''ITPEP.PersonenStammID'' | SELECT | Abgleich Austrittsliste | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D140 | ''ITPEP.von'' | SELECT | Abgleich Austrittsliste | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D141 | ''ITPEP.bis'' | SELECT | Abgleich Austrittsliste | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D142 | ''ITPEP.bis'' | UPDATE | Austritt oder eigener von, wenn Austritt=Austritt | ZAL:INAKTIV | | ZAL-D143 | ''ITPEP.— Zeilen'' | DELETE | von>Austritt | Inaktivpersonen | ZAL:INAKTIV | | ZAL-D144 | ''Pep2.Name'' | SELECT | Austrittszuordnung | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D145 | ''Pep2.Datum'' | SELECT | Austrittszuordnung | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D146 | ''Pep2.— Zeilen'' | DELETE | Datum>Austritt | Inaktivpersonen | ZAL:INAKTIV | | ZAL-D147 | ''PepBerechnet.PersonID'' | SELECT | Austrittszuordnung | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D148 | ''PepBerechnet.Datum'' | SELECT | Austrittszuordnung | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D149 | ''PepBerechnet.— Zeilen'' | DELETE | Datum>Austritt | Inaktivpersonen | ZAL:INAKTIV | | ZAL-D150 | ''UrlaubsAbtragung.Person'' | SELECT | Austrittszuordnung | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D151 | ''UrlaubsAbtragung.Datum'' | SELECT | Austrittszuordnung | Inaktiv-SP | ZAL:INAKTIV | | ZAL-D152 | ''UrlaubsAbtragung.— Zeilen'' | DELETE | Datum>Austritt | Inaktivpersonen | ZAL:INAKTIV | | ZAL-D153 | ''UrlaubsAbtragung.Person'' | SELECT | SUM(Abtragung) getrennt QuellenP/Z | KontingentKorrektur, **global** | ZAL:KONT | | ZAL-D154 | ''UrlaubsAbtragung.Art'' | SELECT | SUM(Abtragung) getrennt QuellenP/Z | KontingentKorrektur, **global** | ZAL:KONT | | ZAL-D155 | ''UrlaubsAbtragung.GültigVon'' | SELECT | SUM(Abtragung) getrennt QuellenP/Z | KontingentKorrektur, **global** | ZAL:KONT | | ZAL-D156 | ''UrlaubsAbtragung.Abtragung'' | SELECT | SUM(Abtragung) getrennt QuellenP/Z | KontingentKorrektur, **global** | ZAL:KONT | | ZAL-D157 | ''UrlaubsAbtragung.Quelle'' | SELECT | SUM(Abtragung) getrennt QuellenP/Z | KontingentKorrektur, **global** | ZAL:KONT | | ZAL-D158 | ''Urlaubsanspruch.Person'' | SELECT | Leftjoin Abtragung | Global | ZAL:KONT | | ZAL-D159 | ''Urlaubsanspruch.Art'' | SELECT | Leftjoin Abtragung | Global | ZAL:KONT | | ZAL-D160 | ''Urlaubsanspruch.GültigVon'' | SELECT | Leftjoin Abtragung | Global | ZAL:KONT | | ZAL-D161 | ''Urlaubsanspruch.AbtragungP'' | UPDATE | Summe oder0 | **Alle** Ansprüche, nicht nur Importpersonen | ZAL:KONT | | ZAL-D162 | ''Urlaubsanspruch.AbtragungZ'' | UPDATE | Summe oder0 | **Alle** Ansprüche, nicht nur Importpersonen | ZAL:KONT | | ZAL-D163 | ''ITORGA.Filiale'' | UPDATE | 0 | Austritts-Orga von=Austritt+1, Filiale<>10199 | ZAL:INAKTIV | | ZAL-D164 | ''Personen.aktiv'' | UPDATE | Neueste Orga-Abteilung0 und von=YEAR(getdate()-1) | Nachberechnung | ZAL:NACH | | ZAL-D166 | ''PepBerechnet.Datum'' | SELECT | Importintervall; gültige Orga/aktiveZeit/PEP; Jahr>=YEAR(getdate()-1) | Nachberechnung | ZAL:NACH | | ZAL-D167 | ''PepBerechnet.tsCalc'' | SELECT | Importintervall; gültige Orga/aktiveZeit/PEP; Jahr>=YEAR(getdate()-1) | Nachberechnung | ZAL:NACH | | ZAL-D168 | ''PepBerechnet.tsCalc'' | UPDATE | NULL | Nur bisher nichtNULL und gültiger Nachberechnungsbereich | ZAL:NACH | | ZAL-D169 | ''CStatus.PersonenStammID'' | SELECT | Importintervall und gültige Orga/aktiveZeit | Nachberechnung | ZAL:NACH | | ZAL-D170 | ''CStatus.Datum'' | SELECT | Importintervall und gültige Orga/aktiveZeit | Nachberechnung | ZAL:NACH | | ZAL-D171 | ''CStatus.CStatus'' | SELECT | Importintervall und gültige Orga/aktiveZeit | Nachberechnung | ZAL:NACH | | ZAL-D172 | ''CStatus.CStatus'' | UPDATE | 1 | CStatus!=1 im gültigen Importbereich; kein Jahrfilter | ZAL:NACH | | ZAL-D173 | ''ITORGA.PersonenStammID'' | SELECT | Gültigkeitsvoraussetzung | Nachberechnung | ZAL:NACH | | ZAL-D174 | ''ITORGA.von'' | SELECT | Gültigkeitsvoraussetzung | Nachberechnung | ZAL:NACH | | ZAL-D175 | ''ITORGA.bis2'' | SELECT | Gültigkeitsvoraussetzung | Nachberechnung | ZAL:NACH | | ZAL-D176 | ''ITZeit.PersonenStammID'' | SELECT | Gültigkeit/IsAktiv1 | Nachberechnung | ZAL:NACH | | ZAL-D177 | ''ITZeit.von'' | SELECT | Gültigkeit/IsAktiv1 | Nachberechnung | ZAL:NACH | | ZAL-D178 | ''ITZeit.bis2'' | SELECT | Gültigkeit/IsAktiv1 | Nachberechnung | ZAL:NACH | | ZAL-D179 | ''ITZeit.IsAktiv'' | SELECT | Gültigkeit/IsAktiv1 | Nachberechnung | ZAL:NACH | | ZAL-D180 | ''ITPEP.PersonenStammID'' | SELECT | Gültigkeit nur PepBerechnet-Zweig | Nachberechnung | ZAL:NACH | | ZAL-D181 | ''ITPEP.von'' | SELECT | Gültigkeit nur PepBerechnet-Zweig | Nachberechnung | ZAL:NACH | | ZAL-D182 | ''ITPEP.bis2'' | SELECT | Gültigkeit nur PepBerechnet-Zweig | Nachberechnung | ZAL:NACH | ===== Gemeinsame Nebenwirkungen BASE ===== Block17 ergänzt explizit5314/5315/5316/5317/5318/5319/5323/5324/5325/5326/5327/5328/6000/6006/6007/6008/6009. Alle nutzen BASE-Start/Ende;6001/6002/6003/6004/6005 verwenden LEGACY statt BASE. Fachverträge jeID, keine automatische gemeinsame Kunden-/Dateiwirkung. Stand: 2026-10-02 · Commit ''f1d82a003b62f2658f06eaa943dc685ab219bdf3''. Gilt ausdrücklich für Block 01: 1012, 1013, 1016, 1017, 1018, 1019, 1079, 1080, 1082, 2016 sowie Block 02: 2011, 2012, 2014, 2015, 2017, 2018, 2019, 2033, 2034, 2041 sowie Block 03: 1057, 1058, 1059, 1060, 2030, 2035, 2040, 2042, 2044 sowie Block 04: 2053, 2054, 1081, 2031, 2052 sowie Block 05: 2045, 2050 sowie Block 06: 3044, Block 08: 1010, 1011, 1015 und Block 10: 1047, 1051 sowie Block 12: 1064. 2024, 1020, 1030, 1048, 1049, 1050, 1052, 1053, 1054, 1061, 1062 und 1063 verwenden diese Basis nicht. 1078 enthält die gleichversionierten Beziehungen weiterhin in seiner Einzelbeschreibung; keine Doppelzählung für 1078. Kein Test-/Deploymentnachweis. Block 13 ergänzt ausdrücklich 1065,1066,1068,1069,1071,1072,1074: aktive Implementierungen bzw. Hilfsinstanzen erben BASE und rufen Start/Ende auf. Bei 1074 ist AusführungEnde nur bei unbehelligtem Abschluss erreichbar; Ressourcen-/DB-/SP-Fehler können es überspringen. 1067/1070/1073 verwenden direkte LEGACY-Meldungen. Block14 ergänzt ausdrücklich 1104,1105,1106,1108,1109,1150,1210,1214,1215,1222. Aktive Klassen/Instanzen erben BASE und starten/beenden den Lauf; ungefangene Fehler können das Ende überspringen. Nur gemeinsame Rückmeldung, keine Gesamttransaktion oder erfolgreiche Fachwirkung. 1203 hat keinen BASE-/LEGACY-Pfad. Block15 ergänzt ausdrücklich 2025/2026/2027/2049 mit erreichbarem Instanz-Start/Ende. Die aktiven Veraltet-Stubs 2028/2029/2032/2046/2047/2048 nutzen trotz Klassenvererbung nur den direkten LEGACY-Meldepfad; keine BASE-Ausführung. 2022 hat keinen Delegate. ==== Reichweite und Wiederverwendung ==== Block16 ergänzt ausdrücklich 2051/2055/3043/3512/3513/3520/3521/3522. WebZerf2 nutzt Multi-Start/Ende mit BASE je Teilstufe; IsMultiSchnitt reduziert Dialoge, nicht Mail-/API-Wirkungen. Nach Fehlern können weitere Teilstufen starten. 3011 ohne Delegate;3031/3032/3041/3042/3060/3500 nur LEGACY. Die ausdrücklich zugeordneten Programmregistrierungen mit ihren Implementierungen erben cSchnitt_Basis und rufen AusführungStart/AusführungEnde auf. Gemeinsam geprüfte Basisklasse/Registrierung; Mail-/Logging-/API-Details aus der dokumentierten Pilotprüfung desselben Commits wiederverwendet. Nicht automatisch auf jede zukünftige Schnittstelle übertragen: Erreichbarkeit, Overrides, Sonderpfade und Quellenstand jeweils prüfen. Start setzt Status/Protokoll zurück. Fehlerstatus steigt nur (0→1→2). Fehlerfrei() ist True nur bei Status 0. SILENT unterdrückt die Startanzeige und beendet AusführungEnde sofort. MANUELL wird über Schlüsselinzidenz erkannt, unterdrückt direkte Mail und API-sendmail, nicht die API-Meldung selbst. MAILTO leer → MAIL_SCHNITTSTELLETO. Bei nicht lokal gefangener Exception kann der Abschluss ausfallen (besonders 1079/1082); 2016 hat einen getrennten Rückgabe-/Fehlerstatusbefund; 2017 reicht ebenfalls den Instanzstatus nicht als Shared-Rückgabe durch. 1057–1060 besitzen untypisierte Shared-Einstiege ohne Return (Nothing) und übernehmen Modul nicht; Instanz-Abschluss separat betrachten. Die acht Exporte aus Block 02/03 verwenden cSchnittExport mit Start/Ende. Erfolg: OnSuccess; Fehlerstatus 1: OnSuccess ODER OnError; Stoppstatus 2: OnError. Mail nur nicht MANUELL und nicht SILENT; API wird sonst unabhängig vom sendmail-Schalter aufgerufen. Direkte Mail speichert Body/Outbox in eigener Transaktion (keine Fachimporttransaktion). SendOutbox(5) kann ältere fällige Schnittstellenmails versenden und deren Anhänge lesen; diese Fachpfade erzeugen selbst keine Anhänge. SMTP-Testadresse kann Zieladresse ersetzen. Mail-/API-Ergebnis ist kein verlässlicher Bestandteil von Fehlerfrei(). ==== 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 | Mail | 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. ===== Quellenverzeichnis ===== ^ Kürzel ^ Quelldatei am geprüften Commit ^ | E | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Allgemein.vb|PEP4/ZW/Allgemein.vb]] | | P | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/cProgramme.vb|PEP4/cSchnittstellen/Programme/cProgramme.vb]] | | PRJ | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/cSchnittstellen.vbproj|PEP4/cSchnittstellen/cSchnittstellen.vbproj]] | | SET, BASE:SET | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cEinstellungenZw.vb|PEP4/ZW/Einstellungen/cEinstellungenZw.vb]] | | B, ZAL:B | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/Schnittstellen/Zalaris/cSchnittZalarisImportStammdaten.vb|PEP4/cSchnittstellen/Programme/Schnittstellen/Zalaris/cSchnittZalarisImportStammdaten.vb]] | | WRAP | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_PERSONAL_KADEWE.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_PERSONAL_KADEWE.sql]] | | MAIN | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_PERSONALMAIN_KADEWE.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_PERSONALMAIN_KADEWE.sql]] | | CALC | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/cCalcZw.vb|PEP4/ZW/cCalcZw.vb]] | | U714, ZAL:U714 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0714.sql|Sqlfiles/PEP4Update/update_0714.sql]] | | HOB | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_PERSONALHOB.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_PERSONALHOB.sql]] | | INK | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_INAKTIVE_KADEWE.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_INAKTIVE_KADEWE.sql]] | | ZAL:SQL1 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_KADEWEZA_NAMEN.sql|Sqlfiles/PEP4Functions/SCHNITT_KADEWEZA_NAMEN.sql]] | | ZAL:SQL2 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_IT00XX.sql|Sqlfiles/PEP4Functions/SCHNITT_IT00XX.sql]] | | ZAL:SQL3 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_BASIS_KADEWE.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_BASIS_KADEWE.sql]] | | ZAL:SQL4 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_BASIS_GKK.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_BASIS_GKK.sql]] | | ZAL:SQL5 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_RM_KADEWE.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_RM_KADEWE.sql]] | | ZAL:SQL6 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_RM_GKK.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_RM_GKK.sql]] | | ZAL:SQL7 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_STAMM.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_STAMM.sql]] | | ZAL:SQL8 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_NACHBERECHNUNG.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_NACHBERECHNUNG.sql]] | | ZAL:SQL9 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_INAKTIV.sql|Sqlfiles/PEP4Functions/SCHNITT_ZALARIS_INAKTIV.sql]] | | ZAL:SQL10 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/KontingentKorrektur.sql|Sqlfiles/PEP4Functions/KontingentKorrektur.sql]] | | ZAL:U770 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0770.sql|Sqlfiles/PEP4Update/update_0770.sql]] | | ZAL:U785 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0785.sql|Sqlfiles/PEP4Update/update_0785.sql]] | | ZAL:U852 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0852.sql|Sqlfiles/PEP4Update/update_0852.sql]] | | BASE:BASE | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb|PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb]] | | BASE:MAIL | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cKommunikation/cMail.vb|PEP4/cKommunikation/cMail.vb]] | | BASE:API | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/cApiCall.vb|PEP4/cSchnittstellen/cApiCall.vb]] | | BASE:LOG | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cTools/cInfoTools.vb|PEP4/cTools/cInfoTools.vb]] | | BASE:INIT | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cSetting.vb|PEP4/ZW/Einstellungen/cSetting.vb]] | | BASE:USER | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Functions/fnUserId.sql|Sqlfiles/PEP4Functions/fnUserId.sql]] | | BASE:DOC | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cHilfsprogramme/cDocument.vb|PEP4/cHilfsprogramme/cDocument.vb]] | Siehe auch: [[schnittstellen:schnittstellen|Übersicht der Schnittstellen]]. Keine Ausführung oder Codekorrektur.