Feld-Mapping Dokumentation: reybex → Shopware 6
Übersicht
Diese Dokumentation beschreibt, welche Felder von reybex nach Shopware 6 übertragen werden und wie sie gemappt werden. Die Übertragung erfolgt über die Shopware 6 Admin API.
⚠️ WICHTIGER HINWEIS
Diese Dokumentation unterliegt kontinuierlichen Änderungen.
Die Integration zwischen reybex und Shopware 6 befindet sich in ständiger Entwicklung. Daher kann es vorkommen, dass:
- Neue Felder hinzugefügt werden - Um zusätzliche Funktionen zu unterstützen oder neue Shopware 6-Features zu nutzen
- Felder temporär entfernt werden - Wenn unerwartete Probleme auftreten, die negative Auswirkungen auf die Artikel haben
Empfehlung:
Bitte überprüfen Sie regelmäßig die aktuelle Dokumentation und testen Sie Änderungen in einer Testumgebung, bevor Sie sie in der Produktion einsetzen.
Verwendung dieser Dokumentation
Diese Dokumentation zeigt, welche Felder von reybex nach Shopware 6 übertragen werden. Für jedes Shopware 6-Feld wird angegeben:
- Welches reybex-Feld die Quelle ist
- Unter welcher Bedingung es übertragen wird (Export-Gruppe)
- Besondere Hinweise zur Übertragung
Wichtige Konzepte
reybex-Artikelstruktur
- Material: Ein Artikel/Produkt in reybex (entspricht Shopware 6 Product)
- MaterialVariant: Eine Variante eines Artikels in reybex (z.B. Größe, Farbe) - entspricht Shopware 6 Product Variant
- MaterialMarktplace: Marktplatz-spezifische Einstellungen für einen Artikel
Shopware 6-Produktstruktur
- Product: Das Hauptprodukt in Shopware 6
- Product Variant: Eine Variante des Produkts in Shopware 6
- Properties: Produkteigenschaften in Shopware 6
- Custom Fields: Benutzerdefinierte Felder in Shopware 6
1. Produkt-Felder (Product Level)
Die folgenden Felder werden auf Produktebene in Shopware 6 übertragen:
1.1 Basis-Informationen
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.productNumber |
material.sku |
Artikelnummer | Immer |
product.name |
material.name |
Produktname | Export-Gruppe: ARTIKEL_DATA |
product.ean |
material.gtin |
EAN/GTIN | Export-Gruppe: ARTIKEL_DATA |
product.active |
Immer true |
Aktiv-Status | Immer |
product.weight |
material.netWeight |
Gewicht (in kg) | Export-Gruppe: ARTIKEL_DATA |
product.width |
material.width * 10 |
Breite (in mm) | Export-Gruppe: ARTIKEL_DATA |
product.height |
material.height * 10 |
Höhe (in mm) | Export-Gruppe: ARTIKEL_DATA |
product.length |
material.length * 10 |
Länge (in mm) | Export-Gruppe: ARTIKEL_DATA |
product.isCloseout |
material.isOnlySellableWithPositiveStock |
Ausverkauf | Export-Gruppe: ARTIKEL_DATA |
product.markAsTopseller |
material.isHighlighted |
Topseller | Export-Gruppe: ARTIKEL_DATA |
product.manufacturerNumber |
material.vendorMatCode oder material.manufacturer.number |
Herstellernummer | Export-Gruppe: ARTIKEL_DATA |
product.manufacturerId |
material.brand.name |
Hersteller/Marke (als ID) | Export-Gruppe: ARTIKEL_DATA |
Hinweise:
- Abmessungen werden von cm in mm umgerechnet (multipliziert mit 10)
- manufacturerId wird automatisch erstellt, wenn Marke nicht existiert
- manufacturerNumber verwendet vendorMatCode falls vorhanden, sonst manufacturer.number
1.2 Grundpreis-Berechnung
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.referenceUnit |
material.referenceUnit |
Referenzeinheit | Export-Gruppe: BASE_PRICE_CALCULATION |
product.purchaseUnit |
material.purchaseUnit |
Einkaufseinheit | Export-Gruppe: BASE_PRICE_CALCULATION |
product.packUnit |
material.packUnit |
Verpackungseinheit | Export-Gruppe: BASE_PRICE_CALCULATION |
product.unitId |
material.basePriceUnit |
Einheit (als ID) | Export-Gruppe: BASE_PRICE_CALCULATION |
Hinweise:
- unitId wird automatisch erstellt, wenn Einheit nicht existiert
- Einheit wird anhand shortCode oder name gesucht
1.3 Preise
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.price[] |
material.price.value |
Verkaufspreis | Export-Gruppe: PRICE |
product.price[].listPrice |
material.price.rrp |
UVP/Listenpreis | Export-Gruppe: PRICE + RRP |
product.price[].gross |
material.price.value (brutto) |
Bruttopreis | Export-Gruppe: PRICE |
product.price[].net |
Berechnet aus material.price.value |
Nettopreis | Export-Gruppe: PRICE |
product.taxId |
material.vatRate |
Steuersatz (als Tax ID) | Export-Gruppe: PRICE |
product.purchasePrices[] |
material.purPrice |
Einkaufspreis | Export-Gruppe: PRICE |
Preislogik:
- gross = material.price.value (wenn syncNetPriceToMarketplace = false)
- net = Berechnet aus gross und vatRate
- listPrice wird nur übertragen, wenn RRP in Export-Gruppen enthalten ist
- purchasePrices Format: [{gross: X, net: Y, currencyId: Z, linked: false}]
1.4 Bestand
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.stock |
material.stock.value |
Bestand | Export-Gruppe: STOCK |
1.5 SEO-Felder
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.metaTitle |
material.metaTitle |
SEO-Titel | Export-Gruppe: SEO |
product.metaDescription |
material.metaDescription |
SEO-Beschreibung | Export-Gruppe: SEO |
product.keywords |
material.keyWord |
Suchbegriffe | Export-Gruppe: SEO |
1.6 Versand
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.shippingFree |
material.isShippingFree |
Versandkostenfrei | Export-Gruppe: SHIPPING |
product.restockTime |
material.deliveryDays |
Nachbestellzeit | Export-Gruppe: SHIPPING |
product.deliveryTimeId |
material.shipping.maxProcessDays |
Lieferzeit (als ID) | Export-Gruppe: SHIPPING |
Hinweise:
- deliveryTimeId wird anhand maxProcessDays gesucht und automatisch zugeordnet
1.7 Kategorien
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.categories[] |
material.categories[].id |
Kategorien (als IDs) | Export-Gruppe: CATEGORY |
Hinweise:
- Format: [{id: categoryId1}, {id: categoryId2}, ...]
1.8 Eigenschaften (Properties)
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.properties[] |
material.propertyValues[] |
Produkteigenschaften (als Option IDs) | Export-Gruppe: ARTIKEL_ATTRIBUTE |
Hinweise:
- Eigenschaften werden als Option IDs übertragen
- Nicht mehr vorhandene Eigenschaften werden gelöscht
- Format: [{id: optionId1}, {id: optionId2}, ...]
1.9 Custom Fields
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.customFields[] |
material.customFields[] |
Benutzerdefinierte Felder | Export-Gruppe: ARTIKEL_ATTRIBUTE |
Typ-Mapping:
reybex variableType |
Shopware 6 Custom Field Type | Beschreibung |
|---|---|---|
0 |
Number | Ganzzahl |
1 |
Float | Dezimalzahl |
2 oder 8 |
Text | Text |
3 |
Boolean | Wahr/Falsch |
4 |
Select | Auswahl (Option) |
Hinweise:
- Custom Fields werden über _action/sync API übertragen
- Übersetzungen werden separat pro Sprache übertragen
- Multi-Select wird unterstützt
1.10 Übersetzungen
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
translations[].name |
material.translations[].name |
Übersetzter Name | Export-Gruppe: DESCRIPTION |
translations[].description |
material.translations[].detailDescription |
Übersetzte Beschreibung | Export-Gruppe: DESCRIPTION |
Hinweise:
- Übersetzungen werden über updateMaterialTranslations() übertragen
- Pro Sprache wird ein separater API-Call durchgeführt
1.11 Bilder
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.media[] |
material.images[] |
Produktbilder | Export-Gruppe: IMAGE + refreshPictures = true |
product.media[] |
material.variants[].images[] |
Variantenbilder | Export-Gruppe: IMAGE + refreshPictures = true |
Hinweise:
- Bilder werden nur übertragen, wenn refreshPictures = true gesetzt ist
- Variantenbilder werden separat pro Variante übertragen
- Format: [{image: {url: X, fileName: Y}}]
1.12 Sichtbarkeit (Visibility)
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
product.visibilities[] |
Automatisch | Sichtbarkeit in Sales Channels | Immer (wenn channelId vorhanden) |
Hinweise:
- Wird über manageProductVisibility() verwaltet
- Produkt wird automatisch in konfigurierten Sales Channels sichtbar gemacht
2. Varianten-Felder (Product Variant Level)
Die folgenden Felder werden auf Variantenebene in Shopware 6 übertragen:
2.1 Basis-Informationen
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
variant.productNumber |
variant.sku |
Varianten-SKU | Export-Gruppe: VARIANT |
variant.ean |
variant.gtin |
Varianten-EAN/GTIN | Export-Gruppe: VARIANT |
variant.stock |
variant.stock |
Variantenbestand | Export-Gruppe: VARIANT |
variant.price[] |
variant.price.value |
Variantenpreis | Export-Gruppe: VARIANT |
variant.price[].listPrice |
variant.price.rrp |
Varianten-UVP | Export-Gruppe: VARIANT + RRP |
variant.purchaseUnit |
variant.purchaseUnit |
Einkaufseinheit | Export-Gruppe: VARIANT |
Preislogik:
- gross = variant.price.value (wenn syncNetPriceToMarketplace = false)
- net = Berechnet aus gross und material.vatRate
- listPrice wird nur übertragen, wenn RRP in Export-Gruppen enthalten ist
2.2 Varianten-Eigenschaften
Varianten werden über setVariantData() erstellt/aktualisiert:
- Varianten-Optionen werden als Properties übertragen
- Varianten-Struktur wird über Property Groups definiert
2.3 Varianten-Bilder
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
variant.media[] |
variant.images[] |
Variantenbilder | Export-Gruppe: VARIANT + refreshPictures = true |
Hinweise:
- Variantenbilder werden separat pro Variante übertragen
- Hauptbilder werden ausgeschlossen (nur Varianten-spezifische Bilder)
2.4 Kundenpreise (Special Prices)
| Shopware 6 Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
variant.prices[] (special) |
variant.prices[] (nicht EK) |
Kundenpreise | Export-Gruppe: CUSTOMER_GROUP_PRICE |
Hinweise:
- Nur Preise mit customerGroupKey != 'EK' werden übertragen
- Verwendet createAllSpecialPricesOfProduct() Methode
- Alte Special Prices werden vorher gelöscht
3. Export-Felder-Gruppen
Die Übertragung wird durch Export-Felder-Gruppen gesteuert:
| Export-Gruppe | Beschreibung | Übertragene Shopware 6-Felder |
|---|---|---|
| ARTIKEL_DATA | Artikeldaten | name, ean, weight, width, height, length, isCloseout, markAsTopseller, manufacturerNumber, manufacturerId |
| BASE_PRICE_CALCULATION | Grundpreis-Berechnung | referenceUnit, purchaseUnit, packUnit, unitId |
| PRICE | Preis | price[], taxId, purchasePrices[] |
| RRP | UVP/Listenpreis | price[].listPrice |
| STOCK | Bestand | stock |
| SEO | SEO-Felder | metaTitle, metaDescription, keywords |
| SHIPPING | Versand | shippingFree, restockTime, deliveryTimeId |
| CATEGORY | Kategorien | categories[] |
| ARTIKEL_ATTRIBUTE | Artikelattribute | properties[], customFields[] |
| DESCRIPTION | Beschreibung | Übersetzungen |
| IMAGE | Bilder | media[] (nur wenn refreshPictures = true) |
| VARIANT | Varianten | Alle Varianten-Felder |
| CUSTOMER_GROUP_PRICE | Kundenpreise | Special Prices für Varianten |
4. Besondere Verhaltensweisen
4.1 API-Operationen
Shopware 6 verwendet verschiedene API-Endpunkte:
- Produkt-Erstellung: POST /api/product
- Produkt-Update: PATCH /api/product/{id}
- Varianten-Update: PATCH /api/product/{variantId}
- Sync-Operationen: POST /api/_action/sync (für Custom Fields, Properties)
4.2 Varianten-Verwaltung
- Varianten werden über
setVariantData()erstellt/aktualisiert - Varianten-Optionen werden als Properties übertragen
- Varianten-Struktur wird über Property Groups definiert
4.3 Bild-Upload
- Bilder werden über
createProductImages()hochgeladen - Variantenbilder werden separat pro Variante übertragen
- Hauptbilder werden aus Variantenbildern ausgeschlossen
4.4 Custom Fields
- Custom Fields werden über
_action/syncAPI übertragen - Übersetzungen werden separat pro Sprache übertragen
- Multi-Select wird unterstützt
4.5 Sichtbarkeit
- Produkte werden automatisch in konfigurierten Sales Channels sichtbar gemacht
- Wird über
manageProductVisibility()verwaltet
4.6 Optionen-Upload
- Fehlende Varianten-Optionen werden vor dem Material-Upload hochgeladen
- Verwendet
uploadMissingOptions()Methode
5. Zusammenfassung: Vollständige Feld-Mappings
Produkt-Ebene
| Shopware 6 Feld | reybex Feld | Export-Gruppe | Hinweise |
|---|---|---|---|
productNumber |
material.sku |
Immer | - |
name |
material.name |
ARTIKEL_DATA | - |
ean |
material.gtin |
ARTIKEL_DATA | - |
active |
Immer true |
Immer | - |
weight |
material.netWeight |
ARTIKEL_DATA | - |
width |
material.width * 10 |
ARTIKEL_DATA | In mm |
height |
material.height * 10 |
ARTIKEL_DATA | In mm |
length |
material.length * 10 |
ARTIKEL_DATA | In mm |
isCloseout |
material.isOnlySellableWithPositiveStock |
ARTIKEL_DATA | - |
markAsTopseller |
material.isHighlighted |
ARTIKEL_DATA | - |
manufacturerNumber |
material.vendorMatCode oder manufacturer.number |
ARTIKEL_DATA | - |
manufacturerId |
material.brand.name |
ARTIKEL_DATA | Als ID |
referenceUnit |
material.referenceUnit |
BASE_PRICE_CALCULATION | - |
purchaseUnit |
material.purchaseUnit |
BASE_PRICE_CALCULATION | - |
packUnit |
material.packUnit |
BASE_PRICE_CALCULATION | - |
unitId |
material.basePriceUnit |
BASE_PRICE_CALCULATION | Als ID |
price[] |
material.price.value |
PRICE | - |
price[].listPrice |
material.price.rrp |
PRICE + RRP | - |
taxId |
material.vatRate |
PRICE | Als Tax ID |
purchasePrices[] |
material.purPrice |
PRICE | - |
stock |
material.stock.value |
STOCK | - |
metaTitle |
material.metaTitle |
SEO | - |
metaDescription |
material.metaDescription |
SEO | - |
keywords |
material.keyWord |
SEO | - |
shippingFree |
material.isShippingFree |
SHIPPING | - |
restockTime |
material.deliveryDays |
SHIPPING | - |
deliveryTimeId |
material.shipping.maxProcessDays |
SHIPPING | Als ID |
categories[] |
material.categories[].id |
CATEGORY | - |
properties[] |
material.propertyValues[] |
ARTIKEL_ATTRIBUTE | Als Option IDs |
customFields[] |
material.customFields[] |
ARTIKEL_ATTRIBUTE | - |
media[] |
material.images[] |
IMAGE | Nur wenn refreshPictures = true |
translations[] |
material.translations[] |
DESCRIPTION | Pro Sprache |
Varianten-Ebene
| Shopware 6 Feld | reybex Feld | Export-Gruppe | Hinweise |
|---|---|---|---|
productNumber |
variant.sku |
VARIANT | - |
ean |
variant.gtin |
VARIANT | - |
stock |
variant.stock |
VARIANT | - |
price[] |
variant.price.value |
VARIANT | - |
price[].listPrice |
variant.price.rrp |
VARIANT + RRP | - |
purchaseUnit |
variant.purchaseUnit |
VARIANT | - |
media[] |
variant.images[] |
VARIANT | Nur wenn refreshPictures = true |
prices[] (special) |
variant.prices[] (nicht EK) |
CUSTOMER_GROUP_PRICE | - |
6. API-Endpunkte
- Produkt-Erstellung:
POST /api/product - Produkt-Update:
PATCH /api/product/{id} - Varianten-Update:
PATCH /api/product/{variantId} - Sync-Operationen:
POST /api/_action/sync - Sichtbarkeit:
POST /api/search/product/{id}/visibilities
Version: 1.0
Erstellt: 2024
Zielgruppe: Externe Nutzer ohne reybex-Kenntnisse