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');

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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.