2011-01-12 27 views
5

C'è un modo in Magento per trovare tutti gli ordini che contengono un determinato prodotto? Sarebbe ancora meglio se potesse essere fatto dal pannello di amministrazione.Magento: trova gli ordini contenenti un prodotto

Rapporti -> Prodotti -> I prodotti ordinati mi danno il giorno in cui il prodotto è stato venduto e quanti ordini lo contengono, ma ho bisogno di sapere quali ordini specifici includono il prodotto.

Grazie!

+1

possibile duplicato di [Ottenere un elenco di ordini in estensione Magento che hanno un certo prodotto] (http://stackoverflow.com/questions/18125638/get-a -list-of-orders-in-magento-extension-that-have-a-certain-product) – RichardBernards

+0

forse dovresti cambiare la risposta accettata ... – RichardBernards

risposta

7

È possibile ottenere con una semplice query MySQL: -

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

O

È possibile personalizzare i report in base alle proprie esigenze.

+0

Sì, è quasi quello che ho provato. Il mio errore era, dal momento che avevo il nome del prodotto invece di product_id, per cercare il nome del prodotto nel campo "descrizione" invece del campo "nome". – fdierre

+0

Come funziona se Magento è impostato per non utilizzare le tabelle flat? – Benubird

+1

@Benubird la decisione di utilizzare tabelle flat o non riguarda solo il catalogo, gli ordini utilizzano sempre tabelle flat (almeno sin dalla prima versione di Magento, forse 1.2) – OSdave

4

Se si desidera ottenere l'increment_id (incrementale numero d'ordine) al posto del order_id, si può semplicemente utilizzare questa dichiarazione:

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

Anche se questo è un anno dopo, devo dire che questo è il codice più utile in questa domanda e mi ritrovo a tornare ad esso ogni due settimane come riferimento. Grazie. – James

+0

Piacere di sentirlo, grazie;) – Patrick

19

ho risposto a questa domanda in un'altra domanda; Get a list of orders in magento extension that have a certain product

Per una rapida consultazione:

$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

Questa dovrebbe essere la risposta corretta IMO ... Non si dovrebbe eseguire una query diretta al database, questa è una soluzione molto migliore ed elegante. –

+1

Anche se fosse la risposta corretta scelta, sarebbe stato meglio contrassegnare questa domanda come duplicata anziché rispondere a questa. – Luke

+0

@Coulton un po 'dopo il pugno, ma al momento, non ho potuto contrassegnare ... Quindi in questo modo – RichardBernards

Problemi correlati