CartLogic - afa/urm2-temp GitHub Wiki

базовое поведение корзины

Корзина

[этап 1 - один склад]

При вводе количества в колонке "К заказу" в результатах поиска, выбранное пользователем предложение помещаются в "корзину".

Поля строки корзины:

  • Тип ("Склад", "ДМС", "Запрос", см. ниже)
  • Код номенклатуры - не отображаем пользователю
  • Наименование
  • Производитель
  • ROHS
  • Цена
  • Количество
  • Склад (для складских)
  • Прогноз (для ДМС, при выводе таблицы объединить с колонкой Склад)
  • Минимальное количество предложения (для ДМС) - не отображаем пользователю
  • Максимальное количество предложения (для ДМС) - не отображаем пользователю
  • Доступное количество (для ДМС) - не отображаем пользователю
  • Кратность (для ДМС) - не отображаем пользователю
  • Примечание (Примечание для строки - тестовое поле ввода, заполняется пользователем)
  • Цена клиента (числовое поле ввода, заполняется пользователем, только для строк с типом "Запрос")
  • Требование к позиции TODO
  • Действие ("Заказ", "Запрос", "Резерв", "Бронь", заполняется пользователем, см. ниже)

Строки корзины имеют один из 3 типов: "Склад", "ДМС", "Запрос":

  • "Склад" - для складских строк, при вводе количества не превышающего доступное
  • "Запрос" - для складских строк, при вводе количества большего чем доступное
  • "ДМС" - для строк ДМС (для них не даем ввести количество превышающее доступное, выдаем ошибку)

Логика определения доступных значений поля "Действие", в зависимости от значения поля "Тип":

//Тип//Возможные значения поля//"Действие"//
//"Склад"//Заказ, Резерв, Бронь// //
//"ДМС"//Бронь// //
//"Запрос"// //Запрос//

Добавление в корзину:

При добавлении строки в корзину: если строка уже существует, заменить ее.

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

  • Код номенклатуры
  • Наименование
  • Производитель
  • ROHS
  • Склад
  • Прогноз (для ДМС)
  • Доступное количество предложения ДМС
  • Кратность (для ДМС)

Отображение корзины:

Отображаем корзину прямо под результатами поиска (с подзаголовком "Отобранные позиции").

При наличии строк в корзине, отображаем под ней кнопку "Оформить заказ", при ее нажатии, без перезагрузки страницы:

  1. выводим под корзиной блок оформления заказа (см. ниже)
  2. скрываем таблицу с результатами поиска
  3. запрещаем редактирование строк корзины (поля Действие, Примечание)

При новом поиске или закрытии блока создания заказа кнопкой "Отмена" возвращаем все назад, в режим поиска.

2. Блок оформления заказа

2.1. Параметры заказа

Выводятся если в корзине есть хотя-бы одна позиция с действием отличным от "Запрос":

  • Примечание к заказу: текстовое многострочное поле (textarea)
  • Выставить счет: чекбокс
  • Вид оплаты заказа: н б/н TODO
  • Заказ для добавления: Подробнее TODO

2.2. Параметры бронирования

Выводятся если есть хотя-бы одна строка с действием "Бронь"

Список для выбора способов поставки клиентов (выбор варианта - радио-кнопкой)

Получение списка - через запрос get_dlv_mode, варианты в массиве customer_delivery_types, строку для вывода варианта способа поставки формировать из полей delivery_type + address.city

Тип упаковки: TODO

Дата готовности - поле ввода даты с календариком

2.3. Параметры запроса

Примечание к запросу: текстовое многострочное поле (textarea)

2.4. Кнопки

2.4.1. "Создать"

Логика обработки:

Если в корзине есть хотя-бы одна позиция с действием отличным от "Запрос", выполняется запрос make_order, параметры:

  • user_hash: Ключ пользователя
  • customer_delivery_type_id: Выбраный код способа поставки
  • date_dead_line: Дата готовности
  • comment: Примечание к заказу
  • main_invent_location: Основной склад пользователя - из запроса user_info.invent_location_id
  • sales_lines: Массив строк корзины с установленным действием "Заказ", "Резерв", "Бронь":
  • invc_brend_alias: Производитель
  • invent_location: Склад (для складских)
  • is_pick: Устанавливается в True если действие = Бронь
  • item_id: Код номенклатуры
  • item_name: Наименование
  • max_qty: Для ДМС - макс. кол-во
  • min_qty: Для ДМС - мин. кол-во
  • prognosis_id: Для ДМС - Прогноз
  • qty: Количество
  • qty_multiples: Для ДМС - Кратность
  • reserve_sale: Устанавливается в True если действие = Резерв
  • sales_price: Для ДМС - Цена

note: Примечание для строки - добавим когда добавим поле в запрос

При успешном выполнении выводим сообщение "Создан заказ [номер заказа]", очищаем использованные строки корзины.

Если в корзине есть хотя-бы одна позиция с действием "Запрос", выполняется запрос make_order, заполняются параметры:

При ошибке - выводим сообщении об ошибке.

  • user_hash: Ключ пользователя
  • comment: Примечание к запросу
  • sales_lines: Массив строк корзины с установленным действием "Запрос":
  • brend_alias: Производитель
  • item_id: Код номенклатуры
  • item_name: Наименование
  • note: Примечание для строки
  • qty: Количество
  • client_price: Цена клиента
  • max_qty: Для ДМС - макс. кол-во
  • min_qty: Для ДМС - мин. кол-во
  • prognosis_id: Для ДМС - Прогноз
  • qty_multiples: Для ДМС - Кратность При успешном выполнении выводим сообщение "Создан запрос [номер запроса]", очищаем использованные строки корзины. При ошибке - выводим сообщении об ошибке.

2.4.2. "Отмена"

Логика работы:

  1. скрываем и очищаем блок оформления заказа
  2. показываем таблицу с результатами поиска
  3. разрешаем редактирование строк корзины

правки

fixing notes

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