|
|
| Zeile 1: |
Zeile 1: |
| = 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">
| |
| [ChangeTracking]
| |
| Enabled = 1 ; Master-Switch (muss 1 sein damit der Worker startet)
| |
| IntervalMs = 5000 ; Prüf-Intervall in Millisekunden (Standard: 5000 = 5 Sekunden)
| |
| </source>
| |
|
| |
| '''Wichtig:''' <code>Enabled = 1</code> ist Voraussetzung für alle anderen Tracking-Optionen.
| |
|
| |
| == Verfügbare Tracking-Optionen ==
| |
|
| |
| {| class="wikitable"
| |
| ! 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
| |
| |}
| |
|
| |
| == Preisbezogene Tracking-Optionen im Detail ==
| |
|
| |
| === TrackPrices (Einzelpreise) ===
| |
|
| |
| Überwacht die Tabelle <code>KHKPreislistenArtikel</code>. 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:'''
| |
| * <code>TRIU_HTKSyncdata__KHKPreislistenArtikel</code> (INSERT/UPDATE)
| |
| * <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.
| |
|
| |
| <source lang="ini">
| |
| [ChangeTracking]
| |
| TrackPrices = 1
| |
| </source>
| |
|
| |
| === TrackKHKPreislisten (Preislisten-Gültigkeit) ===
| |
|
| |
| Ü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)
| |
| * <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.
| |
|
| |
| '''Wann wird KEIN Upload ausgelöst:'''
| |
| * Änderung des Namens (<code>Bezeichnung</code>)
| |
| * Änderung anderer Felder die nicht die Gültigkeit betreffen
| |
| * <code>GueltigBis</code> ändern, aber Preisliste war und bleibt gültig
| |
|
| |
| '''Trigger:'''
| |
| * <code>TRIU_OmniSellerTrigger_KHKPreislisten</code>
| |
|
| |
| <source lang="ini">
| |
| [ChangeTracking]
| |
| TrackKHKPreislisten = 1
| |
| </source>
| |
|
| |
| === 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 <code>GueltigVon = 2026-03-01</code>. Am 1. März werden automatisch alle Artikel dieser Preisliste hochgeladen, auch wenn niemand etwas geändert hat.
| |
|
| |
| <source lang="ini">
| |
| [ChangeTracking]
| |
| TrackPriceListValidity = 1
| |
| </source>
| |
|
| |
| == Empfohlene Konfiguration für Preise ==
| |
|
| |
| Für vollständiges Preis-Tracking empfehlen wir:
| |
|
| |
| <source lang="ini">
| |
| [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
| |
| </source>
| |
|
| |
| == Debugging ==
| |
|
| |
| Für die Fehlersuche bei Preis-Problemen gibt es ein spezielles Debug-Log:
| |
|
| |
| <source lang="ini">
| |
| [Log]
| |
| Pricelog = 1
| |
| </source>
| |
|
| |
| Dies schreibt detaillierte Informationen in <code>preislogiclog.txt</code> 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 <code>HTKOmniUploadQueue</code> wird in Batches von maximal 500 Einträgen verarbeitet. Bei mehr Einträgen erfolgt die Verarbeitung in mehreren Zyklen (alle <code>IntervalMs</code> 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 <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"
| |
| ! 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 ==
| |
|
| |
| * [[OmniSeller Upload-Service Installation]]
| |
| * [[OmniSeller.ini Referenz]]
| |
| * [[OmniSeller Preislogik]]
| |
|
| |
| [[Kategorie:OmniSeller]]
| |
| [[Kategorie:Upload-Service]]
| |
| [[Kategorie:Konfiguration]]
| |