Calcul des règles paniers HT/TTC [RÉSOLU]



  • Auparavant elles s'ajoutaient pourtant. Se pourrait-il que la mise à jour ait eu à voir avec la modification de ce paramètre ?



  • Auparavant quand ? A moins d'un override Prestashop n'a jamais ajouté de taxe à un transporteur qui n'en a pas.



  • A mon avis ça vient de chez nous, certains transporteurs ont bien les taxes FR, d'autres non... On s'est séparé d'un bras cassé en début d'année...

    Du coup, on peut appliquer les corrections dans la foulée pour le calcul de la TVA sur les règles... ?



  • Je viens de checker d'anciennes commandes (avant la migration sur PhenixSuite) et en effet la TVA sur les FDP n'a pas été calculée (de par le fait, comme on dit chez soi).
    Il n'y a donc bien que la TVA sur les règles paniers à corriger.



  • Sur une commande (payplug) j'ai ce message lorsque dans paiement je tente de rajouter le montant du remboursement (TVA non calculée sur la règle panier) :
    Capture d’écran 2023-11-24 à 09.47.49.png
    Capture d’écran 2023-11-24 à 09.46.36.png
    C'est pour que la facture soit juste pour le client.



  • Je viens de m'apercevoir qu'il n'y a qu'un groupe client dont la TVA n'est pas appliquée sur les règles paniers : les professionnels dont l'affichage des prix est configuré en HT, alors qu'en bas de la commande il est indiqué :
    Capture d’écran 2023-11-24 à 10.19.26.png



  • @Olivier75009
    Curieux, le contrôle effectué par le code me semble pourtant juste

    $new_sold = $order->total_paid_real + $amount;
                        if($new_sold > $order->total_paid) {
                            $this->errors[] = Tools::displayError('You cannot add a new payment because this order has already been paid in full');
                        }
    

    Ou alors le contrôle devrait être peut-être être fait sur les arrondis.
    Qu'avez-vous comme total_paid_real dans la table orders ?



  • @Olivier75009 Oui, et c'est ce que j'ai corrigé.



  • pour cette commande : 119.480000 (il y a déjà eu un remboursement de 1,82€)
    Capture d’écran 2023-11-24 à 10.35.43.png



  • Peut-on avoir la correction pour le calcul du groupe pro ?



  • @eolia C'est le seul cas où nous n'avons pas pu éditer la commande)



  • @Olivier75009 a dit dans Calcul des règles paniers HT/TTC :

    Peut-on avoir la correction pour le calcul du groupe pro ?

    Si on m'en laisse le temps et que je puisse finaliser tous les tests, la version 1.6.2.21 sera libérée ce soir.



  • Merci encore.



  • @eolia Si j'affiche $new_sold et $total_paid dans Tools::displayError : "You cannot add a new payment because this order has already been paid in full 117.66 sur 117.660000".
    En ajoutant $new.'0000' > (...) l'ajout passe.



  • Correctif:

                    elseif(!Validate::isNegativePrice($amount)) {
                        $this->errors[] = Tools::displayError('The amount is invalid.');
                    }
                    elseif(!Validate::isGenericName(Tools::getValue('payment_method'))) {
                        $this->errors[] = Tools::displayError('The selected payment method is invalid.');
                    }
                    elseif(!Validate::isString(Tools::getValue('payment_transaction_id'))) {
                        $this->errors[] = Tools::displayError('The transaction ID is invalid.');
                    }
                    elseif(!Validate::isLoadedObject($currency)) {
                        $this->errors[] = Tools::displayError('The selected currency is invalid.');
                    }
                    elseif($order_has_invoice && !Validate::isLoadedObject($order_invoice)) {
                        $this->errors[] = Tools::displayError('The invoice is invalid.');
                    }
                    elseif(!Validate::isDate(Tools::getValue('payment_date'))) {
                        $this->errors[] = Tools::displayError('The date is invalid');
                    }
                    else {
                        $amount = Tools::ps_round($amount, _PS_PRICE_COMPUTE_PRECISION_);
                        $new_sold = $order->total_paid_real + $amount;
                        if($new_sold > $order->total_paid) {
                            $this->errors[] = Tools::displayError('You cannot add a new payment because this order has already been paid in full');
                        }
    

    1ère ligne modifiée (1837) et ajout avant la ligne 1956 ($amount = Tools::ps_round($amount, PS_PRICE_COMPUTE_PRECISION);)



  • Pourquoi ne pas retirer tous les nuls (0) après les décimales ?



  • Parce que la comparaison de floats n'est pas si simple et dans votre cas précis vous êtes à 2 décimales mais certains pays sont à 3 (dinar ou ryal) ou plus et je ne sais pas ce que va rentrer le commerçant (Presta accepte jusqu'à 6 décimales)



  • Je viens de voir que sur vos tests (règles paniers avec pourcentage de réduction -> Test HT Eolia) ça s'applique à la commande. Est-ce que ça fonctionne aussi sur les produits sélectionnés lorsqu'on choisit de faire une réduction sur une ou plusieurs catégories de produits ?

    Édith : nous avons créé des prix spécifiques pour le WE du black friday, certains correspondent à une catégorie réduite dans les règles paniers, et lors d'une commande, au vu de la quantité de produit, la règle n'est calculée que sur les produits n'ayants pas eu de prix spécifiques.
    (Exemple : -5% sur le prix si 5 produits de la même catégorie sont dans le panier.)



  • Oui ça fonctionne pareil, ce n'est pas le type de calcul qui avait un souci, mais la façon dont le prix était calculé en TTC lors de la conversion pour le paiement.



  • Et pour l'application de la règle panier même si l'article a un prix spécifique ? (la règle s'applique bien car il y a au moins le bon nombre d'articles, mais elle n'est calculée que sur les articles de cette règle n'ayant pas de prix spécifique)


Se connecter pour répondre