Inhaltsverzeichnis

Schnittstelle 1073: Gezahlte Provisionen importieren und Zeitberechnung anstoßen

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.ImpProvisionGezahlt = 1073. Aktive feste Registrierung → cSchnittProvisionGezahlt.Ausführen; Projekteinschluss bestätigt (E,P,PRJ). Active=True, InAutomatik=True und ManuellerAufruf=True (Registrierung bzw. Klassendefault), keine NurAufServer-Einschränkung gesetzt. 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, Parameter und Dateivertrag

PFAD: FileImport, fehlender Schlüssel oder fehlende Datei→False. IMP-Unterordner wird angelegt, Datei jedoch nicht dorthin verschoben. UTF8-StreamReader/BOM, einfache Split(';') ohne Quotehandling, kein Headerüberspringen, mindestens4 Felder (zusätzliche ignoriert): 1 Datum (kulturabhängig), 2 PersonID (Long), 3 Gruppe (Long), 4 Provision (Double). Textheader erzeugt Fehler. Zu kurze Zeilen still übersprungen.

Alle gültigen Datensätze im Speicher, eindeutige Datumsliste aus Feld1. Zeilenfehler schreiben Exceptiontext in Arbeitsordner LOG/yyyyMMdd_HHmmss_Import_Provision_Gezahlt.log und setzen bolFehler. SQL-Fehler verlassen den Importcatch des äußeren Ausführen, dann kein Folgerechnen.

SQL-Kette und direkter Schreibvertrag

Keine Fach-SP im Import selbst. Je in gültigen Datensätzen vorhandenem exaktem Datum DELETE sämtlicher ProvGezahlt-Personen und Gruppen; dann INSERT aller validierten Zeilen. Kein UPDATE, keine Transaktion. SQL-Command Default30. Schema0545: PK(PersonID,Gruppe,Datum), Provision float nullable. Duplikate können nach bereits gelöschtem Altbestand zu Teilimport führen. Import liefert Not bolFehler; äußere Success meldet diesen Status.

Zusätzlicher Berechnungspfad und Abdeckungsgrenze

Auch wenn Import False wegen Zeilenfehlern liefert, folgt Settings.Calc.Calc(Settings.ZW.CALCMinDate, Now.Date). cSetting erstellt cCalcZw. cCalcZw.Calc wählt über CALC_USESCHICHT (<2 V1, sonst V2) die allgemeine Zeitberechnung, nicht eine Provisions-SP. V1 ignoriert die übergebenen Von/Bis und verarbeitet offene Statuslisten; V2 nutzt sie für GetListCalc_V2, beginnt aber ebenfalls mit globaler Fehlerstammmarkierung. Kein belegter automatischer Aufruf PROV_CALC_KaDeWe_*.

Der vollständige lokale Zeitberechnungs-Folgegraph ist im zugeordneten CALCENTRY-Profil statisch aufgelöst: V1/V2 und Direktlauf, ReMo/CalcAZ, Arbeitszeiten, Tageswerte, Konten, Status, Kontingent und optionaler Periodenabschluss/Zusatzleistung. Q11 ist für diese Kette geschlossen.

Befunde und Tests

Tagesdelete ist für alle Personen/Gruppen, nicht nur gelieferte Schlüssel. Zeilenfehler können teilweisen Ersatz und anschließend trotzdem Neuberechnung bewirken. Berechnung fängt intern Exceptions; äußerer Success bestätigt nicht deren Erfolg. Datei-/Log-/DB-/Berechnungsoperationen nicht atomar. Vor Test Fachbedeutung des Datumstags, Duplikate, Teileingang und gewünschter allgemeiner Calc-Lauf klären.

Systemeinstellungen und gemeinsame Nebenwirkungen

Gemeinsames Profil: LEGACY (interne Referenz).

Beziehung Schlüssel / Variable Default Einflussweg Wirkung Beleg
1073-S001 CALC_MINDATE / CALCMinDate 1.1.2011 Ausführen → Settings.Calc.Calc Untergrenze des Folgerechnens; V1 verarbeitet Statuslisten B,SET,CALC
1073-S002 CALC_USESCHICHT / CALC_UseSchicht 0 cCalcZw.Calc V1/V2-Dispatcher, keine Importformatsteuerung CALC,SET
1073-S003 CALC_BLOCKSIZE / CALCBlockSize 500 CalcIO / GetListCalc_V2 Stapelgröße des Folgerechnens IO,CALC2,SET
1073-S004 CALC_SALDO_ABSCHLUSS / CALC_SALDO_ABSCHLUSS False Calc V1/V2 Optionaler Periodenabschluss; Folgekette noch nicht komplett indiziert CALC,CALC2,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
1073-D001 ProvGezahlt.— Zeilen DELETE Alle Personen/Gruppen für jedes valide exakte Dateidatum keine System-/Personbegrenzung B
1073-D002 ProvGezahlt.Datum INSERT Feld1 gültige Zeilen; PK aus Datum/PersonID/Gruppe B,DDL
1073-D003 ProvGezahlt.PersonID INSERT Feld2 gültige Zeilen; PK aus Datum/PersonID/Gruppe B,DDL
1073-D004 ProvGezahlt.Gruppe INSERT Feld3 gültige Zeilen; PK aus Datum/PersonID/Gruppe B,DDL
1073-D005 ProvGezahlt.Provision INSERT Feld4 gültige Zeilen; PK aus Datum/PersonID/Gruppe B,DDL
1073-D006 Arbeitszeiten.ID SELECT UpdateAz: Schlüssel/Nettozeit-/Buchungstagberechnung Folge-Calc; nicht komplette Motorabdeckung IO
1073-D007 Arbeitszeiten.Kennzeichen SELECT UpdateAz: Schlüssel/Nettozeit-/Buchungstagberechnung Folge-Calc; nicht komplette Motorabdeckung IO
1073-D008 Arbeitszeiten.Kommen SELECT UpdateAz: Schlüssel/Nettozeit-/Buchungstagberechnung Folge-Calc; nicht komplette Motorabdeckung IO
1073-D009 Arbeitszeiten.Gehen SELECT UpdateAz: Schlüssel/Nettozeit-/Buchungstagberechnung Folge-Calc; nicht komplette Motorabdeckung IO
1073-D010 Arbeitszeiten.P SELECT UpdateAz: Schlüssel/Nettozeit-/Buchungstagberechnung Folge-Calc; nicht komplette Motorabdeckung IO
1073-D011 Arbeitszeiten.Buchungstag SELECT UpdateAz: Schlüssel/Nettozeit-/Buchungstagberechnung Folge-Calc; nicht komplette Motorabdeckung IO
1073-D012 Arbeitszeiten.KommenCalc UPDATE UpdateAz: berechnete Zeiten/Netto, Fehlerreset teilweise NULL/0 Folge-Calc; detailreiche übrige Kette Q11 IO
1073-D013 Arbeitszeiten.GehenCalc UPDATE UpdateAz: berechnete Zeiten/Netto, Fehlerreset teilweise NULL/0 Folge-Calc; detailreiche übrige Kette Q11 IO
1073-D014 Arbeitszeiten.Netto1 UPDATE UpdateAz: berechnete Zeiten/Netto, Fehlerreset teilweise NULL/0 Folge-Calc; detailreiche übrige Kette Q11 IO
1073-D015 Arbeitszeiten.Netto2 UPDATE UpdateAz: berechnete Zeiten/Netto, Fehlerreset teilweise NULL/0 Folge-Calc; detailreiche übrige Kette Q11 IO
1073-D016 Arbeitszeiten.Buchungstag UPDATE UpdateAz: berechnete Zeiten/Netto, Fehlerreset teilweise NULL/0 Folge-Calc; detailreiche übrige Kette Q11 IO

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 LEGACY

Block17 ergänzt6001/6002/6003/6004/6005 ausschließlich für direkte Info-/Dialog-/Logmeldungen; keine BASE-Mail/API. Parameter, Auswahl, Return und Fachwirkung jeID.

Block16 ergänzt explizit3031/3032/3041/3042/3060/3500 für die direkten Info-/Logmeldungen. Keine BASE-Vererbung bzw. Mail-/API-Nebenwirkung; Fachdateien/SQL/Returns pro ID prüfen. Keine pauschale Übernahme alter Dateiverträge.

Stand 2026-10-02; statisch geprüft am Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Mitglieder ausschließlich durch expliziten Profilverweis: Block 07, IDs 2000, 2001, 2010, 2020, 3020, 3021, 3030, 3040, 3050, 3070.

Block 13: Profil für 1067,1070,1073 nur bezüglich direkter cInfoTools-Dialog-/Logmeldungen und ihrer zwei Einstellungen wiederverwendet. Deren Datei-/Rückgabe-/Timeout-/Folgeaufrufverträge stehen ausschließlich in den Einzelbeschreibungen; die nachfolgenden Block-07-PFAD-/Return-Aussagen sind keine pauschale Behauptung für diese drei neuen IDs.

Block14 nutzt LEGACY ausschließlich für direkte Info-/Logpfade von 1100,1101,1102,1103,1200,1207,1208,1209,1223. Keine pauschale Übernahme der nachfolgenden Block07-Datei-/Rückgabeverträge; konkrete Unterschiede stehen je ID. 1203 verwendet nur direkten MsgBox-Fehlerpfad und ist kein Mitglied.

Block15 ergänzt ausdrücklich 1224/1225/1226/1320/1360/1400/1401/2021/2023 sowie die Veraltet-Stubs 2028/2029/2032/2046/2047/2048. Nur direkte Info-/Logpfade; konkrete Datei-/Return-/Timeoutverträge stehen je ID. Die sechs Stubs erben als Klasse zwar BASE, instanziieren aber nichts und rufen deren Start/Ende nicht auf. 2022 hat keinen solchen Pfad.

Abgrenzung und Ablauf

Die belegten LEGACY-Einstiege rufen cSchnitt_Basis.Start/Ende nicht auf. Die ursprünglichen Block-07-Klassen erben auch nicht von der Basis; für spätere statische Stubs gilt dagegen nur die fehlende Start-/Ende-Ausführung. Deshalb keine BASE-Mail-/API-/Outboxbeziehungen übernehmen. MAILTO wird zwar von cProgramm angelegt, aber hier nicht ausgewertet; ebenso keine fachliche Auswertung von MANUELL oder SILENT. RunWithDialog setzt MANUELL. Dialogunterdrückung kommt aus Settings.Info.SupressDialogs (Clientkonstruktor False, Worker True), kein belegter ZW-Schlüssel.

Die folgenden Datei-/Return-Aussagen gelten für Block 07, nicht pauschal für spätere Profilmitglieder. PFAD ist FileImport, auch bei den Exporten 2001/3021: vorhandene Datei erforderlich, OpenFileDialog statt SaveFileDialog. Der lokale Registrywert PEP3/PFADESCHNITT/<ID> speichert den zuletzt verwendeten Ordner; dies ist keine serverseitige Systemeinstellung. Fehlender PFAD-Schlüssel ergibt False mit Fehlermeldung. Value.ToString bei Nothing liegt vor dem Fach-Try und kann ungefangen abbrechen. Datei-Existenzprüfung und Startmeldung liegen ebenfalls davor.

Meldungen: ShowProgrammStart/ShowProgrammEndeSuccessDialog mit Level 51, ShowProgrammEndeErrorDialog 102, ShowExceptionDialog 105 → ZeigeInfoEvent, ggf. Dialog, Log. Kein Nachweis über externe Event-Abonnentenwirkungen. Dialog kann unterdrückt sein, Logging bleibt separat. Die acht Ausführen-Funktionen außer 2010/3070 haben keinen abschließenden Return und liefern deshalb Boolean False, auch wenn Daten geändert wurden. 2020/3020 und die beiden Exporte haben zusätzlich im Fachhelfer keinen Return; dort wird bereits Success=False und ein Fehlerdialog gewählt. 2000/3030/3040/3050 können Erfolg melden und dennoch False liefern.

Einstellungen

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

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

Datenbeziehungen

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

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

Quellenverzeichnis

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