Блог

Новый модуль "Календари рабочих дней"

Модуль «Календари рабочего времени» mod_work_calendar.

Отдельный модуль, назначение которого состоит в том, чтобы администрировать рабочее время по выбранному календарю, т.е. задавать определенные дни расписание рабочего времени которых отличается от привычного. Т.е. все мы знаем, что суббота и воскресенье - нерабочие дни. Но передвигание праздников могут приводить к тому, что суббота, например становится рабочим днем, а понедельник делается выходным, в результате народ отдыхает воскресенье, понедельник и вторник, который собственно праздничный день.

Список календарей.

Интерфейс настройки модуля:

Новый календарь:

После нажатия кнопки «Сохранить» переходим к списку календарей. Редактирование календаря:

При нажатии кнопки «Сохранить» сохраняем имя и флажок основной календарь. Если календарь является основным, снять флажок нельзя, можно только соседний календарь сделать основным, установив флажок «Основной».

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


При показе интерфейса по-умолчанию устанавливается текущий месяц. Ссылками «<<» и «>>» можно переходить к следующему или предыдущему месяцу. Кликнув по дате, переходим в интерфейс добавления исключения:

Указывается тип дня и рабочие часы в этот день. По-умолчанию рабочие часы берутся из настроек модуля.

Это все нужно для работы api данного модуля и его основного метода.
function GetDayType($date, $calendar_id = NULL)
В данной функции входным параметром служит $date, может быть строкой в формате «dd.mm.yyyy» или целым числом timestamp. Второй необязательный параметр указывает, какой календарь использовать. Если ничего не указано, метод находит основной календарь, он всегда один, и возвращает тип дня. В качестве результата возвращается массив:

  • day_type – тип дня (work, day_off, celebration);
  • begin_hour – час начала работы;
  • end_hour – час окончания работ;
  • date – timestamp даты;
  • udate - timestamp даты.

Также полезная функция:
function GetNextWorkDay($date, $calendar_id = NULL)
В данной функции входным параметром служит $date, может быть строкой в формате «dd.mm.yyyy» или целым числом timestamp. Второй необязательный параметр указывает, какой календарь использовать. Если ничего не указано, метод находит основной календарь, он всегда один, и возвращает тип дня. В качестве результата возвращается массив:

  • date – дата первого рабочего дня, следующего за указанным в параметре $date;
  • begin_hour – час начала работы;
  • end_hour – час окончания работ;
  • date – timestamp даты;
  • udate - timestamp даты.
Коленько Сергей