dkr-zip.md 15 KB

Цель: Создать веб-модуль для управления каталогом запчастей, учёта их наличия на складе, обработки заказов на пополнение и автоматического списания при использовании в рекламациях.

  1. Общее описание системы

В системе три роли пользователей:

Администратор: Полный доступ ко всем функциям (добавление, редактирование, удаление, импорт/экспорт).

Менеджер: Только просмотр каталога и списка заказов. Не видит цену закупки.

Бригадир: Полностью не имеет доступа к данному модулю (не видит ни каталог, ни заказы).

Основные сущности: Каталог запчастей, Заказы деталей, Контроль наличия.

Данные тесно связаны: остатки в каталоге автоматически считаются из заказов, а списание происходит при добавлении детали в рекламации.

Важное правило: Экспорт и импорт данных (каталога, заказов) должны сохранять и восстанавливать все связанные данные, включая связи (например, между артикулом и его картинкой, кодами и их расшифровками), чтобы обеспечить целостность системы после переноса данных.

  1. Модуль 1: Каталог запчастей

Назначение: Единый справочник всех запчастей.

Структура записи (столбцы таблицы):

Картинка: Автоподгрузка с сервера по артикулу или ручная загрузка.

Артикул детали: Уникальный идентификатор. Заполняется через форму или импорт.

Где используется (Артикул МАФ): Связь с основной номенклатурой. Может быть пустым.

Кол-во Общее: Вычисляемое поле = Кол-во без документов + Кол-во с документами. Кликабельно. При клике открывает вкладку "Заказы деталей" с фильтром по этому артикулу и статусом "На складе".

Кол-во без документов: Вычисляемое поле. Сумма остатков (Остаток > 0) из вкладки "Заказы деталей" для этого артикула, где С документами = "НЕТ" и Статус = "На складе". Кликабельно. При клике открывает "Заказы деталей" с фильтром: артикул, Остаток > 0, С документами = "НЕТ", Статус = "На складе".

Кол-во с документами: Вычисляемое поле. Сумма остатков (Остаток > 0) из вкладки "Заказы деталей" для этого артикула, где С документами = "ДА" и Статус = "На складе". Кликабельно. При клике открывает "Заказы деталей" с фильтром: артикул, Остаток > 0, С документами = "ДА", Статус = "На складе".

Примечание: Руководящее поле.

Цена закупки: Только для Администратора. Скрыта для других ролей.

Цена для заказчика: Руководящее/импортируемое поле.

Цена экспертизы: Руководящее/импортируемое поле.

№ по ТСН: Руководящее/импортируемое поле.

Шифр расценки и коды ресурсов: Может содержать несколько кодов (например, "11.2457.24/14"). Руководящее/импортируемое поле.

Функционал:

Редактирование: При клике на строку открывается форма редактирования, где можно менять только поля: Примечание, Где используется, Цена закупки, Цена для заказчика, Цена экспертизы, № по ТСН, Шифр расценки.

Импорт/Экспорт: Аналогично существующему модулю "Каталог МАФ" (ДКР). Ключевое требование: При импорте данных (например, из файла предыдущего экспорта) система должна корректно обрабатывать и сохранять все связанные данные (ссылки на картинки, связи артикулов, записи в справочнике расшифровок кодов). При экспорте — выгружать данные в формате, пригодном для последующего целостного импорта.

Расшифровка кодов (для полей 11 и 12):

Создать отдельный справочник "Расшифровка расценок" с полями: КОД, Расшифровка.

Реализовать подсказку (tooltip) при наведении курсора на код в каталоге, отображающую его расшифровку из справочника.

Связь с импортом/экспортом: При импорте каталога, если в файле встречаются новые коды, отсутствующие в справочнике, система должна предлагать пользователю (Администратору) добавить их расшифровку или создать записи с пустым полем "Расшифровка".

  1. Модуль 2: Список заказов деталей

Назначение: Учёт партий запчастей, поступивших на склад или ожидаемых.

Структура записи:

Картинка: Берётся из Каталога по артикулу.

Артикул детали: Ссылка на запись в Каталоге.

Источник заказа (площадка/рекламация):

Цель: Указать, для какого объекта или случая сделан заказ. Связь с сущностями "Площадки" и "Рекламации" НЕОБЯЗАТЕЛЬНА.

Реализация: Поле ввода с возможностью:

Свободного ввода текста (например, "Складской запас", "Договор №XXX").

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

Поиска и выбора существующей Рекламации из системы (через выпадающий список с автодополнением).

В таблице отображается текстовое представление выбранного объекта (название площадки, номер рекламации) или введённый вручную текст.

Статус: Выбор из трёх значений: Заказано, На складе, Отгружено.

Логика статусов: При создании - Заказано. При ручном изменении на На складе - детали учитываются в остатках каталога. Когда Остаток становится 0 - статус автоматически меняется на Отгружено.

Заказано: Исходное количество в заказе.

Остаток: Текущее количество, оставшееся в этом заказе (уменьшается при списании в рекламации).

С документами: Чекбокс "ДА"/"НЕТ".

Примечание: Руководящее поле.

Детальная карточка заказа:

Открывается по клику на строку. Позволяет редактировать все поля.

История списаний: Блок, отображающий, сколько, когда и куда (примечание из окна списания, например, "Рекламация №ХХХ") было отгружено деталей из этого заказа.

Кнопка "Отгрузить":

При нажатии открывает модальное окно с полями: Количество (для списания) и Примечание (куда/для чего забирается, например, номер рекламации).

После подтверждения:

Значение Остаток в заказе уменьшается на указанное количество.

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

  1. Интеграция с рекламациями (модификация существующего функционала)

Добавление детали в рекламацию:

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

Добавить чекбокс "С документами" рядом с полем выбора детали.

Логика списания при сохранении рекламации:

Система получает артикул детали, необходимое количество и признак "С документами".

Поиск заказа для списания: В модуле "Заказы деталей" ищется заказ с данным артикулом, где С документами соответствует запрошенному признаку, Статус = "На складе" и Остаток > 0. Списание происходит из найденного заказа (уменьшается Остаток).

Важно: В историю списаний этого заказа автоматически добавляется запись: "Автоматическое списание для рекламации: [НОМЕР_ТЕКУЩЕЙ_РЕКЛАМАЦИИ]".

Если подходящего заказа не найдено:

В Каталоге в соответствующей колонке (Кол-во с документами или Кол-во без документов) значение становится отрицательным (например, -1 или -запрашиваемое_количество).

Данная позиция автоматически попадает во вкладку "Контроль наличия".

  1. Модуль 3: Контроль наличия

Назначение: Панель мониторинга проблем с наличием.

Данные формируются автоматически, редактирование записей недоступно.

Источники данных и логика формирования:

Правило 1 (Критический недостаток): Вывести все детали, у которых в Каталоге значение в колонках Кол-во без документов ИЛИ Кол-во с документами меньше 0. Выделить строку красным. В столбце "Примечание" системы написать: "Отсутствие детали".

Правило 2 (Минимальный остаток):

В Каталоге добавить скрытое (или отображаемое) поле "Минимальный остаток" для каждой детали (по умолчанию 0).

Если в Каталоге Кол-во Общее (или одна из детализированных колонок, в зависимости от политики) станет меньше значения "Минимальный остаток" - вывести деталь в этот модуль. Выделить строку желтым. В примечании: "Достигнут лимит минимального остатка (X шт)", где X - значение минимального остатка.

Колонки: Картинка, Артикул, Кол-во для заказа (сколько не хватает, т.е. модуль отрицательного значения из Каталога), Примечание (системное).

Логика снятия уведомления: Уведомление из этого модуля автоматически снимается, когда условие, вызвавшее его, перестаёт выполняться. Например:

Для "отсутствия" (-N) — когда появляется заказ с этой деталью и статусом На складе или Заказано, который может покрыть недостачу (остаток в заказе >= недостающему количеству). После этого отрицательное значение в каталоге обнуляется или становится положительным.

Для "минимального остатка" — когда Кол-во Общее становится >= значению "Минимальный остаток".

  1. Требования к интерфейсу

Вкладки: "Каталог запчастей", "Заказы деталей", "Контроль наличия".

Таблицы с сортировкой, фильтрацией и кликабельными ячейками, как указано выше.

Единый стиль с существующей платформой (логика работы кнопок, модальных окон, импорта/экспорта).