Как отобразить цену продукта с налогом и без налога одновременно в списке продуктов для Prestashop?
в списке продуктов мне нужно отобразить цену продукта с налогом и без него одновременно.
Я использую версию 1.6 Prestashop.
сейчас цена включая налог отображается в списке продуктов. Я хочу также отобразить цену без учета налога.
Как я могу это сделать? Я искал решение и не смог найти рабочее решение для меня.
5 ответов
найти следующий блок 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)} ({l s='tax excl.'})
у меня есть аналогичная проблема в списке заказов перед оформлением заказа. В сообщении об ошибке отображается общая сумма и сумма продукта без налога. Поэтому я изменил файл в controllers > 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);
Как другие комментарии говорят, если вы находитесь внутри шаблона, вы можете получить идентификатор продукта в зависимости от вида изменения.
в продукт.TPL (единый вид продукта) существует переменная $product. В списке продуктов.tpl у вас есть переменная $products, массив, содержащий все продукты, отображаемые в списке.
надеюсь, что это помогает.
простое решение
перейдите к Customers - > Groups и нажмите Edit на группе, которую вы хотите изменить:
найти метод отображения цены вариант и выберите цена включена или исключена, как вы хотите затем Сохранить изменения:
проверьте нажатием ctrl + f5. Сделал