Ein B2B-Warenkorb unterscheidet sich auf architektonischer und prozessualer Ebene fundamental von einer klassischen B2C-Transaktion. Während Endkonsumenten zumeist eine überschaubare Anzahl an Artikeln einzeln in den Warenkorb legen, verarbeiten Einkäufer in Shopware 6 nicht selten hunderte Positionen simultan. Dies geschieht typischerweise über dedizierte Schnellbestellmasken oder den direkten Upload von CSV-Dateien mit Artikelnummern und Mengen. Kommen dann noch mehrstufige Budgetfreigaben und unternehmensspezifische Einkaufshierarchien hinzu, entsteht ein hochkomplexes Datenkonstrukt. Die manuelle Übertragung solcher Aufträge in ein ERP-System ist nicht nur ineffizient, sondern ein Garant für kostspielige Übertragungsfehler.
Als Entwickler, der sich tagtäglich mit der Datenintegrität zwischen E-Commerce-Plattformen und ERP-Backends befasst, betrachte ich die Schnittstelle als das zentrale Nervensystem dieser Infrastruktur. Die offizielle OEM-Anbindung für SelectLine ist exakt für solche Belastungsspitzen und Logik-Verschachtelungen konzipiert. Sie übernimmt die Aufgabe, das asynchrone JSON-Payload eines komplexen Shopware-Auftrags bitgenau und fehlerfrei in die strikte relationale Datenbanklogik der SelectLine Warenwirtschaft zu übersetzen.
Schnellbestellungen per CSV: Wenn Datenmassen auf die ERP-Logik treffen
Die Implementierung einer Schnellbestellfunktion via CSV-Upload in Shopware 6 optimiert die User Experience für den B2B-Einkäufer enorm. Anstatt sich durch Kategoriestrukturen zu navigieren, lädt das System eine rohe Liste mit oft hunderten product_number– und quantity-Werten in den Speicher. Das Shopware-Frontend validiert diese Eingaben gegen den aktuellen Index, berechnet individuelle B2B-Rabatte und erzeugt ein massives Checkout-Payload.
Die Herausforderung für die Schnittstelle beginnt exakt in der Sekunde des Kaufabschlusses. Ein Auftrag mit 350 Positionen darf das ERP-System bei der synchronen Übergabe nicht blockieren. Die offizielle OEM-Schnittstelle nutzt hierfür intelligente Warteschlangen (Message Queues) und verarbeitet die Aufträge asynchron. Dies bedeutet für Ihre Architektur:
- Transaktionssicherheit: Der gesamte Auftrag wird als eine atomare Transaktion an SelectLine übergeben. Bricht die Verbindung bei Position 349 ab, wird der gesamte Beleg in der SelectLine verworfen (Rollback) und der Übertragungsversuch nach einem definierten Intervall neu gestartet. Es entstehen keine „Halb-Aufträge“ in der Warenwirtschaft.
- Performance-Erhalt: Durch die Pufferung der Datenmassen bleibt sowohl Shopware 6 als auch die SelectLine performant. Die API-Limits werden respektiert, während Hintergrund-Worker die Datensätze kontinuierlich abarbeiten.
- Validierung der Artikelnummern: Oftmals weichen SKU-Formate in CSV-Dateien (z.B. durch vorangestellte Nullen) leicht von der Datenbank ab. Die Schnittstelle mappt die Shopware-SKU präzise auf die korrespondierende Artikelnummer in SelectLine, ohne dass es zu Fehlzuordnungen kommt.
Freigabeprozesse: Der feine Unterschied zwischen Entwurf und rechtsgültigem Auftrag
In B2B-Szenarien, insbesondere bei der Nutzung der Shopware B2B Suite oder der B2B Components, löst der Klick auf „Kaufen“ oft noch keinen echten Auftrag aus. Wenn der bestellende Mitarbeiter sein monatliches Budget überschreitet oder bestimmte Warengruppen bestellt, geht der Warenkorb in einen Status „Wartet auf Freigabe“ (Pending Approval) über. Ein Vorgesetzter muss diesen Vorgang zunächst autorisieren.
Aus Schnittstellen-Perspektive erfordert dies eine präzise Überwachung der State Machine in Shopware. Ein fataler Fehler unsauber programmierter Middleware ist es, jeden erzeugten Checkout blind an das ERP zu senden. Die Folge: In der SelectLine entstehen Aufträge, die rechtlich noch gar nicht bindend sind, blockieren physische Lagerbestände und verfälschen die Disposition.
Die offizielle OEM-Anbindung löst dieses Problem durch ein striktes Status-Mapping (siehe auch unsere Funktionsübersicht zur Auftragssynchronisation). Der Prozesszyklus sieht dabei wie folgt aus:
- Der Mitarbeiter schließt die CSV-Schnellbestellung ab. Der Auftrag erhält in Shopware den internen Status
in_progressoder ein äquivalentes B2B-Flag. - Die Schnittstelle registriert den Auftrag, ignoriert ihn jedoch bewusst für den Import in die SelectLine, da die Mapping-Regel vorschreibt: Importiere nur Aufträge mit dem Status
openoderapproved. - Der Abteilungsleiter loggt sich in Shopware ein und erteilt die Freigabe. Die State Machine von Shopware ändert den Auftragsstatus.
- Ein Webhook oder der nächste Cronjob-Zyklus der Schnittstelle erfasst diese Statusänderung. Jetzt erst wird das Payload generiert und der Auftrag als gültiger Beleg (z.B. „Auftrag“ oder „Internetauftrag“) in der SelectLine angelegt.
Das technische Mapping: Shopware-Datenstrukturen in SelectLine-Belege übersetzen
Die Übersetzung eines komplexen B2B-Auftrags ist kein simples Kopieren von Textfeldern. Die SelectLine Warenwirtschaft verlangt nach einer strukturierten Anlage von Belegköpfen und Belegpositionen unter strenger Einhaltung kaufmännischer Logik. Die OEM-Schnittstelle greift tief in diese Architektur ein.
Kunden- und Debitor-Zuordnung
B2B-Kunden in Shopware verfügen oft über abweichende Rechnungs- und Lieferadressen, die als Unternehmenskonten geführt werden. Die Schnittstelle prüft beim Import zunächst, ob die übermittelte customer_number bereits als Debitor in SelectLine existiert. Ist dies der Fall, wird der Auftrag exakt diesem Mandanten zugeordnet. Existiert eine neue Lieferadresse, wird diese nicht als freier Text in den Beleg geschrieben, sondern sauber als neue, verknüpfte Lieferadresse im Kundenstamm der SelectLine angelegt.
Preise, Steuern und Rundungsdifferenzen
Ein berüchtigtes Problem bei der Übertragung langer Stücklisten sind Rundungsdifferenzen. Shopware berechnet den Gesamtpreis (oft netto im B2B) auf Basis eigener Algorithmen. Wenn das ERP-System nun versucht, den Auftrag anhand der übermittelten Mengen und der ERP-internen Preislisten neu zu berechnen, kommt es bei 350 Positionen fast zwangsläufig zu Abweichungen im Cent-Bereich.
Um dies zu verhindern, agiert die Schnittstelle hochgradig defensiv: Sie zwingt die SelectLine nicht zur Neuberechnung, sondern übergibt die in Shopware kalkulierten Netto-Einzelpreise als fixe Werte (Fremdpreise) in die Belegpositionen. Die Steuerklassen (Voll, Ermäßigt, Steuerfrei bei innergemeinschaftlichen Lieferungen) werden anhand der Shopware-Steuer-IDs auf die entsprechenden Steuerschlüssel der SelectLine gemappt. Das Ergebnis ist ein Buchungsbeleg, dessen Gesamtsumme auf den Cent genau dem Checkout in Shopware entspricht.
Verpackungseinheiten (VPE) und Staffelpreise
B2B-Bestellungen via CSV enthalten oft Mengen, die an bestimmte Verpackungseinheiten gebunden sind (z.B. „Gebinde à 50 Stück“). Die Schnittstelle muss die quantity des Shopware-Payloads korrekt interpretieren. Bestellt der Kunde 5 Gebinde, erfasst Shopware möglicherweise „5“, während SelectLine eine Basisstückzahl von „250“ abbuchen muss, je nachdem, wie der Artikelstamm konfiguriert ist. Die OEM-Anbindung gleicht die Umrechnungsfaktoren aus den Artikelstammdaten ab und sorgt dafür, dass die korrekte Basismengeneinheit im Beleg landet, um eine fehlerfreie Lagerabbuchung zu gewährleisten.
Fehlerbehandlung: Wenn Rohdaten korrupt sind
Trotz aller Vorab-Validierungen im Shopware-Frontend kann es vorkommen, dass unsaubere Daten die Schnittstelle erreichen. Ein B2B-Kunde lädt eine veraltete CSV-Datei hoch, die einen Artikel enthält, der in der SelectLine bereits archiviert oder gesperrt ist. Wie reagiert eine sauber konstruierte Middleware?
Anstatt abzustürzen oder den Auftrag komplett verschwinden zu lassen, greift ein mehrstufiges Error-Handling:
- Validierungsphase: Bevor der Beleg in SelectLine geschrieben wird, simuliert die Schnittstelle den Import (Dry-Run).
- Fehlererkennung: Das System erkennt, dass Position 112 (SKU: 9988-X) in der SelectLine nicht existiert oder für den Verkauf gesperrt ist.
- Quarantäne: Der Auftrag wird nicht in die SelectLine geschrieben, um die Datenintegrität des ERPs zu schützen. Gleichzeitig wird der Auftrag in Shopware nicht als „erfolgreich exportiert“ markiert.
- Alerting: Die Schnittstelle loggt den spezifischen Fehler detailliert („Auftrag #10452 fehlgeschlagen: Artikel 9988-X in SelectLine gesperrt“) und benachrichtigt den Shop-Administrator.
Dieses Vorgehen garantiert, dass Administratoren exakt wissen, wo das Problem liegt, die Stammdaten in SelectLine korrigieren (z.B. den Artikel entsperren) und den Import des Auftrags über das Dashboard der Schnittstelle per Knopfdruck erneut anstoßen können. Es geht kein Umsatz verloren und das ERP bleibt von fehlerhaften Datensätzen verschont.
Fazit
Die Automatisierung komplexer B2B-Aufträge, die über CSV-Uploads generiert und durch Freigabeprozesse verzögert werden, erfordert weit mehr als nur den Transport von Daten von A nach B. Es geht um die semantische Übersetzung von E-Commerce-Logik in strikte, buchhalterische ERP-Richtlinien.
Die offizielle OEM-Anbindung für SelectLine bietet exakt die tiefe Integration, die für solche Hochlastszenarien und verschachtelten Workflows zwingend erforderlich ist. Indem sie Shopware-Statusänderungen exakt abhört, Rundungsdifferenzen durch präzises Preis-Mapping eliminiert und gigantische CSV-Warenkörbe über asynchrone Warteschlangen ressourcenschonend verarbeitet, verwandelt sie potenzielle administrative Flaschenhälse in einen lautlosen, fehlerfreien Hintergrundprozess. Für Unternehmen, die ihren B2B-Einkauf skalieren möchten, ist diese architektonische Stabilität das Fundament für ein verlässliches und profitables E-Commerce-Geschäft.