====== Schnittstelle 1070: EASiNet-Kundenfrequenzen importieren ====== Du übernimmst Kundenfrequenzen je StoreID, Tür und Zeit. Je geliefertem StoreID-Tag ersetzt der Import alle vorhandenen Türen. Stand: **02.10.2026**, statische Analyse von PEP4 Desktop, Commit ''f1d82a003b62f2658f06eaa943dc685ab219bdf3''. **Statisch dokumentiert; 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: Folder. DirectoryInfo.GetFiles mit Systemeinstellung SCHNITT_EASINET_FILEPATTERN; **keine Sortierung**. Keine Treffer→False. Ordnerermittlung vor Import-Try, ungültiger Pfad kann ungefangen abbrechen. Modul der Start-/Endemeldung heißt abweichend cSchnittHiltesFrequenz. TextFieldParser ohne Encodingargument (UTF8-Standard/BOM), Komma, Quotes, TrimWhiteSpace. Kein explizites Headerüberspringen; StoreID muss numerisch sein, so wird gewöhnlicher Header ignoriert. Mindestens acht Felder: ^ Position ab1 ^ Inhalt ^ | 1 | StoreID als Long | | 2–3 | ungenutzt | | 4 | Datum, kulturabhängige DateTime-Konvertierung | | 5 | Location, Ziel Tuer auf15 Zeichen gekürzt | | 6 | Zeit hh:mm, Stunden Substring0/2, Minuten3/2 | | 7–8 | CustIn/CustOut zuerst **Int16**, obwohl DB float | ===== SQL-Kette und Schreibverhalten ===== Keine Fach-SP. Zuerst ganze Datei in Speicher laden. Dann je StoreID/Tag DELETE **sämtlicher Türen** in FilialeFrequenz für über Filialen.EASiNetID gemappte Filialen. INSERT aller Dateizeilen, Mapping kann0 oder mehrere Zielzeilen liefern. Keine UPDATEs, keine Transaktion; unbekannte StoreID ergibt still0 Inserts. Wiederholung neuer Identitys. Mehrere Dateien mit gleichem Tag ersetzen einander in unbestimmter Reihenfolge. Schema0426: ID Identity PK, Filiale FK, Datum NOT NULL, Tuer varchar15, KundenIn/Out float. SQL-Command Default30, kein SQL_TIMEOUT. Danach nach imported verschieben; vorhandenes gleichnamiges Archiv wird **nicht** gelöscht, MoveTo-Fehler liefert False obwohl Daten schon geschrieben sind. Importcatch meldet Fehler. ===== Befunde und Tests ===== Int16 kann bei großen/negativen Frequenzen überlaufen; alle Türen eines Tages gelöscht auch bei Teillieferung. Tagesformat/hh:mm, Grenzwert32767, Mapping0/mehrfach, Mehrdateireihenfolge und Archivkollision isoliert prüfen. Kein direkter Umsatz-/Stundentabellenaufruf. ===== 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 ^ | 1070-S001 | ''SCHNITT_EASINET_FILEPATTERN'' / ''SCHNITTEASiNetFilePattern'' | *.csv | DirectoryInfo.GetFiles | Dateiauswahl; Reihenfolge nicht festgelegt | B,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 ^ | 1070-D001 | ''Filialen.FilialID'' | SELECT | Ziel-FilialID über EASiNetID | Keine eindeutige Zuordnung erzwungen | B | | 1070-D002 | ''Filialen.EASiNetID'' | SELECT | StoreID Dateifeld1 | Mapping | B | | 1070-D003 | ''FilialeFrequenz.— Zeilen'' | DELETE | Alle Türen des gelieferten Tages für alle StoreID-gemappten Filialen | Vor allen Datei-INSERTs | B | | 1070-D004 | ''FilialeFrequenz.Filiale'' | INSERT | FilialID nach Mapping | alle validierten Dateizeilen | B | | 1070-D005 | ''FilialeFrequenz.Tuer'' | INSERT | Location links15 | alle validierten Dateizeilen | B | | 1070-D006 | ''FilialeFrequenz.Datum'' | INSERT | Datum + hh:mm | alle validierten Dateizeilen | B | | 1070-D007 | ''FilialeFrequenz.KundenIn'' | INSERT | CustIn (Int16→float) | alle validierten Dateizeilen | B | | 1070-D008 | ''FilialeFrequenz.KundenOut'' | INSERT | CustOut (Int16→float) | alle validierten Dateizeilen | B | | 1070-D009 | ''FilialeFrequenz.ID'' | INSERT (Identity) | DB erzeugt neue Identität | Schema0426 | DDL | ===== 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. [[schnittstellen:schnittstellen|Übersicht der Schnittstellen]]