Nhận chi tiết đơn hàng theo Id đơn hàng


32

Tôi cần lấy một đơn đặt hàng trong Magento bằng Id của nó. Làm cách nào để tôi tải một đơn đặt hàng cụ thể theo Id?

Cho đến nay tôi đã nhận được truy vấn ban đầu được xây dựng:

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

Câu trả lời:


61

Để tải một đơn đặt hàng theo id tăng, người ta sẽ làm:

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

Để tải theo id thực thể, bạn chỉ cần gọi load:

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

Tôi kiểm tra nó bằng id đơn hàng và id tăng nhưng nó cho tôi thấy không có gì và không có lỗi! magento.stackexchange.com/questions/39762/ từ
mahdi

Đó là những gì tôi cần
FosAvance

17

Lấy chi tiết đơn hàng phụ thuộc vào một vài thành phần:

  1. Đơn hàng (thông thường thứ tự #)
  2. Nội dung của Đơn hàng (Đơn giản so với Cấu hình, Vô hình, v.v.)
  3. Thông tin bạn đang tìm cách trích xuất (Giá so với thông tin khác)

Tải Đơn hàng của bạn: (db: sales_flat_order)

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

Tiếp theo, Lọc Bộ sưu tập Vật phẩm của bạn dựa trên Đơn hàng.

Những gì hầu hết sẽ làm là: (db: sales_flat_order_item)

$order->getAllVisibleItems();

Mà sẽ hiển thị các sản phẩm có thể nhìn thấy. Vấn đề với điều này là, nó sẽ lấy vật phẩm "có thể cấu hình" từ bộ sưu tập (điều kỳ lạ là có sku của đứa trẻ trong hồ sơ). Tôi thấy điều này là không thể đoán trước trong trường hợp SKU thay đổi vì SKU lịch sử không còn nữa. Thay vào đó, tôi thấy tốt hơn để làm một cách tiếp cận khác như sau.

 $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
  • getItemsCollection () sẽ thực sự trả lại Phụ huynh và Trẻ em, gây nhầm lẫn cho hầu hết. Hãy tập trung vào đứa trẻ.
  • Theo truyền thống, Phụ huynh (eg.Configurable) sẽ có thông tin về giá, trong đó đứa trẻ (đơn giản) sẽ không. Với Child (sản phẩm đơn giản), chúng tôi có thể xác định xem có cha mẹ hay không (và không phải ngược lại) và chúng tôi cũng có thể lấy thông tin sản phẩm từ entity_id (không phải ngược lại) như từ getAllVisibleItems ().
  • lặp qua bộ sưu tập các mục đặt hàng

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

Chỉ cần một lưu ý, bạn có intvalsự getQtyOrdered, nhưng điều đó có thể là một giá trị thập phân :)
Harry Mustoe-Playfair

Nơi tôi có thể tìm thấy tất cả các tài liệu về chức năng tích hợp mô hình như thế nào addAttributeToSelect. Cảm ơn bạn.
Iftakharul Alam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.