Kategorien aus Shopware importieren und in ERPNext abbilden #12

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

Shopware-Kategorien über die Admin API abrufen und in ERPNext abbilden:

  • Endpoint: GET /api/category (mit Pagination)
  • Mapping: Shopware Category ID → ERPNext Item Group
  • Hierarchie erhalten (Parent-Child-Beziehung)
  • Bereits vorhandene Kategorien nicht doppelt anlegen
  • Implementierung in shopware6/api/category.py
Shopware-Kategorien über die Admin API abrufen und in ERPNext abbilden: - Endpoint: `GET /api/category` (mit Pagination) - Mapping: Shopware Category ID → ERPNext Item Group - Hierarchie erhalten (Parent-Child-Beziehung) - Bereits vorhandene Kategorien nicht doppelt anlegen - Implementierung in `shopware6/api/category.py`
Owner

Umgesetzt: shopware6/api/category.py mit list_categories() (paginierter POST /api/search/category-Fetch) und import_categories() (rekursiver Top-down-Import, Parent-Child-Hierarchie über parent_item_group erhalten, Dedup über neues Custom Field shopware_category_id auf Item Group, rebuild_tree("Item Group") einmal am Ende).

Neuer Button "Import Categories" auf Shopware Account (analog "Test Connection"). Das Custom Field wird automatisch angelegt, sobald ein aktiver Shopware Account gespeichert wird (setup_custom_fields(), gleiches Muster wie in diesem Repo bereits bei shopify_setting.py/amazon_sp_api_settings.py verwendet).

Live verifiziert gegen die echte Shopware-Instanz (Christians reale Produktkategorien, 115 Stück): erster Lauf legt alle 115 als Item Groups mit korrekter Hierarchie an, zweiter Lauf überspringt alle 115 (Dedup funktioniert), Nested-Set-Struktur (lft/rgt) nach rebuild_tree() konsistent, keine verwaisten Parent-Referenzen.

Julian importiert keine Kategorien (nur die Gegenrichtung). Marcel importiert zwar, aber über ein deutlich schwereres Adapter-Framework (catalog_mirror), das wir nicht übernommen haben — drei konkrete Design-Erkenntnisse daraus flossen aber informiert (nicht kopiert) ein: Pagination-Form, Dedup-Feld statt Namensabgleich, rebuild_tree(). Details in Projekt.md → Architecture Decisions.

Schließe dieses Issue.

Umgesetzt: `shopware6/api/category.py` mit `list_categories()` (paginierter `POST /api/search/category`-Fetch) und `import_categories()` (rekursiver Top-down-Import, Parent-Child-Hierarchie über `parent_item_group` erhalten, Dedup über neues Custom Field `shopware_category_id` auf `Item Group`, `rebuild_tree("Item Group")` einmal am Ende). Neuer Button "Import Categories" auf `Shopware Account` (analog "Test Connection"). Das Custom Field wird automatisch angelegt, sobald ein aktiver Shopware Account gespeichert wird (`setup_custom_fields()`, gleiches Muster wie in diesem Repo bereits bei `shopify_setting.py`/`amazon_sp_api_settings.py` verwendet). Live verifiziert gegen die echte Shopware-Instanz (Christians reale Produktkategorien, 115 Stück): erster Lauf legt alle 115 als Item Groups mit korrekter Hierarchie an, zweiter Lauf überspringt alle 115 (Dedup funktioniert), Nested-Set-Struktur (`lft`/`rgt`) nach `rebuild_tree()` konsistent, keine verwaisten Parent-Referenzen. Julian importiert keine Kategorien (nur die Gegenrichtung). Marcel importiert zwar, aber über ein deutlich schwereres Adapter-Framework (`catalog_mirror`), das wir nicht übernommen haben — drei konkrete Design-Erkenntnisse daraus flossen aber informiert (nicht kopiert) ein: Pagination-Form, Dedup-Feld statt Namensabgleich, `rebuild_tree()`. Details in `Projekt.md` → Architecture Decisions. Schließe dieses Issue.
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#12
No description provided.