Skip to content
This repository has been archived by the owner on Feb 19, 2020. It is now read-only.

Создание SQL файлов и классов обработчиков

Alex Lushpai edited this page May 15, 2018 · 2 revisions

Типовые задачи, выполянемые приложением сводятся к следующему набору:

  • Генерация 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

Файлы 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 заказов

Остальные комбинации выборок и обработчиков строятся по аналогии с вышеприведенными, подробности в примерах