1. Модуль выполняет создание заказов в внешней системе iiko с помощью API (http://api.iiko.ru/Instruct.aspx).
2. Пример работы с API можно посмотреть здесь: http://api.iiko.ru/php/index.html Там по шагам с PHP кодом выполняется создание заказа
3. Используемые модули и темы в стандартном решении: тема Pavilion, модуль «простая регистрация и заказ Simple”.
Технические подробности:
1. Тестовый домен opencart.olebo.ru, описанное ниже поведение и поля уже реализованы
2. Версия OC: русская сборка 2.0.3.1.
3. В модуле «простая регистрация и заказ Simple” созданы custom-поля, работа с которыми необходима для интеграции: street_id (улица), house_id (дом), kvartiraofis_id (квартира или офис), adres_samovivoza (адрес самовывоза).
4. В opencart настроено два типа доставки: Курьерская доставка и доставка Самовывозом. В зависимости от типа доставки при заказе заполняется или adres_samovivoza (при способе доставки самовывоз), либо же доставка street_id, house_id, kvartiraofis_id (при способе доставки Курьерская доставка).
Условия разработки:
5. Разработчик передает эксклюзивные права на модуль Заказчику
Админка модуля
Поля:
1. Задается лицензионный ключ
2. Задается хост и порт сервера
3. Задается логин и пароль для доступа к серверу
4. Административный e-mail для уведомления о проблемах в модуле
5. Кнопка «Обновить Улицы и Адреса Самовывоза»
6. Кнопка «Обновить Каталог» /при нажатии выводится
7. Кнопка «Проверить статус сервера»: online/offline
8. Адреса самовывоза (таблица)
a. Город, улица, дом
9. Имена типов оплаты:
a. Выводятся все типы оплат созданных в OpenCart и для каждого типа оплаты задается “Имя Типа оплаты в iiko”, текстовое поле.
10. Имена типов доставки:
a. Выводятся два типа доставок, созданных в OpenCart (Курьерская доставка, Самовывоз) и для них задается текстовое поле “Имя Типа Доставки в iiko”
Первая итерация (отправка заказов):
Функционал админки:
1. все текстовые поля редактируются и их значения можно определить из других модулей/обработчиков
2. При нажатии на кнопки выводится «Будущие версии»
Функционал модуля:
При создании нового заказа в opencart заказ создается в iiko. При проблеме с созданием заказа в iiko отправляется e-mail админу (e-mail берется из админки модуля), а также на e-mail хардкоднутый (будет сообщен при разработке).
При отправке заказа в iiko необходимо:
1. Правильно указать тип доставки (Курьерская или самовывоз, имя берется из админки)
2. Правильно указать тип оплаты (Имя типа берется из админки)
3. Не создавать дубликатов клиентов в айко (проводить поиск клиента по номеру телефона и если клиент в iiko есть, то создавать доставку для данного клиента).
4. Не создавать дубликатов адресов в iiko (если клиент ранее уже заказывал по данному адресу, то использовать существующий адрес, а не создавать дубликат)
5. При заказе товара с опциями также добавить в заказ и опции
6. В айко также должны попасть следующие поля заказа: ФИО, Комментарий, Адрес (custom поля модуля Simple), Заказанные Товары.
7. При заказе самовывозом хардкоднуть адрес самовывоза (точный адрес будет сообщен при начале разработки)
Технические подробности (обсуждаемо):
1. если нужно использовать OCMOD или VQMOD, использовать VQMOD.
2. использовать обработчик событий OpenCart
Вторая итерация (интеграция с модулем «Простая регистрация и Заказ», далее Simple) :
1. В модуле Simple созданы кастом поля street_id и adres_samovivoza. Тип поля – select, значения получаются вызовом функции в PHP.
2. При нажатии на кнопку «Обновить улицы и адреса самовывоза» происходит обновление значений для поля street_id (перечень улиц получается из айко для первого города в iiko).
3. При нажатии на кнопку «Обновить улицы и адреса самовывоза» происходит обновление значений для поля adres_samovivoza (берутся значения таблички из админки и происходит формирования значений поля: Улица + « д.» + Дом). Например, для такой таблички адресов самовывоза Город Улица Дом Санкт-Петербург Ул. Репищева 20 Санкт-Петербург Ул. Рентгена 5
Мы получаем два адреса самовывоза: «ул. Репищева д. 20» и «Ул. Рентгена д. 5).
4.Статус сервера online/offline при нажатии на кнопку, определяется путем получения токена от сервера. Если токен получен, то online. Иначе offline.