OmniSeller:OmniSellerUpload ChangeTracking: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Admin (Diskussion | Beiträge) Korrekturlauf Teil 2: Markup-Reste, abgebrochene Saetze und Doppelungen bereinigt |
||
| (3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 20: | Zeile 20: | ||
! INI-Schlüssel !! Tabelle !! Beschreibung | ! INI-Schlüssel !! Tabelle !! Beschreibung | ||
|- | |- | ||
| | | <code>TrackPrices</code> || KHKPreislistenArtikel || Einzelpreise in Preislisten | ||
|- | |- | ||
| | | <code>TrackKHKPreislisten</code> || KHKPreislisten || Gültigkeitsänderung der Preisliste selbst | ||
|- | |- | ||
| | | <code>TrackPriceListValidity</code> || – (täglicher Check) || Preislisten die über Nacht gültig/ungültig wurden | ||
|- | |- | ||
| | | <code>TrackAttributes</code> || oHTKAttributeEntities || Artikelattribute | ||
|- | |- | ||
| | | <code>TrackKHKArtikel</code> || KHKArtikel || Stammdaten der Artikel | ||
|- | |- | ||
| | | <code>TrackKHKArtikelVarianten</code> || KHKArtikelVarianten || Artikelvarianten | ||
|- | |- | ||
| | | <code>TrackKHKArtikelLagerbewegungen</code> || KHKArtikelLagerbewegungen || Lagerbewegungen (für Bestandsänderungen) | ||
|- | |- | ||
| | | <code>TrackKHKArtikelStueckliste</code> || KHKArtikelStueckliste || Stücklisten | ||
|- | |- | ||
| | | <code>TrackHTKOmniAlternativeSKU</code> || HTKOmniAlternativeSKU || Alternative SKUs | ||
|- | |- | ||
| | | <code>TrackOHTKSyncData</code> || oHTKSyncData || Sync-Daten | ||
|- | |- | ||
| | | <code>TrackOHTKSyncDataClient</code> || oHTKSyncDataClient || Client-spezifische Sync-Daten | ||
|- | |||
| <code>TrackKHKRabattlistenArtikel</code> || KHKRabattlistenArtikel || Änderungen an Sage 100 Rabattlisten | |||
|} | |} | ||
| Zeile 47: | Zeile 49: | ||
=== TrackPrices (Einzelpreise) === | === TrackPrices (Einzelpreise) === | ||
Überwacht die Tabelle <code>KHKPreislistenArtikel</code>. Ein Upload wird ausgelöst wenn: | Überwacht die Tabelle <code>KHKPreislistenArtikel</code>. Ein Upload wird ausgelöst, wenn: | ||
* Ein Einzelpreis geändert wird | * Ein Einzelpreis geändert wird | ||
| Zeile 55: | Zeile 57: | ||
* <code>TRIU_HTKSyncdata__KHKPreislistenArtikel</code> (INSERT/UPDATE) | * <code>TRIU_HTKSyncdata__KHKPreislistenArtikel</code> (INSERT/UPDATE) | ||
* <code>TRD_HTKSyncdata__KHKPreislistenArtikel</code> (DELETE) | * <code>TRD_HTKSyncdata__KHKPreislistenArtikel</code> (DELETE) | ||
'''Hinweis:''' Der Trigger reagiert nur auf '''echte''' Preisänderungen. Ein UPDATE das den gleichen Preis schreibt löst keinen Upload aus. | '''Hinweis:''' Der Trigger reagiert nur auf '''echte''' Preisänderungen. Ein UPDATE, das den gleichen Preis schreibt, löst keinen Upload aus. | ||
<source lang="ini"> | <source lang="ini"> | ||
| Zeile 63: | Zeile 65: | ||
=== TrackKHKPreislisten (Preislisten-Gültigkeit) === | === TrackKHKPreislisten (Preislisten-Gültigkeit) === | ||
Überwacht die Tabelle <code>KHKPreislisten</code>. Ein Upload wird ausgelöst wenn sich der '''Gültigkeitsstatus''' einer Preisliste ändert: | Überwacht die Tabelle <code>KHKPreislisten</code>. Ein Upload wird ausgelöst, wenn sich der '''Gültigkeitsstatus''' einer Preisliste ändert: | ||
* Preisliste wird aktiviert (<code>Aktiv</code> geändert) | * Preisliste wird aktiviert (<code>Aktiv</code> geändert) | ||
| Zeile 71: | Zeile 73: | ||
'''Wann wird KEIN Upload ausgelöst:''' | '''Wann wird KEIN Upload ausgelöst:''' | ||
* Änderung des Namens (<code>Bezeichnung</code>) | * Änderung des Namens (<code>Bezeichnung</code>) | ||
* Änderung anderer Felder die nicht die Gültigkeit betreffen | * Änderung anderer Felder, die nicht die Gültigkeit betreffen | ||
* <code>GueltigBis</code> ändern, aber Preisliste war und bleibt gültig | * <code>GueltigBis</code> ändern, aber Preisliste war und bleibt gültig | ||
'''Trigger:''' | '''Trigger:''' | ||
| Zeile 81: | Zeile 83: | ||
=== TrackPriceListValidity (Täglicher Gültigkeits-Check) === | === TrackPriceListValidity (Täglicher Gültigkeits-Check) === | ||
Dies ist '''kein Trigger''', sondern ein täglicher Check der prüft: | Dies ist '''kein Trigger''', sondern ein täglicher Check, der prüft: | ||
* Welche Preislisten sind seit gestern gültig geworden? (GueltigVon erreicht) | * Welche Preislisten sind seit gestern gültig geworden? (GueltigVon erreicht) | ||
| Zeile 93: | Zeile 95: | ||
== Empfohlene Konfiguration für Preise == | == Empfohlene Konfiguration für Preise == | ||
Für | Für ein Preis-Tracking empfehlen wir: | ||
<source lang="ini"> | <source lang="ini"> | ||
| Zeile 105: | Zeile 107: | ||
TrackPriceListValidity = 1 ; Preislisten die über Nacht gültig werden | TrackPriceListValidity = 1 ; Preislisten die über Nacht gültig werden | ||
</source> | </source> | ||
== Debugging == | == Debugging == | ||
| Zeile 136: | Zeile 139: | ||
=== Reason-Filterung === | === Reason-Filterung === | ||
Die Queue-Einträge haben ein <code>Reason</code>-Feld das angibt woher der Eintrag kommt. Der Service verarbeitet nur Einträge deren Reason zu einer aktivierten Tracking-Option passt: | Die Queue-Einträge haben ein <code>Reason</code>-Feld, das angibt, woher der Eintrag kommt. Der Service verarbeitet nur Einträge, deren Reason zu einer aktivierten Tracking-Option passt: | ||
{| class="wikitable" | {| class="wikitable" | ||
Aktuelle Version vom 25. August 2026, 06:21 Uhr
OmniSeller Upload-Service: Change Tracking
Der OmniSeller Upload-Service kann Änderungen in der ERP-Datenbank automatisch erkennen und betroffene Artikel zum Upload vormerken. Dies geschieht über SQL-Trigger, die bei Datenänderungen Einträge in die HTKOmniUploadQueue schreiben.
Grundkonfiguration
Alle Einstellungen erfolgen in der OmniSellerUpload.ini in der Sektion [ChangeTracking].
[ChangeTracking]
Enabled = 1 ; Master-Switch (muss 1 sein damit der Worker startet)
IntervalMs = 5000 ; Prüf-Intervall in Millisekunden (Standard: 5000 = 5 Sekunden)
Wichtig: Enabled = 1 ist Voraussetzung für alle anderen Tracking-Optionen.
Verfügbare Tracking-Optionen
| INI-Schlüssel | Tabelle | Beschreibung |
|---|---|---|
TrackPrices |
KHKPreislistenArtikel | Einzelpreise in Preislisten |
TrackKHKPreislisten |
KHKPreislisten | Gültigkeitsänderung der Preisliste selbst |
TrackPriceListValidity |
– (täglicher Check) | Preislisten die über Nacht gültig/ungültig wurden |
TrackAttributes |
oHTKAttributeEntities | Artikelattribute |
TrackKHKArtikel |
KHKArtikel | Stammdaten der Artikel |
TrackKHKArtikelVarianten |
KHKArtikelVarianten | Artikelvarianten |
TrackKHKArtikelLagerbewegungen |
KHKArtikelLagerbewegungen | Lagerbewegungen (für Bestandsänderungen) |
TrackKHKArtikelStueckliste |
KHKArtikelStueckliste | Stücklisten |
TrackHTKOmniAlternativeSKU |
HTKOmniAlternativeSKU | Alternative SKUs |
TrackOHTKSyncData |
oHTKSyncData | Sync-Daten |
TrackOHTKSyncDataClient |
oHTKSyncDataClient | Client-spezifische Sync-Daten |
TrackKHKRabattlistenArtikel |
KHKRabattlistenArtikel | Änderungen an Sage 100 Rabattlisten |
Preisbezogene Tracking-Optionen im Detail
TrackPrices (Einzelpreise)
Überwacht die Tabelle KHKPreislistenArtikel. Ein Upload wird ausgelöst, wenn:
- Ein Einzelpreis geändert wird
- Ein Artikel einer Preisliste hinzugefügt wird
- Ein Artikel aus einer Preisliste entfernt wird
Trigger:
TRIU_HTKSyncdata__KHKPreislistenArtikel(INSERT/UPDATE)TRD_HTKSyncdata__KHKPreislistenArtikel(DELETE)
Hinweis: Der Trigger reagiert nur auf echte Preisänderungen. Ein UPDATE, das den gleichen Preis schreibt, löst keinen Upload aus.
[ChangeTracking]
TrackPrices = 1
TrackKHKPreislisten (Preislisten-Gültigkeit)
Überwacht die Tabelle KHKPreislisten. Ein Upload wird ausgelöst, wenn sich der Gültigkeitsstatus einer Preisliste ändert:
- Preisliste wird aktiviert (
Aktivgeändert) GueltigVonoderGueltigBisgeändert, sodass die Preisliste jetzt gültig/ungültig ist
Wichtig: Es werden alle Artikel dieser Preisliste zum Upload vorgemerkt.
Wann wird KEIN Upload ausgelöst:
- Änderung des Namens (
Bezeichnung) - Änderung anderer Felder, die nicht die Gültigkeit betreffen
GueltigBisändern, aber Preisliste war und bleibt gültig
Trigger:
TRIU_OmniSellerTrigger_KHKPreislisten
[ChangeTracking]
TrackKHKPreislisten = 1
TrackPriceListValidity (Täglicher Gültigkeits-Check)
Dies ist kein Trigger, sondern ein täglicher Check, der prüft:
- Welche Preislisten sind seit gestern gültig geworden? (GueltigVon erreicht)
- Welche Preislisten sind seit gestern ungültig geworden? (GueltigBis überschritten)
Anwendungsfall: Eine Preisliste hat GueltigVon = 2026-03-01. Am 1. März werden automatisch alle Artikel dieser Preisliste hochgeladen, auch wenn niemand etwas geändert hat.
[ChangeTracking]
TrackPriceListValidity = 1
Empfohlene Konfiguration für Preise
Für ein Preis-Tracking empfehlen wir:
[ChangeTracking]
Enabled = 1
IntervalMs = 5000
; Preise
TrackPrices = 1 ; Einzelpreis-Änderungen
TrackKHKPreislisten = 1 ; Preisliste wird gültig/ungültig geschaltet
TrackPriceListValidity = 1 ; Preislisten die über Nacht gültig werden
Debugging
Für die Fehlersuche bei Preis-Problemen gibt es ein spezielles Debug-Log:
[Log]
Pricelog = 1
Dies schreibt detaillierte Informationen in preislogiclog.txt im Service-Verzeichnis:
- Welche Artikel in die Queue geschrieben werden
- Welche Tracking-Optionen aktiv sind
- SQL-Abfragen die ausgeführt werden
- Übersprungene Artikel und warum
Technische Details
Queue-Verarbeitung
Die HTKOmniUploadQueue wird in Batches von maximal 500 Einträgen verarbeitet. Bei mehr Einträgen erfolgt die Verarbeitung in mehreren Zyklen (alle IntervalMs Millisekunden).
Trigger-Management
Die SQL-Trigger werden vom Upload-Service automatisch verwaltet:
- Service startet: Trigger für aktivierte Optionen werden eingeschaltet
- Service stoppt: Alle Trigger werden deaktiviert (verhindert Queue-Überlauf)
Reason-Filterung
Die Queue-Einträge haben ein Reason-Feld, das angibt, woher der Eintrag kommt. Der Service verarbeitet nur Einträge, deren Reason zu einer aktivierten Tracking-Option passt:
| Reason | Benötigte INI-Option |
|---|---|
| KHKPreislistenArtikel | TrackPrices = 1 |
| KHKPreislisten | TrackKHKPreislisten = 1 |
| KHKArtikel | TrackKHKArtikel = 1 |
| KHKArtikelVarianten | TrackKHKArtikelVarianten = 1 |
| KHKArtikelLagerbewegungen | TrackKHKArtikelLagerbewegungen = 1 |
| KHKArtikelStueckliste | TrackKHKArtikelStueckliste = 1 |
| HTKOmniAlternativeSKU | TrackHTKOmniAlternativeSKU = 1 |
| oHTKSyncData | TrackOHTKSyncData = 1 |
| oHTKSyncDataClient | TrackOHTKSyncDataClient = 1 |
| HTKOmniArtikelAttribute | TrackAttributes = 1 |
Einträge mit deaktiviertem Reason werden automatisch aus der Queue gelöscht.