GDMN-Salary (Руководство разработчика)
Материал из GedeminWiki
(Различия между версиями)
(→Web-server API) |
SYSDBA (обсуждение | вклад) (Отмена правки 7281, сделанной участником Marina K.S. (обс.)) |
||
| (не показаны 4 промежуточные версии 1 участника) | |||
| Строка 3: | Строка 3: | ||
==== Протокол ==== | ==== Протокол ==== | ||
| − | + | =====HTTP-запрос к серверу===== | |
Метод запроса: | Метод запроса: | ||
| Строка 17: | Строка 17: | ||
формат даты | формат даты | ||
| − | + | =====HTTP-ответ сервера===== | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
{"cl":"SyncHeader", "params":{"ключ":"значение", ...}} | {"cl":"SyncHeader", "params":{"ключ":"значение", ...}} | ||
| Строка 28: | Строка 23: | ||
RealmSyncObject { | RealmSyncObject { | ||
| − | String | + | String cl - required |
| − | + | <T extends RealmObject> obj - required | |
| − | List<Link> | + | List<Link> master |
| − | < | + | List<Link> link |
| − | boolean | + | boolean deleted |
} | } | ||
| − | Link { | + | 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: | Пример данных для EmployeeModel, PayslipModel и PayslipItemModel: | ||
Текущая версия на 20:27, 21 августа 2017
[править] 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> | Список событий |