НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
94 of 152 menu

Таблица oc_tax_rule

Таблица oc_tax_rule является ключевым элементом налоговой системы OpenCart. Она связывает налоговые классы (oc_tax_class) с конкретными налоговыми ставками (oc_tax_rate) и определяет приоритет их применения в зависимости от базы расчета (основы налогообложения).

Поля

Поле Тип данных Описание
tax_rule_id int Уникальный идентификатор правила применения налога. Автоинкремент.
tax_class_id int Внешний ключ, связывающий правило с налоговым классом. Ссылается на oc_tax_class.
tax_rate_id int Внешний ключ, связывающий правило с конкретной налоговой ставкой. Ссылается на oc_tax_rate.
based varchar(10) Основа для расчета налога. Определяет, к чему применяется налог. Возможные значения: shipping (доставка), payment (оплата), store (адрес магазина). Наиболее распространенное значение - shipping.
priority int Приоритет применения правила. Чем меньше число, тем выше приоритет. Используется, когда к одному товару может быть применено несколько налоговых ставок. Система выберет ставку с наивысшим приоритетом (наименьшим числом).

Как это работает

Налоговая система OpenCart работает по следующему принципу:

  1. Toвару или категории присваивается Налоговый Класс (oc_tax_class).
  2. Для этого Налогового Класса в oc_tax_rule создаются правила, которые связывают его с одной или несколькими Налоговыми Ставками (oc_tax_rate).
  3. При оформлении заказа система определяет адрес доставки или оплаты покупателя.
  4. На основе этого адреса и поля based система проверяет, действует ли в данном географическом регионе налоговая ставка, указанная в правиле.
  5. Если для Налогового Класса товара найдено несколько подходящих ставок, система выбирает ту, у которой в правиле указан наивысший приоритет (priority = 1).
  6. Выбранная налоговая ставка применяется к стоимости товара.

Например, можно создать правило: для Налогового класса "НДС" применить Ставку "НДС 20%" с приоритетом 1 на основе адреса доставки. Это означает, что если товар имеет класс "НДС", а покупатель находится в регионе, где действует ставка 20%, то к товару будет применен именно этот налог.

Поле based критически важно для корректного расчета. Если оно установлено в значение shipping, налог будет рассчитываться исходя из региона, в который осуществляется доставка товара. Это самый распространенный и правильный с юридической точки зрения вариант.

Пример SQL-запроса

Посмотреть все правила для определенного налогового класса можно следующим запросом:

SELECT tr.*, tc.title as tax_class, trate.name as tax_rate_name FROM oc_tax_rule tr LEFT JOIN oc_tax_class tc ON (tr.tax_class_id = tc.tax_class_id) LEFT JOIN oc_tax_rate trate ON (tr.tax_rate_id = trate.tax_rate_id) WHERE tr.tax_class_id = 9 ORDER BY tr.priority ASC;

Смотрите также

  • таблицу oc_tax_class,
    которая хранит налоговые классы товаров
  • таблицу oc_tax_rate,
    которая хранит сами налоговые ставки и их привязку к географии
  • таблицу oc_product,
    в которой поле tax_class_id ссылается на налоговый класс товара
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить