Teklifi Alıntıla ve Geçerli Sepete Yükle


10

Bir siparişi başarıyla alıntıya dönüştürebilirim ama hala mevcut sepete yükleyemedim. Birkaç yöntem denedim ama boşuna. İşte en basit olanı:

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

Teklif kimliğini alabildim ancak quote nesnesi geçerli sepete yüklenmiyor.

Ben de denedim

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

ve benzer yaklaşımları içerir, ancak yine de alıntıyı yüklemez. Çok teşekkür ederim!

Yanıtlar:


9

@ user1240207

Lütfen aşağıdaki kodu kullanın. Size yardımcı olabilir.

Mage :: getSingleton ( 'çıkış / oturum') -> setQuoteId ($ _ quote-> getId ());

Kod alıntı için bir sipariş dönüştürmek lütfen aşağıda kullanılan:

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

İşte süreç:

Mevcut teklifi al

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

Siparişi Dönüştür

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

Aktif Fiyat Teklifi

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

Mevcut fiyat teklifinizi birleştirin ve geri fiyat teklifi verin

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

teklifi ödeme oturumuna ayarla

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? ne oldu? lütfen bize söyleyen var mı?
Keyul Shah

Nasıl indirildiğine dair bir fikrim yok. Ama aynı zamanda işe yarayıp yaramadığını kontrol ettim, maalesef hile yapmadı.
user1240207

@ KeyulShah, neden bazı insanların herhangi bir sebep olmadan oy kaybettiğini bilmiyordum
Amit Bera

@AmitBera: Bir dahaki sefere Daha İyi Şanslar.
Keyul Shah

3

Önceki cevap sadece teklif hala DB'de mevcutsa çalışır. Bu artık böyle bir durumda koştu, bu yüzden bu kod çalışmaz:

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

Bunun yerine, yöntemi Mage_Sales_Model_Convert_Orderkullanarak mevcut bir siparişi yeni bir teklife dönüştürmek için kullanabiliriz toQuote(Mage_Sales_Model_Order $order). Girdi olarak bir sipariş alır ve yeni bir alıntı nesnesi çıkarır.

Fatura / gönderim adresini, kalemleri vb. Dönüştürmek için ekstra işlevler çağırmanız gerekir. Her nesne için bu sınıfta bir işlev bulacaksınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.