В списке продуктов мне нужно отображать цену продукта одновременно и без налога.
Я использую версию 1.6 Prestashop.
В настоящее время цена, включая налог, отображается в списке продуктов. Я хочу показать цену без налога.
Как я могу это сделать? Я искал решение и не смог найти для меня рабочего решения.
Найдите в блоке product-list.tpl
следующий блок:
{foreach from=$products item=product name=products}
Добавьте это, чтобы показать цену без налога:
{convertPrice price=$product.price_tax_exc}
Убедитесь, что во время разработки для Template compilation
установлено значение « Force compilation
а в Cache
установлено значение « No
в бэк-офисе PrestaShop -> « Advanced Parameters
-> « Performance
.
В моем случае он работает по умолчанию, исключая:
{convertPrice price=$product->getPrice(false, $smarty.const.NULL)} ({ls='tax excl.'})
Вы можете использовать профессиональный инструмент со множеством опций для отображения двойной цены (с учетом налогов и налогов). Вы можете найти его в магазине prestashop addons с названием «Dual display of Tax included and Tax excluded prices».
У меня есть аналогичная проблема в списке заказов перед оформлением заказа. В сообщении об ошибке отображается общая сумма и сумма продукта без налога. Поэтому я изменил файл в контроллерах> front> OrderController.php (PS 1.6). На строке 63
// Check minimal amount $currency = Currency::getCurrency((int)$this->context->cart->id_currency); $orderTotal = $this->context->cart->getOrderTotal(); $minimal_purchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency); if ($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS) < $minimal_purchase && $this->step > 0) { $_GET['step'] = $this->step = 0; $this->errors[] = sprintf( Tools::displayError('A minimum purchase total of %1s (tax excl.) is required to validate your order, current purchase total is %2s (tax excl.).'), Tools::displayPrice($minimal_purchase_2, $currency), Tools::displayPrice($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS), $currency) ); }
со следующим кодом
// Check minimal amount $currency = Currency::getCurrency((int)$this->context->cart->id_currency); $orderTotal = $this->context->cart->getOrderTotal(); $minimal_purchase = Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency); # modified (total amount included tax - only for screen error) $minimal_purchase_2 = round(Tools::convertPrice((float)Configuration::get('PS_PURCHASE_MINIMUM'), $currency)*1.22,1); $productTotal = round($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS)*1.22,1); if ($this->context->cart->getOrderTotal(false, Cart::ONLY_PRODUCTS) < $minimal_purchase && $this->step > 0) { $_GET['step'] = $this->step = 0; $this->errors[] = sprintf( Tools::displayError('A minimum purchase total of %1s (tax incl.) is required to validate your order, current purchase total is %2s (tax incl.).'), Tools::displayPrice($minimal_purchase_2, $currency), Tools::displayPrice($productTotal, $currency) ); }
Я должен решить, чтобы получить фактическую налоговую стоимость (на данный момент я вставил 1,22 для значения налога на недвижимость).
В конце вам нужно перевести в локализацию новое предложение. Надеюсь, кто-то может закончить или лучше решить этот вопрос.
Я знаю, что уже есть один принятый ответ, но мне нужна дополнительная информация о том, как получить цену продукта.
Встроенный класс продукта Prestashop имеет метод getPrice.
/** * Get product price * Same as static function getPriceStatic, no need to specify product id * * @param bool $tax With taxes or not (optional) * @param int $id_product_attribute Product attribute id (optional) * @param int $decimals Number of decimals (optional) * @param int $divisor Util when paying many time without fees (optional) * @return float Product price in euros */ public function getPrice($tax = true, $id_product_attribute = null, $decimals = 6, $divisor = null, $only_reduc = false, $usereduc = true, $quantity = 1) { return Product::getPriceStatic((int)$this->id, $tax, $id_product_attribute, $decimals, $divisor, $only_reduc, $usereduc, $quantity); }
Как вы можете видеть, вы можете указать, хотите ли вы его с налогами, количество десятичных знаков, заданных как результат, и числовой делитель.
Итак, если вы хотите получить цену продукта по ID с налогами и без них, вы можете достичь этого, как это
$product = new Product($id_product, $id_language) // Fill with your info $price_with_taxes = $product->getPrice(true); $price_wout_taxes = $product->getPrice(false);
Как отмечают другие комментарии, если вы находитесь внутри шаблона, вы можете получить идентификатор продукта в зависимости от вида, который вы изменяете.
В product.tpl (представление одного продукта) существует переменная $ product. В product-list.tpl у вас есть переменная $ products, массив, содержащий все продукты, отображаемые в списке.
Надеюсь это поможет.
Простое решение
Перейдите в раздел «Клиенты -> Группы» и нажмите «Изменить» в группе, которую вы хотите изменить:
Найти метод отображения цены и выберите Цена включена или исключена, как вы хотите, затем Сохранить изменения:
проверьте с помощью нажатия ctrl + f5. Готово