Календарь рабочих дней
Модуль «Календари рабочего времени» 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 даты.