Beschreibung
Ein innerhalb der Schnittstelle verfügbares Plugin-System erlaubt die Ablage eigener Plugin-Klassen, die auf einen definierten Pool an Events der Shop-Anbindung zugreifen können.
Über diese Events können die von MERCATOR exportierten Daten direkt vor der eigentlichen Verarbeitung im Shop angepasst und manipuliert werden.
Im Export können Bestellungen vor der Erzeugung als XML gelesen und bearbeitet werden.
Vorbereitung
Um eigene Plugin-Klassen verwenden zu können, sind folgende Vorbereitungen zu treffen.
Ordnerstruktur
Eigene Plugin-Klassen zur Datenmanipulation der Schnittstelle werden innerhalb von Components/TdsMerware/Plugins erwartet und abgelegt.
Klassenname
Beachten Sie, dass der Dateiname dem Klassennamen entsprechen muss, um von der Schnittstelle erkannt und gefunden zu werden.
Das Beispiel-Plugin mit dem Klassennamen ExamplePlugin wird somit als ExamplePlugin.php erwartet.
Aufbau
Damit Ihre Plugin-Klassen erkannt und komform verwendet werden können, müssen diese bestimmte Voraussetzungen haben.
Geben Sie zunächst Ihrer Klasse folgenden namespace um im Pool der MerWare Kunden-Klassen erkannt zu werden
namespace Shopware\Components\TdsMerware\Plugins;
Benutzen Sie per use die beiden mitgelieferten Plugin- und Event Standardklassen
use Shopware\Components\TdsMerware\Core\Plugin\AbstractPlugin;
use Shopware\Components\TdsMerware\Core\Plugin\PushEvent;
Ihre Klasse muss von dem Standard MerWare-Plugin AbstractPlugin erben, um alle notwendigen Methoden zu implementieren.
Auf das Beispiel-Plugin bezogen würde die Angabe des Klassennamens wie folgt lauten
class ExamplePlugin extends AbstractPlugin
Events
Folgend alle verfügbaren Events mit kurzen Beispielen.
Als Aufschluss reicht die Implementierung der genannten Methoden innerhalb Ihrer eigenen Plugin-Klassen.
Import von Artikeln
Folgende Event-Methode bekommt alle von MERCATOR exportierten Artikeldaten (vor dem Shop-Import) übergeben.
/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
public function onImportArticles(PushEvent $event)
{
/**
* @var \Shopware\Components\TdsMerware\Import\Service\ArticleInterface $article
*/
foreach ($event->getData() as $article) {
$artcode = $article->getArtcode();
}
}
Import von Artikeln (Kompakt)
Folgende Event-Methode bekommt alle von MERCATOR exportierten Kompakt-Artikeldaten (vor dem Shop-Import) übergeben.
/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
public function onImportCompactArticles(PushEvent $event)
{
/**
* @var \Shopware\Components\TdsMerware\Import\Service\CompactInterface $article
*/
foreach ($event->getData() as $article) {
$artcode = $article->getArtcode();
}
}
Import von Löschbefehlen (Artikel)
Folgende Event-Methode bekommt alle von MERCATOR exportierten Löschbefehle (Artikel) (vor dem Shop-Import) übergeben.
/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
public function onImportArticleDeletions(PushEvent $event)
{
foreach ($event->getData() as $key => $value) {
/**
* Examples to detect the different cases
*
* Delete all articles
* $key = 'deleteAll'
* $value = 1
*
* Delete a specific article
* $key = list position
* $value = 'EXAMPLE-ARTCODE'
*/
}
}
Import von Kategorien
Folgende Event-Methode bekommt alle von MERCATOR exportierten Kategoriedaten (vor dem Shop-Import) übergeben.
/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
public function onImportCategories(PushEvent $event)
{
/**
* @var \Shopware\Components\TdsMerware\Import\Service\CategoryInterface $category
*/
foreach ($event->getData() as $category) {
$id = $category->getId();
}
}
Bestellexport
Folgende Event-Methode bekommt die zu exportierende Shop-Bestellung (vor der XML-Generierung) übergeben.
/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
public function onExportOrder(PushEvent $event)
{
/**
* @var \Shopware\Components\TdsMerware\Export\Service\OrderInterface $order
*/
$order = $event->getData();
}
Import von Versanddaten
Folgende Event-Methode bekommt alle von MERCATOR exportierten Versanddaten (vor dem Shop-Import) übergeben.
/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
public function onImportOrders(PushEvent $event)
{
/**
* @var \Shopware\Components\TdsMerware\Import\Service\OrderInterface $order
*/
foreach ($event->getData() as $order) {
$trackingNumber = $order->getTrackingNumber()
}
}
Import von Kunden
Folgende Event-Methode bekommt alle von MERCATOR exportierten Kunden (vor dem Shop-Import) übergeben.
/**
* @param \Shopware\Components\TdsMerware\Core\Plugin\PushEvent $event
*/
public function onImportCustomers(PushEvent $event)
{
/**
* @var \Shopware\Components\TdsMerware\Import\Service\CustomerInterface $customer
*/
foreach ($event->getData() as $customer) {
$mercatorCustomerId = $customer->getMercatorCustomerId();
}
}
Beispiel-Plugin
Innerhalb des Plugins Im Verzeichnis Components/TdsMerware/Plugins existiert ein Beispiel-Plugin, welches alle unterstützten Events als Methoden implementiert.