OmniSeller:OmniSellerUpload ChangeTracking: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) Die Seite wurde neu angelegt: „= 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 <code>HTKOmniUploadQueue</code> schreiben. == Grundkonfiguration == Alle Einstellungen erfolgen in der <code>OmniSeller.ini</code> in der Sektion <code>[ChangeTracking]</code>. <source lang="ini"> […“ |
Admin (Diskussion | Beiträge) |
||
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 5: | Zeile 5: | ||
== Grundkonfiguration == | == Grundkonfiguration == | ||
Alle Einstellungen erfolgen in der <code> | Alle Einstellungen erfolgen in der <code>OmniSellerUpload.ini</code> in der Sektion <code>[ChangeTracking]</code>. | ||
<source lang="ini"> | <source lang="ini"> | ||
| Zeile 19: | Zeile 19: | ||
{| class="wikitable" | {| class="wikitable" | ||
! INI-Schlüssel !! Tabelle !! Beschreibung | ! INI-Schlüssel !! Tabelle !! Beschreibung | ||
|- | |- | ||
| <code>TrackPrices</code> || KHKPreislistenArtikel || Einzelpreise in Preislisten | | <code>TrackPrices</code> || KHKPreislistenArtikel || Einzelpreise in Preislisten | ||
|- | |- | ||
| <code>TrackKHKPreislisten</code> || KHKPreislisten || Gültigkeitsänderung der Preisliste selbst | | <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>TrackPriceListValidity</code> || – (täglicher Check) || Preislisten die über Nacht gültig/ungültig wurden | ||
|- | |- | ||
| <code>TrackAttributes</code> || oHTKAttributeEntities || Artikelattribute | | <code>TrackAttributes</code> || oHTKAttributeEntities || Artikelattribute | ||
|- | |- | ||
| <code>TrackKHKArtikel</code> || KHKArtikel || Stammdaten der Artikel | | <code>TrackKHKArtikel</code> || KHKArtikel || Stammdaten der Artikel | ||
|- | |- | ||
| <code>TrackKHKArtikelVarianten</code> || KHKArtikelVarianten || Artikelvarianten | | <code>TrackKHKArtikelVarianten</code> || KHKArtikelVarianten || Artikelvarianten | ||
|- | |- | ||
| <code>TrackKHKArtikelLagerbewegungen</code> || KHKArtikelLagerbewegungen || Lagerbewegungen (für Bestandsänderungen) | | <code>TrackKHKArtikelLagerbewegungen</code> || KHKArtikelLagerbewegungen || Lagerbewegungen (für Bestandsänderungen) | ||
|- | |- | ||
| <code>TrackKHKArtikelStueckliste</code> || KHKArtikelStueckliste || Stücklisten | | <code>TrackKHKArtikelStueckliste</code> || KHKArtikelStueckliste || Stücklisten | ||
|- | |- | ||
| <code>TrackHTKOmniAlternativeSKU</code> || HTKOmniAlternativeSKU || Alternative SKUs | | <code>TrackHTKOmniAlternativeSKU</code> || HTKOmniAlternativeSKU || Alternative SKUs | ||
|- | |- | ||
| <code>TrackOHTKSyncData</code> || oHTKSyncData || Sync-Daten | | <code>TrackOHTKSyncData</code> || oHTKSyncData || Sync-Daten | ||
|- | |- | ||
| <code>TrackOHTKSyncDataClient</code> || oHTKSyncDataClient || Client-spezifische Sync-Daten | | <code>TrackOHTKSyncDataClient</code> || oHTKSyncDataClient || Client-spezifische Sync-Daten | ||
|- | |||
| <code>TrackKHKRabattlistenArtikel</code> || KHKRabattlistenArtikel || Änderungen an Sage 100 Rabattlisten | |||
|} | |} | ||
| Zeile 52: | Zeile 54: | ||
* Ein Artikel einer Preisliste hinzugefügt wird | * Ein Artikel einer Preisliste hinzugefügt wird | ||
* Ein Artikel aus einer Preisliste entfernt wird | * Ein Artikel aus einer Preisliste entfernt wird | ||
'''Trigger:''' | '''Trigger:''' | ||
* <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. | ||
| Zeile 63: | Zeile 63: | ||
TrackPrices = 1 | TrackPrices = 1 | ||
</source> | </source> | ||
=== TrackKHKPreislisten (Preislisten-Gültigkeit) === | === TrackKHKPreislisten (Preislisten-Gültigkeit) === | ||
| Zeile 70: | Zeile 69: | ||
* Preisliste wird aktiviert (<code>Aktiv</code> geändert) | * Preisliste wird aktiviert (<code>Aktiv</code> geändert) | ||
* <code>GueltigVon</code> oder <code>GueltigBis</code> geändert, sodass die Preisliste jetzt gültig/ungültig ist | * <code>GueltigVon</code> oder <code>GueltigBis</code> geändert, sodass die Preisliste jetzt gültig/ungültig ist | ||
'''Wichtig:''' Es werden '''alle Artikel''' dieser Preisliste zum Upload vorgemerkt. | '''Wichtig:''' Es werden '''alle Artikel''' dieser Preisliste zum Upload vorgemerkt. | ||
| Zeile 77: | Zeile 75: | ||
* Ä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:''' | ||
* <code>TRIU_OmniSellerTrigger_KHKPreislisten</code> | * <code>TRIU_OmniSellerTrigger_KHKPreislisten</code> | ||
<source lang="ini"> | <source lang="ini"> | ||
[ChangeTracking] | [ChangeTracking] | ||
TrackKHKPreislisten = 1 | TrackKHKPreislisten = 1 | ||
</source> | </source> | ||
=== TrackPriceListValidity (Täglicher Gültigkeits-Check) === | === TrackPriceListValidity (Täglicher Gültigkeits-Check) === | ||
| Zeile 92: | Zeile 87: | ||
* Welche Preislisten sind seit gestern gültig geworden? (GueltigVon erreicht) | * Welche Preislisten sind seit gestern gültig geworden? (GueltigVon erreicht) | ||
* Welche Preislisten sind seit gestern ungültig geworden? (GueltigBis überschritten) | * Welche Preislisten sind seit gestern ungültig geworden? (GueltigBis überschritten) | ||
'''Anwendungsfall:''' Eine Preisliste hat <code>GueltigVon = 2026-03-01</code>. Am 1. März werden automatisch alle Artikel dieser Preisliste hochgeladen, auch wenn niemand etwas geändert hat. | '''Anwendungsfall:''' Eine Preisliste hat <code>GueltigVon = 2026-03-01</code>. Am 1. März werden automatisch alle Artikel dieser Preisliste hochgeladen, auch wenn niemand etwas geändert hat. | ||
| Zeile 99: | Zeile 93: | ||
TrackPriceListValidity = 1 | TrackPriceListValidity = 1 | ||
</source> | </source> | ||
== 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 150: | Zeile 143: | ||
{| class="wikitable" | {| class="wikitable" | ||
! Reason !! Benötigte INI-Option | ! Reason !! Benötigte INI-Option | ||
|- | |- | ||
| KHKPreislistenArtikel || TrackPrices = 1 | | KHKPreislistenArtikel || TrackPrices = 1 | ||
|- | |- | ||
| KHKPreislisten || TrackKHKPreislisten = 1 | | KHKPreislisten || TrackKHKPreislisten = 1 | ||
|- | |- | ||
| KHKArtikel || TrackKHKArtikel = 1 | | KHKArtikel || TrackKHKArtikel = 1 | ||
|- | |- | ||
| KHKArtikelVarianten || TrackKHKArtikelVarianten = 1 | | KHKArtikelVarianten || TrackKHKArtikelVarianten = 1 | ||
|- | |- | ||
| KHKArtikelLagerbewegungen || TrackKHKArtikelLagerbewegungen = 1 | | KHKArtikelLagerbewegungen || TrackKHKArtikelLagerbewegungen = 1 | ||
|- | |- | ||
| KHKArtikelStueckliste || TrackKHKArtikelStueckliste = 1 | | KHKArtikelStueckliste || TrackKHKArtikelStueckliste = 1 | ||
|- | |- | ||
| HTKOmniAlternativeSKU || TrackHTKOmniAlternativeSKU = 1 | | HTKOmniAlternativeSKU || TrackHTKOmniAlternativeSKU = 1 | ||
|- | |- | ||
| oHTKSyncData || TrackOHTKSyncData = 1 | | oHTKSyncData || TrackOHTKSyncData = 1 | ||
|- | |- | ||
| oHTKSyncDataClient || TrackOHTKSyncDataClient = 1 | | oHTKSyncDataClient || TrackOHTKSyncDataClient = 1 | ||
|- | |- | ||
| HTKOmniArtikelAttribute || TrackAttributes = 1 | | HTKOmniArtikelAttribute || TrackAttributes = 1 | ||
|} | |} | ||
Einträge mit deaktiviertem Reason werden automatisch aus der Queue gelöscht. | Einträge mit deaktiviertem Reason werden automatisch aus der Queue gelöscht. | ||
| Zeile 179: | Zeile 171: | ||
* [[OmniSeller.ini Referenz]] | * [[OmniSeller.ini Referenz]] | ||
* [[OmniSeller Preislogik]] | * [[OmniSeller Preislogik]] | ||
[[Kategorie:OmniSeller]] | [[Kategorie:OmniSeller]] | ||
[[Kategorie:Upload-Service]] | [[Kategorie:Upload-Service]] | ||
[[Kategorie:Konfiguration]] | [[Kategorie:Konfiguration]] | ||
Aktuelle Version vom 21. April 2026, 13:30 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.