Bestelldetails nach Bestell-ID abrufen


32

Ich muss eine Bestellung in Magento anhand ihrer ID abrufen. Wie lade ich eine bestimmte Bestellung nach ID?

Bisher habe ich die erste Abfrage erstellt:

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

Antworten:


61

Um eine Bestellung mit einer inkrementellen ID zu laden, würde man folgendes tun:

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

Zum Laden nach Entitäts-ID rufen Sie einfach Folgendes auf load:

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

Ich teste es anhand der Bestell- und Inkrementierungs-ID, aber es zeigt mir nichts und keinen Fehler! magento.stackexchange.com/questions/39762/…
mahdi

Das habe ich gebraucht
FosAvance

17

Das Abrufen der Bestelldetails hängt von einigen Komponenten ab:

  1. Die Bestellung (normalerweise Bestellnummer)
  2. Der Inhalt der Bestellung (einfach oder konfigurierbar, unsichtbar usw.)
  3. Die Informationen, die Sie extrahieren möchten (Preise im Vergleich zu anderen Informationen)

Laden Sie Ihre Bestellung: (db: sales_flat_order)

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

Filtern Sie anschließend Ihre Artikelsammlung anhand der Bestellung.

Was die meisten tun werden, ist: (db: sales_flat_order_item)

$order->getAllVisibleItems();

Welches wird die sichtbaren Produkte zeigen. Das Problem dabei ist, dass es das "konfigurierbare" Element aus der Sammlung erhält (das seltsamerweise die SKU des Kindes im Datensatz hat). Ich halte dies für unvorhersehbar, wenn sich die Artikelnummer ändert, da die historische Artikelnummer nicht mehr vorhanden ist. Stattdessen finde ich es besser, wie folgt einen alternativen Ansatz zu verfolgen.

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • getItemsCollection () gibt tatsächlich das übergeordnete Element und das untergeordnete Element zurück, was für die meisten verwirrend ist. Konzentrieren wir uns auf das Kind.
  • Herkömmlicherweise verfügt das übergeordnete Element (dh konfigurierbar) über die Preisinformationen, das untergeordnete Element (einfach) hingegen nicht. Mit dem Child (einfaches Produkt) können wir feststellen, ob es eine parent_id gibt (aber nicht umgekehrt), und wir können auch Produktinformationen von entity_id (nicht umgekehrt) wie von getAllVisibleItems () abrufen.
  • Durchlaufen Sie die Sammlung der Bestellpositionen

    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";
    
            }
        }

Nur eine Anmerkung, Sie intvaldie getQtyOrdered, aber das kann ein Dezimalwert sein :)
Harry Mustoe-Playfair

Wo finde ich die gesamte Dokumentation zum Modell wie eingebaut addAttributeToSelect. Vielen Dank.
Iftakharul Alam
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.