Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


JohnnyVega
 Погделиться

Рекомендованные сообещёния

Версия магазина: 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
Ссылка на комменирий
Погделиться на других сайих

  09.03.2012 в 15:34, 'almaz8811' сказал:

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

#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 год спустя...
  • 8 месяэтов спустя...

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

Ссылка на комменирий
Погделиться на других сайих


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

Ссылка на комменирий
Погделиться на других сайих


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

 

Изменения:
Комментируем найгденный блок, вместо него добавляем:
// Новые значения
////////////////////
'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 года спустя...
  • 5 лет спустя...
  09.03.2012 в 10:18, JohnnyVega сказал:

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

Раскрыть  

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

Изменено пользователем vikaha
Ссылка на комменирий
Погделиться на других сайих


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.