Санаторий (Руководство разработчика)

Материал из GedeminWiki
Перейти к: навигация, поиск

Содержание

Введение

Приложение «Санаторий» разрабатывалось специально для санатория «Берёзка» ОАО «Беларуськалий». То есть принцип работы ведомственного санатория изучался на примере работы «Берёзки». Впоследствии была разработана эталонная база по автоматизации работы санатория, где установлены все необходимые пространства имен (ПИ) (эти ПИ также можно найти здесь [1], ветка «Санаторий»).

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

Однако в процессе разработки были выявлены ситуации несоответствия терминологии и механизмов работы Гостиницы и Санатория. Поэтому было принято решение сделать эти приложения независимыми друг от друга и развивать их каждый в своем направлении. При этом общие моменты всё же остались (о таких объектах свидетельствует префикс «HT» - по названию ПИ Гостиница - Hotel). Объекты, удаленные из приложения Санаторий, которые характерны для Гостиницы, описаны в Приложение 1. Этот перечень может быть полезен при добавлении нового функционала в приложение: во-первых, если объект имеется в перечне, его всегда можно проанализировать в контексте Гостиницы (так как он там точно присутствует), а во-вторых, объяснение отсутствия данного объекта может убедить отказаться от него и в этот раз. В данном руководстве будет представлена структура ПИ «Санаторий» с описанием функционала и используемых объектов.


Общая структура ПИ «Санаторий»

ПИ GS.Санаторий зависит только от ПИ Общие данные. На рисунке 1 (Рисунок 1 – Общая схема ПИ «Санаторий») представлена общая схема ПИ GS.Санаторий.

Как видно из рисунка 1, «Санаторий» состоит из следующих подсистем:

На рисунке стрелками показаны зависимости внутри подсистемы. Стрелка, указывающая на группу подсистем, означает, что подсистема зависит от каждой подсистемы в этой группе. Рассмотрим каждую подсистему в отдельности.


Подсистема «Общее»

Структура подсистемы представлена на рисунке 2 (Рисунок 2 – Структура ПИ GS.Санаторий.Общее).

На рисунке здесь и далее красными стрелками представлены зависимости внутри подсистемы, желтые блоки - группы объектов, которые отсутствуют как ПИ, но для наглядности выделены на схеме. Состоит из:

  • GS.Санаторий.Общее.Метаданные;
  • GS.Санаторий.Общее.Справочники;
  • GS.Санаторий.Общее.Документы;
  • GS.Санаторий.Общее.Скрипты;
  • GS.Санаторий.Общее .Формы.

Зависит от: «Общие данные».

От данного ПИ зависят: все ПИ из приложения «Санаторий».

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

Ночной аудит

От приложения Гостиница сохранился функционал Ночного Аудита. Это функция, запускаемая менеджером в конце рабочего дня. Её основное предназначение – контроль над оплатой бронирований, контроль над выселением гостей, у которых подошёл день выезда и т.д. Только при выполненных действиях логическая дата системы может быть переведена на следующий день. Информация о логической дате и дате последнего аудита содержится в документе «Служебное» (HT_SETTING): поля LOGICDATE и LASTAUDITDATE соответственно. В приложении Санаторий возможность использования этого функционала сохранена, однако он не используется в данный момент. Логическая дата соответствует текущей дате, установленной на компьютере.

Настройки приложения

Окно настроек (форма ht_options) вызывается из Подсистема «Форма менеджера», раздел Менеджер. В настройках указываются основные объекты из справочников для правильной работы выпадающих списков в документах и правильного построения отчётов. Кроме того, настраиваются округления сумм (округляются все цены в приложении до указанных здесь значений), нумерация документов и права доступа. Для реализации прав доступа в событии формы настроек OnCreate в элемент управления usrg_clbRights добавляются записи с уникальными идентификаторами, которые описаны в файле констант htConst. Затем в скриптах, используя объект класса разграничения прав доступа (Класс THT_RightsHelper) и его метод CanExecuteAction, происходит проверка этого уникального идентификатора как возможность использовать ту или иную функцию. Если результат выполнения метода True – пользователю разрешается доступ к функции.

Описание вспомогательных функций представлено в Приложение 2.

Описание всех классов – Приложение 3.

Описание всех хранимых процедур – Приложение 4.

Подсистема «Тариф»

Структура ПИ GS.Санаторий.Тариф отображено на рисунке 3 (Рисунок 3 – Структура ПИ GS.Санаторий.Тариф).

Состоит из: внутренних ПИ не имеет.

Зависит от: Подсистема «Общее»

От данного ПИ зависят:

  • Подсистема «Номерной фонд»
  • Подсистема «Путевка»;
  • Подсистема «Форма менеджера»».

Описание: ПИ GS.Санаторий.Тариф предназначено для хранения документа Тарифов и всех справочников, которые с ним связаны.

Типовой документ «04.Тариф» предназначен для внесения информации о стоимости путевок. Стоимость путевок варьируется в зависимости от следующих значений:

  • категория отдыхающего (справочник SAN_CLIENTCATEGORY: работник предприятия, ребенок работника предприятия, участник ВОВ и т.д.),
  • тип тарифа (справочник HT_TARRIFTYPE: разделение отдыхающих по возрасту: от 0 до 6 лет, от 6 до 18 лет, старше 18 лет);
  • категория номера (справочник HT_NUMBERTYPE: блочный с двумя комнатами, люкс и т.д.);
  • дополнительное ли место в номере (за этот выбор сейчас отвечают услуги «Путевка» и «Путевка (доп.место)»). TODO: переделать так: на форме настроек добавить 2 выпадающих списка для указания из списка услуг тех, которые будем считать за «Путевку» и «Путевку на доп. Место». Там, где переменная класса HT_Options заполняется id по руиду брать вместо руида значения из этих Lookup-ов.

Кроме того в позициях документа Тариф есть возможность указать скидку на путевку, она указывается путем ввода процента скидки, количества дней проживания по этой скидки и периода действия скидки. Например, сотрудникам предприятия предоставляется скидка 25% на 21 день в течение двух лет.

Процесс расчета стоимости Путевки описан в разделе Подсистема «Путевка».

Доступ к документу Тариф осуществляется из раздела Менеджер (Подсистема «Форма менеджера»). Права на доступ к этому документу настраиваются в Настройках приложения (Подсистема «Общее»). Пользовательская форма usrf_ht_tarrif_grid применяется для указания нужного тарифа вручную. Пока в её использовании не было необходимости, так как цена у путевки строго определяется её параметрами, однако при желании можно использовать эту форму.

Подсистема «Номерной фонд»

Содержание ПИ GS.Санаторий.Номерной фонд отображено на рисунке 4 (Рисунок 4 – Структура ПИ GS.Санаторий.Номерной фонд).

Состоит из: внутренних ПИ не имеет.

Зависит от:

От данного ПИ зависят:

Описание: ПИ GS.Санаторий.Номерной фонд предназначено для хранения справочных объектов для работы с номерным фондом.

Подсистема включает в себя такие справочники как «Корпуса», «Этажи», «Номера», «Места в номерах». Заселение происходит на конкретное место в номере с возможностью подселения гостей в номера. У места может быть установлен признак «дополнительное место». Такие места не отображаются в таблицах состояния мест (например, при просмотре состояния номерного фонда на дату или при заселении гостя в номер), но информация о них отображается пользователю и при отсутствии свободных «основных» мест заселение может быть произведено на дополнительное место.

В подсистеме также имеется справочник состояния номеров (USR$HT_NUMBERSTATEDICT). В нем хранятся статусы двух видов: состояние занятости (свободен, занят, бронь) и состояние уборки номера (грязный, чистый, в процессе уборки, на ремонте и т.д.). Первый вид характерен для мест в номерах, в то время как второй – для номера в целом.

Учет состояний мест номеров ведется в журнале занятости мест номеров (USR$HT_RES_NUMBERSTATE), состояния уборки номера – в документе «Состояние номера» (USR$HT_NUMBERSTATEDOC). Они будут рассмотрены в далее (Подсистема «Путевка»)

Надо отметить, что данные справочников доступны из глобального объекта класса справочников (Класс THT_Dict).

Подсистема «Путевка»

Структура ПИ Путевка отображена на рисунке 5 (Рисунок 5 – Структура ПИ GS.Санаторий.Путевка).

Состоит из:

  • GS.Санаторий.П.Справочники
  • GS.Санаторий.П.Документы
  • GS.Санаторий.П.Отчеты
  • GS.Санаторий.П.Формы

Зависит от:

От данного ПИ зависят:

Описание: ПИ GS.Санаторий.Путевка включает в себя все объекты, необходимые для создания документа Путевки.

Документ Путевка является базовой единицей работы санатория. Путевку выписывают, оплачивают, заселяют, по ней создают Санаторную Книжку и Историю Болезни (Подсистема «Медицинские услуги»), выселяют и по путевкам просматривают историю посещений гостем санатория.

Для хранения Путевок используется таблица HT_RESERVATION (используемая в приложении Гостиница как «Бронирование»). Кроме того, в санатории можно создать бронирование путевки. Бронирование путевки по хранимым данным очень похоже на саму Путевку с небольшими отличиями, поэтому Бронирования Путевок также хранятся в таблице HT_RESERVATION.

Различаются эти документы по статусу (справочник HT_RES_STATEDICT, доступен через глобальный объект класса справочников – Класс THT_Dict). Для бронирования статус заполняется значением «Бронирование», для Путевки характерны статусы:

  • «Не сохранено» - используется при отмене только что созданной Путевки для информации в журнал событий (глобальный объект Класс THT_ReservationLog, таблица HT_RES_LOG).
  • «Новая путевка» - документ заполняется этим значением сразу при создании.
  • «Ожидание заезда» - статус, в который переводится любая успешно созданная Путевка.
  • «Отменено» - отмененная Путевка (удаление Путевки не производится).
  • «Заселено» - статус, который получает путевка при назначении ей места в номере.
  • «На выезд» (не используется) – статус, который получает путевка в день окончания периода пребывания в санатории.
  • «Выселено» - статус, который получает путевка, когда текущая дата больше даты выезда, указанной в документе.

Общими признаками (свойствами) Путевки и Бронирования являются следующие:

  • Заезд (ссылка на справочник SAN_RACE)
  • Гость (ссылка на справочник гостей GD_CONTACT)
  • Тип номер (ссылка на справочник HT_NUMBERTYPE)
  • Признак дополнительное ли место

Каждый документ имеет свой номер. Причем нумерация различна для Бронирований и Путевок, она задается в Настройках Санатория (Подсистема «Общее»). Для документа Путевка дополнительно характерны свойства:

  • Заявка (ссылка на документ SAN_PERSONAL_APPLICATION)
  • Бронирование (ссылка на самого себя, таблица HT_RESERVATION)
  • Категория отдыхающего (ссылка на справочник SAN_CLIENTCATEGORY)
  • Место продажи (выписки) (ссылка на GD_CONTACT)
  • Валюта
  • Тип тарифа (ссылка на HT_TARRIFTYPE – это значение заполняется автоматически и скрыто от пользователя)

При указании Заявки или Бронирования некоторая информация автоматически заполняется значениями из этих документов.

Для документа Бронирования характерны свойства:

  • Дата подтверждения брони
  • Номер (ссылка на справочник HT_NUMBER)

Дата подтверждения брони путевки автоматически заполняется значением даты создания документа + 5 дней. Каждый раз при открытии формы менеджера (Подсистема «Форма менеджера») осуществляется проверка, дат подтверждения бронирований и если они меньше текущей даты, то бронь снимается.

Расчет стоимости Путевки (производится автоматически):

  1. При изменении данных гостя (CONTACTKEY), заезда (RACEKEY), категории отдыхающего (CLIENTCATEGORYKEY), категории номера (NUMBERTYPEKEY) и признака дополнительного места (ISADDITIONALPLACE) происходит поиск актуального тарифа (это определяется по соотношению дат создания путевки и дат действия тарифа, при этом, если дата окончания действия не указана, тариф считается действительным) - Подсистема «Тариф».
  2. Если тариф найден, в Путевке заполняются следующие поля:
    1. DAYRATE – стоимость одного дня проживания (соответствует значению одного из полей COSTNCU, COSTEUR, COSTRUR, COSTUSD позиции тарифа в зависимости от указанной в Путевке валюты);
    2. DAYRATEPART – стоимость одного дня проживания с учетом скидки, указанной в позиции документа тарифа (если скидки не предоставляется, это значение совпадает с DAYRATE);
    3. DAYRATESUM – стоимость всего периода проживания (соответствует значению DAYRATE, умноженному на количество дней, рассчитанное по дням заезда);
    4. TOTALPARTSUM – стоимость всего периода проживания с учетом скидки (рассчитывается процент от DAYRATESUM);
    5. PARTPRICEDAYNUMBER – количество дней, рассчитанных по скидке.

К примеру, путевка может быть выписана на 14 дней проживания, а скидка предоставляется на 21 день. Тогда при выписке путевки количество дней по скидке заполнится значением «14». При последующей выписке путевки, попадающей в период предоставления скидки (например, скидка предоставляется 1 раз за 2 года) эти 14 дней будут учтены и скидка будет предоставлена только на 7 дней, а остальные 7 дней (если заезд новой путевки также составляет 14 дней) будут рассчитаны по полной цене.

При сохранении только что созданной Путевки её стоимость автоматически заносится в документ Оплаты (Подсистема «Учет путевок»). В Путевке также имеется поле INCOMETAX, оно заполняется пользователем вручную и если оно отлично от нуля, оно заносится в документ Оплаты отдельной записью.

Создание Путевки/Бронирования осуществляется из формы менеджера (Подсистема «Форма менеджера»), раздел Гости, пункт Действия на панели инструментов.

Изменения в Путевке

В случаях, когда в выписанную (оплаченную) путевку необходимо внести изменения, предусмотрена функция «Внести изменения в путевку» (Форма Менеджера – раздел Гости – пункт Доп.действия) – создается запись в таблице SAN_PERMITCHANGES. С помощью этой функции можно:

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

Изменения необходимы для расчета суммы к доплате/возврату (сумма заносится в документ оплат – SAN_PAYMENT), для корректного отображения свободных мест в номерах и салфеток в столовой, а также для корректного отображения состояния путевки (важно сохранять все данные путевки на протяжении всех изменений). Для получения последних актуальных изменений предназначена хранимая процедура SAN_P_LASTPERMITCHANGES.

Примеры задач, которые решаются с помощью документа «Изменения в путевке»:

  1. Гость заезжает на 2 дня позже даты заезда своей путевки (по уважительной причине), а в середине заезда на 4 дня меняет номер проживания на категорию дороже той, что была указана в путевке изначально. Необходимо рассчитать сумму разницы между стоимостями исходной путевки и необходимых изменений, а также освободить занятость места в номере и салфетки в столовой, закрепленных за гостем с начала заезда.
  2. Гость по состоянию здоровья во время заезда попадает в больницу на 6 дней, деньги за это отсутствие не возвращаются, а через месяц после окончания заезда по этой путевке гость возвращается в санаторий на эти 6 дней. Необходимо рассчитать сумму к возврату (или доплате) после изменений, а также освободить занятость места в номере и салфетки в столовой, закрепленных за гостем на период отсутствия его в санатории.

Операции над Путевкой (заселение/переселение/выселение) Путевку со статусом «Ожидание заезда» можно заселить, со статусом «Заселено» - переселить или выселить, используя соответствующие функции на форме менеджера. Переселение и выселение можно осуществить «на будущее», указав дату переселения/выселения. При описанных действиях изменяется статусы мест номеров в журнале (HT_RES_NUMBERSTATE) Телефонные переговоры Функционал остался от приложения Гостиница, однако в Санатории пока не используется. Для учета переговоров предполагается использовать документ HT_PHONEDOC, для хранения внешних телефонов - справочник HT_PHONEDICT. Список услуг Функционал остался от приложения Гостиница, однако в Санатории пока не используется. Может быть полезным при работе с дополнительными платными услугами. Для учета услуг для путевки предполагается использовать документ HT_RES_SERVICELIST. Учет состояние номеров (чистый/грязный/на ремонте) Функционал остался от приложения Гостиница, однако в Санатории пока не используется. Для учета состояний номеров предполагается использовать документ HT_NUMBERSTATEDOC и для изменения статусов рекомендуется работать из формы менеджера – Подсистема «Форма менеджера» (раздел Статусы Номеров, смотреть скрытые элементы управления).

Операции над Путевкой (заселение/переселение/выселение)

Путевку со статусом «Ожидание заезда» можно заселить, со статусом «Заселено» - переселить или выселить, используя соответствующие функции на форме менеджера. Переселение и выселение можно осуществить «на будущее», указав дату переселения/выселения. При описанных действиях изменяется статусы мест номеров в журнале (HT_RES_NUMBERSTATE)

Телефонные переговоры

Функционал остался от приложения Гостиница, однако в Санатории пока не используется. Для учета переговоров предполагается использовать документ HT_PHONEDOC, для хранения внешних телефонов - справочник HT_PHONEDICT.

Список услуг

Функционал остался от приложения Гостиница, однако в Санатории пока не используется. Может быть полезным при работе с дополнительными платными услугами. Для учета услуг для путевки предполагается использовать документ HT_RES_SERVICELIST.

Учет состояние номеров (чистый/грязный/на ремонте)

Функционал остался от приложения Гостиница, однако в Санатории пока не используется. Для учета состояний номеров предполагается использовать документ HT_NUMBERSTATEDOC и для изменения статусов рекомендуется работать из формы менеджера – Подсистема «Форма менеджера» (раздел Статусы Номеров, смотреть скрытые элементы управления).

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты