diff --git a/Создание-SQL-файлов-и-классов-обработчиков.md b/Создание-SQL-файлов-и-классов-обработчиков.md new file mode 100644 index 0000000..3181207 --- /dev/null +++ b/Создание-SQL-файлов-и-классов-обработчиков.md @@ -0,0 +1,39 @@ +Типовые задачи, выполянемые приложением сводятся к следующему набору: + +* Генерация ICML +* Выгрузка справочников в CRM +* Выгрузка заказов и клиентов в CRM +* Получение изменений по заказам из CRM + + +Для реализации этих механизмов необходимо создать соответствующие sql файлы и php классы в директориях `bundle/sql` и `bundle/handler` соответственно. + +###ICML + +Для того что бы реализовать выгрузку ICML необходимо создать файлы: + +* `bundle/sql/categories.sql` +* `bundle/sql/offers.sql` +* `bundle/handler/CategoriesHandler.php` +* `bundle/handler/OffersHandler.php` + + +Файл `categories.sql` должен содержать sql запрос, выбирающий всю необходимую информацию о категориях каталога, такую как id категории, ее название, id родительской категории +Файл `offers.sql` должен содержать sql запрос, выбирающий всю необходимую информацию о товарах/торговых предложениях каталога, такую как id товара/торгового приложения, id категории, название, цену/закупочную цену, ссылку на страницу товара, ссылку на изображение, аттрибуты (вес, размеры, цвет, артикул) и т.д. (необходимые поля соотносятся с форматом [ICML](http://www.retailcrm.ru/docs/%d0%a0%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d1%87%d0%b8%d0%ba%d0%b8/%d0%a4%d0%be%d1%80%d0%bc%d0%b0%d1%82ICML) + + +Файлы `CategoriesHandler.php` и `OffersHandler.php` содержат классы имплементирующие `HandlerInterface`, содержащие метод prepare, который обрабатывает результат выборки sql запросов в вышеописанных файлах и возвращает структурированный массив, который в последствие передается в класс `IcmlHelper` для непосредственной генерации icml выгрузки. + +###Выгрузка заказов + +Для того что бы реализовать выгрузку заказов необходимо создать файлы: + +* `bundle/sql/orders.sql` - для выгрузки всех заказов +* `bundle/sql/orders_last.sql` - для регулярной выгрузки +* `bundle/sql/orders_uid.sql` - для выгрузки единичного заказа или диапазона заказов +* `bundle/handler/OrdersHandler`.php + +Выборки различаются лишь условием `where`, в случае `orders_last` в sql передается параметр для осуществления выборки начиная с момента предыдущего запуска, для `orders_uid` передается массив id заказов + + +Остальные комбинации выборок и обработчиков строятся по аналогии с вышеприведенными, подробности в примерах \ No newline at end of file