THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonsoir
je m'arrache les cheveux avec un problème de calcul de la TVA lors de l'application d'une remise sur le montant total HT.
J'ai fait la mise à jour à la dernière version 2.3.3, j'ai du ré-appliqué la correction présentée ici (malgré la maj): https://github.com/thelia/thelia/pull/1520/files
afin d'avoir sur la partie front office un calcul correct du montant HT.
Par contre je n'arrive pas à me sortir des modifications à faire a Order.php afin que dans le back office et dans les factures, les chiffres (montant total HT après remise, mais aussi TVA calculée après remise) soient correct. En gros  par exemple:
- panier de 270 euros TTC / soit 255.92€ HT et 14.85€ de TVA (5.5%)
- remise de 30%, soit passage à 179.14€ HT et donc normalement 9.85€ de TVA.
Le problème c'est que la TVA n'est pas mise à jour par le discount et donc comme elle reste à 14.85, le montant HT qui sur les factures devient 174.14 pour compenser la TVA qui n'a pas été "discountée"
Quelqu'un pourrait il me dire s'il  a déjà rencontré ce problème et comment le corriger? Il y'a surement des manipualtions à faire dans le order .php (Thelia/core/Lib/model) avec le calculator et le taxengine, mais je ne m'en sors pas...

Merci pour votre aide!

Jasposiris

Offline


Pour info j'ai résolu (enfin je pense...) le problème en modifiant mon fichier Order.php de la façon suivante:

Dans la fonction "public function getTotalAmount", j'ai ajouté les

if (true === $includeDiscount) {
            $taxRuleQuery = new TaxRuleQuery();
            $taxRule = $taxRuleQuery->findOneByIsDefault(true);
            // get default country
            $countryQuery = new CountryQuery();
            $country = $countryQuery->findOneByByDefault(true);
            // get calculator for this tax / country
            $calculator = new Calculator();
            $calculator->loadTaxRuleWithoutProduct($taxRule, $country);
           
            $tax -= $this->getDiscount() - round($calculator->getUntaxedPrice($this->getDiscount()), 3);
        }

et ai mis à jour le calcul du " if (true === $includeDiscount) {...}" de la même façon que ce qui était fait dans le fichier Cart pour la patch: https://github.com/thelia/thelia/pull/1520/files

Reste surement des bidouilles à faire sur la partie génération de facture PDF.

Jasposiris