Получить детали заказа по идентификатору заказа

32

Мне нужно получить заказ в Magento по его идентификатору. Как загрузить определенный заказ по идентификатору?

Итак, я получил первоначальный запрос:

Mage::getModel('sales/order');
STW
источник

Ответы:

61

Чтобы загрузить заказ по инкрементному идентификатору, нужно сделать:

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

Для загрузки по идентификатору объекта вы просто позвоните load:

Mage::getModel('sales/order')->load(24999); //use an entity id here
philwinkle
источник
я проверяю это по идентификатору заказа и приращению идентификатора, но это не показывает мне ничего и никакой ошибки! magento.stackexchange.com/questions/39762/...
мессия
Это то, что мне было нужно
FosAvance
17

Получение деталей заказа зависит от нескольких компонентов:

  1. Заказ (обычно заказ №)
  2. Содержание заказа (простое и настраиваемое, невидимое и т. Д.)
  3. Информация, которую вы хотите извлечь (Цены против Другая информация)

Загрузите ваш заказ: (db: sales_flat_order)

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

Затем отфильтруйте свою коллекцию предметов на основе заказа.

Что большинство из них сделает: (db: sales_flat_order_item)

$order->getAllVisibleItems();

Который покажет видимые продукты. Проблема в том, что он получит «настраиваемый» элемент из коллекции (который, как ни странно, имеет пометку ребенка в записи). Я нахожу это непредсказуемым в случае изменений SKU, так как исторический SKU больше не присутствует. Вместо этого я считаю, что лучше использовать альтернативный подход следующим образом.

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • getItemsCollection () на самом деле вернет Parent и Child, что сбивает с толку большинство. Давайте сосредоточимся на ребенке.
  • Традиционно родительский (т.е. настраиваемый) будет иметь информацию о ценах, а ребенок (простой) не будет. С помощью Child (простой продукт) мы можем определить, есть ли parent_id (но не наоборот), и мы также можем получить информацию о продукте из entity_id (не наоборот), как из getAllVisibleItems ().
  • перебрать коллекцию элементов заказа

    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
источник
Просто к сведению, вы , но это может быть десятичное значение :)intvalgetQtyOrdered
Гарри Mustoe-Playfair
Где я могу найти всю документацию о встроенной функции модели, как addAttributeToSelect. Спасибо.
Ифтахарул Алам