ТЗ: Модуль Склад наличие
Связанные документы:
1. Назначение
Склад наличие — новый модуль для учета МАФ/позиций, которые есть на складе или заказаны.
Модуль должен быть реализован полностью по образцу раздела Запчасти, с адаптацией под МАФ/позиции из Каталог общий.
2. Статус
Статус модуля: нужно реализовать.
На первом этапе в меню добавляются заглушки:
Полная реализация выполняется после согласования модели данных и переноса паттернов из Запчасти.
3. Место в меню
Целевое меню:
Склад наличие
├── Наличие
└── Заказы
Требования:
- добавить верхний пункт
Склад наличие;
- добавить пункты
Наличие и Заказы;
- для первого этапа добавить страницы
В разработке;
- выбранный год в CRM не влияет на отображение и данные модуля;
- техническое имя маршрутов, таблиц и прав модуля:
stock.
4. Права доступа
Требования из исходного ТЗ:
| Подраздел |
Доступ |
| Наличие |
Видно всем пользователям |
| Заказы |
Видит только админ и помощник руководителя (assistant_head) |
На первом этапе:
- текущую систему прав не перерабатывать;
- заглушки
Наличие и Заказы показывать всем авторизованным пользователям;
- при реализации добавить/назначить права согласно таблице выше.
- роль
помощник руководителя в системе соответствует assistant_head.
5. Подраздел Наличие
Назначение:
- отображать список МАФ/позиций, у которых есть наличие на складе.
Правило вывода:
- показывать МАФ, у которых есть хотя бы одна запись в подвкладке
Заказы;
- в итоговом списке основное внимание на позициях с остатком на складе больше 0.
Колонки:
| Колонка |
Источник |
| Картинка |
Каталог общий |
| Артикул |
Каталог общий |
| Наименование |
Каталог общий |
| Характеристики |
Каталог общий |
| Ед. измерения |
Каталог общий |
| Кол-во в наличии |
Подвкладка Заказы |
| Забронировано |
Функция бронирования |
| Остаток фактический |
Кол-во в наличии минус забронировано и списано |
| Заказано |
Сумма позиций со статусом заказан |
| Примечание |
Добавление или импорт |
Функционал:
- список наличия;
- поиск и фильтры;
- переход в карточку позиции по двойному клику;
- экспорт в PDF всех позиций в наличии;
- отображение фактического остатка;
- отображение количества в бронях;
- отображение заказанного количества.
6. Карточка позиции
Карточка открывается из Наличие двойным кликом.
Нередактируемые поля:
- картинка;
- артикул;
- наименование;
- характеристики;
- единица измерения;
- количество в наличии;
- забронировано;
- остаток фактический;
- заказано;
- примечание.
Функционал карточки:
- отображение остатков внизу карточки аналогично
Запчастям;
- список активных броней;
- история бронирований и списаний;
- кнопка
Забронировать;
- действие
Списать;
- действие
Отменить бронь.
7. Бронирование
Кнопка Забронировать открывает модальное окно.
Поля:
- менеджер из выпадающего списка;
- количество;
- примечание.
Правила:
- нельзя забронировать больше доступного остатка;
- при попытке превышения показывать ошибку
Такого кол-ва нет в наличии;
- после бронирования запись появляется в списке
Забронировано.
Список Забронировано:
- менеджер;
- количество;
- номер заказа или заказов;
- примечание;
- действие
Списать;
- действие
Отменить бронь.
8. Списание
Списание выполняется по активной брони.
Правила:
- количество списывается с соответствующих заказов;
- сохраняется история, куда ушла позиция;
- сохраняется история, из какого заказа списана позиция;
- фиксируется пользователь и время операции;
- после списания фактический остаток пересчитывается.
9. Отмена брони
Правила:
- отмена возвращает количество в доступный остаток;
- история отмены сохраняется;
- отмененная бронь не участвует в расчете активного забронированного количества.
10. Подраздел Заказы
Назначение:
- ручное добавление складских заказов;
- импорт складских заказов;
- источник данных для расчета наличия.
Поля заказа:
| Поле |
Описание |
| Номер заказа |
Вводится вручную |
| Артикул |
Артикул позиции из общего каталога |
| Статус заказа |
на складе / заказан / отгружено |
| Кол-во заказано |
Вводится вручную |
| Остаток |
Фактический остаток с учетом бронирований и списаний |
| Примечание |
Ручной ввод или импорт |
| Дата добавления |
Заполняется автоматически |
Функционал:
- список заказов;
- создание заказа;
- редактирование заказа;
- импорт;
- изменение статуса;
- связь с позицией общего каталога;
- расчет остатка по заказу;
- отображение активных броней.
11. Экспорт
Требования:
- в
Наличие должна быть кнопка Экспорт;
- экспорт выполняется в PDF;
- экспортируются все позиции в наличии;
- PDF формируется по отдельному шаблону;
- шаблон PDF нужно подготовить отдельно.
12. Связи
| Модуль |
Связь |
Требование |
| Каталог общий |
Источник картинки, артикула, наименования, характеристик, ед. изм. |
Обязательная связь. |
| График отгрузок / График заказов |
Данные об отгрузках |
Уточнить после реализации графиков. |
| Запчасти |
Эталон логики |
Использовать паттерны реализации. |
13. Модель данных
Проектируется по образцу Запчасти.
Предварительные сущности:
- складская позиция наличия;
- складской заказ;
- бронь складской позиции;
- история движений;
- импорт складских заказов;
- PDF-экспорт.
Открыто:
- точные имена таблиц и моделей;
- использовать ли отдельную сущность наличия или рассчитывать ее из заказов;
- как связать заказ склада с позицией общего каталога: по
product_id, артикулу или обоим полям.
14. Что не входит в первый этап
- полная реализация склада;
- проектирование финальной БД;
- PDF-шаблон;
- интеграция с графиком отгрузок;
- новые постоянные permissions.
Первый этап:
- добавить меню;
- добавить заглушки, доступные всем авторизованным пользователям;
- подготовить ТЗ;
- использовать
Запчасти как эталон.
15. Этапы реализации
16. Критерии приемки
- В меню есть
Склад наличие.
- Есть подвкладки
Наличие и Заказы.
Наличие доступно всем пользователям.
Заказы доступны админу и помощнику руководителя.
помощник руководителя соответствует роли assistant_head.
- Позиции берут справочные данные из
Каталог общий.
- Нельзя забронировать больше доступного остатка.
- Списание уменьшает остаток соответствующего заказа.
- Отмена брони возвращает доступный остаток.
- История операций сохраняется.
- PDF-экспорт формируется по шаблону.
17. Открытые вопросы
- Какой точный PDF-шаблон нужен для экспорта?
- Как будет выглядеть связь с графиком отгрузок/заказов?