it-swarm.com.de

Wie aktualisiere ich programmgesteuert den Bestellstatus?

Nachdem die Zahlung akzeptiert wurde, muss ich den Bestellstatus vom Seitencontroller auf "Abgeschlossen" aktualisieren.

Wie mache ich das auf Drupal 8?

Ich finde keine Dokumentation dazu; Es gibt ein Beispiel für Drupal 7.

// Updating Order status.
$orderObj = commerce_order_load($orderID);
commerce_order_status_update($orderObj, 'canceled', TRUE, 'Order Voided');
$orderObj->log = 'Order cancelled programatically';
commerce_order_save($orderObj); 
2
Webman

Sie möchten die State Machine-Methoden der Commerce Order-Klasse verwenden.

Es wäre ungefähr so, aber es hängt davon ab, wie Sie Ihre Bestellzustände genannt haben.

$order_state = $orderObj->getState();
$order_state_transitions = $order_state->getTransitions();
$order_state->applyTransition($order_state_transitions['complete']);

$orderObj->save();

Wenn Sie sich nicht sicher sind, können Sie jederzeit das $order_state_transitions Array, um zu sehen, welche Optionen Sie haben.

6
Chance G

Sie können einfach die Set-Methode verwenden.

$order->set('state', 'completed');
$order->save();
0

Ich denke, Sie möchten die Bestellung "aufgeben". Sie müssen den Ereignishandler für dieses Ereignis abonnieren: Commerce_order.order.paid

und mit diesem Handlercode:

  public function paymentCompletedHandler($event) {
    $order = $event->getOrder();
    $order->getState()->applyTransitionById('place');
    return;
  }
0
liquidcms