Wie werden Bestellungen abgeglichen?
Bestellungen werden im WooCommerce Bexio Automator (WCBA) anhand der Synchronisierungsregeln abgeglichen. Darf gemäss den Synchronisierungsregeln ein Element (z.B. ein Auftrag) erstellt werden, wird versucht, diesen in Bexio zu erstellen.
Wann findet der Abgleich statt?
Der Abgleich findet standardmässig ereignisbasiert statt. D.h.:
- wenn eine Bestellung erstellt wird
- wenn der Status einer Bestellung geändert wird
- (wenn eine Bestellung manuell synchronisiert wird)
Alternativer Abgleich - asynchron
Wenn Sie mit dem ereignisbasierten Abgleich nicht zufrieden sind (z.B. aus Performance-Gründen im Checkout), können Sie versuchen, den asynchronen Abgleich zu aktivieren (im Abschnitt Synchronisierungsdaten bei der Option "Synchronisierungsmodus von Bestellungen"; erfordert mindestens v1.9.0 des WCBA). Dies versucht 1x / Stunde noch nicht synchronisierte Bestellungen zu synchronisieren (gemäss den Synchronisierungsregeln). Der asynchrone Abgleich von Bestellungen erfolgt über wp_schedule_event() (resp. WP-Cron).
Damit nicht ungewollt vorherige (allenfalls noch von Hand nach Bexio übertragene) Bestellungen synchronisiert werden (und dadurch Duplikate entstehen), werden nur Bestellungen nach Aktivierung des asynchronen Abgleiches beachtet.
Tipp: der Zeitstempel der Aktivierung des asynchronen Abgleiches ('wcba_asyncorders_activation' in wp_options) kann in der Datenbank angepasst und auf einen Zeitpunkt in der Vergangenheit gesetzt werden - dadurch können vergangene Bestellungen nachträglich synchronisiert werden, ohne diese einzeln manuell synchronisieren zu müssen.
Einschränkungen von WP-Cron
Zu beachten ist jedoch: der asynchrone Abgleich des WCBA erfolgt mit WP-Cron. WP-Cron wird standardmässig nur beim Aufruf einer Seite ausgeführt - besucht mehrere Stunden lang niemand den Shop / das Backend, wird der 'stündliche' Abgleich von Bestellungen in dieser Zeit auch nicht ausgeführt.
D.h. dass diese Art des Abgleichs standardmässig nicht wirklich 'asynchron' im herkömmlichen Sinne ist. Dies liegt daran, dass PHP (und damit WordPress) nicht wirklich asynchron ist, d.h. der Abgleich findet im gleichen Prozess statt wie der Shop / das Backend. Um einen wirklich 'asynchronen' Abgleich sicherzustellen, der auch ohne Seitenaufrufe im Shop funktioniert, müssen Sie eine serverseitige Ausführung des Cronjobs einrichten - dies liegt in der Verantwortung des Kunden / Shopbetreibers und muss individuell gemacht werden. Für Informationen, wie ein serverseitiger Cronjob eingerichtet werden kann, siehe die Links weiter unten.
Zu beachten: in Extremfällen können auch asynchrone Abgleiche durch serverseitige Cronjobs zu einer Überlastung des Servers führen (abhängig vom Server, der Anzahl abzugleichender Daten etc.). In diesen Fällen kann auch der Prozess des Shop / Backend beeinträchtigt (und dadurch die Performance beeinflusst) werden.
Weiterführende Links
Hier finden Sie verschiedene Links für weitere Informationen: