Nur geänderte Bestände pushen (Delta-Sync) #22
Labels
No labels
API
Artikel
B2B
B2C
Bestandssync
Bestellungen
DACH
DocType
Dokumentation
Grundgerüst
Import
Kategorien
Kunden
Lager
Mapping
Mehrsprachigkeit
Performance
Preise
Push
Scheduler
Schweiz
Steuern
Storefront
Sync
Varianten
Verbindung
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Frappe-Projekte/ecommerce_integrations#22
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Bestandssync optimieren: nur Artikel pushen deren Bestand sich seit dem letzten Sync geändert hat:
Umgesetzt über zwei neue Custom Fields auf
Item(shopware_stock_synced_qty,shopware_stock_synced_on) und einen neuen Pflicht-Parameterfull_sync: bool(bewusst ohne Default) auf #20spush_stock():full_sync=False: ein Item wird übersprungen (skipped_unchanged), wenn der frisch berechnete Bestand exakt dem zuletzt erfolgreich gepushten Wert entspricht und das Item schon mal synchronisiert wurde — kein API-Call. Wird ab jetzt vom stündlichen Scheduler-Job (#21,sync_stock_hourly()) genutzt.full_sync=True: pusht immer alle Items, ignoriert die Änderungserkennung komplett — bleibt exakt das Verhalten des manuellen "Push Stock"-Buttons ("Vollsync weiterhin manuell auslösbar halten").Live entdeckter, echter Bug während der Verifikation: der allererste Delta-Lauf nach dem Deploy hat fälschlich 10 von 11 Test-Items als "unverändert" übersprungen — obwohl sie noch nie synchronisiert worden waren. Ursache:
shopware_stock_synced_qtyist ein Int-Custom-Field, und Frappe befüllt die DB-Spalte für Bestandsdatensätze standardmäßig mit0, nichtNULL— nicht unterscheidbar von "wurde auf echten Wert 0 synchronisiert", was bei genau diesen Test-Items auch der reale Bestand war. Behoben, indem stattdessenshopware_stock_synced_on(Datetime, bleibt bei Frappe korrektNone/ungesetzt) als "nie synchronisiert"-Erkennung dient. Dokumentiert indocs/stolperfallen.mdals generelle Frappe-Falle.Live-Verifikation (alle vier Fälle bestätigt):
full_sync=False): alle 11 verlinkten Items gepusht.skipped_unchanged, kein PATCH (Zeitstempel unverändert geblieben).skipped_unchanged.full_sync=Truedirekt danach (keine weitere Änderung): pusht trotzdem alle 11, Shopware-Wert perPOST /api/search/productbestätigt.Testdaten sind nach dem Test wieder gelöscht. Damit ist Milestone 6 ("Bestandssync") komplett (#20-#22).
Volle Begründung: docs/architecture.md#issue-22