Jump to content

Récupérer la catégorie d'une remise et l'appliquer ensuite sur le prix du produit


Recommended Posts

Bonjour

Je travaille actuellement sur un module de paiement en ligne. Le prestataire a besoin que je lui envoi:
- les prix unitaires des produits commandés
- les quantités
- le total de la commande.

Cela fonctionne si il n'y a pas de code promo sur le panier, mais lorsqu'il y a un code, il faut que je récupère le discount et que je l'applique sur le prix.
Ma question : comment tester si un discount est applicable sur un produit, j'imagine que ça doit se faire via la catégorie).
Je suis parti comme ça :

$discounts = $params['cart']->getDiscounts();
$products = $params['cart']->getProducts();

   foreach ($products as $product){
   $remise=0;
       foreach ($discounts AS $discount){
           $cat = Discount::getCategories($discount['id_discount']);
           if (Product::idIsOnCategoryId(intval($product['id_product']), $cat))
           {
               $remise=$remise+$discount['value'];
           }
            }
     $descriptions = $product['name'];
     $prixunitaires=number_format($product['price']*(1-$remise/100), 2, '.', '');
     $product['price'];
     $quantites=$product['quantity'];




Mais ça ne marche pas :(

Si quelqu'un a des idées, je suis preneur.
Existe il une doc sur les différentes classes dispo ?

Merci

Link to comment
Share on other sites

j'ai trouvé, il me manquait une parenthèse ...

pour ceux que ça interesse, le code complet :

// initialisation
   $descriptions="";
   $prixunitaires="";
   $quantites="";

   $cpt_product=1;

   // recup parametre panier
   $discounts = $params['cart']->getDiscounts();
   $products = $params['cart']->getProducts();

   foreach ($products as $product){

   $remise=0;

   // premiere iteration
   if ($cpt_product==1) {
       foreach ($discounts AS $discount){
           $cat = Discount::getCategories(Discount::getIdByName($discount['name']));


           if (Product::idIsOnCategoryId(intval($product['id_product']), $cat))
           {
               $remise=$remise+$discount['value'];
           }
   }
     $descriptions = $product['name'];
     $prixunitaires=number_format($product['price']*1.20*(1-$remise/100), 2, '.', '');
     $product['price'];
     $quantites=$product['quantity'];
     }
     else 
     // iteration suivante
     {
       foreach ($discounts AS $discount){
           $cat = Discount::getCategories(Discount::getIdByName($discount['name']));

           if (Product::idIsOnCategoryId(intval($product['id_product']), $cat))
           {
               $remise=$remise+$discount['value'];
           }
       }
     $descriptions = $descriptions .';'. $product['name'];
     $prixunitaires=$prixunitaires.';'. number_format($product['price']*1.20*(1-$remise/100), 2, '.', '');
     $quantites=$quantites.';'.$product['quantity'];

     }
     $cpt_product++;
   }



la tva est codée en dure, 1.20, elle est fixe pour tous les produits.

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...