Drupal: UC Followup Conditional Actions

Wer kennt Sie nicht? Zahlungserinnerungen, Bitten um Bewertungen des letzten Kaufs, Angebote weiterer Produkte. All dies landet oft im Nachspiel einer Online-Bestellung früher oder später in unserem Postfach. Hier soll es nun allerdings nicht darum gehen, wie man mit solchen E-Mails umgeht. Stattdessen beschäftige ich mich damit, wie man solche E-Mails bei Ubercart verschickt.

Ausgangspunkt war die Umsetzung eines Druck-Shops unter Verwendung von Ubercart im Rahmen meiner Tätigkeit für labor b medienagentur. Dort sollten Erinnerungsmails verschickt werden, wenn die Druckerei bei einer Bestellung noch auf fehlende Druckdaten wartete. Hier gibt es zunächst einmal das UC Followup-Modul. Dieses ermöglicht den Versand von Mails im Nachgang einer Bestellung.

Leider verwendete das Modul dafür eine eigene Logik, die an einem Kernstück von Ubercart, den Bedingten Aktionen, komplett vorbei entwickelt worden war. Da ich ein großer Freund davon bin bestehende Features zu verwenden, anstatt das Rad neu zu erfinden, schrieb ich kurzerhand das Modul um. Außerdem legte ich dem Entwickler von UC Followup nahe, ebenfalls auf die Bedingten Aktionen umzusteigen. Dafür stellte ich ihm das Modul als Download zur Verfügung.

Anders als das Original-Modul verwendet meine Variante die Conditional Actions. Dafür habe ich zunächst einen Trigger Regular order cron eingeführt. Dieser wird während des Cronjobs ausgeführt und wird nacheinander für jede Bestellung aufgerufen. Die Anzahl der abgearbeiteten Bestellungen je Durchlauf ist einstellbar. Zusätzlich gibt es eine neue Bedingung Check order's last modification date. Dies kann genutzt werden, um die Anzahl der mindestens zu wartenden Sekunden zwischen zwei Benachrichtigungen einzustellen. Schließlich gibt es zusätzlich eine Aktion Update order modification date. Diese aktualisiert wie der Name schon sagt schlicht das Änderungsdatum der Bestellung.

Eine Bedingte Aktion könnte dann wie folgt aussehen:

Trigger: Regular order cron
Bedingungen:
- Bestellstatus ist "Wartet auf Zahlung"
- Letzte Änderung liegt 1 Tag zurück (in Sekunden)
Aktionen:
- Versende eine E-Mail "Zahlungserinnerung"
- Aktualisiere das Änderungsdatum der Bestellung

Das Modul ist derzeit noch ungetestet und sollte als Proof of Concept betrachtet werden. Derzeit gibt es noch relativ viel Setup-Aufwand. Der Rückgriff auf das modification date ist auch suboptimal, da dies auch durch andere Prozesse geändert wird. Außerdem dauert die komplette Abarbeitung aller Bestellungen mit zunehmender Menge immer länger.

Es könnte demnach sinnvoll sein die Bestellungen vorzufiltern, so dass nur Bestellungen mit bestimmten Stati abgearbeitet werden. Außerdem bietet sich der Einsatz von Elysia Cron an, um mehr Kontrolle über die Ausführung der Cronjobs zu erlangen. Auch ist anzuraten beim Cronjob nicht jedes Mal mehrere dutzend Mails zu versenden. Statt dessen könnte man diese via Job Queue ebenfalls nacheinander abarbeiten.

Aufgrund des Status des Moduls ist dies also kein Release. Den (funktionierenden) Proof of Concept findet ihr hier. Anregungen sind herzlich willkommen.

Noch keine Kommentare vorhanden.