Comment désactiver le paiement à la livraison sur un type de produit spécifique

9

Fondamentalement, je dois désactiver le paiement à la livraison sur un type de produit spécifique. Fondamentalement, j'utilise le crédit de magasin du magasin de mage. C'est pour le portefeuille dans magento. sur l'option de paiement son affichage comptant à la livraison. ce n'est pas un produit physique ou virtuel. Je dois donc désactiver le paiement à la livraison sur ce type de produit.

Deepak Rai
la source

Réponses:

11

Vous pouvez le faire en Magento Event/Observer

Tout d'abord, l'utilisation de la payment_method_is_activedésactivation dépend du type de produit de devis actuel.

Code pour cela:

Code config.xml du module:

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

Le code d'observateur est:

<?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
la source
seulement 2 min ahed gr8 work mec @amit
Keyur Shah
@Amit Bera comment obtenir le type de produit ici
Deepak Rai
@ DeepakRai, le code a déjà été mis.use $ item-> getProductType () pour le type de produit get Item
Amit Bera
4

pour cela, vous devez utiliser l' payment_method_is_activeévénement magento

Je suppose que vous savez comment développer magento extension [Si non, s'il vous plaît vérifier cette réponse que vous obtenez module entier écrire ce code dans votre config.xmldeapp>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>

Créer un fichier d'observateur 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
la source
Puis-je obtenir de l'aide ici magento.stackexchange.com/q/301777/57334 @Keyur Shah
zus
1

Avez-vous regardé cela, je pense que cela résoudrait votre problème, il vous suffit de modifier le fichier methods.phtml et d'où vous pouvez obtenir des informations sur les devis et effectuer les validations ou les conditions à partir du module par événement - observateur ou par la modification dans fichier phtml?

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

et

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

annforphp
la source