Te l'ho detto mille volte e non mi ascolti! Con quel nome lì non ti risponderà mai nessuno lo vuoi capire o no?
Per prima cosa:
VM NON gestisce la vendita in multipli di prodotto: se una cosa vuoi che sia acquistata solo in multiple unità di vendita (5, 10, 15, 20, ... 4, 8, 16, 20, ... ecc.) devi fare alcune modifiche al codice.
Nel mio caso ho considerato che il minimo di vendita fosse ANCHE la quantità vendibile in multipli perciò se un prodotto ha un minimo di vendita di N e lo vuoi anche vendere in multipli di M questa soluzione non va bene...
1. Dal panello di controllo Prodotti bisogna specificare correttamente il valore "minimo di vendita": questo minimo di vendita sarà anche il valore del multiplo acquistabile.
2. Apriamo \administrator\components\com_virtuemart\languages\common\mialingua.php
Modifichiamo il messaggio VM_CART_MIN_ORDER che apparirà sia col minimo non raggiunto che con un valore non multiplo del minimo (circa alla linea 710):
'VM_CART_MIN_ORDER' => 'Questo prodotto è acquistabile in multipli di $min articoli.',
3. Apriamo \administrator\components\com_virtuemart\classes\ps_cart.php
cerchiamo le tre occorrenze VM_CART_MIN_ORDER (circa alle linee 233, 365, 550) inserite in 3 blocchi IF{} che generano l’errore di non raggiungimento del minimo. Ora dobbiamo modificare le 3 condizioni IF{} in modo che generino l’errore anche quando non è rispettato il multiplo.
Le elenco tutte e tre qui di seguito con le modifiche evidenziate:
//Modificato per lotto minimo
If (($min!= 0 && $quantity !=0 && $quantity < $min) OR ($min!= 0 && $quantity !=0 && $quantity % $min !=0)) {
eval( "\$msg = \"".$VM_LANG->_('VM_CART_MIN_ORDER',false)."\";" );
$vmLogger->warning( $msg );
continue;
}
//Modificato per lotto minimo: controlla le quantità modificate dentro al carrello
If (($min!= 0 && $quantity < $min) OR ($min!= 0 && $quantity !=0 && $quantity % $min !=0)) {
eval( "\$msg = \"".$VM_LANG->_('VM_CART_MIN_ORDER',false)."\";" );
$vmLogger->warning( $msg );
return false;
}
// Modificato per lotto minimo
If (($min!= 0 && $quantity < $min) OR ($min!= 0 && $quantity !=0 && $quantity % $min !=0)) {
eval( "\$msg = \"".$VM_LANG->_('VM_CART_MIN_ORDER',false)."\";" );
$vmLogger->warning( $msg );
return false;
}
Artigianale ma fico, vero?
vtt