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



  • 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)



  • Tout dépend ce que vous avez configuré ici:
    711e9a58-4b7a-447b-92d7-f9c45bbaacba-image.png



  • Et si il n'y a pas de code ? Nous avons décidé pour certaines règles de les appliquer systématiquement (donc pas de code).



  • Si vous avez autorisé le cumul on ne s'occupe pas du code.
    Si vous avez mis NON, seuls les codes commençant par le préfixe de votre choix seront cumulables.



  • Merci ! Ça fait le job !


Se connecter pour répondre