Belirli ürün türünde Teslimde Nakit nasıl devre dışı bırakılır


9

Temel olarak belirli ürün türünde teslimatta nakit devre dışı bırakmam gerekiyor. Temelde mage mağaza mağaza kredi kullanarak im. Bu magento cüzdan için. ödeme seçeneği üzerinde teslimatta nakit gösteren. fiziksel veya sanal bir ürün değil. Bu yüzden bu ürün türünde teslimatta nakit parayı devre dışı bırakmam gerekiyor.

Yanıtlar:


11

Bunu şu şekilde yapabilirsiniz: Magento Event/Observer

İlk olarak, payment_method_is_activedevre dışı bırak özelliğini kullanmak mevcut teklif ürün türüne bağlıdır.

Bunun kodu:

Modül config.xml kodu:

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

Gözlemci kodu:

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

}

sadece 2 min ahed gr8 iş dostum @amit
Keyur Shah

@Amit Bera, ürün çeşidini nasıl bulabilirim
Deepak Rai

@ DeepakRai, zaten kod konuldu. Get $ item-> getProductType () get item ürün tipi
Amit Bera

4

bunun için magento payment_method_is_activeetkinliğini kullanmanız gerekir

Magento uzantısını nasıl geliştireceğinizi bildiğinizi varsayıyorum [Eğer değilse lütfen bu cevabı kontrol edin, tüm modülü alın config.xml.app>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>

Gözlemci dosyası oluştur 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;
                }

        }

    }

Burada yardım alabilir miyim magento.stackexchange.com/q/301777/57334 @Keyur Shah
zus

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.