Frage

Ich möchte den Status aktualisieren, wenn eine Bestellung nachbestellte Artikel enthält.Ich habe ein benutzerdefiniertes Status-Setup mit dem Namen "Quarantäne" und möchte dieses Set, wenn eine Bestellung gefunden wird.Ich habe ein paar Möglichkeiten ausprobiert, um dies zum Laufen zu bringen, aber ich habe kein Glück.Dies ist mein Beobachter, ich hoffe, jemand kann mich in die richtige Richtung weisen.

$order = $observer->getEvent()->getOrder();
$items = $order->getAllItems();
$hasBackorderedItems = false;
foreach ($items as $item) {
     if ($item->getQtyBackordered() > 0) {
        $hasBackorderedItems = true;
        break;
     }
}

if ($hasBackorderedItems) {
    // I'm Stuck here. I need to change the current order status to quarantined (which is mapped to the state processing)
}
War es hilfreich?

Lösung

Ich vermute, Sie hängen sich an ein Ereignis an, das auf Bestellung ausgelöst wird speichern, nicht sales_order_place_after, die einmal nach Abschluss der Bestellung abgefeuert wird.Wenn Sie dies bei ersterem getan haben, haben Sie eine Endlosschleife, in der jede Aktualisierung des Bestellstatus Ihren Beobachter immer wieder auslöst.Letzteres klingt so, als könnte es sein, was passiert.

Zeig uns deine config.xml.Versuchen sales_order_place_after wenn Sie es noch nicht verwenden.

Andere Tipps

/app/design/frontend/base/default/template/checkout/success.phtml (oder /Site/app/design/frontend/default/yurthemen/template/checkout/success.phtml)

// Bestellstatus hier

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top