Como desativar o pagamento na entrega em um tipo de produto específico
-
13-12-2019 - |
Pergunta
Basicamente, preciso desativar o pagamento na entrega em um tipo de produto específico.Basicamente, estou usando o crédito da loja mage.Isto é para carteira no magento.na opção de pagamento está mostrando dinheiro na entrega.não é um produto físico ou virtual.Portanto, preciso desativar o pagamento na entrega neste tipo de produto.
Solução
Você pode fazer isso por Magento Event/Observer
Primeiro, usando payment_method_is_active
desativar depende do tipo de produto da cotação atual.
Código para isso:
Código config.xml do 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>
O código do observador é:
<?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; } } } }
Outras dicas
para isso você precisa usar magento payment_method_is_active
evento
Presumo que você saiba como desenvolver extensões magento[Se não, verifique esta resposta você obtém o módulo inteiroEscreva este código em seu 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>
Criar arquivo 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;
}
}
}
Você acha que acho que isso seria resolver seu problema que você só precisa modificar os métodos.Phtml File AndFrom onde você pode receber qualquer informação de cotações e fazer as validações ou condições também do módulo por evento - observador ou pora modificação no arquivo PHTML?
https://stackoverflow.com/questions/29819037/disable-cash-on-entrega para produtos específicos
e