====== Schnittstelle 1105: Aprocon-Kunden importieren ====== Diese technische Referenz beschreibt die Eingänge, Ausgänge und aktiven Codepfade von **Aprocon-Kunden importieren**. Sie ist keine Anleitung zur ungeprüften Ausführung. Stand: **02.10.2026**, Desktop-Commit ''f1d82a003b62f2658f06eaa943dc685ab219bdf3''. Statisch dokumentiert; Nutzerprüfung offen. Kein Import, Datenbank- oder HTTP-Test. Dokumentiert / statisch geprüft: **2026-10-02**. Statisch dokumentiert; Nutzerprüfung offen. Keine Schnittstelle ausgeführt. ===== Identität und Quellenstand ===== ''eProgramm.ImpKundenApc = 1105''. Aktive feste Registrierung → ''cSchnittKRApc.Import_Kunden''; Projekteinschluss bestätigt (E,P,PRJ). Active=True, InAutomatik=True und ManuellerAufruf=True (Registrierung bzw. Klassendefault); NurAufServer=True. Keine Aussage über eingerichtete Automatik oder produktive Nutzung. ===== Zweck, Parameter und Variante ===== Aprocon-Kunden/Adressen/Zahlungsbedingungen → KRKunden und fehlende Lookup-Typen/-Gruppen. Kein File, keine SP. Delegate identisch mit [[schnittstellen:1106|1106]]. Registrierung enthält INSERT (Info-Dialog); allein **Schlüsselpräsenz**, nicht sein Wert, erlaubt Neuanlage. IDENTITY_INSERT KRKundenTypen wird eingeschaltet, fehlende Typen/Auswertungsgruppen bekommen zunächst die Nummer als Bezeichnung. Danach Kundendaten UPDATE nach ID, bei @@rowcount0 INSERT. Im Anschluss werden vier Kriterienbezeichnungen aus Datenfelder/Feldwerte übernommen und über Settings.ZW.Speichern persistiert. Die Bezeichnungen sind **Ausgangseinstellungen**, nicht steuernde Eingänge. ===== Feldmapping ===== * ID: Kunden.Nummer (Matchschlüssel) * Bezeichnung: Left(Trim(Suchbegriff),50) * Skonto: Zahlungsbedingungen.Skonto, NULL→0 * KRKundenTyp: Kunden.KundenTyp * Plz: Adressen.PLZ max10 * LKZ: Adressen.LKZ max10 (DDL varchar3!) * Mail: Adressen.email max255 * MatchCode: Kunden.Matchcode max20 * KRAuswertungsGruppe: Kunden.Auswertungsgruppe * APCFiliale: Kunden.Filiale * Preiskategorie: Kunden.Preiskategorie * Angebot: Kunden.Sonderangebot * Liefersperre: Kunden.Liefersperre * Einstellung1: Kriterium1 * Einstellung2: Kriterium2 * Einstellung3: Kriterium3 * Einstellung4: Kriterium4 ===== Betrieb und Befunde ===== ODBC-Timeout=SQL_TIMEOUT; lokale SqlCommands Standard30s. Kein DELETE/Archiv, keine Transaktion; Lookup- und Kundenteilstand können bleiben. Fehler vor IDENTITY_INSERT OFF hinterlassen Sessionzustand bis Verbindungsende. U625/U821: PK/FKs Typ und Auswertungsgruppe; ID wird nicht umnummeriert, deshalb keine Schlüssel-Kaskaden durch diesen Import. **1105-F01:** LKZ wird auf10 Zeichen geschnitten, U781 definiert aber varchar(3); längere Werte können SQL-Fehler auslösen. LEFT-JOIN-Nullfelder werden außer Skonto nicht einheitlich abgesichert. Externes Schema und Prompt-/Nullvertrag Q13. Test: Insert-Schlüssel, fehlende Kunden, Lookupanlage, lange LKZ, Prompt-Änderungen. ===== Systemeinstellungen und gemeinsame Nebenwirkungen ===== Gemeinsames Profil: BASE (interne Referenz). ^ Beziehung ^ Schlüssel / Variable ^ Default ^ Einflussweg ^ Wirkung ^ Beleg ^ | 1105-S001 | ''SCHNITT_APC_DSN'' / ''SCHNITT_AproconDSN'' | leer | ODBC-Eingang | Verbindung zum externen Aprocon-DSN; kein DSN-Wert gespeichert | B,SET | | 1105-S002 | ''SQL_TIMEOUT'' / ''SQLTimeOut'' | 60 | Explizite CommandTimeout-Zuweisung | Timeout nur bei den im Betrieb benannten Commands; Standardcommands weiterhin 30 Sekunden | B,SET | | 1105-S003 | ''KR_KundeEinstellung1Bez'' / ''KR_KundeEinstellung1Bez'' | Einstellung1 | AUSGANG, nicht Auswahlfilter | Wird aus KunKriterium1Prompt in RAM und EinstellungenZw überschrieben | B,SET | | 1105-S004 | ''KR_KundeEinstellung2Bez'' / ''KR_KundeEinstellung2Bez'' | Einstellung2 | AUSGANG, nicht Auswahlfilter | Wird aus KunKriterium2Prompt in RAM und EinstellungenZw überschrieben | B,SET | | 1105-S005 | ''KR_KundeEinstellung3Bez'' / ''KR_KundeEinstellung3Bez'' | Einstellung3 | AUSGANG, nicht Auswahlfilter | Wird aus KunKriterium3Prompt in RAM und EinstellungenZw überschrieben | B,SET | | 1105-S006 | ''KR_KundeEinstellung4Bez'' / ''KR_KundeEinstellung4Bez'' | Einstellung4 | AUSGANG, nicht Auswahlfilter | Wird aus KunKriterium4Prompt in RAM und EinstellungenZw überschrieben | 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 ^ | 1105-D001 | ''Aprocon.Kunden.Nummer'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D002 | ''Aprocon.Kunden.Matchcode'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D003 | ''Aprocon.Kunden.Suchbegriff'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D004 | ''Aprocon.Kunden.KundenTyp'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D005 | ''Aprocon.Kunden.Adresse'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D006 | ''Aprocon.Kunden.Zahlungsbedingungen'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D007 | ''Aprocon.Kunden.Auswertungsgruppe'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D008 | ''Aprocon.Kunden.Kriterium1'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D009 | ''Aprocon.Kunden.Kriterium2'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D010 | ''Aprocon.Kunden.Kriterium3'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D011 | ''Aprocon.Kunden.Kriterium4'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D012 | ''Aprocon.Kunden.Liefersperre'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D013 | ''Aprocon.Kunden.Filiale'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D014 | ''Aprocon.Kunden.Preiskategorie'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D015 | ''Aprocon.Kunden.Sonderangebot'' | SELECT | Kundenquelle | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D016 | ''Aprocon.Adressen.Nummer'' | SELECT | INNER JOIN Kunden.Adresse=Nummer | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D017 | ''Aprocon.Adressen.PLZ'' | SELECT | INNER JOIN Kunden.Adresse=Nummer | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D018 | ''Aprocon.Adressen.LKZ'' | SELECT | INNER JOIN Kunden.Adresse=Nummer | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D019 | ''Aprocon.Adressen.email'' | SELECT | INNER JOIN Kunden.Adresse=Nummer | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D020 | ''Aprocon.Zahlungsbedingungen.Nummer'' | SELECT | LEFT JOIN; NULL-Skonto0 | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D021 | ''Aprocon.Zahlungsbedingungen.Skonto'' | SELECT | LEFT JOIN; NULL-Skonto0 | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D022 | ''KRKundenTypen.ID'' | SELECT | Lookup existiert? | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D023 | ''KRKundenTypen.ID'' | INSERT | Fehlender Typ: KundenTyp als ID/Bezeichnung; IDENTITY_INSERT | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D024 | ''KRKundenTypen.Bezeichnung'' | INSERT | Fehlender Typ: KundenTyp als ID/Bezeichnung; IDENTITY_INSERT | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D025 | ''KRAuswertungsGruppen.ID'' | SELECT | Lookup existiert? | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D026 | ''KRAuswertungsGruppen.ID'' | INSERT | Fehlende Gruppe: Nummer als ID/Bezeichnung | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D027 | ''KRAuswertungsGruppen.Bezeichnung'' | INSERT | Fehlende Gruppe: Nummer als ID/Bezeichnung | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D028 | ''KRKunden.ID'' | SELECT/INSERT | Kunden.Nummer (Matchschlüssel) | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D029 | ''KRKunden.Bezeichnung'' | INSERT/UPDATE | Left(Trim(Suchbegriff),50) | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D030 | ''KRKunden.Skonto'' | INSERT/UPDATE | Zahlungsbedingungen.Skonto, NULL→0 | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D031 | ''KRKunden.KRKundenTyp'' | INSERT/UPDATE | Kunden.KundenTyp | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D032 | ''KRKunden.Plz'' | INSERT/UPDATE | Adressen.PLZ max10 | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D033 | ''KRKunden.LKZ'' | INSERT/UPDATE | Adressen.LKZ max10 (DDL varchar3!) | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D034 | ''KRKunden.Mail'' | INSERT/UPDATE | Adressen.email max255 | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D035 | ''KRKunden.MatchCode'' | INSERT/UPDATE | Kunden.Matchcode max20 | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D036 | ''KRKunden.KRAuswertungsGruppe'' | INSERT/UPDATE | Kunden.Auswertungsgruppe | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D037 | ''KRKunden.APCFiliale'' | INSERT/UPDATE | Kunden.Filiale | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D038 | ''KRKunden.Preiskategorie'' | INSERT/UPDATE | Kunden.Preiskategorie | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D039 | ''KRKunden.Angebot'' | INSERT/UPDATE | Kunden.Sonderangebot | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D040 | ''KRKunden.Liefersperre'' | INSERT/UPDATE | Kunden.Liefersperre | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D041 | ''KRKunden.Einstellung1'' | INSERT/UPDATE | Kriterium1 | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D042 | ''KRKunden.Einstellung2'' | INSERT/UPDATE | Kriterium2 | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D043 | ''KRKunden.Einstellung3'' | INSERT/UPDATE | Kriterium3 | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D044 | ''KRKunden.Einstellung4'' | INSERT/UPDATE | Kriterium4 | UPDATE nach ID; INSERT falls @@rowcount0 | B | | 1105-D045 | ''Aprocon.Datenfelder.Feldname'' | SELECT | KunKriteriumXPrompt | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D046 | ''Aprocon.Datenfelder.Nummer'' | SELECT | KunKriteriumXPrompt | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D047 | ''Aprocon.Feldwerte.Datenfeld'' | SELECT | Join Datenfelder.Nummer; Prompt-Wert | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D048 | ''Aprocon.Feldwerte.Wert'' | SELECT | Join Datenfelder.Nummer; Prompt-Wert | Aktiver Pfad; kein Laufzeitnachweis | B | | 1105-D049 | ''EinstellungenZw.Einstellung'' | SELECT/INSERT | KR_KundeEinstellung1Bez bis4Bez | Speichern | SET | | 1105-D050 | ''EinstellungenZw.Wert'' | INSERT/UPDATE | Trim(Feldwerte.Wert) | Speichern | SET | | 1105-D051 | ''EinstellungenZw.ts'' | INSERT/UPDATE | getdate()/SHA-Validierung; Wert nicht als Geheimnis dokumentieren | Speichern | SET | | 1105-D052 | ''EinstellungenZw.Validierung'' | INSERT/UPDATE | getdate()/SHA-Validierung; Wert nicht als Geheimnis dokumentieren | Speichern | SET | | 1105-D053 | ''EinstellungenZw.tsCreate'' | INSERT | getdate() | Erstanlage | SET | ===== 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. [[schnittstellen:schnittstellen|Schnittstellenübersicht]] ===== Gemeinsame Rückmeldung ===== Die Basis kann abhängig von MAIL_SCHNITTSTELLEONSUCCESS/ONERROR, MAIL_SCHNITTSTELLETO und SMTP-Einstellungen Mail speichern/versenden (Dokumente/Outbox). SCHNITT_MELDUNG_SchnittstelleOnSuccess/OnError steuert sendmail der Rückmeldungs-API, nicht deren gesamten Aufruf. MANUELL unterdrückt Mail, SILENT beendet den Abschluss früh. GLOBAL_LOGLEVEL/GLOBAL_LOGLEVELEVLOG steuert Logging (Pep3Log/Eventlog). Keine Fachimporttransaktion und kein API-Erfolgsnachweis; Serverwirkung bleibt ungeprüft. ===== Quellen je Datei ===== Repository: seegerstefan/pep4desktop, master, obiger Commit. Je Datei ein Quellenlink; Kürzel in den Tabellen. Private Git-Quellen setzen Zugriffsrechte voraus. ^ 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 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/ZW/Einstellungen/cEinstellungenZw.vb|PEP4/ZW/Einstellungen/cEinstellungenZw.vb]] | | B | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/Schnittstellen/Kostenrechnung/cSchnittKRApc.vb|PEP4/cSchnittstellen/Programme/Schnittstellen/Kostenrechnung/cSchnittKRApc.vb]] | | BASE | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb|PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb]] | | U625 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0625.sql|Sqlfiles/PEP4Update/update_0625.sql]] | | U821 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0821.sql|Sqlfiles/PEP4Update/update_0821.sql]] | | U781 | [[https://github.com/seegerstefan/pep4desktop/blob/f1d82a003b62f2658f06eaa943dc685ab219bdf3/Sqlfiles/PEP4Update/update_0781.sql|Sqlfiles/PEP4Update/update_0781.sql]] | ===== Offene Abnahme ===== Externe Liefer-/API-Verträge und installierte Migrationen sind nicht bestätigt. Vor einem Test die beschriebenen Datenrisiken in einer isolierten Umgebung klären. Bei1214/1215 sind weitere Calc-/CalcPep-Feldwirkungen ausdrücklich noch nicht vollständig analysiert. [[schnittstellen:schnittstellen|Übersicht aller Schnittstellen]]