Jump to content

Aide sur une règle panier


Recommended Posts

Bonjour

je voudrais faire une promotion avec une règle panier

faire un 8+1 gratuit

la règle fonctionne bien jusqu'au moment ou le client me commande 16 boites et ou normalement il devrait recevoir 2 boites gratuites

pouvez vous m'aider ?

d'avance merci

Link to comment
Share on other sites

Bonjour,

Vous ne pouvez pas à l'heure actuelle car Prestashop ne gère pas ce genre de cas

 

Pour Presta 16 != 8 donc la règle ne s'applique pas. Il faudrait pour cela soit modifier le code dans ce genre là:

$nb_items = 8;
//id_product de chaque produit concerné par la règle if($nb_items) alors + 1
$rule_products = array('12','18','25',....);
$rule = array();
// On check le cart du client
$cart = new Cart($id_cart);
$products = $cart->getProducts();

// On ne garde que les produits concernés par la règle et on les range dans un tableau
foreach ($products as $product) {

	foreach($rule_products as $rule_product) {
	
		if ((int)$product['product_id'] == (int)$rule_product))
			$rule[$rule_product][] = $product['product_id'];
			
	}
}	

if(!empty($rule)) {

	foreach($rule_products as $rule_product) {
	
		$mutliples = floor(count($rule[$rule_product])/(int)$nb_items);
		
		// Si on a au moins un nombre de produits qui satisfont la condition on crée une règle
		if ($mutliples >= 1 ) {
			
			$cart_rule = new CartRule();
			$cart_rule_name = 'GIFT-'.md5(mt_rand(0, 32) . time());
			foreach (Language::getLanguages(false) as $lang)
				$cart_rule->name[$lang['id_lang']] = $cart_rule_name;
			$cart_rule->description = $cart_rule_name;
			$cartRule->id_customer = $cart->$id_customer;
			$cart_rule->active = 1;
			$cartRule->date_from = date('Y-m-d H:i:s', time());
			$cartRule->date_to = date('Y-m-d H:i:s', strtotime('+1 month' , strtotime ($cartRule->date_from))); // valable 1 mois
			$cart_rule->quantity = 1;
			$cart_rule->quantity_per_user = (int)$multiples;
			$cart_rule->gift_product = (int)$rule_product;
			$cart_rule->gift_product_attribute	= (int)Product::getDefaultAttribute((int)$rule_product);
			$cart_rule->add();
			
			for ($i = 1; $i <= $mutliples; $i++) {
				$cart->addCartRule($cart_rule->id);
			}
		}
	}
	$cart->update(true);
}	

Soit créer plusieurs règles:

- pour 8 produits identiques: +1

- pour 16 produits identiques: +1

- etc...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...