2011-01-12 15 views
5

¿Hay alguna manera en Magento para encontrar todos los pedidos que contienen un producto determinado? Sería aún mejor si se pudiera hacer desde el panel de administración.Magento: busque los pedidos que contienen un producto

Informes -> Productos -> Productos ordenados me da el día en que se vendió el producto y cuántos pedidos lo contienen, pero necesito saber qué pedidos específicos incluyen el producto.

¡Gracias!

+1

posible duplicado de [Obtener una lista de pedidos en la extensión de Magento que tienen un determinado producto] (http://stackoverflow.com/questions/18125638/get-a -list-of-orders-in-magento-extension-that-have-a-certain-product) – RichardBernards

+0

tal vez debería cambiar la aceptada la respuesta ... – RichardBernards

Respuesta

7

Usted puede obtener mediante una simple consulta MySQL: -

select order_id from sales_flat_order_item where product_id=//given product id 

O

Puede personalizar los informes de acuerdo a sus necesidades.

+0

Sí, eso es casi lo que había intentado. Mi error fue que, dado que tenía el nombre del producto en lugar del product_id, busqué el nombre del producto en el campo "descripción" en lugar del campo "nombre". – fdierre

+0

¿Cómo funcionaría si magento no usa tablas planas? – Benubird

+1

@Benubird la decisión de usar tablas planas o no solo afecta el catálogo, las órdenes siempre usan tablas planas (al menos desde una versión anterior de Magento, tal vez 1.2) – OSdave

4

Si desea obtener el increment_id (el número de orden incremental) en lugar de la order_id, sólo tiene que utilizar esta declaración:

SELECT o.increment_id 
FROM sales_flat_order_item oi 
INNER JOIN sales_flat_order o ON o.entity_id = oi.order_id 
WHERE product_id=XXX ORDER BY o.increment_id DESC; 
+0

Aunque esto es un año después, debo decir que este es el código más útil en esta pregunta y me encuentro volviendo a él cada dos semanas como referencia. Gracias. – James

+0

Es bueno escuchar eso, gracias;) – Patrick

19

respondí esta pregunta en otra pregunta; Get a list of orders in magento extension that have a certain product

Para tener una referencia rápida:

$productId = {PRODUCT_ID}; 
$orders = array(); 
$collection = Mage::getResourceModel('sales/order_item_collection') 
    ->addAttributeToFilter('product_id', array('eq' => $productId)) 
    ->load(); 
foreach($collection as $orderItem) { 
    $orders[$orderItem->getOrder()->getIncrementId()] = $orderItem->getOrder(); 
} 
+2

Esta debería ser la respuesta correcta IMO ... No debe consultar directamente a la base de datos, esta es una solución mucho mejor y más elegante. –

+1

Incluso si fue la respuesta correcta elegida, hubiera sido mejor haber marcado esta pregunta como un duplicado en lugar de responder a esta. – Luke

+0

@Coulton un poco después del golpe, pero en ese momento, no podía marcar ... Por lo tanto, esta manera – RichardBernards

Cuestiones relacionadas