Try the Demo

Magento Forum

   
Disattivare pagamento in contrassegno per proditti virtuali
 
Massimo Barbieri
Jr. Member
 
Total Posts:  3
Joined:  2009-05-19
 

Salve,
ho installato l’estensione “cash on delivery” per il pagamento in contrassegno, e ho questo problema: se nel carrello sono presenti solo prodotti “virtuali” (che non necessitano cioè di spedizione) nelle opzioni di pagamento continua a comparire l’opzione in contrassegno, che dovrebbe invece essere disattivata dato che non c’è nulla da spedire.

Qualche suggerimento? Se non si può fare da pannello di controllo, qual è il punto in cui intervenire a livello di codice?

Alternativamente, andrebbe bene anche una condizione tipo “se tutti i prodotti del carrello appartengono a una certa categoria, allora non far apparire l’opzione contrassegno”.

Grazie, ciao.

m.

 
Magento Community Magento Community
Magento Community
Magento Community
 
muri
Member
 
Total Posts:  39
Joined:  2009-04-15
Italy
 

Anche io ho lo stesso problema!!!!!

Ho cercato nella documentazione dell’estensione ma non c’è niente. Mi sembra strano che non ci abbiano pensato ...

 
Magento Community Magento Community
Magento Community
Magento Community
 
Massimo Barbieri
Jr. Member
 
Total Posts:  3
Joined:  2009-05-19
 
muri - 28 May 2009 12:01 AM

Anche io ho lo stesso problema!!!!!

Ho cercato nella documentazione dell’estensione ma non c’è niente. Mi sembra strano che non ci abbiano pensato ...

Alla fine ho risolto con una modifica del codice, la posto nel caso interessi:

file [...]\magento\app\code\core\Mage\Payment\Block\Form\Container.php

protected function _canUseMethod($method)
    
{    
        
if (!$method->canUseForCountry($this->getQuote()->getBillingAddress()->getCountry())) {
            
return false;
        
}
        
        
/**
         * Checking for min/max order total for assigned payment method
         */        
        
$total $this->getQuote()->getBaseGrandTotal();
        
$minTotal $method->getConfigData('min_order_total');
        
$maxTotal $method->getConfigData('max_order_total');

        if((!empty(
$minTotal) && ($total $minTotal)) || (!empty($maxTotal) && ($total $maxTotal))) {
            
return false;
        
}
        
        
         
// inizio modifiche
         
$contrassegno=false;
         
        foreach (
$this->getQuote()->getItemsCollection() as $myItem{
            
if (!$myitem->isDeleted() && !$myitem->isVirtual()) 
    
{
                $contrassegno 
true;
            
}
        }
        

        
if ($method->getCode()=='cashondelivery' && !$contrassegno{return false;}
        
// fine modifiche
        
        
return true;
    
}

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top