Cómo deshabilitar el pago contra reembolso en el tipo de producto específico

9

Básicamente, necesito desactivar el pago contra reembolso en el tipo de producto específico. Básicamente estoy usando crédito de la tienda de mage store. Esto es para billetera en magento. en la opción de pago se muestra contra reembolso. No es un producto físico o virtual. Por lo tanto, necesito desactivar el pago contra reembolso en este tipo de producto.

Deepak Rai
fuente

Respuestas:

11

Puedes hacer esto por Magento Event/Observer

Primero, usar payment_method_is_activedeshabilitar depende del tipo de producto de presupuesto actual.

Código para esto:

Código config.xml del módulo:

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

}
Amit Bera
fuente
solo 2 minutos ahed gr8 work dude @amit
Keyur Shah
@Amit Bera cómo obtener el tipo de producto aquí
Deepak Rai
@ DeepakRai, ya se ha puesto el código. Use $ item-> getProductType () para obtener el tipo de producto Item
Amit Bera
4

para eso necesitas usar el payment_method_is_activeevento magento

Estoy asumiendo que usted sabe cómo desarrollar Magento extensión [Si no es así, por favor, compruebe esta respuesta que se obtiene toda módulo de escribir este código en tu 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>

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

        }

    }
Keyur Shah
fuente
¿Puedo obtener ayuda aquí magento.stackexchange.com/q/301777/57334 @Keyur Shah
zus