Telefono: +39 392 33 73 731

Prestashop: escludere i prodotti già scontati dai coupon di sconto

Un mio cliente ha voluto fare una promozione per il Black Friday, uno sconto del 10% su tutto il negozio, a chiunque faccia una spesa di almeno 100 euro. Però mi ha chiesto di escludere dal calcolo i prodotti già scontati, sparsi nelle varie categorie. Purtroppo mi sono accorto che le regole di Prestashop non funzionano bene, anche usando correttamente le restrizioni (sia per categoria, sia per produttore).
Se un acquirente aggiunge in carrello 80 euro di prodotti scontati, esclusi dalla regola tramite le restrizioni, e poi aggiunge un solo prodotto da 25 euro di una categoria valida, lo sconto si attiva sull'importo di 105 euro, cioè su tutti i prodotti inseriti. Ovviamente questo comportamento non è ciò che il mio cliente vuole. Bisogna che lo sconto di carrello escluda dal calcolo i prodotti già scontati. La soluzione è possibile solo attraverso la modifica del codice della classe "CartRule".

Quindi bisogna creare il file "override/classes/CartRule.php" e inserire il codice seguente.

<?php

class CartRule extends CartRuleCore{

// --- Qui andremo a inserire il codice ---

}

Poi bisogna copiare all'interno della classe la funzione "getContextualValue" che troviamo nel file originale di Prestashop, in cartella "classes".
All'interno della funzione cerchiamo una riga come questa: if ($this->reduction_percent && $this->reduction_product == 0) {.
Poco più sotto vediamo un ciclo "for", dopo di esso aggiungiamo un altro ciclo "for" come il codice seguente, in pratica si rimuovono dal totale ordine tutti i prodotti già scontati.

// no discount for products on sale! - modified by ZOD
foreach ($package_products as $product){
	if(Product::isDiscounted((int)$product['id_product'])){
  		$order_total -= $use_tax ? $product['total_wt'] : $product['total'];
	}
}
// end modified by ZOD

Fatto questo bisogna eliminare il file "cache/class_index.php", e rilanciare il sito, così le classi e gli override vengono ricaricati.

Ultima cosa, le regole di carrello vanno riportate senza restrizioni, non sono più necessarie in quanto la logica è ormai stata cambiata nel codice.

Giovedì 23 Novembre 2017
(0 commenti)
PHP

Aggiungi un commento

Nome
E-mail (non verrà pubblicata)
Sito Web
Commento
Questo sito web utilizza i cookie. Chiudendo questo banner, o interagendo con questo sito web, acconsenti all’uso dei cookie. Dettagli