Chuyển đổi thứ tự để trích dẫn và tải vào giỏ hàng hiện tại


10

Tôi có thể chuyển đổi thành công một đơn đặt hàng thành báo giá nhưng tôi vẫn không thể tải nó vào giỏ hàng hiện tại. Tôi đã thử một vài phương pháp nhưng không có kết quả. Đây là cách đơn giản nhất:

$_quote = Mage::getModel('sales/convert_order')->toQuote($order)->save();
$_quote = Mage::getModel('sales/quote')->load($_quote->getId());
$_quote->setIsActive(true)->save();

Tôi đã có thể nhận được ID trích dẫn nhưng đối tượng trích dẫn không tải vào giỏ hàng hiện tại.

Tôi cũng đã thử

$_quote = Mage::getModel('sales/convert_order')->toQuote($order)->save();
$_quote = Mage::getModel('sales/quote')->load($_quote->getId());

if ($_checkoutQuote->getId() != $_quote->getId() && $_quote->getId()) {
    $_checkoutQuote->merge($_quote)->save();
    Mage::getModel('checkout/session')
                    ->setQuote($_checkoutQuote)
                    ->init();
    Mage::getSingleton('checkout/session')->getQuote()->setIsActive(true)->save();
}

và cách tiếp cận tương tự nhưng vẫn không tải báo giá. Cảm ơn rât nhiều!

Câu trả lời:


9

@ người dùng1240207

Vui lòng sử dụng mã dưới đây. Nó sẽ có thể giúp bạn.

Mage :: getSingleton ('thanh toán / phiên') -> setQuoteId ($ _ quote-> getId ());

Mã chuyển đổi một đơn đặt hàng để báo giá xin vui lòng sử dụng dưới đây:

   $quote = Mage::getModel('sales/quote')->load($order->getQuoteId());
    if ($quote->getId()) {
        $quote->setIsActive(1)
            //->setReservedOrderId(null)
            ->save();
        Mage::getSingleton('checkout/session')
            ->replaceQuote($quote);
           // ->unsLastRealOrderId();
    }

Đây là quá trình:

Nhận báo giá hiện tại

$currenQuoteId=Mage::getSingleton('checkout/session')->getQuoteId();

Chuyển đổi thứ tự để báo giá

$OrderQuote = Mage::getModel('sales/quote')->load($order->getQuoteId());

Trích dẫn hoạt động

if ($OrderQuote>getId()) {
    $OrderQuote>setIsActive(1)
        //->setReservedOrderId(null)
        ->save();
}

Hợp nhất báo giá hiện tại của bạn và đặt hàng ngược Trích dẫn

if ($OrderQuote->getId() && $currenQuoteId != $OrderQuote->getId()) {
    if ($currenQuoteId) {
    $OrderQuote->merge(Mage::getSingleton('checkout/session')->getQuote())
        ->collectTotals()
        ->save();
    }

đặt báo giá cho phiên thanh toán

Mage::getSingleton('checkout/session')->setQuoteId($OrderQuote->getId());

 if (Mage::getSingleton('checkout/session')->_quote) {
            Mage::getSingleton('checkout/session')->delete();
        }
       Mage::getSingleton('checkout/session') = $OrderQuote;
    } else {
        Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress();
        Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress();
        Mage::getSingleton('checkout/session')->getQuote()->setCustomer(Mage::getSingleton('customer/session')->getCustomer())
            ->setTotalsCollectedFlag(false)
            ->collectTotals()
            ->save();
    }

Y xuống cái gì xin mọi người cho chúng tôi biết?
Keyul Shah

Không biết làm thế nào nó đã bị hạ cấp. Nhưng tôi cũng đã kiểm tra xem nó có hoạt động không, thật không may là nó không làm được điều đó.
dùng1240207

@ KeyulShah, tôi không biết tại sao một số người lại bỏ phiếu mà không có lý do
Amit Bera

@AmitBera: hmm Better Luck Lần tới.
Keyul Shah

3

Câu trả lời trước chỉ hoạt động nếu trích dẫn vẫn có sẵn trong DB. Tôi gặp phải tình huống không còn như vậy nữa, vì vậy mã này không hoạt động:

$quote = Mage::getModel('sales/quote')->load($order->getQuoteId());
$quote->getId() => This is empty, in fact the whole model is empty!

Thay vào đó, chúng ta có thể sử dụng Mage_Sales_Model_Convert_Orderđể chuyển đổi một đơn đặt hàng hiện có trở lại thành một trích dẫn mới bằng toQuote(Mage_Sales_Model_Order $order)phương thức này. Nó nhận một đơn đặt hàng làm đầu vào và đầu ra một đối tượng trích dẫn mới.

Bạn cần phải gọi các chức năng bổ sung để chuyển đổi địa chỉ thanh toán / giao hàng, vật phẩm, v.v. Đối với mỗi đối tượng, bạn sẽ tìm thấy một chức năng trong lớp này.

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.