Есть интернет-магазин по продаже подарочных сертификатов на услуги на платформе Open Cart 3 (или 2.3.0.2). Клиент магазина заказывает (еще не покупает!) сертификат (двух видов: или доставка или электронный). Сертификат имеет ограниченный срок использования. Клиент платит или онлайн или наличными курьеру или в офисе. Если клиент платит онлайн, то заказу автоматом присваивается статус "оплачен". Если клиент платит наличными курьеру/в офисе, то статус "оплачен" выставляется вручную в админке. Клиенту выдается на руки или по электронной почте сертификат на услугу.
Клиент с этим сертификатом идет у поставщику услуги. Поставщик услуги заходит на наш сайт и вводит номер сертификата на страничке "Активация Сертификата". В случае валидности сертификата, клиенту оказывается услуга. В конце месяца выставляются счета по взаиморасчетам с партнерами.
Нужно:
1) написать модуль, который выполняет функции:
Для бэк-энда
- при определенном статусе заказа ("оплачен") генерирует рандомно номер из 10 цифр;
- проверяет, нет ли одинакового номера уже сгенерированного ранее и генерирует +1;
- пишет в базу заказов этот номер;
- включается в email заказчику, когда ему отправляется письмо при изменении статуса заказа на "оплачен";
Для фронт-энда
- проверяющий наличие номера сертификата в базе заказов;
- выводящий результаты "сертификат не найден" или "сертификат ххх - услуга "полет в космос" до хх/хх/2020" или "услуга оказана хх/хх/2018 - сертификат погашен" в зависимости от наличия номера сертификата и статуса заказа (настраивается в модуле бэк-энда);
- при совпадении номера выводящий информацию из поля базы данных "product.additional_info", где будет Html краткое описание.
В НАСТРОЙКАХ МОДУЛЯ:
- выбирается админом статус заказа, при котором будет сделана генерация и присвоение номера сертификата к заказу (скорее всего это будет "оплачен" - выбирается в выпадающем меню статусов);
- вывод текст "Сертификат погашен" зависит от статуса заказа(например "Услуга оказана" или любого другого - выбирается в выпадающем меню статусов) и срока автоматического погашения (см ниже);
- вывод текста "Сертификат не найден" на определенное количество попыток неправильного ввода. Если больше n попыток, то "ДОСТУП ОГРАНИЧЕН НА ххх МИНУТ";
- срок автоматического погашения независимо от статуса заказа (месяцев).
При формировании заказа через админку (есть такая возможность создать новый заказ из админки, например, если клиент не хочет на сайте все вбивать, а хочет по телефону) или на сайте самим клиентом, номер сертификата не генерируется. Поле "Сертификат" null.
Может быть еще что-то придумается в процессе работы модуля, так что хотелось бы на долгосрочное сотрудничество. Спасибо.