Kompatibilität
Der WooCommerce Bexio Automator (WCBA) bietet keine Kompatibilitäten für spezifische Point-of-Sale (POS) Systeme. Wenn du ein POS System verwenden willst, können je nach Situation Probleme mit der Synchronisierung auftreten.
Mögliche Probleme
Abhängig davon, wie das POS System Bestellungen erstellt, welche Bestellstatus es verwendet, welche Zahlungsmethode hinterlegt wird und was für Kontakt-Daten auf der Bestellung angegeben werden, können verschiedene Probleme mit der Synchronisierung nach Bexio auftreten. Voraussichtlich werden Bestellungen aus einem POS System nicht ohne weiteres direkt nach Bexio synchronisiert werden können. Nachfolgend sind einige mögliche Szenarien für Probleme, die eine Synchronisierung verhindern können, beschrieben.
Problem mit Bestellstatus / Synchronisierungsregeln
Die Synchronisierung des WCBA ist von den Synchronisierungsregeln abhängig. D.h. wann etwas nach Bexio synchronisiert wird, ist vom Bestellstatus abhängig. Dieser wiederum ist zum Teil je nach verwendeter Zahlungsmethode nach dem Checkout unterschiedlich.
Erfahrungsgemäss kann es bei POS Systemen vorkommen, dass diese Bestellungen mit einem anderen Status erstellen als die übrigen Zahlungsmethoden, wodurch dann mitunter noch keine Synchronisierung erfolgen darf.
Ebenfalls kann es sein, dass das POS System eigene Bestellstatus verwendet, die in WooCommerce so standardmässig nicht vorhanden sind. Werden derartige Status in den Synchronisierungsregeln verwendet, kann WCBA nicht abschätzen, wo in der Reihenfolge der Status-Folge (siehe im FAQ) diese einzureihen sind, weshalb keine Synchronisierung stattfinden würde.
Problem mit Zahlungsmethode
Bei einigen Zahlungsmethoden kann es sein, dass die Art und Weise, wie diese sich bei WooCommerce anmelden und das, was bei einer Bestellung hinterlegt wird, nicht übereinstimmen. Ist dies der Fall, kann keine Synchronisierung erfolgen. Grund dafür ist, dass anhand der auf der Bestellung hinterlegten Zahlungsmethode in den Synchronisierungsregeln überprüft wird, wann synchronisiert werden darf.
Die Synchronisierungsregeln lesen jeweils die Zahlungsmethoden aus, die in WooCommerce registriert sind. Wird nun auf einer Bestellung jedoch eine andere Zahlungsmethode hinterlegt, kann für diese in den Synchronisierungsregeln dann keine Einstellung gefunden werden, ab welchem Bestellstatus synchronisiert werden darf. Folglich wird davon ausgegangen, dass keine Synchronisierung erfolgen darf - es wird also keine Synchronisierung mit Bexio stattfinden.
Ein Beispiel: die Zahlungsmethode wird in WooCommerce nur als "Kreditkarte" registriert, auf der Bestellung wird dann jedoch z.B. "Mastercard" hinterlegt. "Mastercard" wurde jedoch nicht so registriert, in den Synchronisierungsregeln konnten die Einstellungen dieser Zahlungsmethode folglich nur unter "Kreditkarte" vorgenommen werden. Somit kann keine zutreffende Synchronisierungsregel gefunden werden - es wird keine Synchronisierung nach Bexio stattfinden.
Ist dies bei dir der Fall, hast du zwei Möglichkeiten:
Entweder du überschreibst die Synchronisierung, um Bestellungen vom POS System zu identifizieren (dies musst du individuell erarbeiten) und eine Synchronisierung anhand bestimmter Regeln (die du selber erarbeiten musst) zu erlauben. Dazu kannst du den Filter 'raptus-wc-bexio-connector-sync-' . $type
(wobei $type 'order', 'invoice', 'delivery' oder 'payment' sein kann) im WCBA verwenden.
Oder du überschreibst die Zahlungsmethode, die dein POS System auf den Bestellungen hinterlegt, mit einer Zahlungsmethode, die in WooCommerce registriert ist und für die du in den Synchronisierungsregeln Einstellungen vorgenommen hast. Dazu kannst du den Filter 'raptus-wc-bexio-connector-sync-' . $type . '_gateway'
(wobei $type 'order', 'invoice', 'delivery' oder 'payment' sein kann) im WCBA verwenden.
Bei einigen POS Systemen kann es zudem sein, dass diese gar keine registrierte Zahlungsmethode ausweisen, für welche aus den ausgelesenen Zahlungsmethoden die Synchronisierungsregeln eingestellt werden können. In diesem Fall müsstest du das, was das POS System auf der Bestellung hinterlegt, auf eine andere Zahlungsmethode, für welche du die Synchronisierungsregeln eingestellt hast, ummappen oder die Synchronisierung überschreiben.
Problem mit Kontakten
Es kann sein, dass das POS System keine Kundendaten erfasst und von 'anonymen' Bestellungen ausgeht. Dies kann so nicht 1:1 nach Bexio synchronisiert werden, da die Schnittstelle zwingend einen angegebenen Kontakt erwartet. Für die Synchronisierung muss also ein Kontakt in Bexio gefunden (oder erstellt) werden, der verwendet werden kann - siehe im FAQ für weitere Informationen, wie bestehende Kontakte gesucht oder neue Kontakte erstellt werden.
Wenn du nun aber keinen konkreten Kontakt angeben willst, musst du sicherstellen, dass du einen 'allgemeinen' Kontakt in Bexio hast, den du für diesen Zweck verwenden kannst. Dazu hast du grundsätzlich 2 Möglichkeiten:
Entweder du stellst sicher, dass du die entsprechenden Kontaktdaten in der Bestellung so angibst, dass der gewünschte 'allgemeine' Kontakt für POS-Bestellungen, denn du in Bexio dazu erstellt hast, gefunden wird.
Oder, wenn dein POS System dies z.B. nicht zulässt, du überschreibst die Synchronisierung für POS-Bestellungen so, dass fix ein bestimmter Bexio-Kontakt (anhand dessen ID oder Kontakt-Nr.) vorgegeben wird. Dazu müsstest du die Synchronisierung mit dem Filter 'raptus_wc_bexio_connector_order_data'
überschreiben und unter anderem die Synchronisierung anhand einer Kontakt ID / Nr. vorgeben (siehe hier für weitere Informationen). Ein Code-Snippet, wie dies ungefähr aussehen könnte, findest du nachfolgend.
Dieses Beispiel gibt fix den Kontakt mit der ID 123 vor, für welchen der Titel "POS Customer" gesetzt wird. Zudem entfernt das Snippet alle Adress-Daten, die entfernt werden können, ohne einen Fehler seitens der Bexio-Schnittstelle zu verursachen.
Das Snippet muss jeweils so angepasst werden, dass es nur für die Bestellungen deines POS-Systems angewendet wird - die entsprechende Logik dafür musst du individuell erarbeiten.
add_filter('raptus_wc_bexio_connector_order_data', 'wcba_order_data', 10, 2);
function wcba_order_data($order_data, $order) {
// TODO: add conditions to only do the following for POS orders
// Set the contact number to use
$order_data['customer']['contact_nr'] = 123; // Your contact number goes here
// Set data needed even when using contact id / number for syncing the contact
$text_for_pos_orders = 'POS Customer'; // replace with desired text
$order_data['customer']['billing']['last_name'] = $text_for_pos_orders;
$order_data['customer']['billing']['company'] = $text_for_pos_orders;
$order_data['customer']['billing']['country_code'] = 'CH';
$order_data['customer']['shipping']['country_code'] = 'CH';
// Unset billing address data
unset($order_data['customer']['billing']['first_name']);
unset($order_data['customer']['billing']['address_1']);
unset($order_data['customer']['billing']['address_2']);
unset($order_data['customer']['billing']['phone']);
unset($order_data['customer']['billing']['city']);
unset($order_data['customer']['billing']['postcode']);
unset($order_data['customer']['billing']['country']);
unset($order_data['customer']['billing']['country_name']);
unset($order_data['customer']['billing']['email']);
// Unset shipping address data
unset($order_data['customer']['shipping']['first_name']);
unset($order_data['customer']['shipping']['last_name']);
unset($order_data['customer']['shipping']['company']);
unset($order_data['customer']['shipping']['address_1']);
unset($order_data['customer']['shipping']['address_2']);
unset($order_data['customer']['shipping']['phone']);
unset($order_data['customer']['shipping']['city']);
unset($order_data['customer']['shipping']['postcode']);
unset($order_data['customer']['shipping']['country']);
unset($order_data['customer']['shipping']['country_name']);
unset($order_data['customer']['shipping']['email']);
return $order_data;
}
Problem mit separater Ausweisung von Bestellungen aus dem POS System
Wenn du beabsichtigst, Bestellungen von deinem POS System in Bexio separat ausweisen zu können, kann es sein, dass dies nicht direkt so in den Einstellungen von WCBA konfiguriert werden kann. Wenn das POS System z.B. eine andere Zahlungsmethode hinterlegt, als bei WooCommerce registriert wird (oder dort gar keine aktive Zahlungsmethode registriert wird), kannst du z.B. die Synchronisierungsregeln nicht konfigurieren, oder in Bexio zu verwendende Bankkonten vorgeben.
Wenn du separate Buchungskonten für Positionen aus POS-Bestellungen vorgeben möchtest, musst du die Synchronisierung mit dem Filter 'raptus_wc_bexio_connector_order_data'
überschreiben.
Wenn du separate Bankkonten für POS-Bestellungen vorgeben möchtest, ist dies abhängig davon, ob das POS System bei diesen eine Zahlungsmethode hinterlegt, die so auch in WooCommerce registriert wurde und für die du in den Einstellungen des WCBA die Synchronisierungsregeln und Zuweisung der Bankkonten konfigurieren kannst. Wenn dies der Fall ist, kannst du das gewünschte Bankkonto direkt in den Einstellungen festlegen. Wenn das POS System auf der Bestellung eine andere Zahlungsmethode ausweist als registriert wurde, musst du diese ummappen (resp. die Synchronisierung überschreiben), damit das eingestellte Bankkonto verwendet wird. Wenn das POS System gar keine registrierte Zahlungsmethode auf der Bestellung hinterlegt, kannst du ein separates Bankkonto nur vorgeben, indem du die Synchronisierung mit dem Filter 'raptus_wc_bexio_connector_order_data'
überschreibst.
Anpassen / Überschreiben der Synchronisierung
Wenn du die Synchronisierung anpassen oder überschreiben musst, weil dies mit deinem POS System nicht wie gewünscht funktioniert, kannst du die Filter im WCBA Plugin verwenden. Eine Dokumentation aller verfügbaren Filter & Actions findest du in der README-Datei des Plugins selbst (auf dem Filesystem).
Einige mögliche Beispiele für Anpassungen findest du in den Problemfällen oben beschrieben.
Kommentare
0 Kommentare