Cara menghapus produk keranjang lama setelah pelanggan masuk


8

Pelanggan mengunjungi situs web dan menambahkan produk,

kemudian login pelanggan.

jika pelanggan sudah memiliki barang keranjang, barang lama yang dihapus, barang yang baru ditambahkan hanya menunjukkan

Contoh:

Pelanggan sudah memiliki 5 produk di troli> Kunjungi situs> tambahkan 2 produk baru di troli> login akun pelanggan> tunjukkan troli yang baru ditambahkan 2 produk (produk troli lama dihapus)

Setiap saran akan dihargai.

Jawaban:


7

gunakan acara ini sales_quote_merge_before

letakkan ini di config.xml

<events> 
   <sales_quote_merge_before><!--calling this event before merging the old cart with newly added cart items while login--> 
       <observers> 
            <ws_clearoldcartproducts_observer><!--unique identifier name for our observer--> 
                <type>singleton</type> 
                <class>Ws_Clearoldcartproducts_Model_Observer</class><!--Our observer class name--> 
                <method>loadCustomerQuote</method><!--Method to be called from our observer class--> 
            </ws_clearoldcartproducts_observer> 
        </observers> 
    </sales_quote_merge_before> 
</events> 

letakkan ini di observer.php

public function loadCustomerQuote() 
{ 
    $customerQuote = Mage::getModel('sales/quote') 
                        ->setStoreId(Mage::app()->getStore()->getId())
                        ->loadByCustomer(Mage::getSingleton('customer/session')->getCustomerId()
                    ); 
    if ($customerQuote->getId() && $this->getQuoteId() != $customerQuote->getId()) 
    { 
        // Removing old cart items of the customer. 
        foreach ($customerQuote->getAllItems() as $item) 
        { 
            $item->isDeleted(true); 
            if ($item->getHasChildren()) { 
                foreach ($item->getChildren() as $child) { 
                    $child->isDeleted(true); 
                } 
            } 
        } 
        $customerQuote->collectTotals()->save(); 
    } 
    else 
    { 
        $this->getQuote()->getBillingAddress(); 
        $this->getQuote()->getShippingAddress(); 
        $this->getQuote()->setCustomer(Mage::getSingleton('customer/session')->getCustomer()) ->setTotalsCollectedFlag(false) ->collectTotals() ->save();
    } 
    return $this; 
} 

Lihat tautan ini


saya mendapat jawaban dari tautan. terima kasih @surya
VijayS91

3

Saya sarankan Anda menghubungkan ke acara yang disebut sales_quote_merge_beforedan mengosongkan salah satu kereta (yang ada misalnya).
Acara ini dipicu setelah masuk dan sebelumnyasales_quote_collect_totals_before


apakah Anda dapat mencapai apa yang Anda inginkan dengan cara ini? atau apakah itu tidak cukup campur tangan di tempat yang Anda inginkan.
Julien Lachal
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.