• Bonjour,
    Nous avons reçu plusieurs commandes avec des règles de votre module, et il s’avère que le % s’est mal mis, à savoir qu’il a mis un % sur le transport, ce qui n’est pas normal…

    Voici des screens de la configuration et du détail de 2 commandes.

    https://ibb.co/ksJRyGWS
    https://ibb.co/CKk0sTxC
    https://ibb.co/VrQ6rvm

    Le problème est bien dans le code de Simple Discount Rules 5.16, et on peut expliquer les deux constats.

    1. Pourquoi la remise apparaît sur le transport

    Dans :

    public/class-woo-product-category-discount-public.php

    le plugin ne réduit pas le prix des produits pour une règle Quantity.

    Il calcule d’abord le montant de la remise, puis fait ceci :

    if( $final_discount > 0 ){
        $cart->add_fee(
            __('Discount', 'woo-product-category-discount'),
            -$final_discount
        );
    }

    Donc la remise de 15 ou 20 % est ajoutée à WooCommerce sous la forme d’un frais négatif (fee).

    C’est la cause du comportement observé : WooCommerce doit ensuite répartir fiscalement ce montant négatif entre les différentes classes de TVA présentes dans la commande. Comme le transport est à 20 % et tes produits à 10 %, une partie de ce fee négatif finit affectée à la TVA/part transport.

    Cela explique parfaitement la commande 39919 :

    Produits       TVA 10 %
    Transport      TVA 20 %
           ↓
    Remise globale sous forme de fee négatif
           ↓
    WooCommerce répartit la remise
           ↓
    une partie à 10 %
    une partie à 20 %

    Le plugin calcule donc une remise sur les produits, mais l’applique techniquement comme une remise globale de panier. C’est une mauvaise méthode pour le besoin.

    2. Calcul peut être incorrect

    Pour une règle Quantity sans condition, ce qui correspond à la configuration puisque Terms est vide, la version 5.16 fait exactement ceci :

    if( empty( $terms ) ){
        if(
            WC()->cart->get_cart_contents_count() >= $discount['min_cart_value']
            &&
            (
                empty( $discount['max_cart_value'] )
                ||
                WC()->cart->get_cart_contents_count() <= $discount['max_cart_value']
            )
        ){
            $applicable_discounts[] =
                $discount['discount_amount_type'] == 0
                ? (
                    (
                        WC()->cart->get_subtotal()
                        * $discount['discount_amount']
                    ) / 100
                )
                : $discount['discount_amount'];
        }
    
        continue;
    }

    Le point important est :

    WC()->cart->get_subtotal()

    Il calcule donc les 20 % sur le sous-total WooCommerce brut des produits.

    Il ne calcule pas nécessairement 20 % du montant retrouvé ensuite comme « Produits HT » dans la commande.

    C’est probablement l’origine de tes 22 % apparents sur la commande 39962.

    Par exemple, le plugin peut avoir calculé :

    Sous-total utilisé au moment du calcul : 157,15 €
    20 % = 31,43 €

    Puis la commande finale présente :

    Produits : 142,86 €
    Remise :   31,43 €

    Et effectivement :

    31,43 / 142,86 = 22 %

    Donc il faudrait regarder la commande 39962 elle-même pour identifier ce qui a fait passer la base de calcul de ~157,15 € à 142,86 €.

    Pouvez-vous corriger cela ?

    Merci.

You must be logged in to reply to this topic.