অর্ডার রূপান্তর করুন এবং বর্তমান কার্টে লোড করুন


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

ওয়াই? কি নিচে? দয়া করে কেউ আমাদের বলুন?
কিয়ুল শাহ

কীভাবে এটি ডাউনভোট হয়েছিল তা ধারণা নেই। তবে আমি এটিও পরীক্ষা করেছিলাম যে এটি কাজ করে কিনা, দুর্ভাগ্যক্রমে এটি কৌশলটি করেনি।
ব্যবহারকারী 1240207

@ কিউলশাহ, আমি জানতাম না কেন কিছু লোক বিনা কারণে ভোট দিচ্ছেন
অমিত বেরা

@ অমিতবেরা: হ্যাম ভাল বেস্ট লাক পরের বার।
কিউল শাহ

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)। এটি ইনপুট হিসাবে একটি আদেশ নেয় এবং একটি নতুন উদ্ধৃতি অবজেক্ট আউটপুট করে।

বিলিং / শিপিং ঠিকানা, আইটেম ইত্যাদিতে রূপান্তর করার জন্য আপনাকে অতিরিক্ত ফাংশনগুলি কল করতে হবে না প্রতিটি বস্তুর জন্য আপনি এই শ্রেণিতে একটি ফাংশন পাবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.