Формулировка проблемы: в функционале модуля «Проекты» необходимо добавить возможность привязать процент прогресса работ к срокам план-графика проекта.
Используется: Проекты - автоматический тип расчета сроков.
Решение: необходимо добавить возможность привязки процента прогресса выполнения мероприятия к срокам мероприятия/проекта в настройках проекта.
Новая настройка должна представлять собой флажок
Перерасчет прогресса при изменении сроков
(по
умолчанию выключен).
При включении флажка необходимо производить перерасчет по следующей формуле:
$$P_{new} = P_{old} * \frac{L_{old}}{L_{new}}$$
где
Pnew - новый процент прогресса при изменении сроков;
Pold - процент прогресса до изменения сроков;
Lnew - значение измененного срока (разница между датой завершения и датой начала в часах);
Lold - значение первоначального срока (разница между датой завершения и датой начала в часах).
Примечание 1:
При пересчете процента прогресса учитываются только рабочие часы.
При сохранении изменений мероприятия необходимо валидировать сроки его завершения. В случае, если новый процент прогресса будет больше, либо равен 100%, необходимо выдавать модальное окно с сообщением: «При сохранении установленных сроков произойдет автоматическое завершение мероприятия. Сохранить изменения?» с кнопками:
«ОК» - система закрывает окно редактирования мероприятия и завершает мероприятие;
«Отмена» - система возвращает пользователя к окну редактирования мероприятия.
При превышении перерассчитанного процента прогресса 100%
сохранять значение прогресса как 100 %
.
Примечание 2:
При выборе ручного типа расчета сроков флажок
Перерасчет прогресса при изменении сроков
выключается и становится неактивным.
Действия при обновлении системы
При обновлении системы в настройках всех существующих проектов для
опции Перерасчет прогресса при изменении сроков
должно установиться значение по умолчанию: флажок должен быть
выключен. Других видимых изменений произойти не должно.