Tz - afa/urm2-temp GitHub Wiki

Логика работы поиска (по мотивам УРМ-1)

1. Элементы управления

  1. Окно поискового запроса
  2. Переключатель "только в наличии" (вкл./выкл.), по умолчанию выкл., значение запоминать в сессии
  3. Переключатель "только склад" (вкл./выкл.), по умолчанию выкл., значение запоминать в сессии
  4. Переключатель "по наименованию" - "по артикулу" TODO
  5. Выпадающий список "Склад", Значения:

2. Логика работы (вариант А)

Выполняется запрос "Поиск по складу" search_item_name_h, параметры:

user_hash - ключ активной учетной записи

invent_location_id - значение если выбранное в 1.5 "Склад", если выбран один из складов

флаги calc_qty, calc_price - включены

флаги show_forecast_availability, show_analog_existence - включены

query_string - поисковая строка из 1.1 + '*' в конце

Если не установлен признак 1.3. "только склад" - выполнить запрос "Поиск ДМС" search_item_name_dms_h, параметры:

user_hash - ключ активной учетной записи

query_string - поисковая строка из 1.1 + '*' в конце

3. Вывод результатов

Cтроки для каждой позиции+склада, сортировка - в том-же порядке как в ответе сервера (по позициям, далее по складам).

Уникальный ключ для строки - Наименование+Производитель+ROHS+Склад.

Для основных строк (Склад)

Блок иконок (сами иконки пока выводятся только для первого склада items[n].locations[1]): Показать/скрыть аналоги, Показать/скрыть ДМС

Для основных строк и подстрок блока "Аналоги"

"Наименование" item[n].item_name, для первого склада - ссылка, при нажатии под строкой раскрывается блок "Информация", см. ниже

"Произв." item[n].item_brend, для первого склада: при наведении - всплывающая подсказка с полным наименованием item[n].item_brend_name, если не пустой item[n].item_brend_url - ссылка, при нажатии - переход по ссылке.

при пустой item[n].item_brend_url -- для подсказки пользоваться abbr

"ROHS" item[n].rohs

"Корпус" item[n].package_name

Для всех строк и подстрок (блоков "Аналоги" и "ДМС")

"К заказу" - поле ввода количества

"Доступно":"Мин." item[n].min_qty, для ДМС - мин. кол-во 1 колонки

"Доступно":"Макс." item[n].locations[m].vend_qty, для ДМС - макс. кол-во последней колонки

"Склад" - склад из item[n].locations[m].location_id и иконка "Прогноз поставки" (см. ниже), для ДМС - прогноз

"Цена1" item[n].locations[m].price_qty[1].price, для ДМС - цена 1 колонки

"К2" item[n].locations[m].price_qty[2].min_qty, для ДМС - мин. кол-во 2 колонки

"Ц2" item[n].locations[m].price_qty[2].price, для ДМС - цена 2 колонки

"К3" item[n].locations[m].price_qty[3].min_qty, для ДМС - мин. кол-во 3 колонки

"Ц3" item[n].locations[m].price_qty[3].price, для ДМС - цена 3 колонки

"К4" item[n].locations[m].price_qty[4].min_qty, для ДМС - мин. кол-во 4 колонки

"Ц4" item[n].locations[m].price_qty[4].price, для ДМС - цена 4 колонки

"Упак." item[n].qty_in_pack, для ДМС - пусто

Порядок вывода дополнительных блоков:

  1. Информация
  2. ДМС
  3. Аналоги

Логика работы иконок и выпадающих блоков ДМС и Аналоги

ДМС:

если производился запрос ДМС (п. 2.2. Если не установлен признак 1.3. "только склад"):

если для строки ДМС позиции есть - блок ДМС изначально открыт, иконка активна, нажатие скрывает/открывает блок

если позиций нет - блок ДМС скрыт, иконка неактивна, нажатия не обрабатываются

если ДМС-запрос не производился, иконка активна, при первом нажатии - производится запрос и блок открывается (если найдено - выводятся строки, если нет - "ДМС позиций на найдено"), повторные нажатия скрывают/открывают блок

Аналоги:

если установлен признак "Доступны аналоги" item[n].analog_exists - иконка активна, при нажатии производится запрос и выводится блок "Аналоги"

если признак "Доступны аналоги" не установлен - иконка неактивна, нажатия не обрабатываются

Иконка "Прогноз поставки" в столбце "Склад":

Если признак "Доступен прогноз поставки" (items[n].locations[m].forecast_available) не установлен - иконка неактивна, нажатия не обрабатываются

Если признак "Доступен прогноз поставки" установлен - иконка активна, при нажатии открывается блок "Информация по позиции" пока вот такая иконка:

Блок "Информация по позиции":

Состоит из 3 колонок в которых выводятся данные по трем запросам (выполняются при первом открытии блока):

"Информация по позиции" - Запрос "Информация по позиции" item_info:

Выводить поля:

Брутто-объём в кубических мм: volume, integer

Вес брутто, г: weight, real/integer

Вид упаковки: packing_type string/enum (рус.)

Регистрационная позиция: requlations (boolean)

Снято с производства: discontinued (boolean)

Упаковочное количество: qty_in_pack

"Цена конечного потребителя" - запрос retail_price, если запрос вернул непустой массив, выводятся результаты в виде таблицы в 1 строку, колонки "Цена1", "К2", "Ц2", "К3", "Ц3", "К4", "Ц4", если пустой - ничего не выводим.

Если для склада установлен признак признак "Доступен прогноз поставки" (items[n].locations[m].forecast_available) - выполняется запрос "Прогноз поставки" delivery_prognosis, результаты выводятся в виде таблички с колонками "Дата", "Количество"

⚠️ **GitHub.com Fallback** ⚠️