Obtener detalles del pedido por ID de pedido

32

Necesito recuperar un pedido en Magento por su Id. ¿Cómo cargo un pedido específico por Id?

Hasta ahora he construido la consulta inicial:

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

Respuestas:

61

Para cargar un pedido por ID de incremento, uno haría:

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

Para cargar por ID de entidad, simplemente llame load:

Mage::getModel('sales/order')->load(24999); //use an entity id here
philwinkle
fuente
Lo pruebo por ID de pedido e ID de incremento, ¡pero no me muestra nada ni ningún error! magento.stackexchange.com/questions/39762/…
mahdi
Eso es lo que necesitaba
FosAvance el
17

Obtener los detalles del pedido depende de algunos componentes:

  1. La orden (normalmente orden #)
  2. El contenido de la orden (simple versus configurable, invisible, etc.)
  3. La información que está buscando extraer (precios versus otra información)

Cargue su pedido: (db: sales_flat_order)

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

A continuación, filtre su colección de artículos según el pedido.

Lo que la mayoría hará es: (db: sales_flat_order_item)

$order->getAllVisibleItems();

Que mostrará los productos visibles. El problema con esto es que obtendrá el elemento "configurable" de la colección (que extrañamente tiene el sku del niño en el registro). Creo que esto es impredecible en el caso de los cambios de SKU, ya que el SKU histórico ya no está presente. En cambio, me parece mejor hacer un enfoque alternativo de la siguiente manera.

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • getItemsCollection () en realidad devolverá Parent and the Child, lo que es confuso para la mayoría. Vamos a centrarnos en el niño.
  • Tradicionalmente, el padre (es decir, configurable) tendrá la información de precios, donde el hijo (simple) no. Con el Niño (producto simple) podemos determinar si hay un parent_id (pero no el reverso) y también podemos obtener información del producto de entity_id (no el reverso) a partir de getAllVisibleItems ().
  • iterar a través de la colección de artículos de 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
fuente
Sólo una nota, que intvalel getQtyOrdered, pero que puede ser un valor decimal :)
Harry Mustoe-Playfair
Donde puedo encontrar toda la documentación sobre la función integrada del modelo como addAttributeToSelect. Gracias.
Iftakharul Alam