2011-11-29 11 views
10

sto lavorando per ottenere gli ID ordine e altri dettagli per ordini con stato = 'completa' in Magento. Sono certo che c'è un modo in Magento in cui possiamo recuperare tutti gli ordini con stato Completato. Dal momento che sono un neofita di Magento, trovo difficile farlo.Ottenere ID degli ordini con stato = 'completa' in Magento

Vorrei inviare i clienti con lo status di ordine come completa una e-mail e loro marchio una volta che una e-mail viene inviata. Ma questa è la parte successiva di esso. Qualcuno può dirmi come in Magento puoi ottenere tutti gli ID ordine con stato Completato?

Qualsiasi aiuto è apprezzato. Grazie in anticipo.

risposta

22

Questo può essere eseguito come uno script dalla base Magento cartella di installazione. Se è già in esecuzione all'interno di un file Magento (controller o blocco o altro) non sono necessarie le prime tre righe.

<?php 
require_once('app/Mage.php'); 
Mage::app(); 

$orders = Mage::getModel('sales/order')->getCollection() 
    ->addFieldToFilter('status', 'complete') 
    ->addAttributeToSelect('customer_email') 
    ; 
foreach ($orders as $order) { 
    $email = $order->getCustomerEmail(); 
    echo $email . "\n"; 
} 

EDIT:

Per vedere tutte ordini con stati ed e-mail:

$orders = Mage::getModel('sales/order')->getCollection() 
    //->addFieldToFilter('status', 'complete') 
    ->addAttributeToSelect('customer_email') 
    ->addAttributeToSelect('status') 
    ; 
foreach ($orders as $order) { 
    $email = $order->getCustomerEmail(); 
    echo $order->getId() . ": '" . $order->getStatus() . "', " . $email . "\n"; 
} 
+0

Grazie per la risposta. Ho provato il tuo codice e funziona, ma ho tre ordini nel database con stato Completato. Tuttavia mi ha appena mostrato uno degli ID e-mail di quei 3 ordini. Voglio visualizzare tutti gli ordini (id n email di contatto) con stato 'Completato'. Anche se ho bisogno di stampare l'ordine Id troppo, c'è qualche metodo getOrderId() o getId() o qualcosa da fare che – ivn

+1

Si potrebbe desiderare di fare qualche lettura sullo sviluppo Magento. Ho trovato i migliori articoli di essere articoli di Alan tempesta sul suo sito: http://alanstorm.com/category/magento di ottenere l'ID si può fare $ ordine-> getId() all'interno del ciclo. Potresti voler fare $ order-> getIncrementId(), a seconda di cosa ti serve. circa il tuo problema, non so cosa dire, tranne che provare a rimuovere il filtro e la stampa di tutti gli ordini e gli stati e gli ID come questo 'echo $ ordine-> getId(). ": '". $ order-> getStatus(). "',". $ email. "\ n"; ' – Max

+0

Beh, desidero gli ordini con stato = completo, ma voglio anche vedere ID ordine, nome cliente, e-mail cliente per quegli ordini particolari. Quindi la tua soluzione precedente andava bene solo che volevo anche l'ID ordine. Tuttavia, anche io ho provato getId() e getIncrementId() ma nessuno di loro sembra restituirmi alcun ID ordine. – ivn

1

per ottenere tutti i prodotti con lo stato dell'ordine come 'Completato'

$orders = Mage::getResourceModel('sales/order_collection') 
->addFieldToSelect('*') 
->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId()) 
->addFieldToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates())) 
->addFieldToFilter('status', 'complete') 
->setOrder('created_at', 'desc'); 

$this->setOrders($orders); 
foreach ($orders as $order) 
{ 
$order_id=$order->getRealOrderId(); 
$order = Mage::getModel('sales/order')->load($order_id, 'increment_id'); 
$order->getAllVisibleItems(); 
$orderItems = $order->getItemsCollection() 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('product_type', array('eq'=>'simple')) 
    ->load(); 
foreach($orderItems as $Item) 
{ 
    $Item = Mage::getModel('catalog/product')->setStoreId($Item->getStoreId())->load($Item->getProductId()); 
    if ($Item->getId()) 
    { 
     echo $Item->getName(); 
     echo $Item->getPrice(); 
     echo $Item->getProductUrl(); 
     echo $Item->getImageUrl(); 
     } 
} 
} 
?> 
Problemi correlati