Jump to content

[résolu] Frais de ports gratuits selon un montant de la commande et le type de produits


Sapher

Recommended Posts

Bonjour j'aurais besoin d'un peu d'aide d'un dev pour mon problème.

Prestashop permet de rendre les frais de ports gratuits à partir d'un certain montant et/ou d'un certain poids de la commande.
Je souhaite utiliser cette fonctionnalité mais en la compliquant un petit peu.
En effet, grossièrement, ma boutique vend 2 sortes de produits; les premiers sont assez petits et peu chers, les seconds nettement plus volumineux et donc plus chers. Au niveau des frais de ports, il y a une grosse différence de cout, les gros produits nécéssitant un emballage comparable aux frais de manutention de prestashop alors que les petits non.

Je voudrais, dans le cas d'une commande ne contenant que des "petits produits" autoriser la gratuitée des frais de ports pour un certain montant. Si la commande contient un ou plusieurs gros produits pas de gratuitée des frais de ports.

J'ai cherché dans le fichier order.php et dans les classes Cart et Product et ai rajouté la fonction suivante dans la classe Cart :

public function hasToile()
   {
       $hasToile = false;
       $products = $this->getProducts();
       //print_r(array_count_values($products)); // Affiche le contenu du tableau : le tableau est vide

       foreach ($products AS $product)
       {
           //echo '$product->id_category_default = ' . $product->id_category_default; // N'affiche rien à la place de la variable
           if (intval($product->id_category_default) == 8) 
           {
               $hasToile = true;
               break;
           }
       }

       return $hasToile;
   }  



Les 2 lignes commentées sont les test que j'ai effectués pour comprendre pourquoi ça ne marche pas.
L'appel à la fonction se fait dans order.php dans la fonction displaySummary() :

if ($free_ship = intval(Configuration::get('PS_SHIPPING_FREE_PRICE')) && !$cart->hasToile())
   {
       $discounts = $cart->getDiscounts();
       $total_free_ship =  $free_ship - ($summary['total_products_wt'] + $summary['total_discounts']);
       foreach ($discounts as $discount)
           if ($discount['id_discount_type'] == 3)
           {
               $total_free_ship = 0;
               break ;
           }
       $smarty->assign('free_ship', $total_free_ship);
   }



Voilà donc le problème c'est que le tableau est vide. Je ne comprend pas pourquoi (le panier courant n'est pas vide).
Je continue a plancher dessus mais tout(e) conseil/remarque/suggestion est le(la) bienvenue.

merci d'avance

Sapher

Link to comment
Share on other sites

Bon j'arrive à reconnaitre les gros produits mais ça ne fonctionne toujours pas...
Je ne serais pas au bon endroit ? Dans ce cas a quoi sert ce morceau de code ??
Je ne comprend plus rien... Mais je me souviens avoir déjà eu le tour avec l'ordre des catégories...
Est ce que quelqu'un sait où il faut agir ?

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