CartLogic - afa/urm2-temp GitHub Wiki
[этап 1 - один склад]
При вводе количества в колонке "К заказу" в результатах поиска, выбранное пользователем предложение помещаются в "корзину".
- Тип ("Склад", "ДМС", "Запрос", см. ниже)
- Код номенклатуры - не отображаем пользователю
- Наименование
- Производитель
- ROHS
- Цена
- Количество
- Склад (для складских)
- Прогноз (для ДМС, при выводе таблицы объединить с колонкой Склад)
- Минимальное количество предложения (для ДМС) - не отображаем пользователю
- Максимальное количество предложения (для ДМС) - не отображаем пользователю
- Доступное количество (для ДМС) - не отображаем пользователю
- Кратность (для ДМС) - не отображаем пользователю
- Примечание (Примечание для строки - тестовое поле ввода, заполняется пользователем)
- Цена клиента (числовое поле ввода, заполняется пользователем, только для строк с типом "Запрос")
- Требование к позиции TODO
- Действие ("Заказ", "Запрос", "Резерв", "Бронь", заполняется пользователем, см. ниже)
Строки корзины имеют один из 3 типов: "Склад", "ДМС", "Запрос":
- "Склад" - для складских строк, при вводе количества не превышающего доступное
- "Запрос" - для складских строк, при вводе количества большего чем доступное
- "ДМС" - для строк ДМС (для них не даем ввести количество превышающее доступное, выдаем ошибку)
Логика определения доступных значений поля "Действие", в зависимости от значения поля "Тип":
//Тип//Возможные значения поля//"Действие"//
//"Склад"//Заказ, Резерв, Бронь// //
//"ДМС"//Бронь// //
//"Запрос"// //Запрос//
Добавление в корзину:
При добавлении строки в корзину: если строка уже существует, заменить ее.
Проверку на существовании строк проводим по совпадению полей:
- Код номенклатуры
- Наименование
- Производитель
- ROHS
- Склад
- Прогноз (для ДМС)
- Доступное количество предложения ДМС
- Кратность (для ДМС)
Отображение корзины:
Отображаем корзину прямо под результатами поиска (с подзаголовком "Отобранные позиции").
При наличии строк в корзине, отображаем под ней кнопку "Оформить заказ", при ее нажатии, без перезагрузки страницы:
- выводим под корзиной блок оформления заказа (см. ниже)
- скрываем таблицу с результатами поиска
- запрещаем редактирование строк корзины (поля Действие, Примечание)
При новом поиске или закрытии блока создания заказа кнопкой "Отмена" возвращаем все назад, в режим поиска.
Выводятся если в корзине есть хотя-бы одна позиция с действием отличным от "Запрос":
- Примечание к заказу: текстовое многострочное поле (textarea)
- Выставить счет: чекбокс
- Вид оплаты заказа: н б/н TODO
- Заказ для добавления: Подробнее TODO
Выводятся если есть хотя-бы одна строка с действием "Бронь"
Список для выбора способов поставки клиентов (выбор варианта - радио-кнопкой)
Получение списка - через запрос get_dlv_mode, варианты в массиве customer_delivery_types, строку для вывода варианта способа поставки формировать из полей delivery_type + address.city
Тип упаковки: TODO
Дата готовности - поле ввода даты с календариком
Примечание к запросу: текстовое многострочное поле (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. "Отмена"
Логика работы:
- скрываем и очищаем блок оформления заказа
- показываем таблицу с результатами поиска
- разрешаем редактирование строк корзины