Magento: "status" und "state"

von
Kreativ&Söhne

Ein bemerkenswertes Verhalten von Magento hat bei uns für etwas Verwirrung gesorgt. Man konnte per Code in Bestellungen perfekt nach dem Bestellstatus "pending" filtern. In in dem darauf hin gelieferten Objekt befand sich die korrekte Anzahl an Bestellungs-Objekten - Aber angeblich war keins vom Status "pending". Des Rätsels Lösung ist banaler als gedacht.

Filtert man Bestellungen unter Anderem mit dem Status "pending", so erhält man sie auch.

$orders = Mage::getResourceModel('sales/order_collection')
	->addFieldToFilter('status', array("in" => array(
		'processing','pending')
	))
	->load();

Im darauf hin gelieferten Order-Objekt erhält man den Status dann mittels der Methode "getState()".

foreach ($orders as $order) {
	echo $order->getState() . ", ";
}

Wer nun aber erwartet, dass getState() ebenfalls den Status "pending" liefert, der wird sich schwer wundern. In diesem Fall liefert diese Methode nämlich nicht das erwartete "pending", sondern ein "new".

new, processing, new

Wenn dieser Fall also einmal eintreten sollte: Keine Sorge, alles ist gut - Und das Magento-Kuriositätenkabinett um einen Eintrag reicher.

Zurück