GDMN-Salary (Руководство разработчика)
Материал из GedeminWiki
Версия от 02:39, 22 февраля 2016; Marina K.S. (обсуждение | вклад)
Web-server API
Протокол
HTTP-запрос к серверу
Метод запроса:
GET <URI запроса> HTTP/1.1
Header:
Content-Type: application/json; charset=utf-8
Обязательный параметр GET-запроса:
token - ключ, ассоциированный с необходимым скриптом
Передача объектов осуществляется в формате JSON. формат даты
HTTP-ответ сервера
{"cl":"SyncHeader", "params":{"ключ":"значение", ...}}
RealmSyncObject {
String cl - required
<T extends RealmObject> obj - required
List<Link> master
List<Link> link
boolean deleted
}
Link {
String cl - required
String uid - required
String field - required
}
Тайм-ауты на клиенте:
ConnectTimeout - 60с ReadTimeout - 60с
Реализация протокола для данных GDMN-Salary
Токены [AndroidSalary_RegisterHandler]
gdmnSalarySetGCMRegId gdmnSalarySignIn gdmnSalarySync gdmnSalarySyncMsg gdmnSalarySendMsg gdmnSalarySendMsgStates gdmnSalaryGetNewInvite
Обязательные параметры:
ip_address
app_version_code
auth_key (для всех, кроме gdmnSalarySignIn)
Пример данных для EmployeeModel, PayslipModel и PayslipItemModel:
{cl:"EmployeeModel", obj:{uid:"123", ...}}
{cl:"PayslipModel", link:[{cl:"EmployeeModel", uid:"123", field:"employee"}], obj:{uid:"456", ...}}
{cl:"PayslipItemModel", master:[{cl:"PayslipModel", uid:"456", field:"items"}], obj:{...}}
Пример данных для EmployeeModel, TimesheetModel, WorkscheduleModel и DayEventModel:
{cl:"EmployeeModel", obj:{uid:"123", ...}}
{cl:"TimesheetModel", link:[{cl:"EmployeeModel", uid:"123", field:"employee"}], obj:{uid:"456", ...}}
{cl:"WorkscheduleModel", link:[{cl:"EmployeeModel", uid:"123", field:"employee"}], obj:{uid:"789", ...}}
{cl:"DayEventModel", master:[{cl:"TimesheetModel", uid:"456", field:"events"}, {cl:"WorkscheduleModel", uid:"789", field:"events"}], obj:{...}}
Пример удаления записи:
{cl:"EmployeeModel", delete:"true", obj:{uid:"123"}}
Классы, хранящиеся в клиентской БД
Указаны лишь те поля, которые связаны с БД
DayEventModel - событие дня в расписании или табеле
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| eventTypeIndex | int | Тип события дня [DayEventModel.EventType] |
| timeBegin | Date | Время начала |
| timeEnd | Date | Время окончания |
| hours | double | Продолжительность, часов |
| description | String | Описание |
| isAllDay | boolean | Продолжительность: весь день |
DeviceInfoModel - информация об устройстве
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| phoneNumber | String | MSISDN |
| deviceId | String | Уникальный идентификатор устройства [IMEI for GSM, MEI for GSM, MEID/ESN for CDMA phones, else: android_id] |
| deviceModel | String | Модель устройства |
EmployeeModel - сотрудник
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| firstname | String | Имя |
| surname | String | Фамилия |
| middlename | String | Отчество |
| passportId | String | ID паспорта |
| listNumber | String | Табельный номер |
ExRatesMonthlyModel - курс валют
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| onDate | Date | Дата |
| usdRate | double | Курс доллара |
| eurRate | double | Курс евро |
GdMsgAbsenceModel - заявка о неявке на работу
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| typeIndex | int | Тип неявки [GdMsgAbsenceModel.Type] |
| dateBegin | Date | Дата начала |
| dateEnd | Date | Дата окончания |
| requestGdMsgModel | GdMsgModel | Cообщение, на которое ответ (для серверных сообщений) |
GdMsgIncomeModel - заявка о справке о доходах
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| dateBegin | Date | Дата начала |
| dateEnd | Date | Дата окончания |
| requestGdMsgModel | GdMsgModel | Cообщение, на которое ответ (для серверных сообщений) |
GdMsgInfoModel - информационное сообщение
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| requestGdMsgModel | GdMsgModel | Cообщение, на которое ответ (для серверных сообщений) |
GdMsgModel - сообщение
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| requestStatusIndex | int | Статус запроса [GdMsgModel.RequestStatus] |
| subjectIndex | int | Тема запроса [GdMsgModel.Subject] |
| senderIndex | int | Тип отправителя [GdMsgModel.Sender] |
| isUnread | boolean | Прочитано |
| timestamp | Date | Дата создания |
| msg | String | |
| comment | String | Комментарий |
| gdMsgString | String | Строковое представление данных сообщения (для поиска по ним) |
| gdMsgAbsenceModel | GdMsgAbsenceModel | Заявка: неявка на работу |
| gdMsgIncomeModel | GdMsgIncomeModel | Заявка: справка о доходах |
| gdMsgVacationModel | GdMsgVacationModel | Заявка: отпуск |
| gdMsgInfoModel | GdMsgInfoModel | Информационное сообщение |
| gdMsgVacationInfoModel | GdMsgVacationInfoModel | Заявка: информация о ближайшем отпуске |
GdMsgVacationInfoModel - заявка о информации на ближайший отпуск
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| dateBegin | Date | Дата начала |
| dateEnd | Date | Дата окончания |
| requestGdMsgModel | GdMsgModel | Cообщение, на которое ответ (для серверных сообщений) |
GdMsgVacationModel - заявка об отпуске
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| typeIndex | int | Тип отпуска [GdMsgVacationModel.Type] |
| dateBegin | Date | Дата начала |
| dateEnd | Date | Дата окончания |
| requestGdMsgModel | GdMsgModel | Cообщение, на которое ответ (для серверных сообщений) |
PayslipBenefitModel - льгота расчетного литка
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| date | Date | Дата |
| name | String | Наименование |
| sum | double | Сумма |
| code | int | Код льготы |
PayslipDeductionModel - вычет расчетного листка
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| date | Date | Дата |
| name | String | Наименование |
| deductionKind | String | Вид вычета |
| sum | double | Сумма |
| code | int | Код вычета |
PayslipItemModel - позиция расчетного листка (начисление/удержание/налог/аванс)
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| categoryIndex | int | Тип категории [PayslipItemModel.Category] |
| date | Date | Дата |
| name | String | Наименование |
| code | int | Код |
| debit | double | Сумма дебета |
| credit | double | Сумма кредита |
PayslipModel - расчетный листок за месяц
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| payDate | Date | Дата окончания периода |
| employee | EmployeeModel | Сотрудник |
| department | String | Участок |
| isFinal | boolean | Окончательный |
| position | String | Должность |
| salary | double | Сумма оклада |
| hourRate | double | Сумма почасовой тарифной ставки |
| dependents | int | Количество иждивенцев |
| items | RealmList<PayslipItemModel> | Список позиций листка (начисления, удержания, налоги, авансы) |
| benefits | RealmList<PayslipBenefitModel> | Список льгот |
| deductions | RealmList<PayslipDeductionModel> | Список Вычетов |
SyncGdMsgStateModel - состояние сообщения
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | String | PK |
| statusIndex | int | Тип состояния [SyncGdMsgStateModel.UpdatedStatus] |
| gdMsgKey | int | GdMsg.uid сообщения |
SyncMetaDataModel - мета-данные для синхронизации
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| scheme | String | Схема веб-протокола |
| addressServer | String | Адрес |
| authKey | String | Авторизационный ID |
| lastSyncDate | String | Дата последней синхронизации |
| lastSyncMsgDate | String | Дата последней синхронизации сообщений |
| gcmRegistrationId | String | ID девайса в Google Cloud Messaging |
| inviteCode | String | Инвайт-код |
| permits | boolean | Наличие права доступа к данным |
| lostMode | boolean | Режим потерянного девайса |
TimesheetModel - табель рабочего времени за день
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| dayTypeIndex | int | Тип дня [DayType] |
| employee | EmployeeModel | Сотрудник |
| description | String | Описание |
| hours | double | Продолжительность, часов |
| date | Date | Дата |
| events | RealmList<DayEventModel> | Список событий |
WorkScheduleModel - рабочий график на день
| Наименование | Тип данных | Описание |
|---|---|---|
| uid | int | PK |
| dayTypeIndex | int | Тип дня [DayType] |
| employee | EmployeeModel | Сотрудник |
| description | String | Описание |
| hours | double | Продолжительность, часов |
| date | Date | Дата |
| events | RealmList<DayEventModel> | Список событий |