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).
Der asynchrone Abgleich hat den Vorteil, dass ein erneuter Synchronisierungsversuch stattfindet, wenn der initiale Synchronisierungsversuch fehlschlug (z.B. weil ein ungültiges Buchungskonto eingestellt ist). D.h. die Bestellung wird bei jedem Abgleich so lange neu überprüft & ein Synchronisierungsversuch gestartet, bis für die Bestellung ein Auftrag, eine Rechnung und eine Lieferung bestehen (resp. auf der Bestellung verknüpft sind).
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.
Ab v2.1.0
Ab dieser Version des WCBA erfolgt der asynchrone Abgleich 2-teilig:
- 1x alle 5 Minuten: dies synchronisiert ausschliesslich 'neue' Bestellungen, d.h. Bestellungen, für die noch kein Auftrag synchronisiert wurde
- 1x pro Stunde: entspricht weiterhin dem bisherigen asynchronen Abgleich und versucht Bestellungen zu synchronisieren, für die entweder noch kein Auftrag, keine Rechnung oder keine Lieferung synchronisiert wurde
Der Vorteil des Abgleiches alle 5 Minuten ist, dass der Checkout im Shop nicht auf die Antwort der Bexio-Schnittstelle warten muss, da die Synchronisierung erst nach dem Checkout erfolgt (spätestens nach 5 Minuten), jedoch nicht (je nach Timing) bis zu einer Stunde gewartet werden muss, bis die Synchronisierung erfolgt. Für die meisten Shops ist dies die empfohlene Synchronisierungsart, um den Checkout nicht zu beeinflussen, die Bestellungen jedoch trotzdem möglichst schnell nach Bexio zu synchronisieren.
Wer den Abgleich alle 5 Minuten nicht will, kann diesen mit dem Filter
'raptus_wc_bexio_connector_seperate_increased_interval_sync_new_orders'
deaktivieren - dann erfolgt nur der Abgleich 1x / Stunde (welcher dann auch für die 'initiale' Synchronisierung neuer Bestellungen zuständig wäre).
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: