Obtenir les détails de la commande par ID de commande

32

Je dois récupérer une commande dans Magento par son identifiant. Comment charger une commande spécifique par ID?

Jusqu'ici j'ai construit la requête initiale:

Mage::getModel('sales/order');
STW
la source

Réponses:

61

Pour charger une commande par incrément ID on ferait:

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

Pour charger par identifiant d'entité, il vous suffit d'appeler load:

Mage::getModel('sales/order')->load(24999); //use an entity id here
philwinkle
la source
je le teste par identifiant de commande et identifiant incrément, mais il ne montre rien et aucune erreur! magento.stackexchange.com/questions/39762/…
mahdi
C'est ce dont j'avais besoin
FosAvance
17

Obtenir les détails de la commande dépend de quelques composants:

  1. La commande (normalement le numéro de commande)
  2. Le contenu de la commande (simple vs configurable, invisible, etc.)
  3. Les informations que vous souhaitez extraire (Prix vs autres informations)

Chargez votre commande: (db: sales_flat_order)

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

Ensuite, filtrez votre collection d'articles en fonction de la commande.

Ce que la plupart vont faire, c'est: (db: sales_flat_order_item)

$order->getAllVisibleItems();

Ce qui montrera les produits visibles. Le problème, c’est que l’objet «configurable» sera récupéré dans la collection (qui a étrangement le sku de l’enfant dans l’enregistrement). Je trouve cela imprévisible dans le cas des changements de SKU car le SKU historique n’est plus présent. Au lieu de cela, je trouve préférable de faire une approche alternative comme suit.

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • getItemsCollection () retournera en fait le parent et l'enfant, ce qui déroutera le plus. Permet de se concentrer sur l'enfant.
  • Traditionnellement, le parent (ie.Configurable) aura les informations de tarification, contrairement à l'enfant (simple). Avec Child (produit simple), nous sommes en mesure de déterminer s’il existe un parent_id (mais pas l’inverse) et nous pouvons également récupérer les informations sur le produit à partir de entity_id (et non l’inverse) à partir de getAllVisibleItems ().
  • itérer dans la collection d'articles de commande

    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
la source
Juste une note, vous intvalla getQtyOrdered, mais cela peut être une valeur décimale :)
Harry Mustoe-Playfair
Où je peux trouver toute la documentation sur la fonction intégrée du modèle comme addAttributeToSelect. Merci.
Iftakharul Alam le