2011-11-29 3 views
10

Je travaille sur l'obtention d'identifiants de commande et d'autres détails pour les commandes avec status = 'complete' dans Magento. Je suis sûr qu'il y a un moyen dans magento où nous pouvons récupérer toutes les commandes avec le statut comme complet. Depuis que je suis un nouveau-bie à magento, je trouve difficile de travailler cela.Obtenir des ID de commande avec status = 'Complete' dans Magento

Je voudrais envoyer aux clients avec le statut de la commande comme compléter un e-mail et les marquer une fois qu'un e-mail est envoyé. Mais c'est la dernière partie de celui-ci. Quelqu'un peut-il me dire comment dans magento pouvez-vous obtenir tous les ID de commande avec le statut comme complet?

Toute aide est appréciée. Merci d'avance.

Répondre

22

Ceci peut être exécuté en tant que script à partir du dossier d'installation de base de Magento. Si c'est déjà dans un fichier Magento (contrôleur ou bloc ou autre), vous n'avez pas besoin des trois premières lignes.

<?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:

Pour voir toutes commandes avec des statuts et des e-mails:

$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

Merci pour votre réponse. J'ai essayé votre code et cela fonctionne mais j'ai trois commandes dans la base de données avec le statut comme complet. Cependant, il m'a juste montré l'un des e-mails sur ces 3 commandes. Je veux afficher toutes les commandes (id n e-mails de contact) avec le statut 'Complete'. Aussi, si j'ai besoin d'imprimer l'ID de la commande, y a-t-il une méthode comme getOrderId() ou getId() ou quelque chose à faire? – ivn

+1

Vous pouvez faire quelques lectures sur le développement de Magento. J'ai trouvé les meilleurs articles à être les articles d'Alan Storm sur son site Web: http://alanstorm.com/category/magento Pour obtenir l'ID, vous pouvez faire $ order-> getId() à l'intérieur de la boucle. Vous voudrez peut-être faire $ order-> getIncrementId() en fonction de ce dont vous avez besoin. A propos de votre problème, je ne sais pas quoi dire, sauf essayer de supprimer le filtre et d'imprimer tous les ordres et les statuts et les ID comme ceci 'echo $ order-> getId(). ": '". $ order-> getStatus(). "',". $ email. "\ n"; ' – Max

+0

Eh bien, je veux des commandes avec status = complete mais je veux aussi voir l'identifiant de la commande, le nom du client, l'email du client pour ces commandes particulières. Donc, votre solution précédente était bien juste que je voulais l'ID de commande aussi. Cependant, même j'ai essayé getId() et getIncrementId() mais aucun d'entre eux ne semble me renvoyer aucun identifiant de commande. – ivn

1

Pour obtenir tous les produits avec le statut de la commande comme 'Terminé'

$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(); 
     } 
} 
} 
?> 
Questions connexes