Задача [0068]: Настройка ограничения сроков проекта

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

Используется: Проекты:

Решение: в настройках проекта во вкладку «Настройки» между опциями Дата начала проекта и Тип расчета сроков необходимо добавить новую опцию Ограничить сроки проекта, которая представляет собой два компонента «Календарь» (каждый с флажком) для даты начала ограничения и для даты конца ограничения соответственно.

Рисунок 129. Новая опция "Ограничить сроки проекта" в настройках проекта

Новая опция "Ограничить сроки проекта" в настройках проекта

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

  1. Альтернативный поток №1. Дата начала ограничения должна быть меньше даты конца, иначе при сохранении настроек необходимо выдавать ошибку:

    Дата завершения проекта должна быть больше даты начала

    а также выделять соответствующие поля красным цветом и не закрывать диалог настроек.

  2. Альтернативный поток №2. После настройки ограничения сроков при сохранении настроек необходимо проверить сроки всех уже созданных мероприятий (как групповых, так и негрупповых) на предмет их соответствия заданному ограничению. Если в результате такой проверки имеются мероприятия с некорректными сроками, необходимо выдавать ошибку:

    Сроки некоторых мероприятий проекта выходят за граничные значения проекта. Количество мероприятий - N. Скорректируйте их сроки либо измените ограничения.

    где N - это число, обозначающее количество таких мероприятий. Кроме того, необходимо выделять соответствующие поля красным цветом и не закрывать диалог настроек.

  3. Альтернативный поток №3. При сохранении настроек с включенным флажком и незаполненными датами начала и/или конца ограничения соответствующий флажок должен выключиться (т.е. при следующем открытии диалога настроек он должен быть выключенным).

Примечание: опция Ограничить сроки проекта распространяется на все виды проектов в системе: личные / утвержденные / неутвержденные.

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

Во-первых, в диалоговые окна редактирования проекта, создания / редактирования мероприятий проекта необходимо добавить валидацию по нажатию на кнопку «Сохранить» полей сроков (независимо от способа ввода сроков) на предмет их корректности согласно настройке ограничения.

Примечание: необходимо учесть вариант, когда сроки редактируемого мероприятия могут входить в граничные значения, но в результате их редактирований не будут входить в ограничения сроки зависимых мероприятий. В таких случаях после нажатия кнопки «Сохранить» необходимо выдавать ошибку:

Действие не выполнено, т.к. в результате сохранения сроки зависимых мероприятий не будут входить в граничные значения проекта ДД.ММ.ГГГГ - ДД.ММ.ГГГГ

и не выполнять действие.

Кроме того, валидацию на то, что дата начала мероприятия проекта должна быть меньше даты конца, необходимо проводить по нажатию на кнопку «Создать» / «Сохранить»:

Во-вторых, следующие методы API должны аналогично первому пункту валидировать сроки:

В-третьих, валидация на ограничения по срокам необходима при настройке связей между мероприятиями проекта (как через поле «Зависит», так и через диаграмму Ганта). Если в результате такой настройки происходит изменение сроков мероприятия и при этом новые сроки выходят за граничные значения, необходимо выдавать ошибку:

Действие не выполнено, т.к. создание данной связи приведет к тому, что сроки зависимых мероприятий не будут входить в граничные значения проекта ДД.ММ.ГГГГ - ДД.ММ.ГГГГ

и не выполнять действие.

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

Сроки некоторых мероприятий проекта выходят за граничные значения проекта ДД.ММ.ГГГГ - ДД.ММ.ГГГГ. Количество мероприятий - N. Скорректируйте их сроки либо измените ограничения.

и не выполнять действие.

В-пятых, валидация на ограничения по срокам необходима при восстановлении удаленных мероприятий: если такое мероприятие содержит невалидные для ограничений данного проекта сроки, то необходимо выдавать ошибку:

Действие не выполнено, т.к. сроки восстанавливаемого мероприятия выходят за граничные значения проекта ДД.ММ.ГГГГ - ДД.ММ.ГГГГ

и не выполнять действие.

Действия при обновлении системы

При обновлении системы в настройках всех существующих проектов для опции Ограничить сроки проекта должно установиться значение по умолчанию: оба флажка должны быть выключены. Других видимых изменений произойти не должно.