Uzyskaj szczegółowe informacje o zamówieniu według identyfikatora zamówienia


32

Muszę odzyskać zamówienie w Magento według jego identyfikatora. Jak załadować konkretne zamówienie według Id?

Do tej pory zbudowałem wstępne zapytanie:

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

Odpowiedzi:


61

Aby załadować zamówienie według identyfikatora przyrostu, należy:

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

Aby załadować według identyfikatora encji, wystarczy wywołać load:

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

testuję go według identyfikatora zamówienia i identyfikatora przyrostu, ale nie pokazuje mi nic i nie ma błędu! magento.stackexchange.com/questions/39762/…
mahdi

Właśnie tego potrzebowałem
FosAvance

17

Uzyskanie szczegółów zamówienia zależy od kilku elementów:

  1. Zamówienie (zwykle zamówienie nr)
  2. Zawartość zamówienia (prosta kontra konfigurowalna, niewidoczna itp.)
  3. Informacje, które chcesz wyodrębnić (ceny a inne informacje)

Załaduj swoje zamówienie: (db: sales_flat_order)

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

Następnie odfiltruj swoją kolekcję przedmiotów na podstawie zamówienia.

Najczęściej będą to robić: (db: sales_flat_order_item)

$order->getAllVisibleItems();

Które pokażą widoczne produkty. Problem polega na tym, że pobierze element „konfigurowalny” z kolekcji (co dziwnie zawiera zapis Sku dziecka). Uważam, że jest to nieprzewidywalne w przypadku zmian SKU, ponieważ historyczny SKU nie jest już obecny. Zamiast tego uważam, że lepiej jest zastosować alternatywne podejście w następujący sposób.

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • Metoda getItemsCollection () faktycznie zwraca wartość Parent i Child, co jest mylące dla większości. Pozwala skupić się na dziecku.
  • Tradycyjnie, rodzic (tj. Konfigurowalny) będzie miał informacje o cenach, a dziecko (proste) nie będzie. W przypadku potomka (prosty produkt) jesteśmy w stanie ustalić, czy istnieje identyfikator nadrzędny (ale nie odwrotny), a także możemy pobrać informacje o produkcie z ID_ podmiotu (nie odwrotnie) jak z getAllVisibleItems ().
  • iterować przez kolekcję przedmiotów zamówienia

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

Tylko uwaga, to , ale to może być wartość dziesiętną :)intvalgetQtyOrdered
Harry Mustoe-Playfaira

Gdzie mogę znaleźć całą dokumentację dotyczącą wbudowanej funkcji modelu, np addAttributeToSelect. Dziękuję Ci.
Iftakharul Alam
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.