bertiauxmarc Posted June 5, 2015 Share Posted June 5, 2015 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 More sharing options...
Oron Posted June 5, 2015 Share Posted June 5, 2015 Bonjour Je déplace votre topic dans le forum Configuration et utilisation de prestashop qui semble plus adéquate que le général. Link to comment Share on other sites More sharing options...
Eolia Posted June 5, 2015 Share Posted June 5, 2015 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 More sharing options...
bertiauxmarc Posted June 5, 2015 Author Share Posted June 5, 2015 je vois le truc mais je me suis mal exprimé enfaite c'est 8 produits dans l'assortiment (d'une catégorie) pas 8 produits identique Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now