Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Schnittstelle 1073: Gezahlte Provisionen importieren und Zeitberechnung anstoßen
Du übernimmst gezahlte Provisionen und stößt anschließend die allgemeine Zeitberechnung an. Der direkte Import ist beschrieben; die vollständige Regelmotor-Feldkette bleibt offen.
Stand: 02.10.2026, statische Analyse von PEP4 Desktop, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Teilweise dokumentiert: Import vollständig, allgemeiner Calc-Folgepfad noch nicht vollständig indiziert (Q11); Nutzerprüfung offen. Kein Schnittstellenlauf, Live-Schema- oder API-Test. Lokale PEP-Änderungen außerhalb dieser Schnittstellen wurden nicht einbezogen.
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_*.
Die Eintritts-/Dispatcher-/IO-Quellen sind vorhanden. Belegt sind indirekte Arbeitszeiten-DELETE/INSERT und UPDATE über SaveAz/SaveAzSchicht/UpdateAz, Calc_SaveBz, Calc_SetStatus, BerechnetKonten und optionale Perioden-/Zusatzleistungsberechnung. Vollständige rekursive Feld-/Einstellungsanalyse des allgemeinen Regelmotors noch offen (Q11). Diese Teilanalyse nicht als fehlenden Source oder vollständige Rückindexabdeckung ausgeben. Bereits direkt geprüfte IO-Updates sind unten aufgenommen; weitere Leser-/Schreiber nicht als wirkungslos betrachten.
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
Direkte Dialog-/Logmeldungen über cInfoTools; keine belegte BASE-Mail-/API-Ausführung. GLOBAL_LOGLEVEL (Default50) und GLOBAL_LOGLEVELEVLOG (Default0) steuern die Protokollierung.
| 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 |
Quellen und weitere Schritte
Enum, aktive Registrierung, Projekteinschluss und die in der internen Einzelbeschreibung genannten VB-/SQL-Dateien wurden am Quellencommit geprüft. Konkrete fehlende Quellen und fachliche Fragen stehen oben; bei Tests benötigst du eine isolierte Umgebung und synthetische Dateien.