Pregunta

Básicamente, necesito deshabilitar el efectivo en la entrega en un tipo de producto específico. Básicamente, estoy utilizando el crédito de la tienda de la tienda Mage.Esto es para billetera en Magento. La opción de pago está mostrando efectivo en la entrega.Es un producto no físico o virtual.Así que necesito deshabilitar el efectivo en la entrega en este tipo de producto.

¿Fue útil?

Solución

Puede hacerlo por Magento Event/Observercode

Primero, el uso de payment_method_is_active Deshabilitar ON depende del tipo de producto de cotización actual.

Código para esto:

Módulo config.xml Código:

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

El código de observador es:

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

}

Otros consejos

para que necesite usar el evento magento payment_method_is_active

Supongo que sabe cómo desarrollar la extensión Magento [Si no, por favor, compruebe Esta respuesta obtienes un módulo entero Escriba este código en su config.xml de 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>

Crear archivo de observador 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;
                }

        }

    }

¿Te ha visto esto, creo que esto resolvería su problema, solo necesita modificar el archivo METHETHS.PHTML, donde puede obtener información de las cotizaciones y realizar las validaciones o condiciones también del módulo por evento - Observador o por¿La modificación en el archivo PHTML?

https://stackoverflow.com/questions/29819037/Disable-Cash-En-PRODUCTOS DE ENTREGA DE ENTREGA PARA PRODUCTOS

y

https://stackoverflow.com/ Preguntas / 14011348 / OPCIONES DE INFORMACIÓN-PAGO-PAGO-SOLAMENTE-EFECTIVO EN DE ENTREGA DE ENTREGA DE ENTREGA DE PRODUCTOS-MAGENTO

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top