Lagerbestand aus ERPNext (1 Warehouse) an alle Storefronts pushen #20
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#20
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?
Aktuellen Lagerbestand aus ERPNext auslesen und an alle konfigurierten Shopware Storefronts übertragen:
BinDocType)PATCH /api/product/{id}/stockoder über Product-Updateshopware6/api/stock.pyUmgesetzt in einer neuen Datei
shopware6/api/stock.py(wie im Issue-Text gefordert):push_stock(shopware_account)— pro Item mit bereits gepushter Shopware-ID (shopware_product_id/shopware_variant_id, gleiches Muster wie #18/#19): Bestand ausBin.actual_qtyim konfigurierten Warehouse des/der aktiven Storefronts lesen, negative Werte auf0clampen,PATCH /api/product/{id}mit{"stock": N}.Shopware Account.Wichtige Design-Entscheidung, vorab gegen die offizielle Shopware-Doku geprüft: Shopware führt
stockals einziges globales Feld pro Produkt (offizielles ADR2023-05-15-stock-api.md: "We have only one fieldstockin the product definition"), es gibt kein Kern-Multi-Warehouse pro Sales Channel. Da unserShopware Storefront.warehouseaber pro Storefront konfiguriert ist (#10), kann ein Item, dessen aktive Storefronts auf unterschiedliche Warehouses zeigen, nicht sinnvoll auf einen Wert verdichtet werden. Passend zum Issue-Titel ("... 1 Warehouse ...") ist das bewusst auf den Standardfall (ein gemeinsames Warehouse) begrenzt — bei mehreren unterschiedlichen Warehouses wird das Item alsfailedmit klarer Fehlermeldung im Error Log markiert statt geraten/summiert (gleiches Prinzip wie #18s Preis-Konflikt-Behandlung).Live-Verifikation (alle drei Fälle bestätigt):
Bin.actual_qty = 42in einem Storefront-Warehouse → korrekt alsstock: 42in Shopware gelandet.Bin.actual_qty = -5→ korrekt alsstock: 0gepusht.failedmarkiert, Error-Log-Eintrag mit klarer Meldung, bestehender Shopware-Wert blieb unangetastet statt überschrieben.Testdaten (Shopware-Produkt, Stock Entry, Item, beide Test-Storefronts) sind nach dem Test wieder gelöscht.
Volle Begründung: docs/architecture.md#issue-20