2011-11-29 14 views
10

Estoy trabajando para obtener ID de pedidos y otros detalles para pedidos con estado = 'completo' en Magento. Estoy seguro de que hay una forma en magento en la que podemos recuperar todos los pedidos con estado como Completo. Como soy un nuevo bie to magento me resulta difícil resolver esto.Obtener ID de pedidos con estado = 'Completo' en Magento

Me gustaría enviar a los clientes con el estado de la orden como Completar un correo electrónico y marcarlos una vez que se envía un correo electrónico. Pero esa es la parte posterior de eso. ¿Puede alguien decirme cómo en magento puede obtener todas las identificaciones de pedidos con estado como Completo?

Cualquier ayuda es apreciada. Gracias por adelantado.

Respuesta

22

Esto se puede ejecutar como una secuencia de comandos desde la carpeta de instalación de Magento base. Si ya se está ejecutando dentro de un archivo de Magento (controlador o bloque o lo que sea), no necesita las tres primeras líneas.

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

Para ver todos pedidos con los estados y mensajes de correo electrónico:

$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

Gracias por su respuesta. Probé tu código y funciona, pero tengo tres pedidos en la base de datos con el estado Completo. Sin embargo, solo me mostró uno de los ID de correo electrónico de esos 3 pedidos. Quiero mostrar todos los pedidos (id n correos electrónicos de contacto) con estado como 'Completo'. Además, si también necesito imprimir el Id del pedido, ¿hay algún método como getOrderId() o getId() o algo para hacer eso? – ivn

+1

Es posible que desee leer un poco sobre el desarrollo de Magento. Encontré los mejores artículos para ser artículos de Alan Storm en su sitio web: http://alanstorm.com/category/magento Para obtener Id, puede hacer $ order-> getId() dentro del bucle. Es posible que desee hacer $ order-> getIncrementId(), dependiendo de lo que necesite. Acerca de su problema, no sé qué decir, excepto intentar eliminar el filtro e imprimir todos los pedidos y estados e id como este 'echo $ order-> getId(). ": '". $ order-> getStatus(). "',". $ correo electrónico "\ n"; ' – Max

+0

Bueno, sí quiero pedidos con estado = completo, pero también quiero ver el ID del pedido, el nombre del cliente y el correo electrónico del cliente para esos pedidos en particular. Entonces, su solución anterior estaba bien solo porque yo también quería la ID de pedido. Sin embargo, incluso probé getId() y getIncrementId(), pero ninguno de ellos parece devolverme ningún ID de pedido. – ivn

1

para obtener todos los productos con el estado del pedido como 'Completado'

$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(); 
     } 
} 
} 
?> 
Cuestiones relacionadas