Feld-Mapping Dokumentation: reybex → Shopware
Übersicht
Diese Dokumentation beschreibt, welche Felder von reybex nach Shopware übertragen werden und wie sie gemappt werden. Die Übertragung erfolgt über die Shopware REST API (/api/articles/).
⚠️ WICHTIGER HINWEIS
Diese Dokumentation unterliegt kontinuierlichen Änderungen.
Die Integration zwischen reybex und Shopware 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-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 übertragen werden. Für jedes Shopware-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 Article)
- MaterialVariant: Eine Variante eines Artikels in reybex (z.B. Größe, Farbe) - entspricht Shopware Article Detail
- MaterialMarktplace: Marktplatz-spezifische Einstellungen für einen Artikel
Shopware-Artikelstruktur
- Article: Das Hauptprodukt in Shopware
- Article Detail: Eine Variante des Produkts in Shopware
- Main Detail: Die Hauptvariante des Artikels
- Configurator Set: Varianten-Konfiguration (Optionen)
1. Produkt-Felder (Article Level)
Die folgenden Felder werden auf Artikelebene in Shopware übertragen:
1.1 Basis-Informationen
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.number |
material.sku |
Artikelnummer | Export-Gruppe: ARTIKEL_DATA |
article.name |
material.name |
Produktname | Export-Gruppe: ARTIKEL_DATA |
article.active |
material.isMarketplaceActive |
Aktiv-Status | Export-Gruppe: ARTIKEL_DATA |
article.tax |
material.vatRate |
Steuersatz | Export-Gruppe: ARTIKEL_DATA |
article.supplier |
material.brand.name |
Lieferant/Marke | Export-Gruppe: ARTIKEL_DATA |
article.highlight |
material.isHighlighted |
Hervorhebung | Export-Gruppe: ARTIKEL_DATA |
1.2 Hauptvariante (Main Detail)
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
mainDetail.ean |
material.gtin |
EAN/GTIN | Export-Gruppe: ARTIKEL_DATA |
mainDetail.weight |
material.netWeight |
Gewicht | Export-Gruppe: ARTIKEL_DATA |
mainDetail.width |
material.width |
Breite | Export-Gruppe: ARTIKEL_DATA |
mainDetail.len |
material.length |
Länge | Export-Gruppe: ARTIKEL_DATA |
mainDetail.height |
material.height |
Höhe | Export-Gruppe: ARTIKEL_DATA |
mainDetail.shippingTime |
material.deliveryDays |
Lieferzeit | Export-Gruppe: ARTIKEL_DATA |
mainDetail.active |
material.isMarketplaceActive |
Aktiv-Status | Export-Gruppe: ARTIKEL_DATA |
mainDetail.purchaseUnit |
material.purchaseUnit |
Einkaufseinheit | Export-Gruppe: ARTIKEL_DATA |
mainDetail.referenceUnit |
material.referenceUnit |
Referenzeinheit | Export-Gruppe: ARTIKEL_DATA |
mainDetail.packUnit |
material.packUnit |
Verpackungseinheit | Export-Gruppe: ARTIKEL_DATA |
mainDetail.unit |
material.basePriceUnit |
Grundpreis-Einheit | Export-Gruppe: ARTIKEL_DATA (wenn vorhanden) |
mainDetail.supplierNumber |
material.manufacturer.number |
Herstellernummer | Export-Gruppe: ARTIKEL_DATA (wenn vorhanden) |
mainDetail.shippingFree |
material.isShippingFree |
Versandkostenfrei | Export-Gruppe: ARTIKEL_DATA (wenn vorhanden) |
mainDetail.lastStock |
material.isOnlySellableWithPositiveStock |
Letzter Bestand | Export-Gruppe: ARTIKEL_DATA (wenn vorhanden) |
mainDetail.inStock |
material.stock.value |
Bestand | Export-Gruppe: STOCK |
mainDetail.purchasePrice |
material.purPrice |
Einkaufspreis | Export-Gruppe: PRICE |
mainDetail.prices |
material.prices |
Preise | Export-Gruppe: PRICE |
Hinweise:
- mainDetail.unit Format: {unit: code, name: name}
- mainDetail.shippingFree = 1 wenn true, 0 wenn false
- mainDetail.lastStock = 1 wenn true, 0 wenn false
1.3 Beschreibung
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.descriptionLong |
material.detailDescription |
Vollständige Beschreibung | Export-Gruppe: ARTIKEL_DATA |
1.4 SEO-Felder
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.metaTitle |
material.metaTitle |
SEO-Titel | Export-Gruppe: SEO |
article.keywords |
material.keyWord |
Suchbegriffe | Export-Gruppe: SEO |
article.description |
material.metaDescription |
SEO-Beschreibung | Export-Gruppe: SEO (nur wenn ARTIKEL_DATA auch exportiert wird) |
1.5 Übersetzungen
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
translations[].data.name |
material.translations[].name |
Übersetzter Name | Export-Gruppe: ARTIKEL_DATA |
translations[].data.metaTitle |
material.translations[].metaTitle |
Übersetzter SEO-Titel | Export-Gruppe: ARTIKEL_DATA |
translations[].data.description |
material.translations[].description |
Übersetzte Beschreibung | Export-Gruppe: ARTIKEL_DATA |
translations[].data.descriptionLong |
material.translations[].detailDescription |
Übersetzte Langbeschreibung | Export-Gruppe: ARTIKEL_DATA |
translations[].data.keywords |
material.translations[].keyWord |
Übersetzte Suchbegriffe | Export-Gruppe: ARTIKEL_DATA |
Hinweise:
- Übersetzungen werden pro Shop/Sprache übertragen
- Format: {type: "article", key: sku, useNumberAsId: true, shopId: X, data: {...}}
1.6 Bilder
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.images[] |
material.images[] |
Produktbilder | Export-Gruppe: IMAGE + refreshPictures = true |
article.images[] |
material.attributeImages[] |
Attribut-basierte Bilder | Export-Gruppe: IMAGE + refreshPictures = true |
article.images[] |
material.variants[].images[] |
Variantenbilder | Export-Gruppe: IMAGE + refreshPictures = true |
Hinweise:
- Bilder werden nur übertragen, wenn refreshPictures = true gesetzt ist
- Format: {link: url, main: 1|2, name: fileName, description: comment}
- main = 1 für Hauptbild, main = 2 für weitere Bilder
- Variantenbilder haben options: [[[name: identifyingOption]]]
- Nach Bild-Upload wird /api/generateArticleImages/ aufgerufen
1.7 Kategorien
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.categories[] |
material.categories[].id |
Kategorien (als IDs) | Export-Gruppe: CATEGORY |
Hinweise:
- Format: [{id: categoryId1}, {id: categoryId2}, ...]
- Nur Kategorien, die im Shop vorhanden sind, werden übertragen
1.8 Eigenschaften (Properties)
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.filterGroupId |
material.propertyGroup.name |
Eigenschaftsgruppe | Export-Gruppe: ARTIKEL_DATA (wenn vorhanden) |
article.propertyValues |
material.propertyValues |
Eigenschaftswerte | Export-Gruppe: ARTIKEL_DATA (wenn vorhanden) |
1.9 Kundengruppen
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.customerGroups[] |
material.excludedCustomerGroups |
Ausgeschlossene Kundengruppen | Export-Gruppe: ARTIKEL_DATA (wenn vorhanden) |
Hinweise:
- Format: [{id: groupId1}, {id: groupId2}, ...]
- Werden aus Kundengruppen-Schlüsseln in IDs konvertiert
1.10 Varianten-Konfiguration
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.configuratorSet |
material.variants.items[].nameValuePairs |
Varianten-Konfiguration | Export-Gruppe: VARIANT |
Hinweise:
- Format: {groups: [{name: "Größe", options: [{name: "L"}, {name: "XL"}]}, ...]}
- variantConfiguratorType wird übertragen, wenn vorhanden
2. Varianten-Felder (Article Detail Level)
Die folgenden Felder werden auf Variantenebene in Shopware übertragen:
2.1 Basis-Informationen
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
detail.id |
variant.id |
Varianten-ID (bei Update) | Export-Gruppe: VARIANT |
detail.number |
variant.sku |
Varianten-SKU | Export-Gruppe: VARIANT |
detail.ean |
variant.gtin |
Varianten-EAN/GTIN | Export-Gruppe: VARIANT |
detail.isMain |
variant.sku == material.sku |
Hauptvariante | Export-Gruppe: VARIANT |
detail.active |
Immer 1 | Aktiv-Status | Export-Gruppe: VARIANT |
detail.position |
variant.order |
Position/Reihenfolge | Export-Gruppe: VARIANT |
detail.additionaltext |
variant.name |
Zusätzlicher Text | Export-Gruppe: VARIANT |
2.2 Bestand
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
detail.inStock |
variant.stock |
Variantenbestand | Export-Gruppe: VARIANT |
detail.lastStock |
material.isOnlySellableWithPositiveStock |
Letzter Bestand | Export-Gruppe: VARIANT (wenn vorhanden) |
detail.shippingFree |
material.isShippingFree |
Versandkostenfrei | Export-Gruppe: VARIANT (wenn vorhanden) |
detail.shippingTime |
material.deliveryDays |
Lieferzeit | Export-Gruppe: VARIANT |
2.3 Preise
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
detail.prices[] |
variant.prices[] |
Variantenpreise | Export-Gruppe: VARIANT |
Preis-Format:
- {customerGroupKey: "EK", price: X, pseudoPrice: Y, from: 1, to: 0}
- pseudoPrice = variant.price.rrp (UVP)
- from und to für Mengenrabatte
2.4 Varianten-Optionen
| Shopware Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
detail.configuratorOptions[] |
variant.nameValuePairs[] |
Varianten-Optionen | Export-Gruppe: VARIANT |
Hinweise:
- Format: [{group: "Größe", option: "L"}, {group: "Farbe", option: "Rot"}]
- Wird aus nameValuePairs generiert
2.5 Varianten-Löschung
Varianten, die in Shopware existieren, aber nicht mehr in reybex vorhanden sind, werden auf active = 0 gesetzt (deaktiviert).
3. Export-Felder-Gruppen
Die Übertragung wird durch Export-Felder-Gruppen gesteuert:
| Export-Gruppe | Beschreibung | Übertragene Shopware-Felder |
|---|---|---|
| ARTIKEL_DATA | Artikeldaten | number, name, active, tax, supplier, mainDetail.*, descriptionLong, Übersetzungen, Bilder, Eigenschaften |
| DESCRIPTION | Beschreibung | descriptionLong |
| PRICE | Preis | mainDetail.purchasePrice, mainDetail.prices, detail.prices |
| STOCK | Bestand | mainDetail.inStock, detail.inStock |
| IMAGE | Bilder | images[] (nur wenn refreshPictures = true) |
| CATEGORY | Kategorien | categories[] |
| SEO | SEO-Felder | metaTitle, keywords, description |
| VARIANT | Varianten | Alle Varianten-Felder, configuratorSet |
4. Besondere Verhaltensweisen
4.1 Batch-Operationen
Shopware verwendet Batch-Operationen für Artikel-Updates:
- Alle Artikel werden in batchBody Array gesammelt
- API-Endpoint: /api/articles/ (PUT)
- Übersetzungen werden separat über /api/translations/ übertragen
4.2 Varianten-Verwaltung
- Varianten werden über
configuratorSetkonfiguriert - Bestehende Varianten werden mit neuen verglichen
- Nicht mehr vorhandene Varianten werden deaktiviert (
active = 0) - Hauptvariante wird automatisch identifiziert (SKU = Hauptartikel-SKU)
4.3 Bild-Generierung
Nach dem Upload von Variantenbildern wird /api/generateArticleImages/{sku} aufgerufen, um die Bild-URLs zu aktualisieren.
4.4 Shop-spezifische Übersetzungen
Übersetzungen werden pro Shop/Sprache übertragen:
- Jeder Shop hat eine storeId
- Übersetzungen werden nur für Shops übertragen, die in shopListByMainShop vorhanden sind
5. Zusammenfassung: Vollständige Feld-Mappings
Artikel-Ebene
| Shopware Feld | reybex Feld | Export-Gruppe | Hinweise |
|---|---|---|---|
number |
material.sku |
ARTIKEL_DATA | - |
name |
material.name |
ARTIKEL_DATA | - |
active |
material.isMarketplaceActive |
ARTIKEL_DATA | - |
tax |
material.vatRate |
ARTIKEL_DATA | - |
supplier |
material.brand.name |
ARTIKEL_DATA | - |
highlight |
material.isHighlighted |
ARTIKEL_DATA | - |
descriptionLong |
material.detailDescription |
ARTIKEL_DATA | - |
metaTitle |
material.metaTitle |
SEO | - |
keywords |
material.keyWord |
SEO | - |
description |
material.metaDescription |
SEO | Nur wenn ARTIKEL_DATA auch exportiert wird |
categories[] |
material.categories[].id |
CATEGORY | - |
images[] |
material.images[] |
IMAGE | Nur wenn refreshPictures = true |
filterGroupId |
material.propertyGroup.name |
ARTIKEL_DATA | - |
propertyValues |
material.propertyValues |
ARTIKEL_DATA | - |
customerGroups[] |
material.excludedCustomerGroups |
ARTIKEL_DATA | - |
configuratorSet |
material.variants.items[].nameValuePairs |
VARIANT | - |
translations[] |
material.translations[] |
ARTIKEL_DATA | Pro Shop/Sprache |
Hauptvariante (Main Detail)
| Shopware Feld | reybex Feld | Export-Gruppe | Hinweise |
|---|---|---|---|
mainDetail.ean |
material.gtin |
ARTIKEL_DATA | - |
mainDetail.weight |
material.netWeight |
ARTIKEL_DATA | - |
mainDetail.width |
material.width |
ARTIKEL_DATA | - |
mainDetail.len |
material.length |
ARTIKEL_DATA | - |
mainDetail.height |
material.height |
ARTIKEL_DATA | - |
mainDetail.shippingTime |
material.deliveryDays |
ARTIKEL_DATA | - |
mainDetail.active |
material.isMarketplaceActive |
ARTIKEL_DATA | - |
mainDetail.purchaseUnit |
material.purchaseUnit |
ARTIKEL_DATA | - |
mainDetail.referenceUnit |
material.referenceUnit |
ARTIKEL_DATA | - |
mainDetail.packUnit |
material.packUnit |
ARTIKEL_DATA | - |
mainDetail.unit |
material.basePriceUnit |
ARTIKEL_DATA | - |
mainDetail.supplierNumber |
material.manufacturer.number |
ARTIKEL_DATA | - |
mainDetail.shippingFree |
material.isShippingFree |
ARTIKEL_DATA | 1 oder 0 |
mainDetail.lastStock |
material.isOnlySellableWithPositiveStock |
ARTIKEL_DATA | 1 oder 0 |
mainDetail.inStock |
material.stock.value |
STOCK | - |
mainDetail.purchasePrice |
material.purPrice |
PRICE | - |
mainDetail.prices |
material.prices |
PRICE | - |
Varianten-Ebene (Detail)
| Shopware Feld | reybex Feld | Export-Gruppe | Hinweise |
|---|---|---|---|
detail.id |
variant.id |
VARIANT | Nur bei Update |
detail.number |
variant.sku |
VARIANT | - |
detail.ean |
variant.gtin |
VARIANT | - |
detail.isMain |
variant.sku == material.sku |
VARIANT | - |
detail.active |
Immer 1 | VARIANT | - |
detail.position |
variant.order |
VARIANT | - |
detail.additionaltext |
variant.name |
VARIANT | - |
detail.inStock |
variant.stock |
VARIANT | - |
detail.lastStock |
material.isOnlySellableWithPositiveStock |
VARIANT | 1 oder 0 |
detail.shippingFree |
material.isShippingFree |
VARIANT | 1 oder 0 |
detail.shippingTime |
material.deliveryDays |
VARIANT | - |
detail.prices[] |
variant.prices[] |
VARIANT | - |
detail.configuratorOptions[] |
variant.nameValuePairs[] |
VARIANT | - |
6. API-Endpunkte
- Artikel-Update:
PUT /api/articles/(Batch) - Übersetzungen:
PUT /api/translations/{sku}?useNumberAsId=true - Bild-Generierung:
PUT /api/generateArticleImages/{sku}
Version: 1.0
Erstellt: 2024
Zielgruppe: Externe Nutzer ohne reybex-Kenntnisse