Cómo deshabilitar el efectivo en la entrega en el tipo de producto específico
-
13-12-2019 - |
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.
Solución
Puede hacerlo por Magento Event/Observer
code
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?
y