Ottieni i dettagli dell'ordine per ID ordine


32

Devo recuperare un ordine in Magento dal suo ID. Come carico un ordine specifico per ID?

Finora ho costruito la query iniziale:

Mage::getModel('sales/order');

Risposte:


61

Per caricare un ordine in base all'ID di incremento si dovrebbe fare:

Mage::getModel('sales/order')->loadByIncrementId('10000001'); //use a real increment order id here

Per caricare per ID entità devi semplicemente chiamare load:

Mage::getModel('sales/order')->load(24999); //use an entity id here

lo collaudo per ID ordine e ID incremento ma non mi mostra nulla e nessun errore! magento.stackexchange.com/questions/39762/…
mahdi

Questo è quello di cui avevo bisogno
FosAvance l'

17

Ottenere i dettagli dell'ordine dipende da alcuni componenti:

  1. L'ordine (normalmente n. Ordine)
  2. Il contenuto dell'ordine (semplice vs configurabile, invisibile ecc.)
  3. Le informazioni che stai cercando di estrarre (Prezzi vs Altre informazioni)

Carica il tuo ordine: (db: sales_flat_order)

$OrderNumber = "100000001";//Put your order Number here
$order = Mage::getModel('sales/order')->load($OrderNumber, 'increment_id');

Successivamente, filtra la tua raccolta di articoli in base all'ordine.

Quello che la maggior parte farà è: (db: sales_flat_order_item)

$order->getAllVisibleItems();

Che mostrerà i prodotti visibili. Il problema è che otterrà l'elemento "configurabile" dalla raccolta (che stranamente ha lo sku del bambino nel record). Trovo che ciò sia imprevedibile nel caso di modifiche dello SKU poiché lo SKU storico non è più presente. Invece, trovo meglio fare un approccio alternativo come segue.

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • getItemsCollection () restituirà effettivamente il genitore e il figlio, confondendo per la maggior parte. Concentriamoci sul bambino.
  • Tradizionalmente, il genitore (cioè configurabile) avrà le informazioni sui prezzi, mentre il figlio (semplice) non lo farà. Con Child (prodotto semplice) siamo in grado di determinare se esiste un parent_id (ma non il contrario) e siamo anche in grado di acquisire informazioni sul prodotto da entity_id (non il contrario) come da getAllVisibleItems ().
  • scorrere la raccolta degli articoli dell'ordine

    foreach($orderItems as $sItem) {
    
        //Ignore conf for now
        //Alt. Mage_Catalog_Model_Product_Type::TYPE_SIMPLE = 'simple';
        if($sItem->getProductType() == "simple")
        {
    
    
    
            echo "\n*********************************\nMage Order #: ".$OrderNumber."\n";
            //Simple Item Info from Order
            echo "Type: ".$sItem->getProductType()."\n";
            echo "Order Id: ".$sItem->getOrderId()."\n";
            echo "Product Id: ".$sItem->getProductId()."\n";
            echo "Item Id: ".$sItem->getId()."\n";
            echo "Item Name: ".$sItem->getName()."\n";
            echo "Item Sku: ".$sItem->getSku()."\n";
            echo "Item Price: ".$sItem->getPrice()."\n";
    
            $pItemId = $sItem->getParentItemId();
            echo "Parent Item Id: ".$pItemId."\n";
    
            echo "\n*****\n";
    //Get Parent Item Information
    $item = Mage::getModel('sales/order_item')->load("$pItemId"); //use an item_id here
    
            //Testing, want to see whats inside the parent/configurable item?
            //print_r($item->toArray());
    
            echo "Parent Type: ".$item->getProductType()."\n";
            echo "Parent Order Id: ".$item->getOrderId()."\n";
            echo "Product Id: ".$item->getProductId()."\n";
            echo "Item Id: ".$item->getId()."\n";
            echo "Parent Item Price: ".$item->getPrice()."\n";
            echo "Qty: ".$qty = intval($item->getQtyOrdered())."\n";
    
            //get Active Product Data
            $nProduct = Mage::getModel('catalog/product')->load($sItem->getProductId());
    $nSku = $nProduct->getSku();
        echo "new Product UPC:".$nUpc = $nProduct->getUpc() . "\n";
            echo "new Product Price:".$nPrice = $nProduct->getPrice(). "\n";
    
            }
        }

Solo una nota, tu intvalil getQtyOrdered, ma che può essere un valore decimale :)
Harry Mustoe-Playfair

Dove posso trovare tutta la documentazione sulla funzione integrata del modello come addAttributeToSelect. Grazie.
Iftakharul Alam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.