Inhaltsverzeichnis
Schnittstelle 1068: KaDeWe-CAR-Umsätze im Intervall berechnen
Du berechnest vorhandene CAR-Transaktionen für ein Datumsintervall. Verkäuferumsätze, Tageswerte und Stundenwerte werden dabei neu aufgebaut.
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 Datenvertrag
Art Programm, Gruppe Umsatz. Keine Eingangsdatei, kein Importarchiv. DATVON und DATBIS: Datum-Parameter, SetDatum mit Datumsmusterauswertung; beide müssen gültig sein. Keine Prüfung Von≤Bis. Datumshelfer siehe Datumsmuster (interne Referenz), Quellenverzeichnis BASE.
Öffnet Anmeldung-DB bereits vor Datumsprüfung und startet ausschließlich Calc_Umsatz_KaDeWeCar(@DatVon,@DatBis), SQL-Timeout0. Kein Import und kein Temp-Transfer Teil dieser Kennung. Shared-Einstieg reicht Instanz-Fehlerfrei() als Boolean durch; innere Verarbeiten ist untypisiert, aber hat Return.
SQL-Kette, Ausgänge und Betrieb
Die gemeinsame CAR-Berechnung ist nachfolgend mit ihren Feldern beschrieben.
Dieses Profil beschreibt vollständig die hier aufgerufene Fach-SP und ihre kanonischen Leser-/Schreiberbeziehungen: Import.dbo.Umsatz_KaDeWe_Car, ITZeitausweis, UmsKstGr, PepGruppen, Zusatzleistung → UmsatzVK, Umsätze und UmsätzeIstStunde. Globale Intervall-DELETEs von Verkäufer-/Stundenwerten, neun Tagesfelder zuerst0 für alle Gruppen, dann selektiv neu befüllt. Kein IstFixed-/SRC-Schutz. Zusatzleistung als Brutto, Netto/1.19.
Befunde und Tests
CAR-Tagesrückstellung ist breiter als Wiederbefüllung: Summengruppen werden auf0 gesetzt und anschließend nicht neu befüllt. IstKasseMenge/IstKasseKLSMenge hingegen bleiben ohne Treffer alt. Keine Transaktion zwischen DELETEs, Updates, Inserts und Rückmeldung. Vor Nutzerprüfung Intervall/Fremdgruppen, Retouren-Differenzrichtung, Mehrfachmapping und Zusatzleistungs-Schlüsselkollisionen isolieren. Keine automatische Folgekette 1069→1068 erforderlich: 1069 ruft diese SP selbst auf.
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 |
|---|
SQL-Vertrag und Ablauf
Calc_Umsatz_KaDeWeCar(@DatumVon datetime,@DatumBis datetime) (SQL) verarbeitet das geschlossene Intervall ohne Prüfung Von≤Bis und ohne Transaktion. Kein ZW-Einstellungsschlüssel innerhalb dieser SP. BASE-Rückmeldungen stehen separat in den Einzelbeschreibungen.
1. UmsatzVK im Intervall vollständig löschen. #UmsatzTmp summiert CAR-Beträge/Mengen auf Buchungsperson (Originalverkäufer, sonst Verkäufer), Buchungstag (Originaldatum, sonst Datum), FilialWarengruppe. Filter: Originaldatum NULL oder datediff(day,Datum,Originaldatum)<15, Buchungstag im Intervall, Verkäufer nicht NULL, OwnBuy=1, Menge>0 oder OriginalVerkaeufernummer>0. Die Differenzrichtung kann ältere Retouren einschließen; kein absoluter 14-Tage-Abstand. ITZeitausweis zeitgültig und numerisch >0; UmsKstGr zeitgültig. Gewichtete INSERTs. Zusatzleistung zusätzlich als Verkäuferumsatz: Artikel=PEP-Gruppe, Menge ist Brutto, Netto gerundet /1.19, Stückmenge0.
2. Neun Tagesfelder von Umsätze für sämtliche Gruppen im Intervall auf0 setzen. Kein IstFixed-/Quellsystemfilter. #UmsatzTmp2 aggregiert nach Verkaufstag und FilialWarengruppe, #UmsatzTmp3 gewichtet nach gültiger Gruppenzuordnung. OwnBuy- und Gesamtbeträge getrennt, geklebt = Ersatzverkäufer>0; fremdgeklebt = tatsächlicher Verkäufer>0 ohne passenden Personjoin. UPDATE nur vorhandener Gruppen mit AusPepGruppenUmsatz=0. Zusatzleistungsbeträge werden auf diese Gruppen addiert.
3. UmsätzeIstStunde im ganzen Intervall löschen, #UmsatzTmp5 summiert OwnBuy nach Verkaufstag/Stunde/Warengruppe, gewichtete INSERTs nach UmsKstGr. Keine Zusatzleistungs-Stundenwerte. Temp-Tabellen werden wieder entfernt; ihre Felder sind die im Text benannten Aggregationsaliase, keine persistenten Schnittstellenausgänge.
Wichtige Asymmetrie: IstKasseMenge und IstKasseKLSMenge werden nur bei Treffern überschrieben, nicht bei der globalen Tagesrückstellung auf0 gesetzt. Summengruppen werden zurückgestellt, dann vom CAR-Tagesupdate ausgeschlossen. Keine Tageszeilen-Neuanlage. UmsatzVK-Zusatzzeilen können mit CAR-Schlüsseln kollidieren; vorhandene PKs sind beim Test zu berücksichtigen.
Feldbeziehungen
| Beziehung | Tabelle.Feld | Operation | Datenfluss / Verwendung | Bedingung | Beleg |
|---|
| CAR-D001 | Import.dbo.Umsatz_KaDeWe_Car.Datum | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D002 | Import.dbo.Umsatz_KaDeWe_Car.OriginalDatum | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D003 | Import.dbo.Umsatz_KaDeWe_Car.OriginalVerkaeufernummer | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D004 | Import.dbo.Umsatz_KaDeWe_Car.Verkaeufernummer | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D005 | Import.dbo.Umsatz_KaDeWe_Car.FilialWarengruppe | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D006 | Import.dbo.Umsatz_KaDeWe_Car.OwnBuy | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D007 | Import.dbo.Umsatz_KaDeWe_Car.Menge | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D008 | Import.dbo.Umsatz_KaDeWe_Car.VK_Preis_Netto | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D009 | Import.dbo.Umsatz_KaDeWe_Car.VK_Preis_Brutto | SELECT | Personen-/Tages-/Stundenaggregation; Detailfilter im Text | Zeitraum DATVON–DATBIS | SQL |
| CAR-D010 | Import.dbo.Umsatz_KaDeWe_Car.DatumZeit | SELECT | DATEPART(hour) für Stundenumsatz | Zeitraum DATVON–DATBIS | SQL |
| CAR-D011 | Import.dbo.Umsatz_KaDeWe_Car.Filiale | SELECT (berechnet) | FilialWarengruppe = Filiale * 1000000000000 + Warengruppe | Schema 0792 | DDL |
| CAR-D012 | Import.dbo.Umsatz_KaDeWe_Car.Warengruppe | SELECT (berechnet) | FilialWarengruppe = Filiale * 1000000000000 + Warengruppe | Schema 0792 | DDL |
| CAR-D013 | ITZeitausweis.PersonID | SELECT | Gültige Personzuordnung; Fremdverkauf über fehlenden Personjoin | Zeitraum DATVON–DATBIS | SQL |
| CAR-D014 | ITZeitausweis.Zeitausweis | SELECT | Gültige Personzuordnung; Fremdverkauf über fehlenden Personjoin | Zeitraum DATVON–DATBIS | SQL |
| CAR-D015 | ITZeitausweis.von | SELECT | Gültige Personzuordnung; Fremdverkauf über fehlenden Personjoin | Zeitraum DATVON–DATBIS | SQL |
| CAR-D016 | ITZeitausweis.bis2 | SELECT | Gültige Personzuordnung; Fremdverkauf über fehlenden Personjoin | Zeitraum DATVON–DATBIS | SQL |
| CAR-D017 | UmsKstGr.Kst | SELECT | Warengruppe auf PEP-Gruppe abbilden und Beträge/Mengen gewichten | Zeitraum DATVON–DATBIS | SQL |
| CAR-D018 | UmsKstGr.Gr | SELECT | Warengruppe auf PEP-Gruppe abbilden und Beträge/Mengen gewichten | Zeitraum DATVON–DATBIS | SQL |
| CAR-D019 | UmsKstGr.Prozent | SELECT | Warengruppe auf PEP-Gruppe abbilden und Beträge/Mengen gewichten | Zeitraum DATVON–DATBIS | SQL |
| CAR-D020 | UmsKstGr.von | SELECT | Warengruppe auf PEP-Gruppe abbilden und Beträge/Mengen gewichten | Zeitraum DATVON–DATBIS | SQL |
| CAR-D021 | UmsKstGr.bis2 | SELECT | Warengruppe auf PEP-Gruppe abbilden und Beträge/Mengen gewichten | Zeitraum DATVON–DATBIS | SQL |
| CAR-D022 | PepGruppen.PEPGruppenID | SELECT | Existenzjoin für Zusatzleistung; Gruppenfilter für Tagesupdate | Zeitraum DATVON–DATBIS | SQL |
| CAR-D023 | PepGruppen.AusPepGruppenUmsatz | SELECT | Existenzjoin für Zusatzleistung; Gruppenfilter für Tagesupdate | Zeitraum DATVON–DATBIS | SQL |
| CAR-D024 | Zusatzleistung.Datum | SELECT | Artikel ist PEP-GruppenID; Menge als Bruttobetrag, Netto = Brutto/1.19 | Zeitraum DATVON–DATBIS | SQL |
| CAR-D025 | Zusatzleistung.PersonID | SELECT | Artikel ist PEP-GruppenID; Menge als Bruttobetrag, Netto = Brutto/1.19 | Zeitraum DATVON–DATBIS | SQL |
| CAR-D026 | Zusatzleistung.Artikel | SELECT | Artikel ist PEP-GruppenID; Menge als Bruttobetrag, Netto = Brutto/1.19 | Zeitraum DATVON–DATBIS | SQL |
| CAR-D027 | Zusatzleistung.Menge | SELECT | Artikel ist PEP-GruppenID; Menge als Bruttobetrag, Netto = Brutto/1.19 | Zeitraum DATVON–DATBIS | SQL |
| CAR-D028 | UmsatzVK.— Zeilen | DELETE | Alle Personen/Gruppen im Intervall, kein Quellsystemfilter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D029 | UmsatzVK.Datum | INSERT | Buchungsdatum; Zusatzleistungsdatum | Zeitraum DATVON–DATBIS | SQL |
| CAR-D030 | UmsatzVK.PersonID | INSERT | ITZeitausweis.PersonID oder Zusatzleistung.PersonID | Zeitraum DATVON–DATBIS | SQL |
| CAR-D031 | UmsatzVK.Gruppe | INSERT | UmsKstGr.Gr oder Zusatzleistung.Artikel | Zeitraum DATVON–DATBIS | SQL |
| CAR-D032 | UmsatzVK.Menge | INSERT | gewichtete Stückmenge; Zusatzleistung 0 | Zeitraum DATVON–DATBIS | SQL |
| CAR-D033 | UmsatzVK.VKWert | INSERT | gewichtete Bruttosumme; Zusatzleistung.Menge | Zeitraum DATVON–DATBIS | SQL |
| CAR-D034 | UmsatzVK.VKWertNetto | INSERT | gewichtete Nettosumme; Zusatzleistung round(Menge/1.19,2) | Zeitraum DATVON–DATBIS | SQL |
| CAR-D035 | Umsätze.Datum | SELECT | Datumsbereich und Gruppenjoin für vorhandene Tageszeilen | Zeitraum DATVON–DATBIS | SQL |
| CAR-D036 | Umsätze.GruppenID | SELECT | Datumsbereich und Gruppenjoin für vorhandene Tageszeilen | Zeitraum DATVON–DATBIS | SQL |
| CAR-D037 | Umsätze.Ist | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D038 | Umsätze.IstKassenBon | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D039 | Umsätze.IstKassenBonNetto | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D040 | Umsätze.IstNetto | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D041 | Umsätze.IstKasse | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D042 | Umsätze.TeileIst | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D043 | Umsätze.IstKassenBericht | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D044 | Umsätze.IstKassenBerichtNetto | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D045 | Umsätze.IstNettoIntern | UPDATE | Zuerst 0 für ALLE vorhandenen Gruppen im Intervall; kein IstFixed/SRC-Filter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D046 | Umsätze.Ist | UPDATE | OwnBuy-Netto + Zusatz-Netto | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D047 | Umsätze.IstKassenBon | UPDATE | OwnBuy-Brutto + Zusatz-Brutto | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D048 | Umsätze.IstKassenBonNetto | UPDATE | OwnBuy-Netto + Zusatz-Netto | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D049 | Umsätze.IstNetto | UPDATE | OwnBuy-Netto + Zusatz-Netto | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D050 | Umsätze.IstKasse | UPDATE | geklebtes OwnBuy-Netto + Zusatz-Netto | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D051 | Umsätze.TeileIst | UPDATE | OwnBuy-Menge | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D052 | Umsätze.IstKasseMenge | UPDATE | geklebte OwnBuy-Menge (nicht vorgängig zurückgesetzt) | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D053 | Umsätze.IstKasseKLSMenge | UPDATE | fremdgeklebte OwnBuy-Menge (nicht vorgängig zurückgesetzt) | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D054 | Umsätze.IstKassenBericht | UPDATE | Gesamtbrutto + Zusatz-Brutto | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D055 | Umsätze.IstKassenBerichtNetto | UPDATE | Gesamtnetto + Zusatz-Netto | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D056 | Umsätze.IstNettoIntern | UPDATE | geklebtes Netto minus fremdgeklebtes Netto + Zusatz-Netto | Nur passende vorhandene Tageszeilen, AusPepGruppenUmsatz=0 | SQL |
| CAR-D057 | UmsätzeIstStunde.— Zeilen | DELETE | Alle Stunden/Gruppen im Intervall; kein Systemfilter | Zeitraum DATVON–DATBIS | SQL |
| CAR-D058 | UmsätzeIstStunde.Datum | INSERT | Verkaufstag, nicht OriginalDatum | Zeitraum DATVON–DATBIS | SQL |
| CAR-D059 | UmsätzeIstStunde.GruppenID | INSERT | UmsKstGr.Gr | Zeitraum DATVON–DATBIS | SQL |
| CAR-D060 | UmsätzeIstStunde.Stunde | INSERT | DATEPART(hour, DatumZeit) | Zeitraum DATVON–DATBIS | SQL |
| CAR-D061 | UmsätzeIstStunde.Umsatz | INSERT | SUM OwnBuy-Brutto * Prozent | Zeitraum DATVON–DATBIS | SQL |
| CAR-D062 | UmsätzeIstStunde.UmsatzNetto | INSERT | SUM OwnBuy-Netto * Prozent | Zeitraum DATVON–DATBIS | SQL |
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.