====== Schnittstelle 1071: UPM nach Filialabteilung/Kostenstelle importieren ====== Du ersetzt den gesamten UPM-Stagingbestand durch Produktivitätswerte aus einer Datei. Der Import berechnet keine Tagesumsätze. 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: FileImport, SetFile prüft bestehende Datei. UTF8-TextFieldParser (BOM-Erkennung), Semikolon, TrimWhiteSpace, Quotes, erste Zeile immer Header. Kein Archiv und keine Ausgabe; Werte bleiben in Import.dbo.UPM, **keine Tagesumsätze oder Vorgaben direkt berechnet**. ^ Position / Variante ^ Verwendung ^ | mindestens3 numerische Felder: 1 Filiale, 2 Abteilung, 3 UPM | FilialAbteilung = (10000 + Feld1) * 1000 + Feld2, UPM=Feld3; weitere Felder ungenutzt | | genau2 numerische Felder: 1 FilialAbteilung, 2 UPM | Schlüssel bereits fertig, UPM=Feld2 | Numerik via IsNumeric, danach VB-Konvertierung in bigint/float-Parameter. Keine Positivitäts-/Einheitenprüfung. Zeilen mit Fehler setzen BASE-Fehler, Import setzt mit Folgesätzen fort. ===== SQL-Kette, Schreibverhalten und Betrieb ===== Keine Fach-SP. Öffnet DB, **TRUNCATE gesamte Import.dbo.UPM vor Dateiöffnung**, anschließend INSERT(FilialAbteilung,Upm) je Zeile. Kein UPDATE/Upsert/Transaktion. Timeout fest3600. Schema0527: beide Felder NOT NULL, kein PK/Unique, Duplikate sind nicht durch diese DDL verhindert. Migration erstellt nur bei vorhandener Import-DB; verschluckter Migrationscatch beweist keine Live-Tabelle. cSchnittKstUpm_Basis erbt BASE, Start→SetFile→Import→Ende, Return Fehlerfrei durch Shared gereicht. Keine Folgeprozedur zum Verteilen oder Anwenden der UPM. Das unterscheidet Stagingimport von späterer Vorgabeberechnung. ===== Befunde und Tests ===== Ein Import ersetzt auch fremde/fehlende Kostenstellen, leere/header-only Datei leert alles. Lese-/Zeilenfehler können einen unvollständigen Ersatzbestand hinterlassen; keine Sicherung des alten Bestands. Wiederholung und Zwei-/Dreifeldformat, Duplikate sowie erwartete UPM-Einheit isoliert testen. Frühere Wiki-Kurzbeschreibung wird präzisiert: UPM ist Produktivität, kein importierter Tagesumsatz. ===== Systemeinstellungen und gemeinsame Nebenwirkungen ===== Gemeinsamer Rückmeldepfad: cSchnitt_Basis mit bedingtem Logging, Mail-/Outbox- und Meldungs-API-Aufruf. MANUELL/SILENT und Rückmeldeschalter beeinflussen diesen Pfad; serverseitige API-Wirkungen bleiben offen. Keine zusätzliche fachliche ZW-Einstellung im lokalen Importpfad gelesen. Timeoutwerte stehen im Betriebsabschnitt, nicht automatisch SQL_TIMEOUT zuordnen. 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 ^ | 1071-D001 | ''Import.dbo.UPM.— gesamte Tabelle'' | TRUNCATE | Vollständiger Ersatz vor Lesen | jede bestehende Eingangsdatei | B | | 1071-D002 | ''Import.dbo.UPM.FilialAbteilung'' | INSERT | fertiger Schlüssel oder (10000+Filiale)*1000+Abteilung | numerische Zeile | B,DDL | | 1071-D003 | ''Import.dbo.UPM.Upm'' | INSERT | Dateifeld2 oder3; keine Einheitenumrechnung | numerische Zeile | B,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]]