17.9.10

Impedire il pagamento in contrassegno per nazioni differenti dall'Italia

Ci è capitata questa esigenza per il sito di un nostro cliente www.labstore.it: in pratica per questioni amministrave si è reso necessario impedire agli utenti non italiani di scegliere come forma di pagamento il contrassegno. Virtue Mart non consente in nessun modo da pannello di controllo una gestione del genere, come invece fa perfettamente con i metodi di spedizione.
Mano al codice, allora:


Il file che ci serve si chiama ps_payment_method ed è rintracciabile in /administrator/components/com_virtuemart/classes.
Alla riga 411:

$db_contra = new ps_DB;
$sql_contra = "SELECT country FROM #__{vm}_user_info WHERE user_id=".$GLOBALS['auth']['user_id']." LIMIT 1";
$db_contra->query($sql_contra);
$db_contra->next_record();
$naz_contra = $db_contra->f("country");
Successivamente dopo la  riga 422 aggiungere
if( ($db->f("payment_method_name")=='Contrassegno')&&($naz_contra!=='ITA') ) { continue;} 
Salvare il file e bere una birra alla faccia nostra.

nota: questa modifica così come si vede funziona solo con la versione in italiano. In teoria bisognerebbe modificare il testo "Contrassegno" con la costante di virtuemart al netto della traduzione. 

2 commenti :

Anonimo ha detto...

Ho effettuato le modifiche sul file in questione, e nella pagina della scelta pagamento il contrassegno è sparito, però mi trovo ancora il suo bottone di selezione (accanto a quello del pagamento anticipato), tra l'altro ancora funzionante. Ho sbagliato qualcosa?

grazie 1000

gino

Anonimo ha detto...

Ma la soluzione?