Расписание меню столовых на 4 недели.

Наименование: Расписание меню столовых на 4 недели.

Цель доработки (какую проблему решаем?): Убрать необходимость ежедневно переставлять раскладки в расписании, на будущую неделю. 

Предлагаемый нами вариант решения:

Общее описание новой схемы работы:

  • Меню разбивается по неделям (1ая, 2ая, 3ая, 4ая и т.п.), по дням недели (Понедельник, Вторник и т.п.), и разделам (Салаты, Напитки и т.п.)
  • Меню у всех столовых одинаковое
  • Для всех столовых назначается общая "Основная раскладка"
    • "Основная раскладка" должна быть пустой
  • На каждую неделю, день недели, заводится свой набор раскладок
  • Пример набора раскладок (на 2 недели, на 2 дня, с 2мя разделами меню):
    • "Основное меню, Понедельник 1"
      • "Салаты, Понедельник 1"
      • "Напитки, Понедельник 1"
    • "Основное меню, Вторник 1"
      • "Салаты,  Вторник 1"
      • "Напитки, Вторник 1"
    • "Основное меню, Понедельник 2"
      • "Салаты, Понедельник 2"
      • "Напитки, Понедельник 2"
    • "Основное меню, Вторник 2"
      • "Салаты,  Вторник 2"
      • "Напитки, Вторник 2"
  • Для "Основной раскладки" задается "Расписание замен"
  • В "Расписании замен" указывается
    • Дата начала замены  (дата начала 1ой недели, для расчета номера текущей недели)
    • Номер недели
    • День недели
    • "Основная раскладка дня"
  • ​​​​​​Таким образом, вместо пустой "Основной раскладки", на кассе будет отображаться "Основная раскладка дня" подходящая по параметрам Расписания замен

 

Описание доработок для реализации предлагаемой схемы работы:

  • В "Расписание замен" добавить новый параметр "Номер недели"
    • Доступен только если задана "Дата начала замены"
    • Необязательный
  • При определении раскладки по "Расписанию замен" учитывать "Номер недели" (если он задан)
    • Для того чтобы узнать номер текущей недели, нужно:

      • Вычислить кол-во недель в периодичности расписания

        • Найти строку замен с наибольшим "Номером недели"

      • Вычислить кол-во дней в периодичности расписания

      • Вычислить кол-во дней, прошедших с "Даты начала замены" до текущей даты

      • Разделить это кол-во на кол-во дней в периодичности расписания

      • Номер текущей недели будет равен остатку от деления кол-ва недель на кол-во недель в периодичности расписания, увеличенному на 1

    • Пример:

      • "Даты начала замены" - это 1.03.2023, текущая дата 26.04.2023

      • Кол-во недель в периодичности расписания: 4

      • Кол-во дней в периодичности расписания: 28 дней (4 * 7 = 28 дней)

      • Кол-во дней, прошедших с "Даты начала замены" до текущей даты: 56 дней (26.04.2023 - 1.03.2023 = 56 дней)
      • Разделить это кол-во на кол-во дней в периодичности расписания: 56 / 28 = 2 полных недели

      • Номер текущей недели будет равен остатку от деления 2 на 4, увеличенному на 1: 2 % 4 + 1 = 3

      • Таким образом, в данном примере номер текущей недели будет равен третьей неделе

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

Время составления ТЗ: 1,5 ч. 

Время работы программиста: 2 ч. 

Время внедрения: 30 мин. 

Время тестирования: 1 ч. 

Стоимость: 12 500 руб.


Система JUPITER                                 www.jupiter.systems                                 (с) 2024г.