Musterbestellungen / Plugin-Produkte ohne echtes Item behandeln #33
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Frappe-Projekte/ecommerce_integrations#33
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?
Ein Shopware-Plugin ermöglicht Musterbestellungen ("Sample Orders"). Die darin enthaltenen "Artikel" sind keine echten Produkte — weder im Shopware-Produktkatalog noch (dadurch) als ERPNext Item vorhanden.
Zu klären:
lineItem.type(analog zu"product"/"credit"/"custom"— hat das Plugin einen eigenen Typ?)Sales Order Item.item_codeist Pflicht-Link aufItem). Optionen:Bezug zu #27: Der aktuelle Bestellungsimport (#27) überspringt die komplette Bestellung, wenn eine Position nicht auf ein ERPNext-Item aufgelöst werden kann ("fail loud, nicht raten"). Ohne Erkennung würde jede Bestellung mit einer Musterposition dauerhaft übersprungen — dieses Issue klärt, wie solche Positionen stattdessen korrekt (nicht nur "irgendwie durchgewunken") behandelt werden.
Live-Fund beim Bestellungsimport-Test (#27), direkt aus dem echten DDEV-Testshop: eine reale Bestellung (Nr. 10000) besteht ausschließlich aus zwei Musterpositionen.
Wichtig für die Erkennungsfrage —
lineItem.typereicht NICHT aus: beide Musterpositionen habentype: "product", identisch zu einer echten Position. Die zuverlässige Erkennung ist stattdessen:payload.isSample(Boolean) ist ein explizites, vom Plugin gesetztes Flag — deutlich robuster als Artikelnummer- oder Namens-Präfix (der Name trägt zwar auch ein "Muster - "-Präfix, aber das ist reiner Anzeigetext, kein stabiles Erkennungsmerkmal).Zweiter wichtiger Fund:
referencedId/productIdder Musterposition zeigen auf die echte Produkt-ID (payload.originalProductIdist identisch) — es handelt sich technisch nicht um ein separates "Phantom-Produkt", sondern um dasselbe reale Produkt, nur mitunitPrice: 0/totalPrice: 0. D.h. die Position lässt sich über die bereits bestehendeshopware_product_id/shopware_variant_id-Verknüpfung (#16/#19) ganz normal auf ein echtes ERPNext-Item auflösen — es muss dafür kein Platzhalter-/Sammel-Item erfunden werden. Die eigentliche Frage ist nur noch: soll eine solche Position mit Rate 0 in die Sales Order übernommen werden (aktuell würde #27s Code das einfach tun, dataxRate/pricesauber auf 0 auflösen) oder soll sie bewusst herausgefiltert/anders markiert werden (z. B. eigenes Flag auf der Sales Order Item-Zeile, damit Reporting sie von echten Verkäufen unterscheiden kann)?