Saltar al contenido

Obtener detalles del pedido por ID de pedido

Luego de investigar con especialistas en el tema, programadores de varias áreas y profesores dimos con la respuesta al dilema y la compartimos en este post.

Solución:

Para cargar una orden por id de incremento uno haría:

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

Para cargar por identificación de entidad, simplemente llamaría load:

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

Obtener los detalles del pedido depende de algunos componentes:

  1. El pedido (normalmente número de pedido)
  2. El Contenido de la Orden (Simple vs Configurable, Invisible, etc.)
  3. La información que busca extraer (precios frente a 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). Considero que esto es impredecible en el caso de 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á el Padre y el Hijo, lo que resulta confuso para la mayoría. Centrémonos en el niño.
  • Tradicionalmente, el padre (es decir, configurable) tendrá la información de precios, mientras que el hijo (simple) no la tendrá. Con el Child (producto simple) podemos determinar si hay un parent_id (pero no al revés) y también podemos obtener información del producto de entity_id (no al revés) como 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";
    
            
        
    

Reseñas y valoraciones

Si conservas algún impedimento y capacidad de avanzar nuestro escrito puedes ejecutar una acotación y con gusto lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *