Таблица oc_tax_rate
Таблица oc_tax_rate является ключевым элементом системы налогообложения в OpenCart. Она хранит определения всех налоговых ставок, которые могут быть применены к товарам, в зависимости от таких параметров, как геолокация покупателя (страна, регион, почтовый индекс) и тип налога (НДС, налог с продаж и т.д.).
Поля
| Поле | Тип данных | Описание |
|---|---|---|
tax_rate_id |
int |
Уникальный идентификатор налоговой ставки (Auto Increment). |
geo_zone_id |
int |
Внешний ключ, связывающий ставку с геозоной. Определяет географическую область, для которой действует данная ставка. Ссылается на таблицу oc_geo_zone.
|
name |
varchar(32) |
Название налоговой ставки для удобства идентификации в админ-панели (например, "НДС 20% РФ", "Sales Tax CA"). |
rate |
decimal(15,4) |
Числовое значение ставки налога. Например, для ставки 20% в это поле будет записано значение 20.0000.
|
type |
char(1) |
Тип расчета налога. Возможные значения:
|
date_added |
datetime |
Дата и время добавления налоговой ставки. |
date_modified |
datetime |
Дата и время последнего изменения записи о налоговой ставке. |
Как это работает
Процесс применения налога состоит из нескольких этапов. Сначала в админ-панели создается один или несколько налоговых классов oc_tax_class. Затем для каждого класса создаются правила (oc_tax_rule), которые связывают класс с конкретными налоговыми ставками из oc_tax_rate.
Налоговая ставка сама по себе привязана к геозоне (geo_zone_id). Геозона определяет, к каким географическим регионам (страна, регион, почтовый индекс) применяется данная ставка. Когда покупатель указывает свой адрес доставки или оплаты, система определяет, в какую геозону он попадает, и, соответственно, какие налоговые ставки к нему применяются.
Toвару в карточке редактирования присваивается нужный налоговый класс. При расчете стоимости корзины или заказа система, основываясь на адресе покупателя, находит все ставки, связанные с налоговым классом товара и действующие для данной геозоны, и суммирует их.
Например, если ставка имеет тип P и значение 20.0000, то к цене товара будет добавлено 20%. Если тип F и значение 5.0000, то к итоговой стоимости будет добавлена фиксированная сумма в 5 единиц валюты.
Пример SQL-запроса
Выбрать все налоговые ставки для определенной геозоны с указанием её названия:
SELECT tr.*, gz.name as geo_zone_name
FROM oc_tax_rate tr
LEFT JOIN oc_geo_zone gz ON (tr.geo_zone_id = gz.geo_zone_id)
WHERE tr.geo_zone_id = 3;
Смотрите также
-
таблицу
oc_tax_class,
которая хранит определения налоговых классов -
таблицу
oc_tax_rule,
которая связывает налоговые классы со ставками -
таблицу
oc_geo_zone,
которая определяет географические зоны для налогов и доставки