2010-08-18 11 views
7

Attualmente sto creando un modulo che richiede di prendere un oggetto ordine e farlo riordinare da solo .. creando così un nuovo ordine nel back-end con gli stessi identici elementi e credenziali.Magento - Riordina programmaticamente

Questo è il codice che ho finora ... non sembra riordinare l'elemento o creare e aggiungere un altro ordine di backend.

$personsOrder = Mage::getModel(’sales/order’); 
$personsOrder->loadByIncrementId($order[’model_order_id’]); 

$order_model = Mage::getSingleton(’adminhtml/sales_order_create’); 
$personsOrder->setReordered(true); 

$order_model->initFromOrder($personsOrder); 

/* 
$order_model->save(); 

$order_model->place(); 
$order_model->sendNewOrderEmail(); 
*/ 

Qualsiasi aiuto è molto apprezzato !!

risposta

3

Il mio primo pensiero è che si dovrebbe usare $order->getIncrementId() sulla linea 2 anziché $order['model_order_id'], ma non sono sicuro di dove stia ottenendo $order da in primo luogo. Hai controllato che $order['model_order_id'] stia effettivamente restituendo un ID di incremento valido? Non vedo model_order_id come un campo nel database da nessuna parte ...

Ti suggerisco di far funzionare IDE e XDebug in modo da poter ispezionare gli oggetti mentre lavori con loro e capire cosa sta succedendo .

Cheers, JD

7
$orderId= $YOUR_ORDER_NUMBER; 
$personsOrder = Mage::getModel('sales/order')->load($orderId); 
$order_model = Mage::getSingleton('adminhtml/sales_order_create'); 
$personsOrder->setReordered(true); 
$order_model->initFromOrder($personsOrder); 
$order_model->createOrder(); 
1

Se l'ordine che avete posto la prima volta intorno si crea anche attraverso la codifica e non dal negozio di fronte quindi è necessario assicurarsi di aver aggiunto una voce nel sales_flat_quote_item tabella. Altrimenti quell'ordine non può essere riordinato. Quindi assicurati che non sia il caso della creazione dell'ordine.