Jump to content

Edit History

Eolia

Eolia

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);
        }
    }
}

 

Eolia

Eolia

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)$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(Group::getCurrent()->id);
        }
    }
}

 

×
×
  • Create New...