Magento State Storno auf Verarbeitung

Innerhalb des Lebenszyklus einer Magento Bestellung ist es nicht mehr möglich über die Admin Oberfläche den State "Storno" (engl.: canceled) zu ändern in "Verarbeitung" (engl.: processing)

Es gibt aber Situationen wo das sehr ärgerlich sein kann. Denkbar ist das versehentliche stornieren einer Bestellung oder PayPal Express API storniert (STATE_CANCELED) obwohl die Zahlung erfolgreich war.

Exkurs State und Status
Der state sind interne und vordefinierte Werte, die den Zustand der Bestellung beschreiben und je nach Zustand Funktionen ermöglichen. Der „state“ darf in der Regel nicht  manuell oder über die API geändert werden.

Der status ist ein je nach Shop vom Admin individuell änderbarer Zustand, der an einen „state“ gebunden ist.

Was nun tun wenn die Bestellung auf State STATE_CANCELED ist und man auf State STATE_PROCESSING haben möchte? Neben der Möglichkeit SQL Commands in der Datenbank selber abzusetzen ist es sicherer außerhalb von Magento 1 folgendes Script  zu versuchen.

<?php

include_once 'app/Mage.php';
Mage::app();

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);

// nachfolgend die ID der Order eintragen.
$incrementId = ;

$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
$orderState = $order->getState();

echo('State of ' . $incrementId . ' is:"' . $orderState . '"');

    // set back to processing
    $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
    $order->addStatusHistoryComment('Programatically changed state' . $orderState . ' to STATE_PROCESSING');

    $order->save();

    if ($orderState == 'Canceled') {
        // set back canceled amount in table sales_flat_order_item
        foreach ($order->getAllItems() as $item) {
             $item->setQtyCanceled(0);
             $item->save();
        }
    }

    echo('<br>Programatically changed state "from ' . $orderState . '  to STATE_PROCESSING"');

?>

Das Script setzt auch gleich einen Nachricht in den Bestellkommentaren, damit man später weiß was gemacht wurde.

Vorsicht bei Änderungen im Order Lebenszyklus

Liste der Magento States

  1. Mage_Sales_Model_Order::STATE_NEW
  2. Mage_Sales_Model_Order::STATE_PENDING_PAYMENT
  3. Mage_Sales_Model_Order::STATE_PROCESSING
  4. Mage_Sales_Model_Order::STATE_COMPLETE
  5. Mage_Sales_Model_Order::STATE_CLOSED
  6. Mage_Sales_Model_Order::STATE_CANCELED
  7. Mage_Sales_Model_Order::STATE_HOLDED

Weiter Hilfe