9.5 KiB
form4-programs-projects Specification
Purpose
Программы и проекты на листах AHR/CAP/OPER формы 4 (FORM_4, «Проектная деятельность»): как они создаются, переименовываются и удаляются, где стоят в листе, как участвуют в итогах и выгрузке, как подписаны и как к проекту добавляется расход.
Requirements
Requirement: Проект создаётся в программе или прямо в разделе
Пользователь с правом добавлять строки в раздел листа SHALL иметь возможность создать проект как внутри программы этого раздела, так и прямо в разделе, без программы. Название SHALL быть непустым после обрезки пробелов. Права SHALL проверяться так же, как при создании программы в этом разделе.
Scenario: Проект в разделе
- WHEN на листе CAP выделена строка раздела (или ничего не выделено) и пользователь создаёт проект «П1»
- THEN «П1» появляется в разделе CAP без программы у всех подключённых к листу пользователей без перезагрузки
- AND после перезагрузки страницы «П1» стоит на том же месте
Scenario: Проект в программе — как раньше
- WHEN выделена программа «Пр» и пользователь создаёт проект
- THEN проект создаётся внутри «Пр»
Scenario: Выделен проект или расход
- WHEN выделен проект или строка расхода и пользователь создаёт проект
- THEN новый проект создаётся там же, где выделенный проект: в той же программе или прямо в разделе
Scenario: Пустое название
- WHEN пользователь вводит название из одних пробелов
- THEN проект не создаётся
Requirement: Место самостоятельного проекта в листе
Самостоятельный проект SHALL выводиться строкой ITEM непосредственно под ROOT своего раздела, без строки GROUP над ним; его расходы — строками INPUT под ним. На уровне под ROOT программы и самостоятельные проекты SHALL идти в порядке создания (по id записи form4_project). Проекты внутри программы и их расходы SHALL выводиться как раньше.
Scenario: Вперемешку в порядке создания
- WHEN в разделе последовательно созданы программа «А», самостоятельный проект «Б», программа «В»
- THEN под ROOT раздела строки идут в порядке «А» (GROUP), «Б» (ITEM), «В» (GROUP)
Scenario: Пустой раздел
- WHEN в разделе нет ни одного расхода, но есть самостоятельный проект
- THEN проект виден в листе так же, как видна пустая программа
Requirement: Суммы самостоятельного проекта
Суммы расходов самостоятельного проекта SHALL входить в строку ITEM проекта и в ROOT раздела ровно один раз. Лист SHALL NOT содержать строку GROUP без программы (program_id пустой). Ответ на правку ячейки расхода самостоятельного проекта SHALL содержать строку расхода, ITEM проекта и ROOT раздела.
Scenario: Итог раздела
- WHEN в разделе есть программа с расходом 100 и самостоятельный проект с расходом 50 в
plan.q1 - THEN ROOT раздела показывает 150 в
plan.q1, ITEM самостоятельного проекта — 50
Scenario: Правка расхода
- WHEN пользователь меняет
plan.q1у расхода самостоятельного проекта - THEN ответ содержит этот расход, ITEM проекта и ROOT раздела с пересчитанными суммами и не содержит GROUP
Requirement: Расходы самостоятельного проекта
К самостоятельному проекту SHALL можно добавлять и удалять расходы так же, как к проекту в программе.
Scenario: Добавление расхода
- WHEN выделен самостоятельный проект и пользователь добавляет расход по статье
- THEN расход появляется под этим проектом, суммы проекта и раздела пересчитываются
Requirement: Переименование программы и проекта
Пользователь с правом изменения SHALL иметь возможность переименовать выделенную программу или проект (в программе и самостоятельный). Окно переименования SHALL открываться с текущим названием. Пустое название и название из одних пробелов SHALL NOT сохраняться. При ошибке сервера окно SHALL оставаться открытым с введённым текстом и показывать понятное сообщение. Отмена SHALL оставлять прежнее название. Переименование SHALL NOT менять состав проектов, расходов и суммы.
Scenario: Успешное переименование
- WHEN пользователь переименовывает программу «А» в «А2»
- THEN у всех подключённых пользователей строка показывает «А2», после перезагрузки тоже
Scenario: Ошибка
- WHEN сервер отказывает в переименовании (например, нет прав)
- THEN окно остаётся открытым с введённым названием и показывает причину
Requirement: Удаление самостоятельного проекта
Пустой самостоятельный проект SHALL удаляться с подтверждением, как проект в программе (AURORA-1978). Проект с расходами SHALL NOT удаляться, пользователь видит причину.
Scenario: Удаление пустого
- WHEN пользователь удаляет пустой самостоятельный проект и подтверждает
- THEN проект исчезает из листа у всех подключённых, ROOT раздела пересчитывается
Requirement: Подпись типа в третьем столбце
В третьем столбце листов AHR/CAP/OPER формы 4 строка программы SHALL быть подписана «программа», строка проекта (в программе и самостоятельного) — «проект». Строки ROOT и расходов SHALL показывать код, как раньше. Подпись SHALL совпадать на экране и в выгрузке Excel.
Scenario: Подписи
- WHEN открыт лист CAP с программой, проектом в ней и самостоятельным проектом
- THEN напротив программы «программа», напротив обоих проектов «проект», у расходов — код статьи
Requirement: Выбор расхода для проекта
Окно выбора расхода SHALL показывать варианты в виде «<номер статьи> — <название>», упорядоченные по номеру статьи с учётом числовых частей (например, 2 раньше 10). Поиск SHALL находить вариант по номеру и по названию. Выбор SHALL добавлять расход именно по выбранной статье.
Scenario: Сортировка
- WHEN среди статей есть номера «3.2.» и «3.10.»
- THEN «3.2.» стоит выше «3.10.»
Scenario: Поиск по номеру
- WHEN пользователь вводит «3.01»
- THEN в списке остаются статьи, номер которых содержит «3.01»