ТЗ: Модуль Рекламации
Связанные документы:
1. Назначение
Модуль Рекламации предназначен для ведения клиентских рекламаций Manager 2.0.
В новом формате раздел должен сохранить текущую рабочую логику рекламаций и получить структуру:
Рекламации
├── Все
└── ДКР
Рекламации имеют два типа:
ДКР — рекламации по программе ДКР;
Прочее — остальные рекламации.
2. Статус
Статус модуля: частично реализован.
В текущей CRM уже есть:
- список рекламаций;
- карточка рекламации;
- маршрут списка:
reclamations.index;
- маршрут карточки:
reclamations.show;
- контроллер:
ReclamationController;
- модель:
Reclamation;
- связь с площадкой/заказом;
- документы и фото до/после;
- генерация пакетов документов;
- связь с запчастями и резервами;
- создание записи в графике монтажей из рекламации.
На первом этапе сохраняется текущая бизнес-логика рекламаций и добавляется явное разделение интерфейса на вкладки Все / ДКР.
3. Место в меню
Целевое меню:
Рекламации
├── Все
└── ДКР
Требования:
- добавить верхний пункт меню
Рекламации;
- внутри раздела реализовать отдельные вкладки
Все и ДКР;
- текущий маршрут
reclamations.index оставить без переименования;
- текущий маршрут
reclamations.show оставить без переименования;
- вкладку
ДКР реализовать на текущем списке с обязательным фильтром по типу рекламации ДКР;
- реорганизация меню выполняется в общем этапе Manager 2.0.
4. Права доступа
На первом этапе оставляем текущие права.
| Действие |
Permission |
| Просмотр рекламаций |
reclamations.view |
| Создание/редактирование |
Использовать текущие права рекламаций |
| Экспорт |
Использовать текущие права рекламаций |
Требования:
- не вводить новую систему прав на первом этапе;
- пользователи с текущим доступом к рекламациям должны сохранить доступ;
- верхний пункт
Рекламации показывать, если доступен хотя бы один дочерний пункт.
5. Справочник типов рекламаций
Тип рекламации должен храниться не строковым полем, а ссылкой на отдельный системный справочник.
5.1. Таблица типов
Создать таблицу reclamation_types со следующими полями:
| Поле |
Тип |
Требование |
id |
bigint |
Первичный ключ. |
code |
string |
Уникальный стабильный код типа. |
name |
string |
Отображаемое название типа. |
created_at, updated_at |
timestamps |
Служебные даты. |
Начальные записи справочника:
code |
name |
dkr |
ДКР |
other |
Прочее |
Требования:
- создать модель
ReclamationType;
- определить в модели константы кодов
CODE_DKR = 'dkr' и CODE_OTHER = 'other';
- создать сидер
ReclamationTypeSeeder;
- сидер должен идемпотентно создавать или обновлять типы по полю
code;
- зарегистрировать
ReclamationTypeSeeder в общем процессе заполнения БД;
- системные коды
dkr и other использовать в бизнес-логике вместо сравнения отображаемых названий;
- на текущем этапе отдельный интерфейс управления справочником не требуется;
- удаление используемого типа рекламации должно быть запрещено внешним ключом (
restrictOnDelete).
5.2. Связь с рекламацией
В таблицу reclamations добавить обязательное поле reclamation_type_id:
- внешний ключ на
reclamation_types.id;
- индекс для фильтрации списков;
- связь
Reclamation::reclamationType();
- обратная связь
ReclamationType::reclamations();
- существующим рекламациям при переносе данных назначить тип с кодом
dkr;
- после заполнения существующих записей поле не должно допускать
null.
Тип назначается сервером по сценарию создания:
- рекламация, созданная из площадки ДКР, получает тип
dkr;
- рекламация, созданная не из площадки, включая график заказов, получает тип
other;
- клиентская форма не должна позволять подменить автоматически определенный тип;
- если в будущем потребуется ручной выбор типа, это оформляется отдельным изменением требований и прав доступа.
6. Подраздел Все
Назначение:
- общий список всех рекламаций независимо от типа.
Функционал:
- текущий список рекламаций;
- поиск и фильтры;
- экспорт;
- переход в карточку;
- отображение статусов;
- отображение рекламаций по ДКР и прочих рекламаций;
- вкладка содержит все рекламации независимо от типа;
- наличие рекламации во вкладке
Все не дает права формировать платежные документы, если тип не ДКР.
Текущая основа:
7. Подраздел ДКР
Назначение:
- список рекламаций типа
ДКР;
- работа с рекламациями, созданными по площадкам ДКР.
Функционал:
- отображение только рекламаций типа
ДКР;
- отдельная вкладка интерфейса на основе текущего списка с обязательным фильтром по типу рекламации;
- создание рекламации с привязкой к площадке ДКР;
- сохранение текущей карточки рекламации;
- связь с графиком монтажей;
- формирование запросов на запчасти;
- формирование документации для оплаты только по рекламациям типа
ДКР.
Принятое решение:
- отдельный URL для списка
ДКР не обязателен;
- в интерфейсе обязательно отдельное разделение на вкладки
Все и ДКР;
- вкладка
ДКР использует текущий список с обязательным фильтром по reclamation_type_id типа с кодом dkr;
- тип рекламации определяется через справочник
reclamation_types;
- при создании рекламации из площадки назначается тип
dkr (ДКР);
- при создании рекламации не из площадки, включая создание из графика заказов, назначается тип
other (Прочее);
- рекламации типа
Прочее не выводятся во вкладке ДКР;
- формирование документации для оплаты разрешено только для рекламаций типа
ДКР.
8. Карточка рекламации
Карточка должна сохранить текущий функционал:
- основные поля рекламации;
- связь с площадкой/заказом;
- данные по МАФ/позициям;
- документы;
- фото до и после;
- акты;
- чат, если используется в текущей реализации;
- блок запчастей;
- активные резервы и дефициты;
- действия по резервам;
- генерация документов;
- перенос в график монтажей.
Изменения на первом этапе:
- не менять структуру карточки;
- отображать тип рекламации из справочника
ДКР / Прочее;
- для типа
Прочее скрыть и запретить серверной проверкой формирование документации для оплаты;
- для типа
ДКР сохранить текущую возможность формирования документации для оплаты;
- сохранить текущие маршруты и формы.
9. Создание из графика заказов
Сценарий:
- Пользователь открывает заказ в
График заказов.
- Пользователь выбирает один или несколько МАФ заказа.
- Пользователь нажимает
Добавить рекламацию.
- Открывается текущая форма создания рекламации.
- В форму передаются заказ и выбранные МАФ.
- Пользователь заполняет форму по текущему процессу и сохраняет рекламацию.
Требования:
- использовать существующую форму создания рекламации;
- поддержать выбор одного или нескольких МАФ;
- привязать созданную рекламацию к заказу и выбранным МАФ;
- назначить созданной рекламации тип
other (Прочее);
- созданная рекламация отображается во вкладке
Все;
- созданная рекламация не отображается во вкладке
ДКР;
- для нее недоступно формирование документации для оплаты;
- остальные функции карточки рекламации работают по текущим правилам.
10. Связи
| Модуль |
Связь |
Требование |
| ДКР / Площадки |
Используется при создании рекламации типа ДКР |
Сохранить текущую связь. |
| Каталог общий |
Данные по позициям |
Использовать общий каталог как источник номенклатуры. |
| График заказов |
Из заказа создается рекламация по одному или нескольким МАФ |
Открывать текущую форму создания с предзаполненным заказом и выбранными МАФ; назначать тип other (Прочее). |
| График монтажей |
Рекламация может попасть в монтажный график |
Сохранить текущую связь. |
| Запчасти |
Из рекламации формируется запрос на запчасть |
Сохранить текущую связь и резервы. |
11. Что не входит в первый этап
- изменение текущих маршрутов
reclamations.*;
- переработка модели
Reclamation сверх добавления типа рекламации и связей с заказом/выбранными МАФ;
- изменение логики резервов запчастей;
- изменение состава и шаблонов документации для оплаты;
- разработка графика заказов;
- внедрение новых прав доступа.
12. Этапы реализации
13. Критерии приемки
- В меню есть группа
Рекламации.
- Внутри есть отдельные вкладки
Все и ДКР.
Все открывает текущий общий список рекламаций.
- Текущие маршруты рекламаций сохранены.
- Пользователи с прежним доступом сохраняют доступ.
- Рекламации типа
ДКР связаны с площадками ДКР.
- Типы рекламаций хранятся в отдельной таблице
reclamation_types.
- Сидер создает типы
dkr (ДКР) и other (Прочее) без дублирования при повторном запуске.
- Каждая рекламация имеет обязательную ссылку
reclamation_type_id на справочник типов.
- Существующие рекламации после миграции имеют тип
ДКР.
- При создании рекламации из площадки автоматически назначается тип
dkr (ДКР).
- При создании рекламации не из площадки назначается тип
other (Прочее).
- Вкладка
ДКР открывает текущий список с обязательным фильтром по типу dkr.
- Рекламации из графика заказов не попадают во вкладку
ДКР.
- Из графика заказов можно выбрать один или несколько МАФ и открыть текущую форму создания рекламации.
- Созданная из графика заказов рекламация привязана к заказу и выбранным МАФ.
- Документация для оплаты формируется только для рекламаций типа
ДКР.
- Для рекламаций типа
Прочее действие формирования платежных документов отсутствует и блокируется на сервере.
- Из рекламации по-прежнему можно работать с запчастями.
- Перенос рекламации в график монтажей работает как раньше.