แปลงคำสั่งซื้อเพื่อเสนอราคาและโหลดเป็นรถเข็นปัจจุบัน


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

กรุณาใช้รหัสด้านล่าง มันอาจจะช่วยคุณ

Mage :: 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? เกิดอะไรขึ้น ได้โปรดบอกใครบ้าง
Keyul Shah

ไม่รู้เลยว่ามันถูกลดระดับลงอย่างไร แต่ฉันก็ตรวจสอบด้วยว่ามันจะใช้งานได้หรือไม่
user1240207

@ KeyulShah ฉันไม่ทราบว่าทำไมบางคนลงคะแนนเสียงโดยไม่มีเหตุผล
Amit Bera

@AmitBera: hmm Better Luck ครั้งต่อไป
Keyul Shah

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.