Varianten pushen #19
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 project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Frappe-Projekte/ecommerce_integrations#19
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?
ERPNext Item Variants als Shopware Produkt-Varianten pushen:
shopware6/api/product.pyUmgesetzt in
shopware6/api/product.py(Erweiterung, keine neue Datei, wie gefordert):push_variants(shopware_account)— pro Template-Item (has_variants=1) mit mindestens einer Variante: sammelt die tatsächlich bei den Varianten-Kindern vorkommenden Attribut-Werte, stellt dafür Shopware Property-Group/Option sicher (Live-Suche + In-Memory-Cache pro Lauf, keine neuen Custom Fields/DocTypes), pusht das Template als Parent-Produkt mitconfiguratorSettingsund jede Variante mitparentId+options.push_prices()deckt Varianten automatisch mit ab (Filter dafür verkürzt, siehe unten).Shopware Account.Zwei Dinge live entdeckt, die vom ursprünglichen Plan abwichen:
push_variants()-Lauf gegen ein bereits gepushtes Template schlug mit500fehl (SQLSTATE[23000], FK-Verletzung aufproduct_configurator_setting.property_group_option_id) — erneutes Verlinken einer bereits verlinktenoptionIdbeim PATCH vonconfiguratorSettingsist serverseitig nicht erlaubt. Fix: vor dem PATCH werden die bestehenden configurator-settings-Zeilen einzeln gelöscht (_clear_configurator_settings()), danach die neue Liste gesetzt. Live bestätigt, dass Varianten-optionsdavon nicht betroffen sind (kein Clear-first nötig dort). Dokumentiert indocs/stolperfallen.md.price.py/translation.pyauf{"has_variants": 0}(damit "Push Prices"/"Push Descriptions" auch Varianten erfassen) war nötig, aber unvollständig — beide Dateien lasen die Shopware-ID nur ausshopware_product_id, das bei Varianten nie gesetzt ist (nurshopware_variant_id). Ein Live-Testlauf vonpush_prices()zeigte das direkt (beide Test-Varianten fälschlichskipped_not_pushed). Fix:item.get(SHOPWARE_VARIANT_ID_FIELD) or item.get(SHOPWARE_PRODUCT_ID_FIELD)in beiden Dateien.Live-Verifikation End-to-End (Test-Template mit Attribut "Farbe", 2 Werten, 2 Varianten): Parent + beide Varianten korrekt in Shopware mit sichtbarer Konfigurator-Achse; zweiter Lauf aktualisiert statt dupliziert (
created: 0); anschließender "Push Prices"-Lauf setzte auf beiden Varianten echte Preise (Brutto/unrounded Netto/echtetaxId) statt Platzhalter. Testdaten (Shopware + ERPNext) sind nach dem Test wieder gelöscht.Volle Begründung: docs/architecture.md#issue-19
Damit ist Milestone 5 (#16-#19) komplett.