Obter detalhes do pedido por ID do pedido

32

Eu preciso recuperar um pedido no Magento pelo seu ID. Como carrego um pedido específico por ID?

Até agora, consegui construir a consulta inicial:

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

Respostas:

61

Para carregar um pedido por ID de incremento, seria necessário:

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

Para carregar pelo ID da entidade, basta chamar load:

Mage::getModel('sales/order')->load(24999); //use an entity id here
philwinkle
fonte
Eu testá-lo por ID de pedido e ID de incremento, mas não me mostra nada e nenhum erro! magento.stackexchange.com/questions/39762/...
mahdi
Isso é o que eu precisava
FOSAVANCE
17

A obtenção dos detalhes do pedido depende de alguns componentes:

  1. O pedido (normalmente o número do pedido)
  2. O conteúdo da ordem (simples versus configurável, invisível etc.)
  3. As informações que você deseja extrair (preços versus outras informações)

Carregue seu pedido: (db: sales_flat_order)

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

Em seguida, filtre sua coleção de itens com base no pedido.

O que mais fará é: (db: sales_flat_order_item)

$order->getAllVisibleItems();

Qual mostrará os produtos visíveis. O problema é que ele obterá o item "configurável" da coleção (que estranhamente tem o sku da criança no registro). Acho que isso é imprevisível no caso de alterações no SKU, pois o SKU histórico não está mais presente. Em vez disso, acho melhor fazer uma abordagem alternativa da seguinte maneira.

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • getItemsCollection () realmente retornará o pai e o filho, confusos para a maioria. Vamos focar na criança.
  • Tradicionalmente, o pai (ou seja, configurável) terá as informações de preços, enquanto o filho (simples) não. Com o Child (produto simples), podemos determinar se existe um parent_id (mas não o inverso) e também podemos obter informações do produto de entity_id (não o inverso) e de getAllVisibleItems ().
  • iterar através da coleção de itens do pedido

    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";
    
            }
        }
JoshBelke
fonte
Apenas uma nota, intvalo getQtyOrdered, mas isso pode ser um valor decimal :)
Harry Mustoe-Playfair
Onde posso encontrar toda a documentação sobre a função incorporada do modelo addAttributeToSelect. Obrigado.
Iftakharul Alam