Ubah Pesanan menjadi Penawaran dan Muat ke Troli Saat Ini


10

Saya dapat dengan sukses mengkonversi konversi pesanan menjadi kutipan tetapi saya masih tidak dapat memuatnya ke keranjang saat ini. Saya mencoba beberapa metode tetapi tidak berhasil. Inilah yang paling sederhana:

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

Saya bisa mendapatkan ID kutipan tetapi objek kutipan tidak memuat ke troli saat ini.

Saya juga mencoba

$_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();
}

dan pendekatan serupa tetapi masih belum memuat kutipan. Terima kasih banyak!

Jawaban:


9

@ user1240207

Silakan gunakan kode di bawah ini. Ini akan membantu Anda.

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

Kode konversi pesanan menjadi penawaran harap gunakan di bawah ini:

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

Berikut prosesnya:

Dapatkan penawaran terkini

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

Konversi Pesanan menjadi penawaran

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

Kutipan aktif

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

Gabungkan penawaran Anda saat ini dan pesan Penawaran terbalik

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

setel kutipan ke sesi checkout

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? apa yang turun? tolong ada yang memberi tahu kami?
Keyul Shah

Tidak tahu bagaimana itu diturunkan. Tetapi saya juga memeriksa apakah itu akan berhasil, sayangnya itu tidak berhasil.
user1240207

@ KeyulShah, saya tidak tahu mengapa beberapa orang memilih tanpa alasan
Amit Bera

@AmitBera: hmm Better Luck Lain kali.
Keyul Shah

3

Jawaban sebelumnya hanya berfungsi jika kutipan masih tersedia di DB. Saya mengalami situasi di mana ini tidak lagi terjadi, jadi kode ini tidak berfungsi:

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

Sebagai gantinya, kita dapat menggunakan Mage_Sales_Model_Convert_Orderuntuk mengubah pesanan yang ada kembali menjadi penawaran baru menggunakan toQuote(Mage_Sales_Model_Order $order)metode ini. Dibutuhkan pesanan sebagai input dan output objek kutipan baru.

Anda perlu memanggil fungsi tambahan untuk mengonversi alamat penagihan / pengiriman, barang, dll. Untuk setiap objek Anda akan menemukan fungsi di kelas ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.