Zum Inhalt springen

OmniSeller:OmniSellerUpload ChangeTracking: Unterschied zwischen den Versionen

Aus HTK Wiki
Korrekturlauf Teil 2: Markup-Reste, abgebrochene Saetze und Doppelungen bereinigt
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 49: 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 57: 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 65: 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 73: 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 83: 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 139: 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 (Aktiv geändert)
  • GueltigVon oder GueltigBis geä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.

Siehe auch