Feld-Mapping Dokumentation: reybex → Cosmoshop
Übersicht
Diese Dokumentation beschreibt, welche Felder von reybex nach Cosmoshop übertragen werden und wie sie gemappt werden. Die Übertragung erfolgt über die Cosmoshop SOAP API (XML-Format).
⚠️ WICHTIGER HINWEIS
Diese Dokumentation unterliegt kontinuierlichen Änderungen.
Die Integration zwischen reybex und Cosmoshop 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 Cosmoshop-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 Cosmoshop übertragen werden. Für jedes Cosmoshop-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 Cosmoshop Article)
- MaterialVariant: Eine Variante eines Artikels in reybex (z.B. Größe, Farbe)
- MaterialMarktplace: Marktplatz-spezifische Einstellungen für einen Artikel
Cosmoshop-Produktstruktur
- Article: Das Hauptprodukt in Cosmoshop
- Language Content: Mehrsprachige Inhalte
- Media: Produktbilder
1. Produkt-Felder (Article Level)
Die folgenden Felder werden auf Produktebene in Cosmoshop übertragen:
1.1 Basis-Informationen
| Cosmoshop Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.articleNumber |
material.sku |
Artikelnummer | Immer |
article.ean |
material.gtin |
EAN/GTIN | Export-Gruppe: ARTIKEL_DATA |
article.asin |
material.asin |
ASIN | Export-Gruppe: ARTIKEL_DATA |
article.baseUnitId |
Immer 1 |
Basiseinheit-ID | Export-Gruppe: ARTIKEL_DATA |
article.ignoreStockInVariants |
Immer 0 |
Bestand in Varianten ignorieren | Export-Gruppe: ARTIKEL_DATA |
article.maxOrderQuantity |
Immer 100 |
Maximale Bestellmenge | Export-Gruppe: ARTIKEL_DATA |
article.download |
Immer 0 |
Download | Export-Gruppe: ARTIKEL_DATA |
article.displayStock |
Immer 'default' |
Bestandsanzeige | Export-Gruppe: ARTIKEL_DATA |
article.liveshoppingActive |
Immer 0 |
Live-Shopping aktiv | Export-Gruppe: ARTIKEL_DATA |
article.productGroupId |
Immer 0 |
Produktgruppen-ID | Export-Gruppe: ARTIKEL_DATA |
article.notActive |
Immer 0 |
Inaktiv | Export-Gruppe: ARTIKEL_DATA |
article.requestable |
material.isRequestable ? '1' : '0' |
Bestellbar | Export-Gruppe: ARTIKEL_DATA |
article.hideArticleOutOfStock |
material.isOnlySellableWithPositiveStock ? '1' : '0' |
Bei Bestand 0 ausblenden | Export-Gruppe: ARTIKEL_DATA |
article.stocking |
material.stock.value |
Bestand | Export-Gruppe: ARTIKEL_DATA |
article.onHomepage |
Immer 1 |
Auf Startseite | Export-Gruppe: ARTIKEL_DATA |
article.erpExported |
Immer 0 |
ERP exportiert | Export-Gruppe: ARTIKEL_DATA |
article.vatId |
material.vatRate (gesucht in vatRates) |
MwSt.-ID | Export-Gruppe: ARTIKEL_DATA |
article.packagingUnit |
Immer 1 |
Verpackungseinheit | Export-Gruppe: ARTIKEL_DATA |
article.grossWeight |
material.grossWeight |
Bruttogewicht | Export-Gruppe: ARTIKEL_DATA |
article.netWeight |
material.netWeight |
Nettogewicht | Export-Gruppe: ARTIKEL_DATA |
article.condition |
Immer 0 |
Zustand | Export-Gruppe: ARTIKEL_DATA |
article.manufacturer |
material.brand.name |
Hersteller | Export-Gruppe: ARTIKEL_DATA |
article.liveshoppingStart |
new Date() |
Live-Shopping Start | Export-Gruppe: ARTIKEL_DATA |
article.changed |
new Date() |
Geändert | Export-Gruppe: ARTIKEL_DATA |
1.2 Kategorien
| Cosmoshop Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.categories.item[].categoryId |
material.categories[].id |
Kategorien (als IDs) | Export-Gruppe: CATEGORY |
1.3 Preise
| Cosmoshop Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.recommendedRetailPrice |
material.price.rrp |
UVP/Listenpreis | Export-Gruppe: PRICE |
article.prices.item.price |
material.price.value |
Verkaufspreis | Export-Gruppe: PRICE |
article.prices.item.currency |
material.price.currency |
Währung | Export-Gruppe: PRICE |
article.prices.item.percent |
Immer 0 |
Prozent | Export-Gruppe: PRICE |
article.prices.item.filter |
Immer 'default' |
Filter | Export-Gruppe: PRICE |
article.prices.item.scaleId |
Immer 1 |
Skalen-ID | Export-Gruppe: PRICE |
article.prices.item.auto |
Immer 0 |
Automatisch | Export-Gruppe: PRICE |
article.prices.item.scale |
Immer 1 |
Skala | Export-Gruppe: PRICE |
article.prices.item.displayMethod |
Immer 'brutto' |
Anzeigemethode | Export-Gruppe: PRICE |
article.priceSuggest |
Immer 0 |
Preisvorschlag | Export-Gruppe: PRICE |
article.specialPrice |
Immer 0 |
Sonderpreis | Export-Gruppe: PRICE |
1.4 Bestand
| Cosmoshop Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.stock.actual |
material.stock.value |
Aktueller Bestand | Export-Gruppe: STOCK |
article.stock.timestamp |
new Date() |
Zeitstempel | Export-Gruppe: STOCK |
article.stock.ignore |
Immer 0 |
Ignorieren | Export-Gruppe: STOCK |
article.stock.minStock |
material.minOrderQuantity |
Mindestbestand | Export-Gruppe: STOCK |
1.5 Beschreibung (mehrsprachig)
| Cosmoshop Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.languageContent.item[].languageCode |
material.translations[].language |
Sprachcode | Export-Gruppe: DESCRIPTION |
article.languageContent.item[].name |
material.name oder material.translations[].name |
Produktname | Export-Gruppe: DESCRIPTION |
article.languageContent.item[].description |
material.detailDescription oder material.translations[].description (als Text) |
Vollständige Beschreibung | Export-Gruppe: DESCRIPTION |
article.languageContent.item[].descriptionShort |
material.description |
Kurzbeschreibung | Export-Gruppe: DESCRIPTION |
article.languageContent.item[].descriptionHtml |
material.detailDescription oder material.translations[].detailDescription |
HTML-Beschreibung | Export-Gruppe: DESCRIPTION |
article.languageContent.item[].urlkey |
material.translations[].urlkey (normalisiert) |
URL-Schlüssel | Export-Gruppe: DESCRIPTION |
article.languageContent.item[].imagesAltText |
material.translations[].imagesAltText |
Bild-Alt-Text | Export-Gruppe: DESCRIPTION |
article.languageContent.item[].descriptionIsPlain |
Immer 0 |
Beschreibung als Plain-Text | Export-Gruppe: DESCRIPTION |
Hinweise:
- description wird mit Jsoup als Text extrahiert
- urlkey wird normalisiert (Umlaute ersetzt, Leerzeichen durch Bindestriche)
1.6 SEO-Felder (mehrsprachig)
| Cosmoshop Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.seo.title.item[].languageCode |
material.translations[].language (nur "de") |
SEO-Titel (Sprachcode) | Export-Gruppe: SEO |
article.seo.title.item[].value |
material.translations[].metaTitle (nur "de") |
SEO-Titel | Export-Gruppe: SEO |
article.seo.description.item[].languageCode |
material.translations[].language (nur "de") |
SEO-Beschreibung (Sprachcode) | Export-Gruppe: SEO |
article.seo.description.item[].value |
material.translations[].metaDescription (nur "de") |
SEO-Beschreibung | Export-Gruppe: SEO |
article.seo.keywords.item[].languageCode |
material.translations[].language (nur "de") |
SEO-Schlüsselwörter (Sprachcode) | Export-Gruppe: SEO |
article.seo.keywords.item[].value |
material.translations[].keyWord (nur "de") |
SEO-Schlüsselwörter | Export-Gruppe: SEO |
Hinweise:
- SEO-Felder werden nur für Sprache "de" übertragen
1.7 Verteilung
| Cosmoshop Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.distributionInfo.avgDeliveryTime |
Immer '' |
Durchschnittliche Lieferzeit | Export-Gruppe: ARTIKEL_DATA |
article.distributionInfo.salesPerDay |
Immer '' |
Verkäufe pro Tag | Export-Gruppe: ARTIKEL_DATA |
article.distributionInfo.articleNumber |
material.manufacturer.number |
Hersteller-Artikelnummer | Export-Gruppe: ARTIKEL_DATA |
article.distributionInfo.distributorId |
Immer 0 |
Händler-ID | Export-Gruppe: ARTIKEL_DATA |
article.distributionInfo.price |
material.purPrice |
Einkaufspreis | Export-Gruppe: ARTIKEL_DATA |
article.distributionInfo.deliveryDate |
Leer | Lieferdatum | Export-Gruppe: ARTIKEL_DATA |
1.8 Bilder
| Cosmoshop Feld | reybex Feld | Beschreibung | Bedingung |
|---|---|---|---|
article.media.item[] |
material.images[] |
Produktbilder | Export-Gruppe: IMAGE + refreshPictures = true |
Hinweise:
- Bilder werden nur übertragen, wenn refreshPictures = true gesetzt ist
- Bilder werden in 3 Größen erstellt: preview (160px), normal (500px), detail (800px)
- Alte Bilder werden vor dem Upload gelöscht (deleteImages())
- Format: {type: 'image', id: 0, preview: {...}, normal: {...}, detail: {...}}
2. Export-Felder-Gruppen
Die Übertragung wird durch Export-Felder-Gruppen gesteuert:
| Export-Gruppe | Beschreibung | Übertragene Cosmoshop-Felder |
|---|---|---|
| ARTIKEL_DATA | Artikeldaten | ean, asin, baseUnitId, ignoreStockInVariants, maxOrderQuantity, download, displayStock, liveshoppingActive, productGroupId, notActive, requestable, hideArticleOutOfStock, stocking, onHomepage, erpExported, vatId, packagingUnit, grossWeight, netWeight, condition, manufacturer, liveshoppingStart, changed, distributionInfo |
| DESCRIPTION | Beschreibung | languageContent.item[] (mehrsprachig) |
| SEO | SEO-Felder | seo.title, seo.description, seo.keywords (nur "de") |
| PRICE | Preis | recommendedRetailPrice, prices.item[] |
| STOCK | Bestand | stock.actual, stock.timestamp, stock.ignore, stock.minStock |
| CATEGORY | Kategorien | categories.item[].categoryId |
| IMAGE | Bilder | media.item[] (nur wenn refreshPictures = true) |
3. Besondere Verhaltensweisen
3.1 SOAP API
Cosmoshop verwendet SOAP API für alle Operationen:
- Produkt-Upload: setArticles (SOAP)
- Bild-Upload: setArticleMedia (SOAP)
- Bild-Löschung: deleteArticleMedia (SOAP)
3.2 Session-Management
- Session wird über
loginSOAP-Methode erstellt - Session-Daten:
shopId,sessionId,signature,time - Verwendet
getSessionData()Methode
3.3 Mehrsprachigkeit
- Alle textbasierten Felder sind mehrsprachig
- Format:
[{languageCode: "de", name: "Text", description: "Text", ...}] - SEO-Felder werden nur für Sprache "de" übertragen
3.4 Bild-Verarbeitung
- Bilder werden in 3 Größen erstellt: preview (160px), normal (500px), detail (800px)
- Bilder werden als Base64 kodiert übertragen
- Alte Bilder werden vor dem Upload gelöscht
- Verwendet
createImages()undresizeImage()Methoden
3.5 MwSt.-Verwaltung
- MwSt.-Sätze werden über
getVatRatesFromMarktplace()gesucht vatIdwird anhandvatRategesucht
4. Zusammenfassung: Vollständige Feld-Mappings
Produkt-Ebene
| Cosmoshop Feld | reybex Feld | Export-Gruppe | Hinweise |
|---|---|---|---|
articleNumber |
material.sku |
Immer | - |
ean |
material.gtin |
ARTIKEL_DATA | - |
asin |
material.asin |
ARTIKEL_DATA | - |
baseUnitId |
Immer 1 |
ARTIKEL_DATA | - |
ignoreStockInVariants |
Immer 0 |
ARTIKEL_DATA | - |
maxOrderQuantity |
Immer 100 |
ARTIKEL_DATA | - |
download |
Immer 0 |
ARTIKEL_DATA | - |
displayStock |
Immer 'default' |
ARTIKEL_DATA | - |
liveshoppingActive |
Immer 0 |
ARTIKEL_DATA | - |
productGroupId |
Immer 0 |
ARTIKEL_DATA | - |
notActive |
Immer 0 |
ARTIKEL_DATA | - |
requestable |
material.isRequestable ? '1' : '0' |
ARTIKEL_DATA | - |
hideArticleOutOfStock |
material.isOnlySellableWithPositiveStock ? '1' : '0' |
ARTIKEL_DATA | - |
stocking |
material.stock.value |
ARTIKEL_DATA | - |
onHomepage |
Immer 1 |
ARTIKEL_DATA | - |
erpExported |
Immer 0 |
ARTIKEL_DATA | - |
vatId |
material.vatRate (gesucht) |
ARTIKEL_DATA | - |
packagingUnit |
Immer 1 |
ARTIKEL_DATA | - |
grossWeight |
material.grossWeight |
ARTIKEL_DATA | - |
netWeight |
material.netWeight |
ARTIKEL_DATA | - |
condition |
Immer 0 |
ARTIKEL_DATA | - |
manufacturer |
material.brand.name |
ARTIKEL_DATA | - |
liveshoppingStart |
new Date() |
ARTIKEL_DATA | - |
changed |
new Date() |
ARTIKEL_DATA | - |
categories.item[].categoryId |
material.categories[].id |
CATEGORY | - |
recommendedRetailPrice |
material.price.rrp |
PRICE | - |
prices.item.price |
material.price.value |
PRICE | - |
prices.item.currency |
material.price.currency |
PRICE | - |
stock.actual |
material.stock.value |
STOCK | - |
stock.timestamp |
new Date() |
STOCK | - |
stock.ignore |
Immer 0 |
STOCK | - |
stock.minStock |
material.minOrderQuantity |
STOCK | - |
languageContent.item[] |
material.translations[] |
DESCRIPTION | Mehrsprachig |
seo.title.item[] |
material.translations[].metaTitle (nur "de") |
SEO | - |
seo.description.item[] |
material.translations[].metaDescription (nur "de") |
SEO | - |
seo.keywords.item[] |
material.translations[].keyWord (nur "de") |
SEO | - |
distributionInfo.* |
material.manufacturer.number, material.purPrice |
ARTIKEL_DATA | - |
media.item[] |
material.images[] |
IMAGE | Nur wenn refreshPictures = true |
5. API-Endpunkte
- Produkt-Upload:
setArticles(SOAP) - Bild-Upload:
setArticleMedia(SOAP) - Bild-Löschung:
deleteArticleMedia(SOAP) - Login:
login(SOAP) - Kategorien:
getCategories(SOAP) - MwSt.-Sätze: Separate API-Calls
Version: 1.0
Erstellt: 2024
Zielgruppe: Externe Nutzer ohne reybex-Kenntnisse