वर्तमान ऑर्डर को उद्धरण और लोड को वर्तमान कार्ट में बदलें


10

मैं किसी आदेश को सफलतापूर्वक उद्धरण में बदल सकता हूं, लेकिन मैं अभी भी इसे वर्तमान कार्ट में लोड नहीं कर सकता। मैंने कई तरीकों की कोशिश की लेकिन कोई फायदा नहीं हुआ। यहाँ सबसे सरल है:

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

मैं बोली आईडी प्राप्त करने में सक्षम था, लेकिन बोली वस्तु वर्तमान कार्ट में लोड नहीं होती है।

मैंने भी कोशिश की

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

और इसी तरह के दृष्टिकोण लेकिन फिर भी बोली लोड नहीं हो रही है। आपका बहुत बहुत धन्यवाद!

जवाबों:


9

@ user1240207

कृपया नीचे दिए गए कोड का उपयोग करें। यह आपकी मदद कर सकता है।

दाना :: getSingleton ( 'चेकआउट / सत्र') -> setQuoteId ($ _ quote-> getId ());

नीचे दिए गए कृपया उद्धरण चिह्नों का उपयोग करने के लिए कोड परिवर्तित करें:

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

यहाँ प्रक्रिया है:

वर्तमान बोली प्राप्त करें

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

उद्धरण के लिए आदेश में कनवर्ट करें

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

सक्रिय भाव

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

अपनी वर्तमान बोली मर्ज करें और रिवर्स उद्धरण का आदेश दें

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

चेकआउट सत्र के लिए उद्धरण सेट करें

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? नीचे क्या? कृपया कोई हमें बताए?
कियुल शाह

पता नहीं कैसे इसे डाउनवोट किया गया था। लेकिन मैंने यह भी जाँच की कि क्या यह काम करेगा, दुर्भाग्य से इसने चाल नहीं चली।
user1240207

@ KeyulShah, मुझे नहीं पता था कि क्यों कुछ लोग बिना किसी कारण के वोट नीचे हैं
अमित बेरा

@AmitBera: हम्म बेटर लक अगली बार।
कियुल शाह

3

पिछला उत्तर केवल तभी काम करता है जब कोट अभी भी डीबी में उपलब्ध हो। मैं ऐसी स्थिति में चला गया जहाँ अब ऐसा नहीं था, इसलिए यह कोड काम नहीं करता है:

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

इसके बजाय, हम पद्धति Mage_Sales_Model_Convert_Orderका उपयोग करके मौजूदा ऑर्डर को वापस एक नए उद्धरण में बदलने के लिए उपयोग कर सकते हैं toQuote(Mage_Sales_Model_Order $order)। यह इनपुट के रूप में एक ऑर्डर लेता है और एक नई बोली ऑब्जेक्ट आउटपुट करता है।

आपको बिलिंग / शिपिंग पते, आइटम आदि को परिवर्तित करने के लिए अतिरिक्त कार्यों को कॉल करने की आवश्यकता है, प्रत्येक ऑब्जेक्ट के लिए आपको इस वर्ग में एक फ़ंक्शन मिलेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.