Inhaltsverzeichnis
2025 — Aprocon-Kostenträger aktualisieren
Dokumentation ins Wiki übernommen am 02.10.2026. Das ist keine Laufzeitabnahme.
Technische Referenz zum aktiven Programm eProgramm.ImpKRKostenTrägerODBC. Sie beschreibt Eingänge, tatsächliche Schreibwirkung und Grenzen am genannten Quellenstand. Erreichbarer Aufruf statisch dokumentiert, nicht zur Laufzeit abgenommen.
Wichtig: ⚠ Rabatt nicht geschrieben / Gruppen trotzdem angelegt. Prüfe vor einem späteren Test die beschriebenen Fälle.
Aufruf und Parameter
Delegate: cSchnittKRApc.Import_Kostenträger. Active=True, Automatik=true, ManuellerAufruf=true, NurAufServer=false. Registrierung/Defaults, keine bestätigten Jobs. Run prüft die Serverbindung nicht selbst.
Keine Fachparameter registriert.
MAILTO und der von RunWithDialog gesetzte MANUELL-Schlüssel sind Registrierung/Dialogzustand, keine ZW-Einstellung. Eine Auswertung durch die Basis ist nur bei ausdrücklich belegtem BASE-Pfad anzunehmen.
Ein-/Ausgänge und Variante
ODBC-Warengruppen/Artikel → lokale KRWarenGruppen und KRKostenTräger. Keine Datei, kein Datumsparameter und keine Fach-SP. Kein INSERT-Parameter registriert: fehlende Kostenträger werden nicht angelegt. Warengruppen werden trotzdem angelegt und aktualisiert.
Beide Kennungen verwenden denselben Einstieg. APCKT beschreibt feldgenau die Quelle, Warengruppen-Voranlage, Artikel-UPDATE/INSERT, Einheitenkonvertierung und nicht geschriebenen Rabatt. BASE beschreibt Meldungen/Mail/API, keine gemeinsame Fachtransaktion. Keine Artikel-/Gruppenlöschung, kein Zeitberechnungslauf.
Betrieb und Testgrenze
ODBC SQL_TIMEOUT(Default60), lokale SQL-CommandsDefault30s; Fehler stoppt den Rest nach ggf. bereits geschriebenen Gruppen/Artikeln. Return Fehlerfrei nach BASE-Abschluss, kein Beleg für erfolgreiche Kundenschema-/ODBC-Ausführung. Q13 externer Vertrag, Q02 Schema. Tests: fehlender Artikel im Update-only-Modus, fehlende WGR, NULL/Gewicht/Berechnungseinheit, unveränderter Rabatt, doppelte Quellnummer und systemübergreifende ID-Kollision. Keine Korrektur vorgenommen.
Direkte Einstellungen
Keine direkte fachliche ZW-Einstellung in diesem Einstiegsteil nachgewiesen; Einstellungen der belegten gemeinsamen Pfade folgen unten.
Direkte Feldbeziehungen
Keine separate direkte Fachbeziehung; tatsächliche Wirkung steht im Ablauf und gegebenenfalls in den ausdrücklich zugeordneten Profilen.
Basis-Rückmeldungen (BASE)
Start setzt Status/Protokoll zurück. Fehlerfrei ist nur bei Status0 wahr. SILENT überspringt den Abschluss. MANUELL unterdrückt direkte Mail und den API-sendmail-Schalter, nicht die API-Meldung. MAILTO fällt auf MAIL_SCHNITTSTELLETO zurück. Ungefangene Fehler können das Ende überspringen. Rückmeldung ist keine Fachtransaktion.
Mailversand kann frühere fällige Outbox-Mails und deren Anhänge verarbeiten. SMTP-Testadresse kann das Ziel ersetzen. Outbox-Retry bei Status20 setzt mStatus=-1 ohne WHERE; CASE ab Status12 kann mDelayUntil=NULL erzeugen. API-Serverquelle bleibt offen(Q01). Kein Codefix.
Einstellungen
| Beziehung | Schlüssel / Variable | Default | Einfluss | Wirkung | Beleg |
|---|---|---|---|---|---|
| BASE-S001 | MAIL_SCHNITTSTELLEONSUCCESS / MAIL_SchnittstelleOnSuccess | False | Basis | Direkte Mail bei Result 0 oder1, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S002 | MAIL_SCHNITTSTELLEONERROR / MAIL_SchnittstelleOnError | False | Basis | Direkte Mail bei Result 1 oder2, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S003 | SCHNITT_MELDUNG_SchnittstelleOnSuccess / SCHNITT_MELDUNG_SchnittstelleOnSuccess | False | Basis/API | sendmail=1 bei Result 0 oder1, nicht MANUELL/SILENT; API-Meldung sonst weiterhin sendmail=0 | BASE:BASE, BASE:SET |
| BASE-S004 | SCHNITT_MELDUNG_SchnittstelleOnError / SCHNITT_MELDUNG_SchnittstelleOnError | True | Basis/API | sendmail=1 bei Result 1 oder2, nicht MANUELL/SILENT | BASE:BASE, BASE:SET |
| BASE-S005 | MAIL_SCHNITTSTELLETO / MAIL_SchnittstelleTo | leer | Ersatz bei leerem MAILTO; Semikolonliste | BASE:MAIL, BASE:SET | |
| BASE-S006 | MAIL_SMTP_SERVER / MAIL_SMTPServer | leer | SMTP | Server für direkten Versand | BASE:MAIL, BASE:SET |
| BASE-S007 | MAIL_USER / MAIL_User | leer | SMTP | Nichtleer setzt NetworkCredential und überschreibt Defaultcredentials | BASE:MAIL, BASE:SET |
| BASE-S008 | MAIL_PASS / MAIL_Pass | leer; verschlüsselte Einstellung | SMTP | Passwort für explizite Credentials; kein Geheimnis dokumentiert | BASE:MAIL, BASE:SET |
| BASE-S009 | MAIL_USEDEFAULTCREDENTIALS / MAIL_UseDefaultCredentials | False | SMTP | SmtpClient.UseDefaultCredentials; ggf. durch MAIL_USER überschrieben | BASE:MAIL, BASE:SET |
| BASE-S010 | MAIL_SSL / MAIL_SSL | True | SMTP | SmtpClient.EnableSsl | BASE:MAIL, BASE:SET |
| BASE-S011 | MAIL_TESTADRESSE / MAIL_TestAdresse | nichtleere Testadresse im Quellcode (Wert bewusst nicht kopiert) | SMTP | Nichtleer ersetzt tatsächlichen To-Empfänger, auch wenn MAILTO gesetzt | BASE:MAIL, BASE:SET |
| BASE-S012 | MAIL_FROM / MAIL_From | leer | SMTP | Absenderadresse | BASE:MAIL, BASE:SET |
| BASE-S013 | MAIL_FROM_NAME / MAIL_FromName | leer | SMTP | Absendername | BASE:MAIL, BASE:SET |
| BASE-S014 | GLOBAL_LOGLEVEL / GLOBAL_LOGLEVEL | 50 | Logging | Persistenz bei InfoLevel>=Schwelle; Start/Erfolg51, ImportError102 | BASE:INIT, BASE:LOG, BASE:SET |
| BASE-S015 | GLOBAL_LOGLEVELEVLOG / GLOBAL_LOGLEVELEVENTLOG | 0 | Logging | Eventlog bei Level>Schwelle, Schwelle>0 und Level<200 | BASE:INIT, BASE:LOG, BASE:SET |
Datenbeziehungen
DB-Rolle Anmeldung; Logging über cInfoTools-Verbindung. Keine Geheimnisse/Livewerte. Indizes verknüpfen jede Mitglieds-ID mit diesen Beziehungen, auch wenn die Details nur einmal stehen.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| BASE-D001 | Dokumente.oFilename | INSERT | MAIL_BODY | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D002 | Dokumente.oFilesize | INSERT | Byteanzahl Body | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D003 | Dokumente.Daten | INSERT | cFn.StringToByteArray(MailBody) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D004 | Dokumente.UserID | INSERT | dbo.fnUserId() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D005 | Dokumente.ts | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D006 | Outbox.mTo | INSERT | MAILTO oder MAIL_SCHNITTSTELLETO; je Semikolonadresse | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D007 | Outbox.mCc | INSERT | leer | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D008 | Outbox.mFrom | INSERT | leer | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D009 | Outbox.mSubject | INSERT | Statusabhängiger Betreff | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D010 | Outbox.mBodyID | INSERT | ID des gespeicherten Bodys | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D011 | Outbox.mBodyHtml | INSERT | False | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D012 | Outbox.mDelayUntil | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D013 | Outbox.mStatus | INSERT | 1 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D014 | Outbox.mSize | INSERT | Bodyzeichenanzahl (ohne Anhänge) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D015 | Outbox.refArt | INSERT | 0 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D016 | Outbox.RefID | INSERT | 0 | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D017 | Outbox.MailArt | INSERT | 5 (SchnittstellenMeldung) | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D018 | Outbox.UserID | INSERT | fnUserId() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D019 | Outbox.ts | INSERT | getdate() | Direkte Rückmeldung aktiviert | BASE:MAIL |
| BASE-D020 | Outbox.ID | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D021 | Outbox.mFrom | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D022 | Outbox.mTo | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D023 | Outbox.mCc | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D024 | Outbox.mBodyID | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D025 | Outbox.mSubject | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D026 | Outbox.mBodyHtml | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D027 | Outbox.mStatus | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D028 | Outbox.mDelayUntil | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D029 | Outbox.MailArt | SELECT | SendOutbox(5): fällige Mails; auch frühere Outbox-Einträge derselben MailArt | Versandpfad | BASE:MAIL |
| BASE-D030 | Outbox.mSent | UPDATE | Erfolg → getdate() | Versandpfad | BASE:MAIL |
| BASE-D031 | Outbox.mStatus | UPDATE | Erfolg → 0; Fehler → +1, bei Status 20 pauschal -1 ohne WHERE | Versandpfad | BASE:MAIL |
| BASE-D032 | Outbox.mDelayUntil | UPDATE | Fehler → Staffel 2/5/10/30 Minuten; ab Status 12 CASE ohne ELSE → NULL | Versandpfad | BASE:MAIL |
| BASE-D033 | Dokumente.ID | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D034 | Dokumente.oFilename | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D035 | Dokumente.Daten | SELECT | Body/Anhänge laden | Versandpfad | BASE:MAIL, BASE:DOC |
| BASE-D036 | OutboxAttachment.OutBoxID | SELECT | Anhangszuordnung; diese Basisaufrufe erstellt selbst keine Anhänge | SendOutbox kann ältere Mailart-5-Einträge versenden | BASE:MAIL |
| BASE-D037 | OutboxAttachment.DokumenteID | SELECT | Anhangszuordnung; diese Basisaufrufe erstellt selbst keine Anhänge | SendOutbox kann ältere Mailart-5-Einträge versenden | BASE:MAIL |
| BASE-D038 | Pep3Log.UserID | INSERT | fnUserId() | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D039 | Pep3Log.Datum | INSERT | getdate() | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D040 | Pep3Log.Kurz | INSERT | Kurztext max255 | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D041 | Pep3Log.LogText | INSERT | Protokoll | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D042 | Pep3Log.Modul | INSERT | Modulname max50 | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D043 | Pep3Log.InfoLevel | INSERT | Start/Erfolg=51; Importfehler=102; weitere Mail-Meldungen | InfoLevel >= GLOBAL_LOGLEVEL, DB-Logging möglich | BASE:LOG |
| BASE-D044 | tblUser.Name | SELECT | fnUserId: min(UserID) WHERE Name=RIGHT(SUSER_NAME(),25), sonst 0 | Mail-/Logpersistenz | BASE:USER |
| BASE-D045 | tblUser.UserID | SELECT | fnUserId: min(UserID) WHERE Name=RIGHT(SUSER_NAME(),25), sonst 0 | Mail-/Logpersistenz | BASE:USER |
Weitere Ausgänge und Grenzen
Logdateien unter ApplicationData/PEP/LogFiles; kontextabhängig Windows-Eventlog. Start/Erfolg InfoLevel 51, Importfehler 102; Schwellen beeinflussen Persistenz. SQL-fnUserId liest tblUser anhand RIGHT(SUSER_NAME(),25). API Send(MELDUNG) nutzt Anmeldungskontext und fest codierten Endpoint; dessen Serverimplementierung fehlt in dieser Quellenbasis (Q01).
Bekannte gemeinsame Befunde aus Pilot: Outbox-Retry bei Status 20 setzt mStatus=-1 ohne WHERE; Retry-CASE ab Status 12 ohne ELSE → NULL. Nicht korrigiert. Keine Kundendaten oder Zugangswerte übertragen.
Gemeinsamer Datenpfad APCKT
Stand02.10.2026, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Explizite Mitglieder2025/2026, beide→cSchnittKRApc.Import_KostenTräger. Nur2026 registriert INSERT (Info); bloße Schlüsselanwesenheit, nicht dessen Wert, schaltet Artikelanlage ein. Kein Dateieingang, kein SP-Aufruf.
Ablauf und Befunde
BASE-Start→ODBC-Verbindungsprüfung→Warengruppen und Artikel vollständig puffern→lokale Gruppen-Upserts→Artikel-UPDATE bzw.INSERT→BASE-Ende/Fehlerfrei. Doppelte Nummern brechen Dictionary.Add bereits vor lokalen Fachschreibvorgängen ab; NULL-/Typkonvertierungen können ebenfalls abbrechen.
Alle Artikel-Warengruppen zuerst mit Bezeichnung'-' und Artikel-Auswertungsgruppe upserten. Danach vollständige Quell-Warengruppen mit echten Werten upserten. Auch2025 legt daher neue Gruppen an, obwohl es fehlende Kostenträger nicht anlegt. Nicht in der Quelle vorhandene Gruppen werden nicht gelöscht; betroffene Artikel-WGR ohne Quell-WGR bleiben mit Platzhalterbezeichnung. Kein UPDATE-Schutz für manuelle Gruppenwerte.
Artikel schreibt Bezeichnung(Trim/Left50),KRWarenGruppe,Skonto,Einheit,MatchCode,Leergut,KRAuswertungsGruppe. APCKT-F01: Waagenrabatt wird gelesen und @Rabatt gesetzt, aber das SQL verwendet diesen Parameter nicht; KRKostenTräger.Rabatt wird nicht aktualisiert. Nicht als Rabatt-Importer dokumentieren.
Berechnungseinheit wird im VB-Objekt alsLong gehalten, obwohl der KonstruktorDouble erhält. Nur gespeicherter Wert2→Einheit1, sonst Gewicht(NULL→0). MatchCode-Parametervarchar20 ohne expliziteVB-Kürzung, BezeichnungNVarChar50. Keine Datum-/Quellsystemfilter. U610 FK auf lokaleWarengruppe; U839 ergänzt beide Auswertungsgruppenfelder ohne weitere FK in dieser Migration.
ODBC-CommandsSQL_TIMEOUT, lokale FachcommandsStandard30s. Keine Transaktion, keine Lösch-/Archiv-/Berechnungskette. Ein Fehler stoppt den Rest, frühere lokale Änderungen bleiben; BASE-Rückmeldungen gesondert. Externer Artikel/WGR-VertragQ13, aktuellesSchemaQ02. Keine fachliche Bestätigung des Einheiten-/Rabattverhaltens.
Einstellungen
| Beziehung | Schlüssel / Variable | Default | Einflussweg | Wirkung | Beleg |
|---|---|---|---|---|---|
| APCKT-S001 | SCHNITT_APC_DSN / SCHNITT_AproconDSN | leer | CheckApcConnect/ApcConnectionString | ODBC-Datenquelle ohne dokumentierte Verbindungswerte | APCKT:B,APCKT:BASE,APCKT:SET |
| APCKT-S002 | SQL_TIMEOUT / SQLTimeOut | 60 | ODBC-Lesecommands | Quellabfragen verwenden Einstellung, lokale Fachcommands dagegen Default30s | APCKT:B,APCKT:SET |
Feldbeziehungen
Aprocon bezeichnet externe ODBC-Rolle, kein bestätigtes Schema; lokal Anmeldedatenbank.
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|---|---|---|---|---|
| APCKT-D001 | Aprocon.Warengruppen.Nummer | SELECT | Alle Warengruppen im Dictionary nach Nummer | ODBC erfolgreich, doppelte Nummer bricht ab | APCKT:B |
| APCKT-D002 | Aprocon.Warengruppen.Bezeichnung | SELECT | Alle Warengruppen im Dictionary nach Nummer | ODBC erfolgreich, doppelte Nummer bricht ab | APCKT:B |
| APCKT-D003 | Aprocon.Warengruppen.AuswertungsGruppe | SELECT | Alle Warengruppen im Dictionary nach Nummer | ODBC erfolgreich, doppelte Nummer bricht ab | APCKT:B |
| APCKT-D004 | Aprocon.Artikel.Nummer | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D005 | Aprocon.Artikel.Bezeichnung | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D006 | Aprocon.Artikel.Warengruppe | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D007 | Aprocon.Artikel.Skontierbar | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D008 | Aprocon.Artikel.Waagenrabatt | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D009 | Aprocon.Artikel.Berechnungseinheit | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D010 | Aprocon.Artikel.Gewicht | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D011 | Aprocon.Artikel.MatchCode | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D012 | Aprocon.Artikel.Leergut | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D013 | Aprocon.Artikel.Auswertungsgruppe | SELECT | Artikelnummer>0; GewichtNULL→0, Artikel nach Nummer eindeutig im VB-Dictionary | ODBC; Waagenrabatt wird nicht lokal geschrieben | APCKT:B |
| APCKT-D014 | KRWarenGruppen.ID | SELECT/INSERT | Artikel-WGR und anschließend alle Quell-WGR upserten | 2025 und2026, auch bei update-only Artikelmodus | APCKT:B |
| APCKT-D015 | KRWarenGruppen.Bezeichnung | INSERT/UPDATE | Erst '-' und Artikelgruppe, dann Trim(Bezeichnung)/Quellgruppe überschreibt | Jede Artikel-WGR; anschließend alle Quell-WGR | APCKT:B |
| APCKT-D016 | KRWarenGruppen.KRAuswertungsGruppe | INSERT/UPDATE | Erst '-' und Artikelgruppe, dann Trim(Bezeichnung)/Quellgruppe überschreibt | Jede Artikel-WGR; anschließend alle Quell-WGR | APCKT:B |
| APCKT-D017 | KRKostenTräger.ID | SELECT | UPDATE-Match auf Quellartikel.Nummer, ohne Systemfilter | 2025 und2026 | APCKT:B |
| APCKT-D018 | KRKostenTräger.ID | INSERT | Quellartikel.Nummer | Nur2026: INSERT-Schlüssel vorhanden und UPDATE rowcount0 | APCKT:B |
| APCKT-D019 | KRKostenTräger.KRWarenGruppe | UPDATE | Artikelwerte; BezeichnungTrim/Left50; Einheit=BERECH2→1, sonstGewicht | 2025 und2026 bestehende IDs | APCKT:B |
| APCKT-D020 | KRKostenTräger.Bezeichnung | UPDATE | Artikelwerte; BezeichnungTrim/Left50; Einheit=BERECH2→1, sonstGewicht | 2025 und2026 bestehende IDs | APCKT:B |
| APCKT-D021 | KRKostenTräger.Skonto | UPDATE | Artikelwerte; BezeichnungTrim/Left50; Einheit=BERECH2→1, sonstGewicht | 2025 und2026 bestehende IDs | APCKT:B |
| APCKT-D022 | KRKostenTräger.Einheit | UPDATE | Artikelwerte; BezeichnungTrim/Left50; Einheit=BERECH2→1, sonstGewicht | 2025 und2026 bestehende IDs | APCKT:B |
| APCKT-D023 | KRKostenTräger.MatchCode | UPDATE | Artikelwerte; BezeichnungTrim/Left50; Einheit=BERECH2→1, sonstGewicht | 2025 und2026 bestehende IDs | APCKT:B |
| APCKT-D024 | KRKostenTräger.Leergut | UPDATE | Artikelwerte; BezeichnungTrim/Left50; Einheit=BERECH2→1, sonstGewicht | 2025 und2026 bestehende IDs | APCKT:B |
| APCKT-D025 | KRKostenTräger.KRAuswertungsGruppe | UPDATE | Artikelwerte; BezeichnungTrim/Left50; Einheit=BERECH2→1, sonstGewicht | 2025 und2026 bestehende IDs | APCKT:B |
| APCKT-D026 | KRKostenTräger.KRWarenGruppe | INSERT | Gleiche Zuordnung; keine explizite Rabatt-Zuweisung im SQL | Nur2026 fehlende IDs | APCKT:B |
| APCKT-D027 | KRKostenTräger.Bezeichnung | INSERT | Gleiche Zuordnung; keine explizite Rabatt-Zuweisung im SQL | Nur2026 fehlende IDs | APCKT:B |
| APCKT-D028 | KRKostenTräger.Skonto | INSERT | Gleiche Zuordnung; keine explizite Rabatt-Zuweisung im SQL | Nur2026 fehlende IDs | APCKT:B |
| APCKT-D029 | KRKostenTräger.Einheit | INSERT | Gleiche Zuordnung; keine explizite Rabatt-Zuweisung im SQL | Nur2026 fehlende IDs | APCKT:B |
| APCKT-D030 | KRKostenTräger.MatchCode | INSERT | Gleiche Zuordnung; keine explizite Rabatt-Zuweisung im SQL | Nur2026 fehlende IDs | APCKT:B |
| APCKT-D031 | KRKostenTräger.Leergut | INSERT | Gleiche Zuordnung; keine explizite Rabatt-Zuweisung im SQL | Nur2026 fehlende IDs | APCKT:B |
| APCKT-D032 | KRKostenTräger.KRAuswertungsGruppe | INSERT | Gleiche Zuordnung; keine explizite Rabatt-Zuweisung im SQL | Nur2026 fehlende IDs | APCKT:B |
| APCKT-D033 | KRWarenGruppen.ID | CONSTRAINT | Lokaler FK aus KRKostenTräger.KRWarenGruppe; Gruppen vor Artikel angelegt | Artikel-INSERT/UPDATE | APCKT:U610 |
Quellen und Prüfstand
Geprüft am02.10.2026 gegen master, Commit f1d82a003b62f2658f06eaa943dc685ab219bdf3. Kein aktueller Installations-/Live-Schema-/DLL-/Jobabgleich. Aprocon bezeichnet die externe Datenbankrolle, keinen bestätigten Schemanamen. Defaults/Computed-Spalten sind gesonderte Schemawirkung. Q02:Installationsgrenze; Q11:offene Motoranalyse; Q13/Q15:Liefer-/Einheiten-/Ersatzverträge.
| Kürzel | Quelldatei am Commit |
|---|---|
| E | PEP4/ZW/Allgemein.vb |
| P | PEP4/cSchnittstellen/Programme/cProgramme.vb |
| PRJ | PEP4/cSchnittstellen/cSchnittstellen.vbproj |
| B, APCKT:B | PEP4/cSchnittstellen/Programme/Schnittstellen/Kostenrechnung/cSchnittKRApc.vb |
| BASE:BASE, APCKT:BASE | PEP4/cSchnittstellen/Programme/Schnittstellen/cSchnitt_Basis.vb |
| BASE:SET, APCKT:SET | PEP4/ZW/Einstellungen/cEinstellungenZw.vb |
| BASE:MAIL | PEP4/cKommunikation/cMail.vb |
| BASE:API | PEP4/cSchnittstellen/cApiCall.vb |
| BASE:LOG | PEP4/cTools/cInfoTools.vb |
| BASE:INIT | PEP4/ZW/Einstellungen/cSetting.vb |
| BASE:USER | Sqlfiles/PEP4Functions/fnUserId.sql |
| BASE:DOC | PEP4/cHilfsprogramme/cDocument.vb |
| APCKT:U610 | Sqlfiles/PEP4Update/update_0610.sql |
| APCKT:U839 | Sqlfiles/PEP4Update/update_0839.sql |
Siehe auch: Übersicht der Schnittstellen. Keine Ausführung oder Fehlerkorrektur.