Bonjour à tous,

Je ne parviens pas à articuler mon code logiquement, sachant que j'ai une boucle dans laquelle passent des ID de produits. Pour chacun d'entre eux, 3 types de remises peuvent s'appliquer, mais pas se cumuler. Et je dois respecter un ordre de priorité des remises :

- La remise "code-promo" prime sur les 2 autres
- La remise "promoprod" prime sur la dernière
- La remise "promocat" ne s'applique que si aucune n'a été appliquée.

Mais rien n'empêche que 3 produits soient dans le panier et que chacun ait une des trois remises. L'important, c'est le non-cumul pour un même produit.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
 
foreach( $tab as $id_prod=>$prix){
 
   if(is_code_promo($id_prod)){
 
       $remise = is_code_promo($id_prod);
       $prix = applique_remise($prix, $remise);
 
  }else{
 
         if(is_promoprod($id_produit))
        {
 
             $remise = is_promoprod($id_prod);
             $prix = applique_remise($prix, $remise);
 
         }else{
                if(is_promocat($id_prod))
                {
 
                    $remise = is_promocat($id_prod));
                    $prix = applique_remise($prix, $remise);
 
                }
 
         }
    }
}
Mais ce code ne fonctionne que si le produit soumis à "code-promo" se présente en 1er dans la boucle. Or je ne connais pas l'ordre des produits.
Je ne sais pas si j'ai bien expliqué le truc (j'ai beaucoup simplifié) mais si oui, je veux bien une piste sur la façon d'organiser ça.
Merci d'avance.