Таблица oc_order_voucher
Таблица oc_order_voucher предназначена для хранения информации о подарочных сертификатах (ваучерах), которые были применены покупателями при оформлении заказов. Каждая запись в таблице соответствует одному ваучеру, использованному в одном заказе, и содержит актуальные данные ваучера на момент применения.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
order_voucher_id |
int |
Уникальный идентификатор записи о примененном ваучере в заказе. Первичный ключ с автоинкрементом. |
order_id |
int |
Идентификатор заказа, к которому был применен ваучер. Внешний ключ, ссылается на oc_order.
|
voucher_id |
int |
Идентификатор самого ваучера. Внешний ключ, ссылается на oc_voucher.
|
description |
varchar(255) |
Описание ваучера, которое отображалось покупателю при его применении. |
code |
varchar(10) |
Уникальный код ваучера, который ввел покупатель для его активации. |
from_name |
varchar(64) |
Имя отправителя подарочного сертификата (указывается при покупке ваучера). |
from_email |
varchar(96) |
Email отправителя подарочного сертификата. |
to_name |
varchar(64) |
Имя получателя подарочного сертификата. |
to_email |
varchar(96) |
Email получателя подарочного сертификата. |
voucher_theme_id |
int |
Идентификатор темы оформления ваучера. Внешний ключ, ссылается на oc_voucher_theme.
|
message |
text |
Текст сообщения, которое отправитель оставил для получателя ваучера. |
amount |
decimal(15,4) |
Номинальная стоимость ваучера. Сумма, на которую был приобретен сертификат. |
Как это работает
Когда покупатель приобретает подарочный сертификат в магазине, в таблице oc_voucher создается запись. Покупатель (или система) отправляет код ваучера получателю.
При оформлении заказа получатель ваучера вводит полученный код в соответствующее поле корзины. Система проверяет валидность кода (наличие в oc_voucher, срок действия, остаток суммы) и применяет его к заказу.
В момент применения ваучера создается запись в таблице oc_order_voucher. Эта запись фиксирует "снимок" данных ваучера на момент использования: его код, описание, сумму, информацию об отправителе и получателе. Это важно для исторической сохранности, так как данные в основной таблице ваучеров oc_voucher могут измениться или ваучер может быть удален.
После успешного применения сумма ваучера вычитается из общей суммы заказа. Одновременно в таблице oc_voucher уменьшается остаток доступной суммы ваучера (поле amount) на сумму, использованную в заказе.
Пример SQL-запроса
Получить информацию обо всех ваучерах, примененных в конкретном заказе, можно следующим запросом:
SELECT ov.*, vt.name as voucher_theme_name
FROM oc_order_voucher ov
LEFT JOIN oc_voucher_theme vt ON (ov.voucher_theme_id = vt.voucher_theme_id)
WHERE ov.order_id = 42;
Смотрите также
-
таблицу
oc_voucher,
в которой хранятся основные данные о ваучерах -
таблицу
oc_order,
в которой хранятся данные заказов -
таблицу
oc_voucher_theme,
в которой хранятся темы оформления ваучеров -
таблицу
oc_order_total,
в которую добавляется запись о сумме ваучера в итогах заказа