Cách nhận Last OrderId bên trong một Người quan sát


7

Tôi đang cố gắng lấy id đơn hàng cuối cùng cho một đơn hàng để tôi có thể tự động tạo hóa đơn và giao hàng nhưng dường như tôi không thể tải đúng thứ tự để thực hiện hành động ...

Đây là cách tôi đang cố gắng tải orderId Observer.php

$order = Mage::getModel('sales/order')->load($orderid);
$orderIncrementId = $order->getIncrementId();

Nếu orderId không có ngoại lệ ném

$order = Mage::getModel('sales/order')
            ->loadByIncrementId($orderIncrementId);    
if (!$order->getId()) {
        Mage::throwException("Order does not exist, for the Shipment process to complete");
    }

Vấn đề là nếu tôi vượt qua trong một trật tự tĩnh. Không có ngoại lệ nào được ném

$orderIncrementId = '1100000023-4';

Nhưng khi tôi cố tải nó qua Model thì tôi không thể

Bất cứ ai có thể chỉ cho tôi làm thế nào để có được orderId cho một đơn đặt hàng xin vui lòng?


Sự kiện nào bạn đang sử dụng cho người quan sát?
Vladimir Kerkhoff

@VladimirKerkhoff Tôi đang sử dụng sales_order_invoice_registercho Người quan sát
user1704524

Câu trả lời:


1

Câu trả lời được chấp nhận đã không làm việc cho tôi. Đào sâu vào nó hóa ra, giải pháp sau đây có hiệu quả với tôi:

Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId()

13

Nhận order_id mới nhất từ ​​phiên như thế này:

Mage::getSingleton('checkout/session')->getLastOrderId();

Đây cũng là một cách khác để làm điều đó.


4

Để nhận ID đơn hàng cuối cùng trong Magento:

   $orders = Mage::getModel('sales/order')->getCollection()
       ->setOrder('increment_id','DESC')
       ->setPageSize(1)
       ->getFirstItem();
    echo $orders->getEntityId()

2
Điều này là chính xác, nhưng có một vấn đề. getFirstItemtải bộ sưu tập đầy đủ. Đây có thể là một vấn đề nếu bạn có nhiều đơn đặt hàng. Bạn nên thêm giới hạn 1 vào bộ sưu tập, để đảm bảo chỉ có một mục được tải.
Marius

Tôi đã kiểm tra nó. getFirstItem sẽ không hiển thị tất cả các thông tin đơn hàng. Nó chỉ hiển thị một thông tin đặt hàng.
saravanavelu

Cảm ơn @Marius Tôi đã kết thúc sử dụng Mage::getSingleton('checkout/session')->getLastRealOrderId();nhưng tôi đồng ý rằng có một sự khác biệt cho các đơn hàng được tạo trong Admin
user1704524

1
Tôi không nói rằng nó sẽ hiển thị tất cả các thông tin đơn đặt hàng khác. Tôi đang nói rằng nó chỉ lấy chúng từ db và chúng vô dụng trong trường hợp này. Kiểm tra cách làm Varien_Data_Collection::getFirstItemviệc. Nếu bạn có đơn hàng 100k, chỉ cần lấy số thứ tự cuối cùng theo cách này sẽ mất nhiều thời gian.
Marius

ồ đúng rồi.
saravanavelu
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.