WooFrance Dépannage et support WordPress WooCommerce Forums Forum de Support WooCommerce Ajout frais supplémentaires dans le panier

Étiqueté : 

4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #164080
    Fuzeau
    Participant
    Points: 22 pts
    Membre 2 étoiles

    Bonjour à la communauté,

    J’ai besoin d’un petit coup de main sur quelques lignes de code. Je cherche à ajouter une ligne de frais supplémentaire (consigne) fonction de la présence d’un attribut (Consigne) lié à certains produits et à leurs quantités. Le code actuelle fonctionne si une seul référence de produit est dans le panier possède l’attribut ‘Consigne’. Mais si un autre produit avec ce même attribut identique est ajouté au panier, le code n’ajoute pas la consigne en supplément. Vous savez comment le corriger ? Je bute un peu là … Il s’agirait à priori d’intégrer un “foreach” pour répéter le calcul à tous les articles du panier, mais je ne sais pas comment le coder …

     

    Voici le code :

    function woo_add_cart_fee(){
    global $woocommerce;
    
    if(is_admin() && !defined('DOING_AJAX'))
    return;
    
    //Initialisation of costs
    $consigne = 0.5;
    
    //cart
    $cart = $woocommerce->cart->get_cart();
    foreach($cart as $product)
    {
    $the_product = get_product($product['product_id']);
    
    //fee - products
    $nb_products = $product['quantity'];
    $activation_cost += ((float) $the_product->get_attribute('Consigne')) * $nb_products;
    }
    
    //intergration fees
    
    if( $activation_cost >= 0 )
    {
    $woocommerce->cart->add_fee("Consigne", $consigne*$nb_products, true, '');
    }
    
    }
    add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee');

    Joachim

    depanagewp
    #164167
    Fuzeau
    Participant
    Points: 22 pts
    Membre 2 étoiles
    Pour ceux que ça intéresse, j'ai trouvé la solution :
    
     
    
    function woo_add_cart_fee(){
    global $woocommerce;
    
    if(is_admin() && !defined('DOING_AJAX'))
    return;
    
    //Initialisation des coûts
    $consigne = 0.5;
    
    //Parcours du panier
    $cart = $woocommerce->cart->get_cart();
    foreach($cart as $product)
    {
    $the_product = get_product($product['product_id']);
    
    //Frais d'activation, un coût par produit
    $nb_products1 = $product['quantity'];
    $activation_cost += ((float) $the_product->get_attribute('Consigne')) * $nb_products1;
    if( $activation_cost >= 0 )
    {
    $nb_products = $nb_products + $nb_products1 ;
    }
    }
    
    //Application des coûts calculés
    
    if( $nb_products >= 0 )
    {
    $woocommerce->cart->add_fee("Consigne", $consigne*$nb_products, true, '');
    }
    
    }
    add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee');

    Joachim

    depanagewp
    1 utilisateur a remercié l'auteur de ce message.
    Guy
    #193354
    Le forum du local
    Participant
    Points: 21 pts
    Membre 2 étoiles

    Bonjour !

    Super ce code pour mettre en place une consigne ! Je l’ai utilisé mais j’aimerais qu’aucune TVA ne s’applique, est-ce que vous sauriez comment faire ?

    Merci d’avance

    Fanny

    depanagewp
    #202505
    Philippe
    Participant
    Points: 79 pts
    Membre 2 étoiles

    Hello

    tu le mets ou ton code ?

    merci

     

    depanagewp
4 sujets de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.