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

Таблица oc_voucher_history

Таблица oc_voucher_history является журналом операций для подарочных сертификатов системы OpenCart. Каждая запись в этой таблице соответствует одному действию, изменяющему статус или баланс ваучера: активация, использование при заказе, частичное списание или полное использование.

Поля

Поле Тип данных Описание
voucher_history_id int Уникальный идентификатор записи в истории ваучера. Первичный ключ с автоинкрементом.
voucher_id int Внешний ключ, связывающий запись с конкретным подарочным сертификатом. Ссылается на oc_voucher.
order_id int Внешний ключ на заказ, в котором был использован данный сертификат. Ссылается на oc_order. Может быть 0, если запись не связана с заказом (например, при активации).
amount decimal(15,4) Сумма операции. Может быть как положительной (при активации, пополнении), так и отрицательной (при списании средств с баланса сертификата для оплаты заказа).
date_added datetime Дата и время совершения операции. Записывается автоматически.

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

Когда администратор создает или покупатель приобретает подарочный сертификат, в таблице oc_voucher создается основная запись с его номиналом (amount), кодом (code) и статусом. При первой активации сертификата в таблицу oc_voucher_history добавляется запись, где amount равно номиналу сертификата, а order_id может быть 0.

Когда клиент применяет код ваучера при оформлении заказа, система выполняет несколько действий:

1. Проверяет действительность кода и доступный остаток на сертификате.

2. Рассчитывает сумму, которую можно списать с ваучера для оплаты текущего заказа (но не более остатка на сертификате).

3. Создает запись в oc_voucher_history, где amount является отрицательным числом (например, -25.0000), а order_id содержит ID заказа, в котором сертификат был использован.

4. Обновляет текущий остаток (balance) сертификата в таблице oc_voucher, вычитая из него использованную сумму.

Один сертификат может быть использован частично в нескольких заказах, пока его баланс не станет равным нулю. Для каждой операции использования будет создана отдельная запись в истории.

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

Получить полную историю операций по конкретному сертификату вместе с информацией о заказах можно следующим запросом:

SELECT vh.voucher_history_id, vh.amount, vh.date_added, v.code as voucher_code, o.order_id, o.invoice_no, o.total as order_total FROM oc_voucher_history vh LEFT JOIN oc_voucher v ON (vh.voucher_id = v.voucher_id) LEFT JOIN oc_order o ON (vh.order_id = o.order_id) WHERE vh.voucher_id = 7 ORDER BY vh.date_added ASC;

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

  • таблицу oc_voucher,
    в которой хранятся основные данные подарочных сертификатов
  • таблицу oc_voucher_theme,
    которая содержит шаблоны дизайна сертификатов
  • таблицу oc_order,
    которая хранит информацию о заказах, где применялись сертификаты
  • таблицу oc_order_total,
    где также фиксируется применение ваучера в рамках заказа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить