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.

Deepak Rai
sumber

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

}
Amit Bera
sumber
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;
                }

        }

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