Jump to content

Recommended Posts

Bonjour à tous,

Je suis confronté a un soucis, en effet mon client m'indique un soucis remonté par un client. La boutique affiche les prix TTC pour tous les groupes sauf les pros, jusque là pas de soucis le prix est bien HT avec la mention HT a coté du prix (pour les pros), mais il y a un souci pour les clients particulier hors zone européenne en effet pour ces clients là, nous devons aussi afficher les prix HT comme pour les pros, et il ce produit la chose suivante, nous avons les prix HT mais aucune mention HT n'est précisé donc le client n'a aucun moyen de savoir si les prix indiqué sont TTC ou HT.

Par exemple en France pour un particulier nous aurons 19.56€TTC sur la fiche produit, a l'inverse pour un pro nous aurons 15.65€HT, maintenant pour un Suisse nous aurons 15.65€ uniquement pas de HT ou TTC 

Je souhaite corriger cela sur les fiches produits ainsi que sur les listes de produits pour les clients hors zone Europe, car nous avons beaucoup de réclamations de la part des clients non pros et demande le retrait de la taxe alors que le prix est déjà HT

Alors j'ai déjà vérifier tous les paramètres en BO concernant les taxes et pays, tester différents solution proposer sur différent forum mais les soucis traité ne concerne pas vraiment ce soucis qui été déjà présent sur Prestashop 1.4 et dont toutes les versions de Prestashop sont concerné. Je vous invite à tester sur votre Prestashop pour ce faire utiliser votre compte client sur votre Prestashop et changer l'adresse de livraison.

Donc j'imagine qu'il faut modifier les fichiers product.tpl et product-list.tpl mais quoi et où et comment ?

Version Prestashop : 1.6.1.24

Serveur Cloud Infomaniak

Merci pour vos lumières et de votre aide

Cordialement

David

Share this post


Link to post
Share on other sites

Pour chaque pays, vérifier d'abord ce paramètre dans Localisation -> Pays

image.png.156b85cb9a01c969a4574f791fba4591.png

Ensuite contrôlez vos tpl car souvent l'affichage du format de prix est conditionné par la variable $priceDisplay qui correspond au résultat de cette fonction:

Product::getTaxCalculationMethod((int)$this->context->cookie->id_customer);

qui renvoie soit false, soit 1, soit 2, soit 6, soit....

Mais par défaut Prestashop n'affiche pas ce HT pour les pays sans taxes connue.

Il faut donc modifier la classe product (ou faire un override, c'est mieux) de la fonction initPricesComputation en la remplaçant pat ceci:

(Modification de la condition else)

public static function initPricesComputation($id_customer = null)
{
    if ((int)$id_customer > 0) {
        $customer = new Customer((int)$id_customer);
        if (!Validate::isLoadedObject($customer)) {
            die(Tools::displayError());
        }
        self::$_taxCalculationMethod = Group::getPriceDisplayMethod((int)$customer->id_default_group);
        $cur_cart                    = Context::getContext()->cart;
        $id_address                  = 0;
        if (Validate::isLoadedObject($cur_cart)) {
            $id_address = (int)$cur_cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')};
        }
        $address_infos = Address::getCountryAndState($id_address);

        if (self::$_taxCalculationMethod != PS_TAX_EXC
            && !empty($address_infos['vat_number'])
            && $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY')
            && Configuration::get('VATNUMBER_MANAGEMENT')) {
            self::$_taxCalculationMethod = PS_TAX_EXC;
        }
    } else {

        self::$_taxCalculationMethod = Group::getPriceDisplayMethod((int)Configuration::get('PS_UNIDENTIFIED_GROUP'));
        $cur_cart                    = Context::getContext()->cart;
        $id_address                  = 0;
        if (Validate::isLoadedObject($cur_cart)) {
            $id_address = (int)$cur_cart->{Configuration::get('PS_TAX_ADDRESS_TYPE')};
        }
        $address_infos = Address::getCountryAndState($id_address);


        if (self::$_taxCalculationMethod != PS_TAX_EXC
            && !empty($address_infos['vat_number'])
            && $address_infos['id_country'] != Configuration::get('VATNUMBER_COUNTRY')
            && Configuration::get('VATNUMBER_MANAGEMENT')) {
            self::$_taxCalculationMethod = PS_TAX_EXC;
        } else {
            self::$_taxCalculationMethod = Group::getPriceDisplayMethod(Group::getCurrent()->id);
        }
    }
}

 

Edited by Eolia (see edit history)

Share this post


Link to post
Share on other sites

Bonjour Eolia,

Merci pour vos précieuses lumières, je vais tester cela et reviens vers vous pour dire si ça résout le souci.

Cordialement

David

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More