Pergunta

Eu gostaria de atualizar o status de uma ordem de quaisquer itens encomendados.Eu tenho um status personalizado a instalação chamada "quarentena" e gostaria que este conjunto se uma ordem é encontrado.Eu tentei algumas formas para obter esse trabalho, mas eu estou tendo nenhuma sorte.Este é o meu observador, espero que alguém pode me apontar na direção certa.

$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)
}
Foi útil?

Solução

Eu estou supondo que você está conectando em um evento que dispara em ordem salvar, não sales_order_place_after, que é acionado uma vez após a ordem é concluída.Se você fez sobre o ex, então você vai ter um loop infinito, onde cada ordem de atualização de status irá acionar o observador mais e mais.O último soa como poderia ser o que está acontecendo.

Mostre-nos o seu config.xml.Tente sales_order_place_after se você ainda não estiver usando ele.

Outras dicas

/app/design/frontend/base/default/template/checkout/sucesso.phtml (ou /site/app/design/frontend/default/yourtheme/template/checkout/sucesso..phtml )

/Ordem/Estado aqui

/*
    const STATE_NEW             = 'new';
    const STATE_PENDING_PAYMENT = 'pending_payment';
    const STATE_PROCESSING      = 'processing';
    const STATE_COMPLETE        = 'complete';
    const STATE_CLOSED          = 'closed';
    const STATE_CANCELED        = 'canceled';
    const STATE_HOLDED          = 'holded';
    const STATE_PAYMENT_REVIEW  = 'payment_review';
 */



// Retrieve order
$_order = new Mage_Sales_Model_Order();
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$_order->loadByIncrementId($orderId);
// Update order
$order = Mage::getModel('sales/order')->loadByIncrementID($orderId);
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
$order->save();
// Write your success Massage  here 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top