Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Налог в цене товара в корзине и при оформлении заказа


JohnnyVega

Recommended Posts

Версия магазина: ocStore v1.5.1.3

Описание: По-умолчанию, на текущий момент, если выбираешь в настройках пункт " Отображать цены с налогом", то в карточке товара, в категории и в поиске отображается цена с налогом, но в корзине и при оформлении заказа отображается цена товара без налога и отдельно отображается налог, что на мой взгляд не очень удобно. Особенно для тех, кто использует налоги, чтобы устанавливать для товаров торговую наценку.

Данное дополнение добавляет в настройки админки пункт " Налог в цене товара" в раздел "Опции". В расчётах, в корзине и при оформлении заказа налог уже будет заложен в цене товара, т.е. цена товара будет отображаться с учётом налога. Сам налог в расчётах, в корзине и при оформлении отображаться не будет, в независимости от того, включен ли он в "Учитывать в заказе". Для работы этой опции требуется включить "Отображать цены с налогом".

Начало и ещё одна полезняшка здесь

Изменения в файлах:

Пункт в админке

Файл: admin\view\template\setting\setting.tpl

Действие:

ищем блок

<tr>
	<td><?php echo $entry_tax; ?></td>
................
................
</tr>
Изменения:

после этого блока добавляем такой блок

<!-- Вкл_Выкл - налог в цене товара  -->
<tr>
			  <td><?php echo $tax__tax_in_price; ?></td>
			  <td><?php if ($config_tax__tax_in_price) { ?>
				<input type="radio" name="config_tax__tax_in_price" value="1" checked="checked" />
				<?php echo $text_yes; ?>
				<input type="radio" name="config_tax__tax_in_price" value="0" />
				<?php echo $text_no; ?>
				<?php } else { ?>
				<input type="radio" name="config_tax__tax_in_price" value="1" />
				<?php echo $text_yes; ?>
				<input type="radio" name="config_tax__tax_in_price" value="0" checked="checked" />
				<?php echo $text_no; ?>
				<?php } ?></td>
			</tr>

<!--  -->

Файл: admin\language\russian\setting\setting.php

Действие:

ищем блок

$_['entry_tax'] = 'Отображать цены с налогом:';
Изменения: после этого блока добавляем:

// Вкл_Выкл - налог в цене товара

$_['tax__tax_in_price']											   = 'Налог в цене товара: <br /><span class="help">В расчётах, в корзине и при оформлении заказа налог уже будет заложен в цене товара, т.е. цена товара будет отображаться с учётом налога. Сам налог в расчётах, в корзине и при оформлении отображаться не будет, в независимости от того, включен ли он в "Учитывать в заказе". Для работы этой опции требуется включить "Отображать цены с налогом".</span>';

Файл: admin\controller\setting\setting.php

Действие:

ищем блок

$this->data['entry_tax'] = $this->language->get('entry_tax');
Изменения: после этого блока добавляем:

// Вкл_Выкл - налог в цене товара
$this->data['tax__tax_in_price'] = $this->language->get('tax__tax_in_price');
Действие:

ищем блок:

if (isset($this->request->post['config_tax'])) {
$this->data['config_tax'] = $this->request->post['config_tax'];
} else {
$this->data['config_tax'] = $this->config->get('config_tax');
}
Изменения: после этого блока добавляем:

// Вкл_Выкл - налог в цене товара
if (isset($this->request->post['config_tax__tax_in_price'])) {
			$this->data['config_tax__tax_in_price'] = $this->request->post['config_tax__tax_in_price'];
						} else {

			$this->data['config_tax__tax_in_price'] = $this->config->get('config_tax__tax_in_price');	}

Файл: БД

Действие: Добавляем переменную в таблицу setting.

Изменения:

INSERT INTO `Имя Вашей БД`.`Имя Вашей таблицы setting` (`store_id` ,`group` ,`key` ,`value` ,`serialized`)
VALUES ('0', 'config', 'config_tax__tax_in_price', '0', '0'); - это SQL-код для PHPMyAdmin

Всё. Новый пункт меню отображается в админке.

Логика

Файл:

\system\library\cart.php

Действие:

Найти блок

if (!$product_query->row['quantity'] || ($product_query->row['quantity'] < $quantity)) {
$stock = false;
Изменения: после этого блока добавляем:

// Налог в цене товара
// Учитываем только, если в настройках включено "Отображать цены с налогом" и "Налог в цене товара"
if ( $this->config->get('config_tax') && $this->config->get('config_tax__tax_in_price') ) {
			// Оригинальная цена товара без учёта налога
			$original_price = $price + $option_price;
			// Цена товара с учётом налога
			$taxtotal = $this->tax->calculate(($price + $option_price), $product_query->row['tax_class_id'], $this->config->get('config_tax'));
			} else {
						// Оригинальная цена товара без учёта налога
						$original_price = $price + $option_price;
						// Цена товара с учётом налога
						$taxtotal = $price + $option_price;
						}
////////////////////////
Действие:

Найти блок

'price'		   => ($price + $option_price),
'total'		   => ($price + $option_price) * $quantity,
Изменения:

Комментируем найденный блок, вместо него добавляем:

// Новые значения
////////////////////
'original_price'  => $original_price,
'original_total'  => $original_price * $quantity,
'price'		   => $taxtotal,
'total'		   => ($taxtotal * $quantity),

////////////////////

Файл: \catalog\controller\checkout\cart.php

Действие:

Найти блок:

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
			$price = $this->currency->format($this->tax->calculate($product['price'], $product['tax_class_id'], $this->config->get('config_tax')));
			} else {
						$price = false;
						}
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
			$total = $this->currency->format($this->tax->calculate($product['total'], $product['tax_class_id'], $this->config->get('config_tax')));
						} else {
									$total = false;
								   }
Изменения:

Комментируем найденный блок, вместо него добавляем:

// Налог в цене товара
// Отображение в обычной корзине
// Учитываем только, если в настройках включено "Отображать цены с налогом" и "Налог в цене товара"																
if ( $this->config->get('config_tax') && $this->config->get('config_tax__tax_in_price') ) {
			// Цена товара с учётом налога
			$price = $this->currency->format($this->tax->calculate($product['original_price'], $product['tax_class_id'], $this->config->get('config_tax')));
			// Цена всех товаров (ИТОГО) с учётом налога
			$total = $this->currency->format($this->tax->calculate($product['original_total'], $product['tax_class_id'], $this->config->get('config_tax')));
						} else {
								   // Цена товара без учёта налога
								   $price = $this->currency->format($product['price']);
								   // Цена всех товаров (ИТОГО) без учёта налога
								   $total = $this->currency->format($product['total']);
								   }
											  
// Если в настройках указано, что "Не показывать цены гостям" и пользователь не залоген, то скрываем цену и ИТОГО
if ( $this->config->get('config_customer_price') && !$this->customer->isLogged()  ) {
			$price = false;
			$total = false;
			}
////////////////////////
Действие:

Найти блок:

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
			$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
						} else {
								   $price = false;
								   }

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
			$total = $this->currency->format($this->tax->calculate($result['total'], $result['tax_class_id'], $this->config->get('config_tax')));
						} else {
								   $total = false;
								   }
Изменения:

Комментируем найденный блок, вместо него добавляем:

// Налог в цене товара
// Отображение в верхней корзине
// Учитываем только, если в настройках включено "Отображать цены с налогом" и "Налог в цене товара"
if ( $this->config->get('config_tax') && $this->config->get('config_tax__tax_in_price') ) {
			// Цена товара с учётом налога
			$price = $this->currency->format($this->tax->calculate($result['original_price'], $result['tax_class_id'], $this->config->get('config_tax')));
			// Цена всех товаров (ИТОГО) с учётом налога
			$total = $this->currency->format($this->tax->calculate($result['original_total'], $result['tax_class_id'], $this->config->get('config_tax')));
						} else {
								   // Цена товара без учёта налога
								   $price = $this->currency->format($result['price']);
								   // Цена всех товаров (ИТОГО) без учёта налога
								   $total = $this->currency->format($result['total']);
								   }
								  
// Если в настройках указано, что "Не показывать цены гостям" и пользователь не залоген, то скрываем цену и ИТОГО
if ( $this->config->get('config_customer_price') && !$this->customer->isLogged()  ) {
			$price = false;
			$total = false;
			}

///////////////////////

Файл:

\catalog\model\total\tax.php

Действие:

Найти блок:

$total += $value;
Изменения:

Закомментировать

Действие:

Добавить в конец файла

Изменения:

// Налог в цене товара
// Учитываем только, если в настройках включено "Отображать цены с налогом" и "Налог в цене товара"
if ($this->config->get('config_tax') && !$this->config->get('config_tax__tax_in_price')) {
			$total += $value;}

////////////////

Налог в корзине и при оформлении заказа – управление показом

Файл:

catalog\view\theme\default\template\checkout\cart.tpl

Действие:

Найти блок:

<?php foreach ($totals as $total) {
Изменения:

Добавить после найденного блока:

// Налог в цене товара
// Пропускаем отображение налога, если в настройках включено "Отображать цены с налогом", "Налог в цене товара" и сейчас пытается отобразиться модуль налогов ($total['code'] == 'tax')
if ($this->config->get('config_tax') && $this->config->get('config_tax__tax_in_price') && ($total['code'] == 'tax') ) {continue;}							

//////////////////

Файл:

catalog\view\theme\default\template\common\cart.tpl

Действие:

Найти блок:

<?php foreach ($totals as $total) {
Изменения:

Добавить после найденного блока:

// Налог в цене товара
// Пропускаем отображение налога, если в настройках включено "Отображать цены с налогом", "Налог в цене товара" и сейчас пытается отобразиться модуль налогов ($total['code'] == 'tax')
if ($this->config->get('config_tax') && $this->config->get('config_tax__tax_in_price') && ($total['code'] == 'tax') ) {continue;}							

//////////////////

Файл:

\catalog\view\theme\default\template\checkout\confirm.tpl

Действие:

Найти блок:

<?php foreach ($totals as $total) {
Изменения:

Добавить после найденного блока:

// Налог в цене товара
// Пропускаем отображение налога, если в настройках включено "Отображать цены с налогом", "Налог в цене товара" и сейчас пытается отобразиться модуль налогов ($total['code'] == 'tax')
if ($this->config->get('config_tax') && $this->config->get('config_tax__tax_in_price') && ($total['code'] == 'tax') ) {continue;}							
//////////////////

=======================

Добавления от 13 марта (Отображения в Личном кабинете - заказы)

Файл:

\catalog\view\theme\default\template\account\order_info.tpl

Действие:

Найти блок:

<?php foreach ($totals as $total) {
Изменения:

Добавить после найденного блока:

// Налог в цене товара
// Пропускаем отображение налога, если в настройках включено "Отображать цены с налогом", "Налог в цене товара" и сейчас пытается отобразиться модуль налогов ($total['code'] == 'tax')
if ($this->config->get('config_tax') && $this->config->get('config_tax__tax_in_price') && ($total['code'] == 'tax') ) {continue;}							
//////////////////
=======================

Если где-то ошибся, надеюсь, кто-то из более опытных исправит.

Также хотелось, чтобы данное дополнение вошло в сборку ocstore. :oops:

Изменения в SVN, кроме вышеперечисленного:

В файле opencart.sql

Вставить после строки:

INSERT INTO `oc_setting` (`setting_id`, `store_id`, `group`, `key`, `value`, `serialized`) VALUES

строчку

( 34573, 0, 'config', 'config_tax__tax_in_price', '0', 0);

================================

В файле upgrade.sql

Вставить строчку

INSERT INTO oc_setting (store_id, group, key, value, serialized) VALUES (0, 'config', 'config_tax__tax_in_price', '0', 0);
На счёт этой строки не уверен - нужно проверить
  • +1 3
Надіслати
Поділитися на інших сайтах

Файл: БД

Действие: Добавляем переменную в таблицу setting:

Изменения:

INSERT INTO oc_setting (setting_id, store_id, group, key, value, serialized) VALUES (NULL , 0, 'config', 'config_tax__tax_in_price', '0', 0);

Всё. Новый пункт меню отображается в админке.

Выдает ошибку

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group, key, value, serialized) VALUES (NULL , 0, 'config', 'config_tax__tax_in_p' at line 1
Надіслати
Поділитися на інших сайтах


almaz8811, я вручную эту переменную добавлял, через PhpMyAdmin.

Через PhpMyAdmin выбираете Вашу базу, находите таблицу setting, затем вкладка INSERT.

Либо такой код: INSERT INTO `ВашаБД`.`Ваша таблица setting` (`store_id` ,`group` ,`key` ,`value` ,`serialized`)

VALUES ('0', 'config', 'config_tax__tax_in_price', '0', '0');

  • +1 1
Надіслати
Поділитися на інших сайтах

Выдает ошибку

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group, key, value, serialized) VALUES (NULL , 0, 'config', 'config_tax__tax_in_p' at line 1
Решил проблему. Сделал запрос через программу Navicat

Все работает, автору ОГРОМНОЕ СПАСИБО!!!

Надіслати
Поділитися на інших сайтах


Пользуйтесь. :wink:

Добавления от 13 марта (Отображения в Личном кабинете - заказы) (в шапке темы)

Надіслати
Поділитися на інших сайтах

  • 1 year later...
  • 8 months later...

Здравствуйте, после всех проделанных операций вроде всё работает кромесамой цены товара к которой второй раз плюсуеться налог, т.е. цена товара с налогом + повторно тот же налог, как это исправить? спасибо

Надіслати
Поділитися на інших сайтах


и кстати в шаблоне письма, которое отправляется покупателю тоже делаю изменения и после этого письмо перестало отправляться, подскажите, пожалуйста, как исправить?

Надіслати
Поділитися на інших сайтах


В этой части если заменить

 

Изменения:
Комментируем найденный блок, вместо него добавляем:
// Новые значения
////////////////////
'original_price' => $original_price,
'original_total' => $original_price * $quantity,
'price'         => $taxtotal,
'total'         => ($taxtotal * $quantity),

////////////////////

 

На

 

Изменения:
Комментируем найденный блок, вместо него добавляем:
// Новые значения
////////////////////
'original_price' => $original_price,
'original_total' => $original_price * $quantity,
'price'         => ($price + $option_price),
'total'         => ($taxtotal * $quantity),

////////////////////

 

то в цене товара налог не будет задваиваться

 

Осталось решить вопрос с письмом, кто поможет?

Надіслати
Поділитися на інших сайтах


  • 2 years later...
  • 5 years later...
В 09.03.2012 в 12:18, JohnnyVega сказал:

Данное дополнение добавляет в настройки админки пункт " Налог в цене товара" в раздел "Опции"

Мил человек, вот если бы отдельным дополнением вы добавление процентов к цене в Опциях сделали, было бы круто (в самых популярных версиях 2.3 и 3.0). Посмотрите, как народ мучается, когда цена на размерах меняется - рубашка 46 размера стоит 100, а 60-го - 120 - и как это отразить непонятно. А вот если бы проценты в опциях с размерами можно было проставить - вопрос бы немного закрылся

Змінено користувачем vikaha
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.