Таблица 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 работает по следующему принципу:
- Toвару или категории присваивается Налоговый Класс (
oc_tax_class). - Для этого Налогового Класса в
oc_tax_ruleсоздаются правила, которые связывают его с одной или несколькими Налоговыми Ставками (oc_tax_rate). - При оформлении заказа система определяет адрес доставки или оплаты покупателя.
- На основе этого адреса и поля
basedсистема проверяет, действует ли в данном географическом регионе налоговая ставка, указанная в правиле. - Если для Налогового Класса товара найдено несколько подходящих ставок, система выбирает ту, у которой в правиле указан наивысший приоритет (
priority= 1). - Выбранная налоговая ставка применяется к стоимости товара.
Например, можно создать правило: для Налогового класса "НДС" применить Ставку "НДС 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ссылается на налоговый класс товара