В кассовом ПО Artix реализована возможность автоматически закрывать смену в заданное время, при выключении кассы и послав запрос удаленно по REST-интерфейсу.
Активация плагина "Операционный день" определяется параметром operationday, который задается в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/operationday.ini в секции [plugins].
| Наименование | Тип данных | Возможные значения | Описание | Примечания |
|---|---|---|---|---|
| operationday | строковый |
| Активация плагина "Операционный день" | По умолчанию off |
[plugins] ; Плагин Операционный день ; для контроля состояния кассы и смены ;operationday = off |
Настройка плагина "Операционный день" производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/operationday.ini в секции [OperationDay].
| Наименование | Тип данных | Возможные значения | Описание | Примечания | |
|---|---|---|---|---|---|
| executeCSCommands | логический |
| Выполнять команды, полученные с кассового сервера | Запросы принимаются на порт По умолчанию | |
| shiftCloseTime | строковый | Автоматически закрывать смену в указанное время | Время задается в формате
| ||
| closeShiftOnShutdown | логический |
| Закрывать смену при выключении кассы | По умолчанию false | |
| userName | строковый | Имя пользователя, от имени которого смена будет закрываться по времени и при выключении кассы | |||
| userId | строковый | Идентификатор пользователя, от имени которого смена будет закрываться по времени и при выключении кассы |
[OperationDay] ; Выполнять команды, полученные с кассового сервера ; запросы принимаются на порт 38082 ; по умолчанию выключено ;executeCSCommands = false ; Автоматически закрывать смену в указанное время ; время в формате чч:мм ; по умолчанию выключено ;shiftCloseTime = "" ; Закрывать смену при выключении кассы ; по умолчанию false ;closeShiftOnShutdown = false ; Имя пользователя, от имени которого смена будет закрываться по времени и при выключении кассы ;userName = "" ; Идентификатор пользователя, от имени которого смена будет закрываться по времени и при выключении кассы ;userId = "" |
Если имя ( Если данные о пользователе не удалось получить из БД, то смена не будет закрыта. |
Если во время автоматического закрытия смены по времени на экране выведен диалог, то смена не будет закрыта. |
Если включена проверка счетчиков в смене и в ФР при закрытии смены, то при расхождении сумм смену можно будет закрыть только вручную. |
Плагин "Операционный день" поддерживает следующие команды (GET-запросы):
getState – получение состояния, команда без параметров,closeShift – закрытие смены. Обязательные параметры cashierName – ФИО кассира, инициирующего закрытие смены, cashierCode – код кассира,closeShiftResult – результат закрытия смены.Команды можно выполнять через любую программу, отправляя GET-запросы, например:
curl --location --request GET 'http://192.169.10.8:38082/getState' curl --location --request GET 'http://192.169.10.8:38082/closeShift?cashierName=Test&cashierCode=999' curl --location --request GET 'http://192.169.10.8:38082/closeShiftResult' |
Ответы на запросы приходят в формате Наименования полей совпадают с наименованием аналогичных полей, выгружаемых через |
При выполнении запроса на получение состояния могут быть получены следующие ответы:
{
"canCloseShift": false,
"cashInfo": {
"kkms": [],
"mode": "normal"
},
"context": "receiptforming",
"error": "Смена не открыта",
"shift": {
"cashCode": "177",
"countBack": 0,
"countMoneyIn": 0,
"countMoneyOut": 0,
"countSale": 0,
"firstchecktime": "",
"shift": 280,
"shopCode": "1234567890",
"status": "new",
"statusDescription": "Новая смена",
"sumBack": "0.00",
"sumMoneyIn": "0.00",
"sumMoneyOut": "0.00",
"sumSale": "0.00",
"timeBeg": "",
"timeEnd": ""
},
"user": {
"userCode": "4",
"userName": "Мастер"
}
} |
, где:
canCloseShift – флаг возможности закрытия смены. Если true, то смену можно закрыть, false – смену закрыть нельзя,cashInfo – информация о кассе:kkms – информация о ККМ (в виде списка),mode – режим работы. Возможные значения: normal – обычный режим, demo – демо-режим, training – тренировочный. Так как возможно сочетание демо и тренировочного режима, то в этом случае возвращается значение demo|training.
На SCO при переходе в режим кассира не передается информация о режиме, поэтому будет отображаться |
context – поле с именем текущего контекста,
error – текст ошибки,
shift – информация о смене:
cashCode – код кассы,
countBack – количество возвратов,
countMoneyIn – количество внесений,
countMoneyOut – количество выемов,
countSale – количество продаж,
firstchecktime – дата и время первого чека в смене,
shift – номер смены,
shopCode – код магазина,
status – статус смены. Возможные значения: new – новая смена, open – открытая смена, closed – закрытая смена, inCloseProcess – смена в процессе закрытия, errorOnClose – ошибка в процессе закрытия смены,
statusDescription – описание статуса смены. Возможные значения соответствуют вышеприведенным статусам: Новая смена, Смена открыта, Смена закрыта, Смена в процессе закрытия. В случае ошибки в качестве описания возвращается текст ошибки,
sumBack – сумма возвратов,
sumMoneyIn – сумма внесений,
sumMoneyOut – сумма выемов,
sumSale – сумма продаж,
timeBeg – дата и время открытия смены,
timeEnd – дата и время закрытия смены,
user – текущий пользователь:
userCode – код пользователя,
userName – имя пользователя.
{
"canCloseShift": true,
"cashInfo": {
"kkms": [
{
"countBack": "",
"countMoneyIn": "",
"countMoneyOut": "",
"countSale": "",
"fnnumber": "9999078902008655",
"kkmNum": 1,
"serialNum": "0381080012020518",
"shiftnumkkm": 102,
"sumBack": "0.00",
"sumMoneyIn": "0.00",
"sumMoneyOut": "0.00",
"sumSale": "0.00",
"unsenddoccount": -1,
"unsenddocdate": ""
}
],
"mode": "normal"
},
"context": "receiptview",
"shift": {
"cashCode": "177",
"countBack": 0,
"countMoneyIn": 0,
"countMoneyOut": 0,
"countSale": 1,
"firstchecktime": "2022-02-25T11:20:26",
"shift": 280,
"shopCode": "1234567890",
"status": "open",
"statusDescription": "Смена открыта",
"sumBack": "0.00",
"sumMoneyIn": "0.00",
"sumMoneyOut": "0.00",
"sumSale": "20.90",
"timeBeg": "2022-02-25T11:22:14",
"timeEnd": ""
},
"user": {
"userCode": "4",
"userName": "Мастер"
}
} |
, где для kkms:
fnnumber – номер ФН,
kkmNum – порядковый номер ККМ,
serialNum – серийный номер ККМ (на чеках ЗН ККТ),
shiftnumkkm – номер смены в ККМ,
unsenddoccount – количество документов, неотправленных в ОФД,
unsenddocdate – дата и время первого неотправленного документа в ОФД,
Поля countBack, sumBack и т.д. аналогичны одноименным полям в смене.
{
"canCloseShift": false,
"cashInfo": {
"kkms": [
{
"countBack": "0",
"countMoneyIn": "0",
"countMoneyOut": "0",
"countSale": "1",
"fnnumber": "9999078902008655",
"kkmNum": 1,
"serialNum": "0381080012020518",
"shiftnumkkm": 102,
"sumBack": "0.00",
"sumMoneyIn": "0.00",
"sumMoneyOut": "0.00",
"sumSale": "20.90",
"unsenddoccount": 0,
"unsenddocdate": ""
}
],
"mode": "normal"
},
"context": "mainmenu",
"error": "Смена не открыта",
"shift": {
"cashCode": "177",
"countBack": 0,
"countMoneyIn": 0,
"countMoneyOut": 0,
"countSale": 1,
"firstchecktime": "2022-02-25T11:20:27",
"shift": 280,
"shopCode": "1234567890",
"status": "closed",
"statusDescription": "Смена закрыта",
"sumBack": "0.00",
"sumMoneyIn": "0.00",
"sumMoneyOut": "0.00",
"sumSale": "20.90",
"timeBeg": "2022-02-25T11:22:15",
"timeEnd": "2022-02-25T11:23:07"
},
"user": {
"userCode": "4",
"userName": "Мастер"
}
} |
Поля |
{
"canCloseShift": false,
"cashInfo": {
"kkms": [],
"mode": "normal"
},
"context": "shiftclose",
"error": "Процесс закрытия смены уже начался",
"shift": {
"cashCode": "777",
"countBack": 0,
"countMoneyIn": 0,
"countMoneyOut": 0,
"countSale": 1,
"firstchecktime": "2024-01-30T02:49:49",
"shift": 132,
"shopCode": "123",
"status": "errorOnClose",
"statusDescription": "Ошибка при закрытии смены",
"sumBack": "0.00",
"sumMoneyIn": "0.00",
"sumMoneyOut": "0.00",
"sumSale": "67.00",
"timeBeg": "2024-01-30T02:50:04",
"timeEnd": "2024-01-30T03:05:57"
},
"user": {
"userCode": "4",
"userName": "Мастер"
}
}
|
{
"canCloseShift": true,
"cashInfo": {
"kkms": [],
"mode": "normal"
},
"context": "registration",
"shift": {
"cashCode": "777",
"countBack": 0,
"countMoneyIn": 0,
"countMoneyOut": 0,
"countSale": 0,
"firstchecktime": "",
"shift": 133,
"shopCode": "123",
"status": "new",
"statusDescription": "Новая смена",
"sumBack": "0.00",
"sumMoneyIn": "0.00",
"sumMoneyOut": "0.00",
"sumSale": "0.00",
"timeBeg": "",
"timeEnd": ""
},
"user": {
"userCode": "4",
"userName": "Мастер"
}
} |
При выполнении запроса на закрытие смены могут быть получены следующие ответы:
{
"errorCode": 1,
"errorMessage": "Обнаружен незавершенный чек"
} |
{
"errorCode": 0,
"errorMessage": "OK"
} |
, где:
errorCode – результат выполнения операции. Возможные значения: 0 – успешно, 1 – ошибка.
errorMessage – текст результата выполнения операции. Возможные значения: OK – в случае успеха, текст ошибки – в случае ошибки.
Предполагается, что при выполнении длительных операций в ответ отправляется "OK" при начале выполнения операции, а далее КС должен запрашивать состояние до окончания выполнения длительной операции. |
При закрытии смены данные кассира, переданные в запросе, записываются в БД Documents таблицу Workshift (поле scode – код кассира), users (поля usercode – код кассира, username – имя кассира), crights (cashiercard – код кассира, cashiername – имя кассира).
При закрытии смены по команде происходит переход в главное меню и блокировка кассы.
| Если смена была закрыта, а в новой смене ещё не было операций, то при запросе состояния возвращаются данные о закрытой смене. |
При перезапуске кассового ПО json-объект с результатом закрытия смены перезаписывается, значения полей объекта сбрасываются. |
При выполнении запроса о результате закрытия смены могут быть получены следующие ответы:
{
"closedatetime": "2022-02-21T15:40:18.640+07",
"context": "registration",
"errors": []
} |
{
"closedatetime": "+07",
"context": "shiftclose",
"errors": []
} |
{
"closedatetime": "2024-01-30T03:06:34.852+00",
"context": "registration",
"errors": [
{
"COMMAND_VERIFYTOTAL": "Ошибка при выполнении операции"
}
]
} |
, где:
closedatetime – время последнего закрытия смены,context – поле с именем текущего контекста,
errors – список соответствий "<действие>: <сообщение_об_ошибке>".