Cara menonaktifkan Cash On Delivery pada jenis produk tertentu


9

Pada dasarnya saya perlu menonaktifkan cash on delivery pada jenis produk tertentu. Pada dasarnya saya menggunakan kredit toko dari mage store. Ini untuk dompet di Magento. pada opsi pembayaran yang menunjukkan cash on delivery. ini bukan produk fisik atau virtual. Jadi saya perlu menonaktifkan cash on delivery pada jenis produk ini.

Jawaban:


11

Anda dapat melakukannya dengan Magento Event/Observer

Pertama, menggunakan payment_method_is_activepenonaktifan bergantung pada jenis produk penawaran saat ini.

Kode untuk ini:

Modul config.xml modul:

<global>
    <events>
    <payment_method_is_active>
        <observers>
            <paymentfilter_payment_method_is_active>
            <type>singleton</type>
            <class>yourmodel/observer</class>
            <method>filterpaymentmethod</method>
            </paymentfilter_payment_method_is_active>
        </observers>
    </payment_method_is_active>
    </events>
</global>

Kode pengamat adalah:

<?php

class YOURNANESPACE_YOURMODULE_Model_Observer {

    public function filterpaymentmethod(Varien_Event_Observer $observer) {
        /* call get payment method */
        $method = $observer->getEvent()->getMethodInstance();

        /*   get  Quote  */
        $quote = $observer->getEvent()->getQuote();

        $result = $observer->getEvent()->getResult();
        if (empty($quote) || (null === $quote)) {
            return $this;
        }

        /* Disable Your payment method for   adminStore */
        if ($method->getCode() == 'YOUR_PAYMENT_METHOD_CODE') {
            foreach ($quote->getAllItems() as $item) {
                // get Cart item product Type //
                if ($item->getProductType() == 'YourProductType'):
                    $result->isAvailable = false;
                endif;
            }
        }
    }

}

hanya 2 mnt ah gr8 dude kerja @amit
Shah

@Amit Bera cara mendapatkan jenis produk di sini
Deepak Rai

@ DeepakRai, kode sudah dimasukkan. Gunakan $ item-> getProductType () untuk mendapatkan tipe produk Item
Amit Bera

4

Untuk itu Anda perlu menggunakan payment_method_is_activeacara Magento

Saya berasumsi Anda tahu bagaimana mengembangkan ekstensi magento [Jika tidak maka silakan periksa jawaban ini Anda mendapatkan seluruh modul Tulis kode ini config.xmldari Andaapp>code>codepool>namespace>package>etc

<global>
    ...
    <events>
        <payment_method_is_active>
            <observers>
                <paymentfilter_payment_method_is_active>
                    <type>singleton</type>
                    <class>PaymentFilter_Model_Observer</class>
                    <method>paymentMethodIsActive</method>
                </paymentfilter_payment_method_is_active>
            </observers>
        </payment_method_is_active>
    </events>
    ...
</global>

Buat file pengamat app/code/codepool>namespace>package/Model/Observer.php

class namespace_package_Model_Observer {

        public function paymentMethodIsActive(Varien_Event_Observer $observer) {
            $event           = $observer->getEvent();
            $method          = $event->getMethodInstance();
            $result          = $event->getResult();
            $currencyCode    = Mage::app()->getStore()->getCurrentCurrencyCode();


                if($someTrueConditionGoesHere){
                    $result->isAvailable = true;
                }else{
                    $result->isAvailable = false;
                }

        }

    }

Bisakah saya mendapatkan bantuan di sini magento.stackexchange.com/q/301777/57334 @Keyur Shah
zus

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.