Scheduled Job für stündlichen Bestandsabgleich einrichten #21

Closed
opened 2026-05-10 16:45:22 +00:00 by csaeum · 1 comment
csaeum commented 2026-05-10 16:45:22 +00:00 (Migrated from gitlab.localdomain)

Frappe Scheduler Job einrichten der stündlich den Bestand synchronisiert:

  • Eintrag in hooks.py unter scheduler_events → hourly
  • Job ruft die Bestandssync-Funktion auf
  • Fehler werden per frappe.log_error() ins Error Log geschrieben
  • Job nur ausführen wenn mindestens ein aktiver Shopware Account konfiguriert ist
  • Implementierung in shopware6/sync/stock.py
Frappe Scheduler Job einrichten der stündlich den Bestand synchronisiert: - Eintrag in `hooks.py` unter `scheduler_events → hourly` - Job ruft die Bestandssync-Funktion auf - Fehler werden per `frappe.log_error()` ins Error Log geschrieben - Job nur ausführen wenn mindestens ein aktiver Shopware Account konfiguriert ist - Implementierung in `shopware6/sync/stock.py`
Owner

Umgesetzt in einer neuen Datei shopware6/sync/stock.py (wie im Issue-Text gefordert):

  • sync_stock_hourly() — iteriert alle aktiven Shopware Account-Dokumente, ruft für jeden #20s push_stock() auf. Läuft nichts, wenn kein aktiver Account existiert (if not accounts: return).
  • Fehlerbehandlung: nur ShopwareAuthError wird gefangen und per frappe.log_error() geloggt — das ist die einzige Exception, die push_stock() je an den Aufrufer durchlässt (jeder Item-Fehler wird bereits intern in #20 gefangen/gezählt), passend zum Verhalten aller fünf bestehenden Push-Wrapper in shopware_account.py.
  • hooks.py: ein neuer Eintrag in der bestehenden scheduler_events["hourly"]-Liste, keine bestehenden Hooks verändert.

Bewusst nicht aus Julians/Marcels fast identischem shopware6/inventory.py übernommen: deren einzelnes globales Setting-Singleton (wir haben stattdessen mehrere Shopware Account-Dokumente mit je eigenem is_active) und ihr pauschales except Exception rund um den ganzen Sync-Aufruf.

Live-Verifikation:

  1. Account testweise auf is_active=0 gesetzt → sync_stock_hourly() bricht sofort ohne API-Call ab.
  2. Zurückgesetzt auf is_active=1 → Lauf gegen die echte Shopware-Testinstanz erfolgreich (kein Fehler, push_stock() tatsächlich aufgerufen und authentifiziert).
  3. bench execute ecommerce_integrations.shopware6.sync.stock.sync_stock_hourly (exakter Pfad aus hooks.py) lief sauber durch — bestätigt, dass der Scheduler-Eintrag beim nächsten echten stündlichen Tick greifen würde.

Volle Begründung: docs/architecture.md#issue-21

Umgesetzt in einer neuen Datei `shopware6/sync/stock.py` (wie im Issue-Text gefordert): - `sync_stock_hourly()` — iteriert alle aktiven `Shopware Account`-Dokumente, ruft für jeden #20s `push_stock()` auf. Läuft nichts, wenn kein aktiver Account existiert (`if not accounts: return`). - Fehlerbehandlung: nur `ShopwareAuthError` wird gefangen und per `frappe.log_error()` geloggt — das ist die einzige Exception, die `push_stock()` je an den Aufrufer durchlässt (jeder Item-Fehler wird bereits intern in #20 gefangen/gezählt), passend zum Verhalten aller fünf bestehenden Push-Wrapper in `shopware_account.py`. - `hooks.py`: ein neuer Eintrag in der bestehenden `scheduler_events["hourly"]`-Liste, keine bestehenden Hooks verändert. Bewusst nicht aus Julians/Marcels fast identischem `shopware6/inventory.py` übernommen: deren einzelnes globales `Setting`-Singleton (wir haben stattdessen mehrere `Shopware Account`-Dokumente mit je eigenem `is_active`) und ihr pauschales `except Exception` rund um den ganzen Sync-Aufruf. Live-Verifikation: 1. Account testweise auf `is_active=0` gesetzt → `sync_stock_hourly()` bricht sofort ohne API-Call ab. 2. Zurückgesetzt auf `is_active=1` → Lauf gegen die echte Shopware-Testinstanz erfolgreich (kein Fehler, `push_stock()` tatsächlich aufgerufen und authentifiziert). 3. `bench execute ecommerce_integrations.shopware6.sync.stock.sync_stock_hourly` (exakter Pfad aus `hooks.py`) lief sauber durch — bestätigt, dass der Scheduler-Eintrag beim nächsten echten stündlichen Tick greifen würde. Volle Begründung: [docs/architecture.md#issue-21](https://git.web-seo-consulting.eu/Frappe-Projekte/ecommerce_integrations/src/branch/shopware6-dach/docs/architecture.md#issue-21-hourly-scheduled-stock-sync)
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Frappe-Projekte/ecommerce_integrations#21
No description provided.