2011-11-29 40 views
10

Tôi đang tìm cách nhận id đơn đặt hàng và các chi tiết khác cho các đơn đặt hàng có trạng thái = 'hoàn thành' trong Magento. Tôi chắc chắn có một cách trong Magento, nơi chúng tôi có thể lấy tất cả các đơn đặt hàng với trạng thái là Complete. Vì tôi là một người mới đến Magento nên tôi cảm thấy rất khó để làm việc này.Nhận id đơn đặt hàng có trạng thái = 'Hoàn thành' trong Magento

Tôi muốn gửi cho khách hàng trạng thái đơn đặt hàng là Hoàn thành email và đánh dấu họ khi email được gửi. Nhưng đó là phần sau của nó. Bất cứ ai có thể cho tôi biết làm thế nào trong Magento bạn có thể nhận được tất cả các id đặt hàng với tình trạng là hoàn thành?

Mọi trợ giúp đều được đánh giá cao. Cảm ơn trước.

Trả lời

22

Điều này có thể chạy dưới dạng tập lệnh từ thư mục cài đặt Magento cơ sở. Nếu nó chạy bên trong của một tập tin Magento đã có (điều khiển hoặc khối hoặc bất cứ điều gì), bạn không cần ba dòng đầu tiên.

<?php 
require_once('app/Mage.php'); 
Mage::app(); 

$orders = Mage::getModel('sales/order')->getCollection() 
    ->addFieldToFilter('status', 'complete') 
    ->addAttributeToSelect('customer_email') 
    ; 
foreach ($orders as $order) { 
    $email = $order->getCustomerEmail(); 
    echo $email . "\n"; 
} 

EDIT:

Để xem tất cả đơn đặt hàng với trạng thái và email:

$orders = Mage::getModel('sales/order')->getCollection() 
    //->addFieldToFilter('status', 'complete') 
    ->addAttributeToSelect('customer_email') 
    ->addAttributeToSelect('status') 
    ; 
foreach ($orders as $order) { 
    $email = $order->getCustomerEmail(); 
    echo $order->getId() . ": '" . $order->getStatus() . "', " . $email . "\n"; 
} 
+0

Cảm ơn bạn đã trả lời. Tôi đã thử mã của bạn và nó hoạt động nhưng tôi đã có ba đơn đặt hàng trong cơ sở dữ liệu với trạng thái là Hoàn thành. Tuy nhiên nó chỉ cho tôi thấy một trong những id email trong số 3 đơn đặt hàng đó. Tôi muốn hiển thị tất cả các đơn đặt hàng (id n email liên hệ) với trạng thái là 'Hoàn thành'. Ngoài ra, nếu tôi cũng cần in Id thứ tự, có phương thức nào là getOrderId() hoặc getId() hoặc một cái gì đó để làm điều đó – ivn

+1

Bạn có thể muốn đọc một số về phát triển Magento. Tôi đã tìm thấy những bài viết hay nhất để trở thành bài viết của Alan Storm trên trang web của anh ấy: http://alanstorm.com/category/magento Để có được Id, bạn có thể làm $ order-> getId() bên trong vòng lặp. Bạn có thể muốn làm $ order-> getIncrementId(), tùy thuộc vào những gì bạn cần. Về vấn đề của bạn, tôi không biết phải nói gì, ngoại trừ thử xóa bộ lọc và in tất cả các đơn đặt hàng và trạng thái và id như thế này 'echo $ order-> getId(). ": '". $ order-> getStatus(). "',". $ email. "\ n"; ' – Max

+0

Tôi cũng muốn các đơn đặt hàng có trạng thái = hoàn thành nhưng tôi cũng muốn xem Mã đặt hàng, Tên khách hàng, Email khách hàng cho các đơn đặt hàng cụ thể đó. Vì vậy, giải pháp trước đó của bạn đã được tốt chỉ là tôi muốn ID đơn đặt hàng quá. Tuy nhiên ngay cả tôi đã cố gắng getId() và getIncrementId() nhưng không ai trong số họ dường như trả lại cho tôi bất kỳ id đơn đặt hàng nào. – ivn

1

Để Nhận Tất cả các sản phẩm có trạng thái đơn hàng như 'Hoàn thành'

$orders = Mage::getResourceModel('sales/order_collection') 
->addFieldToSelect('*') 
->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId()) 
->addFieldToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates())) 
->addFieldToFilter('status', 'complete') 
->setOrder('created_at', 'desc'); 

$this->setOrders($orders); 
foreach ($orders as $order) 
{ 
$order_id=$order->getRealOrderId(); 
$order = Mage::getModel('sales/order')->load($order_id, 'increment_id'); 
$order->getAllVisibleItems(); 
$orderItems = $order->getItemsCollection() 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('product_type', array('eq'=>'simple')) 
    ->load(); 
foreach($orderItems as $Item) 
{ 
    $Item = Mage::getModel('catalog/product')->setStoreId($Item->getStoreId())->load($Item->getProductId()); 
    if ($Item->getId()) 
    { 
     echo $Item->getName(); 
     echo $Item->getPrice(); 
     echo $Item->getProductUrl(); 
     echo $Item->getImageUrl(); 
     } 
} 
} 
?> 
Các vấn đề liên quan