In VirtueMart è possibile configurare un ordine minimo per la spedizione gratuita, ma tale impostazione ha un carattere globale. Non è possibile limitare la spedizione gratuita per gli ordini sopra un certo importo al solo territorio italiano, né a determinate zone geografiche.
Per permettere la limitazione in base al paese e di determinate zone è necessario modificare il codice sorgente di VirtueMart andando a modificare il file administrator/components/com_virtuemart/classes/ps_checkout.php alla riga 56 (dopo "$this->_subtotal = $this->calc_order_subtotal($vars);" inserendo il seguente codice:
//inizio modifice per escludere estero e isole minori dalla sedizione gratuita
$ship_to_info_id = vmGet( $_REQUEST, 'ship_to_info_id' );
$dbc = new ps_DB();
$q = "SELECT country,zip FROM #__{vm}_user_info WHERE user_info_id='".$ship_to_info_id."'";
$dbc->query($q);
$dbc->next_record();
$country = $dbc->f("country");
$zip = $dbc->f("zip");
$controllo = "OK";
//array_isole andranno inseriti i CAP da escludere dalla spedizione gratuita
$array_isole = array('04020', '04027', '07024', '07042', '09011', '09012', '09014', '09017', '30010', '30012', '30020', '30122',
'30126', '57030', '57031', '57033', '57034', '57037', '57038', '57039', '58012', '71040', '80070', '80071', '80073', '80074',
'80075', '80076', '80079', '90010', '91010', '91017', '91023', '92010', '98050', '98055');
if (in_array ("$zip", $array_isole)) {
$controllo = "NO";
}
if( $vendor_freeshipping > 0 && $vars['order_subtotal_withtax'] >= $vendor_freeshipping && $country=="ITA" && $controllo =="OK") {
//f( $vendor_freeshipping > 0 && $vars['order_subtotal_withtax'] >= $vendor_freeshipping) {
//fine modifica spedizione gratuita
Scarica il file ps_checkout.php già modificato per VirtueMart 1.1.9:


