Разработчикам программного обеспечения, в сфере оконного бизнеса.

Предлагаем комплекс API функций возвращающих XML результат.

 

Комплекс функций предназначен для формирования наборов артикулов фурнитуры GU (комплектов) по указанным клиентом параметрам конструкции.

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

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

 

Нами, как региональными представителями GU в Молдове, предпринята попытка решить эту проблему.

При использовании наших API функций можно отказаться от ведения локальной системы комплектования, отслеживания обновлений и изменений артикулов. Достаточно выбрать необходимые, из предоставленных, ответы на понятные  вопросы и сформировать заявку в понятных, поставщику фурнитуры, терминах – артикулах товарной номенклатуры.

 

К примеру, производителю окон требуется:

- сделать расчет для клиента стоимости окна,

- совершить заказ поставщику фурнитуры,

- выдать полученную фурнитуру в производство,

- подготовить сметную документацию.

 

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

Этот комплект может быть сформирован при помощи наших API функций.

Входными параметрами функций, для конкретного типа изделия ОКНО, могут быть следующие (в формате вопрос - ответ) :

 - Система фурнитуры   -   EURO-JET

- Тип оконного открывания - Поворотно-откидной

- Материал изделий             Пластик

- Тип профиля                       - Veka

- Степень защищенности     Стандартный

- Тип петель                          – Регулируемые

- Тип нижней петли               Фальцевая

- Наличие доп. Блокиратора - Блокиратор-микролифт

- Наличие ступенчатого откидывания - Ступенчатое откидывание в угловой передаче

- Отдельное / штульповое       - Отдельное открывание

- Цвет                                     -  Белый

- Направление открывания – Левое

- Размещение ручки            Центральное

- Ширина (мм)                      - 501-750

- Высота (мм)                        – 1201-1350

- Средний прижим / петля   - Нет выбора

- Тип ручки                            -  Dirigent

- Диаметр отверстий в раме  - 6 мм

- Покрытие опор рамы          - Анодирование

 

Результатом будет набор артикулов  :

 

 

В дереве указаны вопросы и в кавычках – текущий ответ, влияющий на состав артикулов в наборе.

 

Краткое описание API функций комплекса

В него входят четыре функции. Результат работы каждой функции является XML документ, данные из которого будут использованы при вызове последующих функций. Поэтому должны вызываться в строгом порядке.

  1. Функция LoadAllLang .

вызывается http://www.gu.md/webformr.aspx?Function=LoadAllLang  и возвращает перечень доступных языков, для возвращаемых названий.

Из этого списка может быть выбран ‘ID’ необходимого языка и добавлен в последующие запросы в виде атрибута запроса &LangID= ‘ID’.

Эта функция не обязательна, и если атрибут &LangID=  не добавлять в строку запроса, результаты будут предоставлены на русском языке.

  1. Функция LoadAllObjects .

Возвращает перечень доступных к комплектации типов изделий (‘Окно’, ‘Дверь’ и т.п.) в виде XML документа.

Из этого списка может быть выбран ‘ID’ необходимого типа изделия и добавлен в последующие запросы в виде атрибута запроса &ObjectID= ‘ID’.

Вызывается :

 http://www.gu.md/webformr.aspx?Function=LoadAllObjects   - без указания языка

 http://www.gu.md/webformr.aspx?Function=LoadAllObjects&LangID=3   - с указанием языка ID языка = 3

  1. Функция LoadViborTypesForObjects .

Возвращает перечень, доступных для выбранного типа изделий, наводящих вопросов и варианты ответов для каждого из них, в виде XML документа.

Вызывается в двух режимах :

    1. Первоначально без вложенного XML документа (для стартового перечня вопросов и ответов)
    2. Каждый последующий раз (при выборе пользователем другого варианта ответа), с вложением XML документа, построенного на результатах выбранных значений ответов на все вопросы.

 http://www.gu.md/webformr.aspx?Function=LoadViborTypesForObjects&ObjectID=1   - без указания языка

 http://www.gu.md/webformr.aspx?Function=LoadViborTypesForObjects&ObjectID=1&LangID=3   - с указанием языка ID языка = 3

Ниже будет рассмотрена структура XML документов.

  1. Функция LoadComplect.

Возвращает непосредственно перечень фурнитуры для выбранного ранее набора ответов, в виде XML документа.

Вызывается только с вложенным в запрос XML документом, содержащим пары ID вопрос – ID ответ, из последнего результата функции №3 LoadViborTypesForObjects . Формат вложенного в функцию XML документа и XML документа – ответа будет рассмотрен далее.

http://www.gu.md/webformr.aspx?Function=LoadComplect&ObjectID=1 - без указания языка

http://www.gu.md/webformr.aspx?Function=LoadComplect&ObjectID=1&LangID=3   - с указанием языка ID языка = 3

 

 

 

Далее будет рассмотрена структура XML документов для каждой функции  :

 

  1. Функция LoadAllLang. Возвращает ID языка (IdLang) и его название (NameLang)

  <?xml version="1.0" encoding="UTF-8" ?>

   <root>

  <Lang IdLang="1" NameLang="Русский" />

  <Lang IdLang="2" NameLang="Romana" />

  <Lang IdLang="3" NameLang="Deutsch" />

  <Lang IdLang="4" NameLang="English" />

</root>

Этой информацией может быть заполнен элемент обеспечивающий пользователю выбор необходимого языка

В каждый из последующих запросов может быть добавлен еще один параметр &LangID= IdLang

При наличии этого параметра текстовая информация в запросах  будет выдана на выбранном языке.

 

 

  1. Функция LoadAllObjects. Возвращает ID типа изделия (IdOBJ) и его название (NameObject)

 

  <?xml version="1.0" encoding="UTF-8" ?>

  <root>

  <Object IdOBJ="1" NameObject="Окна" />

  <Object IdOBJ="2" NameObject="Двери входные" />

  <Object IdOBJ="3" NameObject="Двери балконные" />

  <Object IdOBJ="4" NameObject="Откидные открывания" />

  <Object IdOBJ="5" NameObject="Параллельно-Раздвижные конструкции" />

  <Object IdOBJ="6" NameObject="Автоматика" />

  <Object IdOBJ="7" NameObject="Подъемно - раздвижные конструкции" />

  <Object IdOBJ="8" NameObject="Складные конструкции" />

</root>

 

Этой информацией может быть заполнен элемент обеспечивающий пользователю выбор необходимого типа конструкции

После того, как необходимая к комплектации конструкция определена необходимо запустить следующую функцию

 

  1. Функция LoadViborTypesForObjects .

Если функция вызвана WEB запросом без вложенного XML документа, она вернет значения конфигурации «по умолчанию»

WEB сервером будет отправлен следующий XML документ :

<?xml version="1.0" encoding="UTF-8" ?>

   <root>

   <Config IdConfig="1" NameConfig="Система фурнитуры">

      <Type IdType="1" NameType="UNI-JET" Selected="0" />

      <Type IdType="212" NameType="EURO-JET (PVC, Алюминий)" Selected="1" />

      <Type IdType="344" NameType="AK8 (Алю.)" Selected="0" />

      <Type IdType="357" NameType="UNI-JET S Concealed (PVC, Дерево)" Selected="0" />

      <Type IdType="360" NameType="ECO-Jet (PVC)" Selected="0" />

      <Type IdType="367" NameType="Jet T Solo (дерево)" Selected="0" />

</Config>

 

…………………………………………Другие вопросы и варианты ответов…………………………………………………………………

 

   <Config IdConfig="50" NameConfig="Тип оконного открывания">

      <Type IdType="370" NameType="Поворотно-откидной" Selected="1" />

      <Type IdType="371" NameType="Поворотный" Selected="0" />

</Config>

 

…………………………………………… Другие вопросы и варианты ответов  ……………………………………………………………

 

   <Config IdConfig="25" NameConfig="Тип ручки">

      <Type IdType="268" NameType="НЕ ТРЕБУЕТСЯ" Selected="1" />

      <Type IdType="269" NameType="Dirigent (алюм. "Квадратная")" Selected="0" />

      <Type IdType="270" NameType="Elegans (алюм."Скругленная" )" Selected="0" />

</Config>

   <Config IdConfig="48" NameConfig="Диаметр отверстий в раме">

      <Type IdType="362" NameType="6 мм" Selected="1" />

      <Type IdType="363" NameType="3 мм" Selected="0" />

</Config>

  <Config IdConfig="49" NameConfig="Покрытие опор рамы">

      <Type IdType="364" NameType="Анодирование" Selected="1" />

 </Config>

 </root>

 

Полученными данными можно заполнить набор элементов дающий возможность пользователю выбирать ответ на каждый вопрос.

Вопросы расположены в строгом порядке, и ответ на любой вопрос может изменить варианты ответов ниже расположенных вопросов.

Рассмотрим более подробно первый вопрос и группу ответов на него.

Сам вопрос расположен в теге Config и имеет строгий идентификатор IdConfig а также подпись смысла вопроса NameConfig.

Варианты ответа в тегах Type со своими идентификаторами IdType и подписями NameType.

Также у каждого вопроса есть атрибут Selected указывающий на то, что именно этот ответ выбран в качестве ответа и влияет на формирование комплекта артикулов фурнитуры. 1 – выбран, 0 – игнорируется, но возможен как альтернатива.

 

 

После заполнения первоначальной «матрицы» вопросов и возможных ответов предоставляем ее для дальнейшего изменения пользователю.

При изменении выбора ответа на любой один из вопросов признак Selected должен быть изменен в соответствии с выбором. У вновь выбранного ответа он должен быть равен 1, а у предыдущего варианта заменен с 1 на 0.

Обновленная информация должна быть отправлена на сервер для формирования пересмотренной матрицы вопросов (как уже было отмечено выше каждый из вышестоящих вопросов влияет на возможные варианты ответов нижестоящих).

 

В этом случае ВАШИМ приложением формируется запрос, в адресной строке аналогичный предыдущему, но в него надо вложить XML содержимое с указанием набора IdConfig  вопросов и IdType ответа на этот вопрос (у которых атрибут Selected стал равен 1)

http://www.gu.md/webformr.aspx?Function=LoadViborTypesForObjects&ObjectID=1

 

Пример вложенного в запрос XML документа :

<?xml version="1.0" encoding="UTF-8" ?>

   <root>

<Config IdConfig ="1" IdType ="212" />

<Config IdConfig ="50"IdType ="370" />

<Config IdConfig ="51"IdType ="372" />

<Config IdConfig ="2" IdType ="54" />

<Config IdConfig ="4" IdType ="12" />

<Config IdConfig ="6" IdType ="16" />

<Config IdConfig ="10" IdType ="18" />

<Config IdConfig ="13" IdType ="108"/>

<Config IdConfig ="14" IdType ="111"/>

<Config IdConfig ="16" IdType ="116"/>

<Config IdConfig ="7" IdType ="19" />

<Config IdConfig ="3" IdType ="11" />

<Config IdConfig ="5" IdType ="14" />

<Config IdConfig ="8" IdType ="33" />

<Config IdConfig ="9" IdType ="65" />

<Config IdConfig ="33" IdType ="0" />

<Config IdConfig ="25" IdType ="269"/>

<Config IdConfig ="48" IdType ="362"/>

<Config IdConfig ="49" IdType ="364"/>

<Config IdConfig ="43" IdType ="256"/>

</root>

 

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

 

После того как пользователя Вашего приложения удовлетворяют все ответы на поставленные вопросы можно перейти к функции формирования непосредственно перечня артикулов для этого комплекта.

 

 

  1. Для этих целей существует третья функция LoadComplect выполняемая только с вложенным XML документом.

          Формат вложенного XML документа аналогичен вложенному документу предыдущей функции.

http://www.gu.md/webformr.aspx?Function=LoadComplect&ObjectID=1

 

В ответе на этот запрос будут перечислены Артикулы, их ID и количества входящие в комплект, наименования этих артикулов.

 

<?xml  version='1.0' encoding='UTF-8'?>

<root>

<row IdModel="509" Articul="6-28072-38-0-7" CountM="1.0000" NameModel="Ручка Dirigent бел квадрат 38" />

<row IdModel="29" Articul="6-28742-22-0-1" CountM="1.0000" NameModel="Нижняя опора" />

<row IdModel="35" Articul="6-28744-00-0-1" CountM="1.0000" NameModel="Нижняя петля универсальная" />

<row IdModel="28" Articul="6-31636-06-0-1" CountM="1.0000" NameModel="Верхняя опора с осью" />

<row IdModel="16" Articul="6-32155-02-0-1" CountM="1.0000" NameModel="Удлинитель нижний стандартный" />

<row IdModel="390" Articul="6-34201-07-0-1" CountM="1.0000" NameModel="Удлинитель угловой 740 Euro-Jet" />

<row IdModel="392" Articul="6-34213-00-0-1" CountM="1.0000" NameModel="Привод 1130 Euro Jet" />

<row IdModel="386" Articul="6-34978-20-0-1" CountM="1.0000" NameModel="Ножничная петля 590, 13мм" />

<row IdModel="377" Articul="6-34995-06-0-1" CountM="1.0000" NameModel="Планка ножниц 590 Euro-Jet" />

<row IdModel="812" Articul="6-35217-00-0-1" CountM="1.0000" NameModel="угловая передача Euro-Jet" />

<row IdModel="514" Articul="9-13255-40-0-1" CountM="2.0000" NameModel="Винт М5х40" />

<row IdModel="912" Articul="9-34907-01-0-1" CountM="3.0000" NameModel="Ответка Veka 13 mm (+0,5)" />

<row IdModel="54" Articul="9-36531-00-R-1" CountM="1.0000" NameModel="Нижняя ответка правая" />

<row IdModel="48" Articul="K-16790-00-0-7" CountM="1.0000" NameModel="Накладки универсальные белые" />

 

Таким образом, после выполнения нескольких запросов будет сформирован перечень артикулов.

 

Пример реализации можно просмотреть на нашем сайте  http://www.gu.md/webformcompl.aspx   где выбор реализован из наборов выпадающих списков

 

Либо на скриншоте консольного приложения, где выбор реализован в виде «дерева» вопросов и вариантов ответов на них.

 

 

С вопросами можете обращаться на gumoldova@yandex.ru