So deaktivieren Sie die Nachnahme für einen bestimmten Produkttyp

9

Grundsätzlich muss ich die Nachnahme für einen bestimmten Produkttyp deaktivieren. Grundsätzlich benutze ich das Guthaben des Magiergeschäfts. Dies ist für Brieftasche in Magento. Bei Zahlungsoption wird die Nachnahme angezeigt. Es ist kein physisches oder virtuelles Produkt. Daher muss ich die Nachnahme für diesen Produkttyp deaktivieren.

Deepak Rai
quelle

Antworten:

11

Sie können dies tun, indem Sie Magento Event/Observer

Erstens payment_method_is_activehängt die Verwendung von Deaktivieren von vom aktuellen Produkttyp des Angebots ab.

Code dafür:

Modul config.xml Code:

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

Der Beobachtercode lautet:

<?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
quelle
nur 2 min ahed gr8 work dude @amit
Keyur Shah
@ Lassen Sie Bera, wie man Produkttyp hier erhält
Deepak Rai
@ DeepakRai, bereits Code wurde gesetzt. Verwenden Sie $ item-> getProductType () für get Item Produkttyp
Amit Bera
4

Dafür müssen Sie Magento payment_method_is_activeEvent verwenden

Ich gehe davon aus, dass Sie wissen, wie man eine Magento-Erweiterung entwickelt. [Wenn nicht, überprüfen Sie bitte diese Antwort. Sie erhalten das gesamte Modul. Schreiben Sie diesen Code in Ihr config.xmlvonapp>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>

Beobachterdatei erstellen 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
quelle
Kann ich hier Hilfe bekommen ? Magento.stackexchange.com/q/301777/57334 @Keyur Shah
zus
1

Haben Sie sich das angeschaut? Ich denke, dies würde Ihr Problem lösen. Sie müssen nur die Datei methods.phtml ändern und von wo aus Sie Informationen zu Anführungszeichen erhalten und die Validierungen oder Bedingungen auch vom Modul nach Ereignisbeobachter oder durch die Änderung in durchführen können HTML-Datei?

/programming/29819037/disable-cash-on-delivery-for-specific-products

und

/programming/14011348/disable-payment-options-only-cash-on-delivery-for-particular-product-magento

annforphp
quelle