Question

Fondamentalement, je dois désactiver le paiement à la livraison sur un type de produit spécifique.Fondamentalement, j'utilise le crédit du magasin mage.C'est pour le portefeuille dans magento.sur l'option de paiement, il indique le paiement à 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.

Était-ce utile?

La solution

Vous pouvez le faire en Magento Event/Observer

Tout d'abord, en utilisant payment_method_is_active la désactivation dépend du type de produit du devis actuel.

Codez 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 de l'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;
            }
        }
    }

}

Autres conseils

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

Je suppose que vous savez comment développer une extension magento [Sinon, veuillez vérifier cette réponse, vous obtenez tout le moduleÉcrivez ce code dans votre config.xml depuis 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>

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

        }

    }

Avez-vous l'air d'avoir votre apparence, je pense que cela va résoudre votre problème, il vous suffit de modifier les méthodes.phtml File et de celui où vous pouvez obtenir des informations de guillemets et faire les validations ou les conditions ainsi du module par événement - Observer ou parla modification dans le fichier PHTML?

https://stackoverflow.com/questions/29819037/disable-cash-In-livraison-forfrics-Produits

et

https://stackoverflow.com/ Questions / 14011348 / Désactiver-Payment-Options-Options-Options uniquement - Cash-on-livraison-For-PRODUIT-PRODUIT-MAGENTO

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top