-Дата і час формування чеку в форматі DD.MM.YYYY hh.mm.ss (`"datetime"`);
-Фіскальний номер чеку (`"fisnum"`);
-Значення tag (`"tag"`);
-Тип чеку(номер завдання) (`"type"`);
-Сума чеку (`"sum"`);
-Сума податків(загалом) (`"tax_sum"`).
Для отримання списку чеків потрібно передати в запиті в об'єкті fiscal
параметр “get_receipts“: true
Параметри для запиту:
dev_name
- назва ПРРО, якщо не передано - формується звіт по всім касам.
dev_id
- внутрішній id каси в ДМ, якщо не передано - формується звіт по всім касам.
pg_no
- Пагінація, номер сторінки.
pg_cnt
- Пагінація, кількість чеків на одній сторінці.
dt_from
- Дата початку періоду чеків для фільтрації даних в форматі YYYYMMDDHHMMSS, дату можна передавати частково, наприклад YYYYMMDD
dt_to
- Дата закінчення періоду чеків для фільтрації даних в форматі YYYYMMDDHHMMSS, дату можна передавати частково, наприклад YYYYMMDD
dt_order
- Сортування чеків в масиві docs
по даті, desc - від більшого до меншого чеку по даті, asc - від меншого до більшого.
Опис відповіді:
об'єкт paging
"page_number"
- номер сторінки. Рівне тому значенню що передано в параметрах до запиту, якщо не передано - завжди 1.
"page_size"
- кількість записів на сторінці. Рівне тому значенню що передано в параметрах до запиту, якщо не передано - завжди дорівнює кількості чеків що були знайдені.
"total_records"
- Загальна кількість записів по поточним параметрам.
"total_pages"
- Загальна кількість сторінок.
об'єкт docs
"rro_fiscal_number"
- ФН каси з якої був виданий цей чек.
"fiscal_number"
- фіскальний номер чеку.
"doc_type
" - тип чеку цифрою, фактично номер завдання (task).
"doc_type_txt"
- тип текстом, наприклад "Чек" або "Повернення" або "Переказ коштів"
"sum"
- сума чеку.
"dt"
- дата та час формування чеку в форматі YYYYMMDDHHMMSSMMM.
"subtask"
- те значення subtask що передано в JSON запиту.
"fcId"
- те значення fcId що передано в JSON запиту.
Приклад відповіді
{
"res": 0,
"errortxt": "",
"paging": {
"page_number": 1,
"page_size": 10,
"total_records": 13,
"total_pages": 2
},
"docs": [
{
"rro_fiscal_number": "99996655555555",
"fiscal_number": "TEST_d8neVgxNk6ppow",
"doc_type": 2,
"doc_type_txt": "Повернення",
"sum": 4241,
"dt": "20241029115400235",
"subtask": 1,
"fcId": "2e323r23r"
},
{
"rro_fiscal_number": "99996655555555",
"fiscal_number": "TEST_amkSmyoLiJ5Hdw",
"doc_type": 2,
"doc_type_txt": "Повернення",
"sum": 4241,
"dt": "20241029115333650",
"subtask": 1,
"fcId": ""
},
{
"rro_fiscal_number": "99996655555555",
"fiscal_number": "TEST_b4BZK3NKnePNtg",
"doc_type": 2,
"doc_type_txt": "Повернення",
"sum": 4241,
"dt": "20241029115304910",
"subtask": 0,
"fcId": ""
},
{
"rro_fiscal_number": "3",
"fiscal_number": "TEST_8_mjQ96Rn_VmrA",
"doc_type": 16,
"doc_type_txt": "Видача коштів при переказі",
"sum": 50,
"dt": "20241029114508675",
"subtask": 0,
"fcId": ""
},
{
"rro_fiscal_number": "3",
"fiscal_number": "TEST_QsOh47BjphpFMw",
"doc_type": 15,
"doc_type_txt": "Переказ коштів",
"sum": 240,
"dt": "20241029114501687",
"subtask": 0,
"fcId": ""
},
{
"rro_fiscal_number": "3",
"fiscal_number": "TEST_OFN_GM2DvO-norXXGg",
"doc_type": 1,
"doc_type_txt": "Чек",
"sum": 1000,
"dt": "20241015180857139",
"subtask": 0,
"fcId": ""
},
{
"rro_fiscal_number": "3",
"fiscal_number": "TEST_OFN_UuBMd-MR9jvP5g",
"doc_type": 1,
"doc_type_txt": "Чек",
"sum": 1000,
"dt": "20241015180150531",
"subtask": 0,
"fcId": ""
},
{
"rro_fiscal_number": "3",
"fiscal_number": "TEST_OFN_wTAMJR1MV2X2NQ",
"doc_type": 1,
"doc_type_txt": "Чек",
"sum": 1659.07,
"dt": "20241015103240346",
"subtask": 0,
"fcId": ""
},
{
"rro_fiscal_number": "3",
"fiscal_number": "TEST_OFN_5af_k-sGnwD0rw",
"doc_type": 1,
"doc_type_txt": "Чек",
"sum": 1659.07,
"dt": "20241015102946116",
"subtask": 0,
"fcId": ""
},
{
"rro_fiscal_number": "3",
"fiscal_number": "TEST_8oviAPTPXrK_Pw",
"doc_type": 1,
"doc_type_txt": "Чек",
"sum": 730,
"dt": "20241004173326313",
"subtask": 0,
"fcId": ""
}
]
}
Для отримання такої ж інформації через API при виконанні GET /dm/vchasno-kasa/api/v1/shiftdocs
потрібно в параметри запиту передати show_pay_types=true
До кожного чеку буде повернуто масив об'єктів pays
із даними:
"sum"
- сума по виду оплати, 2 знаки після коми
"pay_code"
- код виду оплати, згідно кодів оплат.
"typen"
- текстове найменування виду оплати.
Спрощено перехід на іншу базу даних зі стандартної sqlite та можливість в один клік перенести всі ваші дані.
Тепер щоб змінити базу даних та/або перенести дані достатньо перейти в налаштування застосунку та вказати дані для підключення. Деталі за посиланням
Заборонено створювати назви для ПРРО принтерів або терміналів із деякими спец символами символами, які можуть викликати певні помилки в роботі.
При спробі створити або відредагувати пристрій із не дозволеними символами, буде повернуто помилку (наприклад): У назві присутні заборонені символи: "№, %"
.
В разі якщо у назві буде вказано знак табуляції, нерозривний пробіл або символ пробілу з початку або з кінця назви вони будуть автоматично обрізані без повернення помилки перед збереженням назви.
Наразі даний функціонал не працює для android
Враховуйте що на доданий час потрібно буде збільшити час очікування відповіді в обліковій системі.
В пакетному режимі (запит на /dm/execute-pkg
) дозволено виконувати відкриття зміни та інші завдання по ПРРО.
Загалом повний перелік дозволених завдань (task
): 0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 22, 23
Додано автовиправлення некоректного JSON відповіді від терміналів Приватбанку. В разі якщо було отримано некоректний JSON - буде виконано його автоматичне корегування, якщо JSON кореговано успішно - термінал зможе далі працювати, в разі неможливості скорегувати JSON операцію оплати буде скасовано. В такому разі рекомендуємо звернутись до Приватбанку для доналаштування терміналу.
Змінено схему обробки відповіді від терміналів Приватбанку на випадки якщо термінал повертав що операція пройшла успішно - проте насправді була помилка. Тепер такі операції не будуть визначатись застосунком як помилково успішні.
Можливість налаштувати автоскасування успішної оплати чи повернення по терміналу в разі якщо облікова система не дочекалась відповіді від Device Manager або "відпала" з певних причин.
З нової версії застосунок може чітко визначати на момент повернення відповіді на API запит оплати ("task": 1
) чи повернення ("task": 2
) по терміналу чи доступний ініціатор запиту (облікова система).
В разі якщо потрібно щоб застосунок скасовував успішну оплату чи повернення якщо облікова система недоступна - потрібно передавати в запиті в об'єкті "pay"
параметр "cancel_on_disconnect": true
{
"ver": 6,
"source": "DM_API",
"device": "Term",
"type": 3,
"pay": {
"cancel_on_disconnect": true,
"task": 1,
"merch": "1",
"sum": 11
}
}
В такому разі якщо застосунок не зможе повернути відповідь - він скасує оплату автоматично.
Для примусового переналаштування часового поясу який буде використовувати застосунок потрібно в конфігураційний файл EDMSrv.ini
додати параметри в секцію [Server]
UseTimeZone
- використовувати форсовану таймзону. 1 - так, 0 або не заповнено - ні.
TimeZone
- значення таймзони в форматі: 2, -2 і тд. Потрібно поставити саме значення 2.
Приклад:
Після збереження налаштувань те перезапуску застосунку для чеків буде використовуватись нова таймзона.
Допрацьовано автооновлення для можливості його роботи на різних дистрибутивах linux.
Додано можливість по аналогії з деякими "Класичними РРО" накладати кілька податків на один товар (наприклад окремо ПДВ 20% та окремо Акциз 5%). Відповідно при такій схемі роботи обіг по групі, в даному прикладі, ПДВ 20% при використанні ПДВ 20% для одного товару та ПДВ 20% + Акциз 5% буде спільний.
Для роботи даного способу передачі податків в чеку потрібне попреднє налаштування податкових груп, для цього зверніться на техпідтримку.
Для цього в чеку потрібно до кожного товару замість "taxgrp"
в масиві об'єктів fiscal.receipt.rows
передавати масив "taxgrps"
куди вказати одну або дві податкові групи якими обкладається товар.
Чек товар ПДВ 20% + Акциз 5%:
{
"ver": 6,
"source": "API",
"device": "postgres1",
"tag": "",
"need_pf_img": 1,
"type": 1,
"fiscal": {
"task": 1,
"receipt": {
"sum": 100,
"rows": [
{
"code": "10",
"name": "Товар з акцизом",
"cnt": 1,
"disc": 0,
"price": 100,
"cost": 100,
"taxgrps": [
1, 4
]
}
],
"pays": [
{
"type": 0,
"sum": 100
}
]
}
}
}
Приклад чеку:
Чек товар ПДВ 20%
{
"ver": 6,
"source": "API",
"device": "postgres1",
"tag": "",
"need_pf_img": 2,
"type": 1,
"fiscal": {
"task": 1,
"receipt": {
"sum": 100,
"rows": [
{
"code": "11",
"name": "Товар",
"cnt": 1,
"disc": 0,
"price": 100,
"cost": 100,
"taxgrps": [
1
]
}
],
"pays": [
{
"type": 0,
"sum": 100
}
]
}
}
}
Приклад чеку:
Приклад звіту:
Додано попередження при створенні ПРРО при роботі застосунку на базі даних SQLite якщо кількість більше 7 що максимально можливо використовувати до 10 ПРРО.
Реалізовано можливість використовувати накладений податок замість вкладеного при роботі з товарами. Під накладеним податком мається на увазі можливість передавати суму товару без податку - відповідно податок буде розраховуватись і накладатись поверх суми. Сума до сплати в такому разі буде більше за суму чеку на суму податку.
Для роботи даного способу розрахунку податків в чеку потрібне попреднє налаштування податкових груп, для цього зверніться на техпідтримку.
Для роботи даного способу розрахунку податків в чеку потрібне попреднє налаштування податкових груп, для цього зверніться на техпідтримку.
Виправлено помилку коли найменування АЦСК у списку дублюються в разі повторного завантаження ключа на сторінці ПРРО.
Змінено основний колір інтерфейсу
Виправлено проблему коли завантажувався пошкоджений файл логу на linux за поточний день.
Виправлено проблему з блокуванням/розблокуванням ПРРО через "Інженерні функції" вручну яке могло призвести до зависання застосунку у певних випадках.
Виправлено можливі проблеми в роботі каси в разі якщо у фоні запитуються офлайн номери і в цей момент відбувається фіскалізація чеку.
Збільшено кількість максимально можливої довжини для назви товару в чеку з 200 до 1000 символів.
Виправлено помилку з некоректним автоматичним розрахунком ціни за одиницю в чеку ("price"
) якщо передано лише повну вартість позиції ("cost"
).
Виправлено помилку коли заборона переходити в офлайн після аварійної заміни ключа не працювала при певних умовах.
Виправлено помилку в роботі ПРРО після автоматичної синхронізації чеків у певних випадках.
Виправлено помилку коли загальна знижка на весь чек переходить в націнку у візуалізації чеку для останнього товару в списку якщо сума знижки більше за суму останнього товару.
Відкориговано схему нарахування загальних знижок на весь чек по товарам враховуючи індивідуальні знижки на товари в чеку.
Відкориговано розподілення знижки по товарам виключаючи товари з додатковим збором (при передачі в запиті в об'єкт fiscal.receipt
параметру "disc_calc_alg": 1
)
Виправлено помилку при отриманні відповіді від терміналу newland по протоколу SSI JSON.
Виправлено помилку з екрануванням апострофа в деяких варіаціях назв товарів в чеку.
Виправлено проблему з роботою деяких налаштувань в застосунку після запуску застосунку якщо на момент запуску були проблеми з підключенням до серверу бази даних.
Виправлено текст помилки про те що автооновлення не підтримується на android.
Access violation...
у випадку фіскалізації чеку з великою кількістю товарів (20-30+) на x32 версії застосунку."purchase_receipt_fisn"
та "purchase_rro_fisn"
для чеків повернення.ПДФО 18% + ВЗ 1.5%
."discounts"
.bank_id
) буде поміщатись внутрішній номер мерчанту який присвоюється банком. Додано нове поле Назва банку (bank_name
), для відображення в чеку найменування банку до якого належить платіжний засіб. Дані про банк не будуть передаватись в ДПС.fiscal.receipt
параметр "disc_calc_alg": 1
."disc_calc_alg": 1
в такому разі у випадку наявності в чеку товарів (по прикладу вище) з податковими групами ПДВ 20% + акциз 5%
або Без ПДВ + акциз 5%
на них загальна знижка на весь чек застосовуватись на буде. Деталі по роботі зі знижками за посиланням.Access violation...
при одночасній роботі з кількома терміналами Приватбанку.fiscal
параметр "is_short": true
. В такому разі буде сформовано короткий звіт.Приклад запиту:
{
"fiscal": {
"dt_to": "20240805235959",
"dt_from": "20240801000000",
"is_short": true,
"task": 13
},
"type": 1,
"source": "API",
"device": "postgres1",
"ver": 6
}
price
* cnt
) якщо не передано їх фінальну вартість(cost
) для чеків переказу коштів та видачі коштів при переказі.lines
для чеків на продаж("task": 1
), повернення("task": 2
) та для службового звіту("task": 5
).Для текстових даних можна додатково передавати наступні дані
"fh": 1, -- висота тексту 1 або 2, значення 2 несумісне якщо fw 1, буде друкуватись як при fw 2. Вcі інші варіації - сумісні
"fw": 1, -- ширина тексту 1 або 2.
"align": 1, - вирівнювання. 1 зліва, 2 по центру, 3 з правого боку.
"by_word": 1, - перенесення по словам, а не по буквам якщо слово не вміщається в рядок. 1- переносити по словам, 0 або не передано - переносити по буквам.
Встановлено максимальний ліміт офлайн номерів в 5000 на один ПРРО. Стандартна кількість залишилась без змін (2000 номерів). При спробі встановити більше як 5000 номерів на один ПРРО в налаштуваннях - більше 5000 отримуватись не буде відповідно до нещодавно встановлених обмежень в API ДПС.
Додано можливість при увімкненій авторизації у вебінтерфейсі встановити API ключ(X-Api-Key) для авторизації запитів з облікових систем по сталому ключу замість потреби авторизуватись по логіну та паролю та зберігати авторизаційну куку.
Формат API ключа - довільний. У разі встановлення в header до запитів що містять в ендпоінті /api/v1/
, /api/v2/
, /api/v3/
які підпадають під авторизацію потрібно передавати значення x-api-key.
Приклад
curl --location 'http://localhost:3939/dm/vchasno-kasa/api/v1/dashboard' \
--header 'x-api-key: befddabf-0adc-4767-b7fe-5078fbcbc557'
Якщо значення ключа передано коректно - потреби в авторизації не буде, буде повернуто результат виконання запиту і відповідно всі дані.
Якщо ключ передано некоректно - буде переадресація на сторінку логіну якщо не було виконано вхід та не було передано авторизаційну куку.
Для доступу до вебінтерфейсу як і раніше використовується лише логін та пароль.
Internal error: Access violation at address...
яка періодично виникала при оплаті на терміналах приватбанку.Виправлено помилку в роботі ПРРО після завершення зворотної синхронізації якщо в налаштуваннях ПРРО увімкнено "Автоматичне відкриття зміни з проведенням першого чеку".
Виправлено помилку в роботі ПРРО після завершення зворотної синхронізації якщо по ПРРО до цього тривалий час не формувалось фіскальних чеків.
При налаштуванні принтеру "Відступ зліва (в міліметрах)" 0 тепер не відправляється на принтер команда для обнулення відступів.
Виправлено помилку з виходом ПРРО з офлайну після завершення зворотної синхронізації якщо ПРРО знаходилось в режимі офлайн.
Виправлено помилку з неможливістю авторизуватись у вебінтерфейс при увімкненій авторизації на більшості браузерів.
info.pays.commission_m
."res": 5000
). Якщо пройшла - дані по операції.{
"res": 5000,
"res_action": 1,
"errortxt": "Помилка терміналу: транзакція не була проведена. Повторіть спробу ще раз."
}
"task":17
). В об'єкт "pay"
необхідно:"cancelid"
). Якщо не передавати буде повернуто стасус та інформацію останньої успішної операції по терміналу.curl --location 'http://localhost:3939/dm/execute' \
--header 'Content-Type: application/json' \
--data '{
"ver": 6,
"source": "API",
"device": "Terminal",
"tag": "",
"type": 3,
"pay": {
"task": 17,
"cancelid": "469109"
}
}'
curl --location 'http://localhost:3939/dm/execute' \
--header 'Content-Type: application/json' \
--data '{
"ver": 6,
"source": "API",
"device": "Terminal",
"tag": "",
"type": 3,
"pay": {
"task": 17
}
}'
Логи тепер додатково зберігаються 30 днів(за замовчуванням) в архівованому вигляді для економії місця на диску.
Якщо виставлено збереження логів 7 днів та збереження архівом - логи будуть зберігатись 37 днів загалом.
За потреби налаштування можна змінити:
Повертаємо коректний текст помилки в разі неможливості провести зворотну синхронізацію якщо по ПРРО відсутні зміни або по ПРРО збережено некоректний токен
Додали перевірку стану сертифікату ключа ЕЦП на валідність. Якщо при зчитуванні ключа чи при підписанні чеку буде отримано помилку про недійсниість сертифікату - буде додатково виконано окрему перевірку стану сертифікату. Якщо сертифікат ключа було відкликано в АЦСК - робота каси, та можливість переходу в офлайн буде заборонена до завантаження актуального робочого ключа ЕЦП.
Помилка буде наступна при спробі фіскалізувати чек або відкрити/закрити зміну:
{
"res": 1094,
"res_action": 1,
"errortxt": "Приватний ключ ЕЦП не завантажено: Сертифікат ключа ЕЦП було відкликано. Фіскалізація чеків та перехід в офлайн режим заборонено. Для продовження роботи завантажте дійсний ключ та виконайте закриття зміни якщо зміна відкрита."
}
Заборонено послідовну реєстрацію і видалення кількох чеків для уникнення помилок в роботі ПРРО із за некоректної відповіді з боку API ДПС. Видаляти чек можна лише один раз після видалення - наступний чек видалити буде можливо тільки якщо останній чек - було фіскалізовано в ДПС.
Додано метод для відправки сповіщень про чеки (відправка чеку клієнту). Метод аналогічний такому ж для відправки чеків через кабінет Вчасно.Каса напряму і насамперед розроблений для зручності в інтеграції щоб не потрібно було відправляти чеки окремо через кабінет Вчасно.Каса.
В параметр запиту dev_name
потрібно передати назву ПРРО по якому здійснюється відправка.
Дані для відправки можна передати параметрами до запиту або в body запиту в json форматі
"recipient"
- Електронна пошта або номер телефону для надсилання чеку."channel"
- Канал для надсилання чекуemail
- віпправити на електронну поштуsms
- відправити через SMSviber
- відправити через Vibercascade
- спробувати відправити через Viber, якщо вайбер не встановлений на телефоні, то відправити через SMS."check"
- Фіскальний номер чеку.Приклад передачі даний через body запиту в json форматі:
curl --location 'http://localhost:3939/vchasno-kasa/notifications/checks?dev_name=postgres1' \
--header 'Content-Type: application/json' \
--data-raw '{
"recipient": "[email protected]",
"channel": "email",
"check": "TEST_ngrGDS9vOC10cw"
}'
Приклад передачі даний через параметри запиту:
curl --location 'http://localhost:3939/vchasno-kasa/notifications/checks?dev_name=postgres1&recipient=test%40vchasno.ua&channel=email&check=TEST_ngrGDS9vOC10cw' \
--header 'Content-Type: application/json' \
--data '{}'
Виправлено помилку що призводила до зависання ПРРО якщо при запитів на ПРРО розірвалось з'єднання з сервером БД.
У візуалізації звітів(X, Z та періодичні звіти) прибрано відображення розділів по внесенням/винесенням, чекам видачі готівки держателям ЕПЗ, та чекам переказу коштів та видачі коштів при переказі якщо в зміні даних операцій не було проведено.
У візуалізації тестових чеків більш явно відображаємо додатково напис "Тестовий чек" зверху та знизу чеку для більшого розуміння по якому ПРРО було фіскалізовано чек.
Додали можливість встановлювати відступ зліва на принтерах по ESC/POS протоколу. В налаштуваннях принтеру в міліметрах можна вказати decimal значення віступу якщо чек друкується зі зміщенням а не по центру паперу.
Виправлено помилку з відображенням часу роботи в офлайні за поточний та попередній місяць замість тільки часу роботи в поточному.
Виправлено помилку з відображенням неповної інформації по ключу ЕЦП на linux.
Виправлено помилку з некоректним сортуванням звітів при виконанні періодичного звіту по датам якщо вказувати в запиті повну дату з мілісекундами.
Додано автоматичну синхронізацію даних по чекам з кабінетом Вчасно.Каса у випадку якщо є розбіжність по чекам в Device Manager та в кабінеті Вчасно.Каса і відповідно в ДПС.
Після запуску Device Manager або при відкритті зміни якщо ПРРО працює в режимі онлайн буде виконано автоматичну перевірку на відповідність, якщо буде знайдено відсутні чеки - буде виконано їх дозапис. Це допоможе відновити роботу ПРРО без додаткового налаштування якщо було аварійно закрито зміну або чеки формувались не з deivce manager.
Змінено схему роботи функціоналу зворотної синхронізації. Якщо запущено синхронізацію без видалення чеків - буде синхронізовано дані по останній зміні ПРРО для продовження роботи. Рекомендовано використовувати у випадку якщо потрібно лише синхронізувати дані останньої зміни зі збережнням історії чеків
При синхронізації з видаленням чеків перед синхронізацією буде видалено всі чеки що є в базі даних по касі і завантажено останню зміну по ПРРО. Рекомендовано використовувати якщо ПРРО працювало на іншому пристрої або якийсь час не працювало в цьому Device Manager.
Виправлено помилку з відображенням кількості чеків сформованих в офлайні однією загальною нумерацією для всіх ПРРО.
Виправлено помилку з подальшою неможливістю автоматичного виходу каси з офлайн режиму, роботою автоматичного закриття зміни та фонового отримання офлайн номерів якщо було розірвано підключення з БД(MS SQL та postgresql).
Виправлено помилки що призвели до довготривалого знаходження ПРРО в офлайн режимі із за проблем з ключами АЦСК Україна.
Додано завдання 5("task": 5
) Універсальний сервіс(ServiceGeneric
) для терміналів Приватбанку на протоколі JSON. Метод можна використовувати для провдення сервісних операцій, наприклад Оплата частинами або Миттєва розстрочка. Метод обов'язково потрібно використовувати при проведенні даних сервісних операцій якщо в терміналі кількість мерчантів(фактичних торгівців) > 1.
"task"
- номер завдання - завджи 5.
"sum"
- сума операції.
"param"
- для оплати частинами, або миттєвої розстрочки - кількість платежів.
"merch"
- номер мерчанта по якому необхідно провести операцію.
"srvNum"
- номер сервісу
Номери сервісів ("srvNum"
) станом на 29.05.2024. Потрітно передавати значення в полі Service ID
. Які саме сервіси у вас налаштовані на терміналі можна уточнити у Приватбанку.
Приклад запиту миттєвої розстрочки:
curl --location 'http://localhost:3939/dm/execute' \
--header 'Content-Type: application/json' \
--data '{
"ver": 6,
"source": "DM_API",
"device": "PAX2",
"type": 3,
"pay": {
"task": 5,
"sum": 300,
"param": 3,
"merch": 4,
"srvNum": "046"
}
}'
КНЕДП ТОВ \"Центр сертифікації ключів \"Україна\"
та зміна схеми роботи з сертифікатами для більшої стабільності роботи ключів надалі.Банки еквайри платіжні застосунки яких можуть бути налаштовані на перерахованих терміналах станом на 01.05.2024:
Додатково, протягом місяця виробником терміналів буде встановлена оновлена версія платіжних додатків банків Райффайзен банк Аваль
, ПУМБ
, Monobank
, Таскомбанк
, АБанк
, Укрексімбанк
з підтримкою інтеграційного протоколу SSI JSON. Частина з них з них вже підтримує і відповідно доступна для підключення та роботи в Device Manager.
Всі термінали що використовують протокол SSI JSON
можуть працювати в режимі 2в1, тобто термінал замінює і принтер фіскальних чеків (не тільки олачених карткою, але і готівкою також) і сам банківський термінал про проведення безготівкових розрахунків. Додатково налаштовувати принтер не потрібно, після підключення терміналу можна одразу друкувати чеки та приймати оплати.
"res": 7000
)."task":17
). В об'єкт "pay"
необхідно передати додатково номер мерчанту та номер операції на терміналі("cancelid"
).curl --location 'http://localhost:3939/dm/execute' \
--header 'Content-Type: application/json' \
--data '{
"ver": 6,
"source": "API",
"device": "Terminal",
"tag": "",
"type": 3,
"pay": {
"task": 17,
"cancelid": "27",
"merch": 1
}
}'
Додано можливість підключити термінал іншого банку якщо немає в списку доступних якщо відомий протокол роботи терміналу. Додатково потрібно буде вказати назву банку.
Виправлено деякі розбіжності в даних в json відповіді при фіскалізації чеків через /dm/execute
та фіскалізації аналогічного чеку через /dm/execute-prn
, /dm/execute-pkg
Можливість запису версії бази даних в конфігураційний файл. Потрібно для коректної роботи додатку з postgresql базоб даних, без можливості надати користувачу який підключається до БД superadmin
права.
в файл EDMSrv.ini в блок [Database]
додати наступні рядки:
DBVerInINI=1
DBVer=
Після чого перезавантажити службу EDMSrv
(windows), edm
(Linux).
"task": 18
).SimPays ККМ
(Sense банк, Банк ТАС)"task":23
) по ПРРО."task": 15
) та чек видачі коштів при переказі("task": 16
)."Операції переказу коштів та видачі коштів при переказі"
з підсумком по даним операціям по видам оплат.Режим встановлення кодової сторінки
- в разі друку в режимі тексту замість картинки, Альтернативний режим вирішує проблему на первних моделях принтерів з наявними зайвими символами "Iя" в першому рядку чеку при встановленні кодування тексту на принтері.Спосіб друку зображень
- в разі друку картинкою. Альтернативний
режим дозволяє налаштувати коректний друк на принтерах де картинка друкувалась некоректно(замість чеку друкувася набір символів). Перевірено на принтерах BTP
та HPRT
. Режим Для розфіскалізованих РРО
дозволяє друкувати чеки картинкою на розфіскалізованих РРО. Перевірено на моделі EP-700
(FP-700
)Банку ТАС
та Sense банку
по мережі по протоколу SimPays ККМ
за допомогогою TCP серверу. При створенні пристрою потрібно вказати порт серверу будь який доступний в системі і піля того повідомити банку налаштувати підключення до каси на ip адресу вашого пристрою(ноутбук чи комп'ютер) та вказаний в налаштуваннях порт. Після встановлення налаштувань банком можна працювати з терміналом.base_tax_sum_p
, base_tax_sum_m
, base_ex_sum_p
, base_ex_sum_m
в JSON відповіді при виконанні X, Z та періодичних звітів в масиві info.taxes
.fiscal.receipt
в json запиті передати "allow_zero_sum": true
. В іншому випадку при спробі фіскалізувати чек з нульовою сумою буде повернуто помилку: "res": 1133,
"res_action": 3,
"errortxt": "Фіскалізація чеків з наявними товарами та нульовою сумою заборонена. Для фіскалізації такого чеку необхідно передати \"allow_zero_sum\": true в об`єкт fiscal.receipt",
Передавати "allow_zero_sum": true
обов'язково тільки у випадках якщо загальна сума чеку після всіх знижок буде 0, якщо сума до сплати буде не 0 - передавати "allow_zero_sum": true
не потрібно.
Фіскалізація "нульових" чеків без товарів та оплат працює без змін.
{
"ver": 6,
"device": "postgres1",
"tag": "",
"type": 1,
"fiscal": {
"task": 1,
"receipt": {
"sum": 4000,
"allow_zero_sum": true,
"discounts": [
{
"disc": 100,
"disc_type": 1,
"disc_name": "Знижка 100% на весь чек. приклад"
}
],
"round": 0,
"rows": [
{
"code": "185",
"name": "Товар 1",
"cnt": 1,
"price": 1000,
"cost": 1000,
"discounts": [],
"taxgrp": 1
},
{
"code": "187",
"name": "товар 2",
"cnt": 1,
"price": 3000,
"cost": 3000,
"discounts": [],
"taxgrp": 1
}
],
"pays": [
{
"type": 0,
"sum": 0
}
]
}
}
}
{
"res": 2022,
"errortxt": "ПРРО наразі використовується іншому на пристрої. Перед створенням каси видаліть її з попереднього пристрою після чого поверніться до створення. Якщо до попереднього пристрою більше немає доступу - зверніться до служби підтримки Вчасно.Каса для розблокування."
}
Для зняття блокування необхідно видалити ПРРО з попереднього додатку Device Manager або, якщо доступу до попереднього додатку немає - звернутись на техпідтримку сервісу Вчасно.Каса.
9) Можливість зміни розділювача для числових значеннь в друкованих формах. Стандартно розділювач ,
.
10) Можливість відключити перевірку готівки в касі("safe"
) при видачі решти("change"
) в чеках продажу/повернення та переказу коштів. Для цього в об'єкт fiscal.receipt
в json запиті необхідно передати "not_check_safe": true
. В такому разі перевірка доступного залишку при видачі решти не буде відбуватись.
11) Можливість виконати X, Z звіти по терміналу по протоколу BPOS1 для всіх мерчантів, при передачі в json запиті "merch": 0
.
12) Заборонено запускати Примусовий запуск реєстрації чеку переходу в онлайн
("task": 9
) в разі якщо уже виконується фіскалізація офлайн чеків.
13) Допрацювання фільтру по даті для періодичного звіту по датам ("task": 13
):
"dt_from": "20240408091021",
"dt_to": "20240408211021",
У разі вказання лише дати YYYYMMDD без часу, наприклад "dt_from": "20240401"
та "dt_to": "20240405"
буде вибрано всі звіти, дата закриття яких буде в проміжку між 01.04.2024 00:00:00 та 05.04.2024 23:59:59.
"dt_from"
та "dt_to"
.“Виручка“
з порахованою сумою доходу по видам оплат за результатом суми всіх чеків продажу - чеки повернення - видача готівки держателям ЕПЗ + операції переказу коштів - операції видачі коштів при переказі;"task": 12
, "task": 13
) денний обіг з урахуванням округлення по продажам та додано обіг по чекам повернення."task": 12
, "task": 13
) на "Періодичний звіт (повний)" та додано відображення номерів та дати першого та останнього звітів у вибірці.dd.MM.yyyy hh:mm:ss
."cost_after_disc"
) в масиві info.printinfo.goods
.info.printinfo
.income
в об'єкті info
з порахованою сумою "Виручки" за зміну по видам оплат для всіх звітів.info.summary
значення виручки загальної (income_p
) після обрахунку суми виручки по видам оплат для всіх звітів.info.reports
для періодичних звітів суму по чекам продажу з урахуванням округлення ("roundsum"
) та суму по чекам повернення ("returnsum"
)."n_from"
) та до("n_to"
) що потрапили у вибірку в об'єкті info
, та дати першого("open_shift_dt"
) та останнього("close_shift_dt"
) звітів."type": 0
) та передачі суми решти ("change"
) > 0 для чеків на продаж. Якщо передана сума решти > ніж поточна сума готівки в сейфі (в касі) буде повернуто помилку при фіскалізації чеку:"errortxt": "У касі недостатньо коштів для проведення даної операції"
{
"ver": 6,
"source": "",
"device": "postgres1",
"tag": "",
"task_status": 3,
"type": 1,
"task": 18,
"dt": "20240208165440361",
"res": 1016,
"res_action": 1,
"errortxt": "Internal error: Бібліотека ЕЦП ще не ініціалізована. Зачекайте та спробуйте ще раз.",
"aq_errortxt": "",
"warnings": []
}
"discounts"
.curl --location 'http://localhost:3939/dm/execute-pkg' \
--header 'Content-Type: application/json' \
--data '{
"ver": 6,
"source": "DM_API",
"need_pf_img": 2,
"device": "postgres1",
"type": 1,
"fiscal": {
"task": 23,
"fiscal_number": "TEST_IMkWddWkHpi9tg"
}
}'
Можна використовувати при відправці запиту на ендпоінти для отримання інформація або додатково друку на принтері: /dm/execute
, /dm/execute-prn
, /dm/execute-pkg
Якщо чек, в даному випадку з фіскальним номером TEST_IMkWddWkHpi9tg не було знайдено буде отримано у відповідь помилку:
"errortxt": "Чек з фіскальним номером TEST_IMkWddWkHpi9tg не знайдено"
Додано в підтримку нові банки та додаткові протоколи для існуючих банків при роботі з терміналами:
-А-Банк
- додано можливість підключати термінали за допомогою протоколу JSON
;
-Банк Південний
- додано можливість підключати термінали за допомогою протоколу BPOS Light
;
-Укрсиббанк
- додано можливість підключати термінали за допомогою протоколу BPOS Light
;
-Банк Восток
- додано можливість підключати термінали за допомогою протоколу BPOS Light
;
-Банк Sense
- додано можливість підключати термінали даного банку що використовують протоколиBPOS1
, POSAPI
та SimPays ККМ
;
-Банк ТАС
- додано можливість підключати термінали даного банку за допомогою протоколу SimPays ККМ
.
Додано можливість друкувати додаткову текстову інформацію та різного типу коди в формі чеків на продаж ("task": 1
) та на повернення ("task": 2
).
Підтримувані типи кодів:
-QR-код
-code128
-ean13
Для передачі даної інформації використовується масив об'єктів "lines"
(кожен код чи текст передається окремим об'єктом з параметрами в масиві) в об'єкті "fiscal"
в json запиту на фіскалізацію чеку (аналогічно функціоналу в завданні 5 ("task": 5
), але з додатковими параметрами розміщення в чеку та налаштуваннями).
Можливості налаштування:
-"qr_type"
- тип. 0 - текстова інформація, 1 - штрихкод (ean13), 2 - штрихкод (code128), 100 - QR-код.
-"t"
- текстова інформація. При "qr_type": 0
- просто текст для відображення в формі чеку, інні значення - інформація що буде поміщена у відповідний код.
-"position"
- позиція для відображення інформації. 1 - перед чеком, 2 - після "хедера" чеку, 3 - перед сумою чеку, 4 - перед "футером" чеку, 5 - після "футера чеку". Додаткові позиції будуть додаватись по запитам на техпідтримку.
-"qr_p"
- розмір коду у % до ширини стрічки (не використовується якщо "qr_type": 0
). 100 - вся ширина чеку, 75 - 75% ширини чеку для штрихкодів і так далі, для QR-кодів змінюється ширина та висота.
-"qr_height"
- висота штрихкоду (не використовується якщо "qr_type": 0
або "qr_type": 100
). 1 - висота 0.5см., 2 - висота 1.3см., 3 - висота 2см.
-"qr_print_txt"
- друк текстового представлення інформації в коді під самим кодом знизу (не використовується якщо -"qr_type": 0
) false - не друкується, true - друкується.
-"align"
- вирівнювання відносно чеку якщо "qr_p"
менше 100 (в поточній версії не використовується якщо "qr_type": 0
текст за замовчуванням - зліва). 1 - зліва, 2 - по центру, 3 - з правого боку.
Позиції:
Важливо! дана інформація буде відображатись лише в візуалізації чеків та на друкованих чеках з додатку(в тому числі друковані форми різного формату) та не передається в ДПС навідміну від коментарів в чеку.
"task": 0
) повертається id зміни "shift_id"
у форматі uuid. Id зміни можна використати для перегляду інформації по чекам в зміні через ендпоінт /dm/vchasno-kasa/api/v1/shiftdocs?shift_id=
/dm/execute-prn
, /dm/execute-pkg
якщо за 5 секунд не вийде з'єднатись з принтером буде повернуто відповід на завдання по ПРРО, також в об'єкті "info"
значення "isprint"
буде рівне 0, тобто чек не було надруковано."disconuts"
сумувалась зі знижкою на весь чек переданою без масиву."task": 4
) для терміналів Ощадбанку:”rec_name”
: - ім'я отримувача латиницею.”rec_surname”
: - прізвище отримувача латиницею.”rec_pan”
: - PAN(номер картки) отримувача."taxes"
в тегах "base_tax_sum_p"
, "base_tax_sum_m"
, "base_ex_sum_p"
, та "base_ex_sum_m"
для податкових груп.Додано підтримку Arch linux.
Зменшено максимальний таймаут на очікування відповіді від кабінету Вчасно.Каса при фіскалізації чеків до 10 секунд (5 секунд встановлення з'єдання, 10 секунд очікування відповіді після з'єднання).
Додано функціонал перевірки ключа ЕЦП при додаванні ключа до ПРРО через вебінтерфейс.
Якщо ключ було зчитано успішно - одразу буде запущена автоматична перевірка реєстрації даного ключа в ДПС для підписання чеків. У разі якщо по результату відповіді від ДПС ключ не зареєстровано - буде запропоновано заповнити заявку на реєстрацію даного ключа для роботи ПРРО.
Для тестових ПРРО перевірка ключа не виконується.
У разі якщо ключ не зареєстровано, після його успішного зчитування в додатку буде відображено наступне повідомлення:
Додано можливість підключати термінали А-Банку та Банку Південний по протоколу BPOS1. Інші протоколи які підтримуються даними банками будуть доступні в наступній версії.
Додано можливість по API передавати масові знижки на чек чи на позицію. Кілька знижок передається за допомогою масиву об'єктів "discounts"
. Можна передавати знижки як ранінше, або передавати лише масивом, або комбінувати з передачею масивом, аналогчно як з акцизними марками "code_a"
та "code_aa"
.
Всі відсоткові знижки на позицію чи на весь чек нараховуються послідовно. Тобто якщо є 2 знижки, наприклад, 20% і 10% - сума по чеку чи по позиції після застосування першої знижки 20% буде використана як база для застосування знижки 10%.
{
"ver": 6,
"source": "API",
"device": "postgres1",
"need_pf_img": 2,
"type": "1",
"userinfo": {
"email": ""
},
"fiscal": {
"task": 1,
"cashier": "Касир 1",
"receipt": {
"sum": 17000.00,
"disc": 3000,
"disc_type": 0,
"disc_name": "Бонусна система",
"disc_apply_type": 3,
"discounts": [
{
"disc": 3000,
"disc_type": 0,
"disc_name": "Використання сертифікату №111 на 3000грн.",
"disc_apply_type": 1
},
{
"disc": 3000,
"disc_type": 0,
"disc_name": "Використання сертифікату №222 на 3000грн.",
"disc_apply_type": 1
}
],
"rows": [
{
"code": "100",
"code1": "79545322",
"code2": "45632",
"code_a": "S5556667w",
"name": "Продкут \"1\"",
"cnt": 1,
"price": 22000,
"cost": 22000,
"disc": 0,
"disc_type": 0,
"disc_name": "",
"disc_apply_type": 3,
"discounts": [
{
"disc": 3000,
"disc_type": 0,
"disc_name": "Бонуси",
"disc_apply_type": 3
},
{
"disc": 2000,
"disc_type": 0,
"disc_name": "Акція",
"disc_apply_type": 3
}
],
"taxgrp": 3,
"comment": "Коментар до продукту 1"
}
],
"pays": [
{
"type": 2,
"sum": 8000,
"paysys": "VISA",
"rrn": "1235567377",
"cardmask": "1223******1111",
"term_id": "SK014677",
"bank_id": "БАНК",
"auth_code": "AA12345678",
"comment": "коментар до оплати картою"
}
]
}
}
}
Потрібно обов'язково увімкнути для роботи на терміналі
Verifone VX520
від Приватбанку.
Виправлено помилку з відображенням коректного номеру мерчанту в разі якщо номер, встановлений банком, більше 10 знаків.
Можливість змінювати максимальну та мінімальну кількість офлайн номерів для роботи ПРРО в режимі офлайн.
Мінімальна кількість - кількість при досягненні якої буде виконано запит номерів в ДПС.
максимальна кількість - та кількість яка запитується в ДПС (наразі максимально можливо встановити 20000 номерів на один ПРРО).
Поточні налаштування будуть отримані з Кабінету Вчасно.Каса і відображатимуться в блоці "Інформація про ПРРО"
Додано перепідключення до postgresql бази у разі обриву з'єднання з боку БД при активній сесії.
Змінено текст помилки для терміналів що працюють по протоколу BPOS1 у разі якщо не вдалось обробити код помилки:
Повідомлення від банку: Операція неуспішна. Код відмови %s
%s - буде замінено на код відповідці процесингового центру банку отриманого від терміналу.
Додано параметр IgnoreConnError
в секцію [Database]
в конфігураційний файл для примусового запуску додатку в разі помилки підключення до бази даних. Можна використовувати у випадках коли база дани і додаток знаходяться на різних пристроях і при старті додатку не встигає запуститись база даних.
У разі встановлення IgnoreConnError=1
додаток після запуску 1 раз в 30 секунд буде виконувати спробу підключитись до бази даних та виконати всі необхідні запити для отримання даних із БД.
Якщо підключення до бази даних не було виконано у відповідь на всі API методи буде повернуто помилку, наприклад:
{
"ver": 6,
"source": "",
"device": "",
"tag": "",
"task_status": 3,
"type": -1,
"task": -1,
"dt": "20231211141310542",
"res": 1130,
"res_action": 3,
"errortxt": "Виникла помилка при підключенні до БД: Cannot connect to server on host 'localhost':\r\nПодключение не установлено, т.к. конечный компьютер отверг запрос на подключение.\r\nSocket Error Code: 10061($274D)",
"aq_errortxt": "",
"warnings": []
}
У разі якщо підключення буде виконано можна працювати з ПРРО та пристроями як зазвичай.
Параметр
IgnoreConnError
не сумісний ізServiceName
. Дозволено використовувати лише один.
У json відповідь по API на викоання X/Z та періодичних звітів було додано окремі параметри в масив об'єктів "taxes"
в значенні яких будуть бази оподаткування для податкових груп із додатковим збором.
"base_tax_sum_p"
- база оподаткування по основному податку (наприклад ПДВ 20%) по чекам продажу.
"base_tax_sum_m"
- база оподаткування по основному податку (наприклад ПДВ 20%) по чекам повернення.
"base_ex_sum_p"
- база оподаткування по додатковому збору (наприклад Акциз 5%) по чекам продажу. Якщо податкова група не має додаткового збору - завжди 0.
"base_ex_sum_m"
- база оподаткування по додатковому збору (наприклад Акциз 5%. Якщо податкова група не має додаткового збору - завжди 0.
В фіскальних чеках QR-код тепер містить посилання на візуалізацію чеку в кабінеті ДПС (https://cabinet.tax.gov.ua/cashregs/check) з додатковими обов'язковими параметрами:
ФН чеку(id),
дата (date),
час (time),
фіскальний номер ПРРО (fn),
сума чеку (sm),
контрольне число (mac)
Приклад:
https://cabinet.tax.gov.ua/cashregs/check?id=TEST_OFN_WeBKHz774mvTOQ&date=20231207&time=10:51:36&fn=3&sm=8000&mac=c1d019bc8d1dce852e371e0149b8655627f247fcc7160deb6ab953c3522f4919
У тестових чеках QR-код містить посилання на кабінет Вчасно.Каса (https://kasa.vchasno.ua/) з додатковими реквізитами.
Приклад:
https://kasa.vchasno.ua/c/TEST_VbS7yd6TPtgdqw?MAC:c086300d35d95c67b0b47fba07bc91098a8c87b44f3c1c2aeecc1df4c40d7624;DT:20-12-2023T14:55:14;FR:TEST_VbS7yd6TPtgdEw;SUM:17000;FN:400000000
Встановлено налаштування підключення для більш стабільної роботи бази даних sqlite при раптових збоях в живленні комп'ютеру при фіскалізації чеку.
Додано очікування в 10 секунд перед запуском автоматичної очистки чеків при закритті зміни.
Звертаємо увагу що якщо у вас використовуєтсья стандартна база даних sqlite після запуску очистки, тобто після закриття зміни по конкретному ПРРО, можуть бути затримки у відповідях на наступні завдання поки не завершиться процес очистки.
Зміна процесу отримання сертифікатів ключів ЕЦП та процесу оновлення кореневого сертифікату для стабільної роботи ключів ЕЦП у разі оновлення сертифікатів з боку АЦСК.
Виправлено проблему при спробі відкрити зміну якщо по касі сталась помилка при отриманні офлайн номерів до відкриття зміни.
Виправлення оновлення налаштувань по касі та податкових груп і типів оплат з кабінету Вчасно.Каса при відкритті зміни по ПРРО якщо по ПРРО виконувались службові завдання до відкриття зміни.
Оновлено бібліотеку підписання iit до актуальної версії.
Виправлено відправку суми до оплати на термінал на 1 копійку менше ніж в запиті для терміналів Ощадбанку, Укрсиббанку, Банку Восток, Райффайзенбанку, Банку ПУМБ.
Виправлення роботи Зворотної синхронізації.
Виправлено помилку при спробі запросити документи за конкретну зміну (/dm/vchasno-kasa/api/v1/shiftdocs
) з параметром відображення сервірсних чеків (service=1).
Метод /dm/vchasno-kasa/api/v1/settings замінює лише ті налаштування що передані в запиті без скидання до стандартних налаштуваннь параметрів що не передані в запиті.
Додано інфоромацію про поточні ліміти часу роботи в офлайні для ПРРО.
Виправлено помилку з відсутністю кодування windows-1251 в XML чеку.
Виправлено проблему з отриманням відповіді від терміналів Приватбанку.
Для терміналів Приватбанку, за замовчуванням, відключено можливісь асинхронного запиту статусу поточної операції з терміналу. Для включення даної можливості потрібно перейти в налаштування терміналу та увімкнути перемикач
Виправлено помилку при обрахунку сум по документам за зміну на postgresql версіях 10+.
Виправлено помилку з екрануванням апострофа ('
) в назві ПРРО та пристроїв.
Виправлено розрахунок "sum"
для чеків продажу/повернення для методу /dm/vchasno-kasa/api/v1/shiftdocs
Додано розрахунок суми по продажам/поверненням та податкам для методу /dm/vchasno-kasa/api/v1/shifts
при відкритій зміні по ПРРО.
Виправлено помилку з відображенням в друкованій формі Z-звіту що звіт видано в режимі офлайн якщо перехід в офлайн відбувся на фіскалізаціх звіту в ДПС.
Розширено таймаут до 5 секунд на встановлення з'єдання з терміналами Приватбанку.
Авторизація, якщо увімкнена в налаштуваннях, тепер працює на всі методи що мають в ендпоінті:
/dm/api/v1/
/dm/api/v2/
/dm/api/v3/
Додано можливість вказувати назви для знижок на товар та весь чек для відображення назви в чеку за допомогою тегу "disc_name"
.
Додано можливість передавати тип застосування знижки для застосування знижки як фактично знижки на товар, або для застосування її як зменшення на суму передплати у випадку використання змішаної форми оплати (передплата/післясплата за товар) за допомогою тегу "disc_apply_type"
.
Приклад:
Знижка на товар
"disc": 50,
"disc_type": 1,
"disc_name": "Передплата",
"disc_apply_type": 1,
Знижка на весь чек
"disc": 50.00,
"disc_type": 1,
"disc_name": "Акція",
"disc_apply_type": 3,
Друкована форма:
Z-Звіт (розділ "Знижки")
/dm/lasttransaction
. Інформації по останній транзакції буде повернута в JSON форматі. Структура аналогічна як і мала б бути у відповіді на оригінальний запит./dm/transaction-status
. Якщо по терміналу є активна операція у відповідь на запит буде надано статус код від терміналу та текстовий опис статусу поточної операції для виводу на екран касиру чи клієнту будь то оплата чи інша операція.csv
.copies
> 1.type
при передачі в запиті тип оплати 0 (Готівка)./dev/usb/lp0
/dev/usb/lp1
/dev/usb/lp2
/dm/vchasno-kasa/api/v1/shifts
і /dm/vchasno-kasa/api/v1/shiftdocs
повертаються значення податку для чеків і звітів.tax_all_p
- податок з чеків на продаж;tax_all_m
- податок з чеків на повернення."Готівка"
)./dm/vchasno-kasa/api/v1/doc
отримати форму у вигляді команд на принтер для друку чеку на принтер що підключено в ДМ. В параметрах GET запиту вказати form=doc
./dm/execute-prn
і /dm/execute-pkg
.merchList
по ендпоінту /dm/getmerchantlist
. Код мерчанта в таблиці використовується в запитах для ідентифікації по якому мерчанту буде проведено оплату.task_status
при роботі з завданнями для ПРРО."task_status": 1
- чек було фіскалізовано в ДПС, або просто успішне виконання завдання якщо його виконання не передбачає відправку даних в ДПС."task_status": 2
- повертається якщо в запиті було передано значення tag
і чек з таким tag було знайдено в БД і повернуто повторну відповідь(без фіскалізації)."task_status": 3
- помилка при пошуку в бд або при фіскалізації./dm/execute-prn
і /dm/execute-pkg
./dm/execute-pkg
):warnings
у разі відсутності підключеного принтеру або терміналу."bankid"
) в json відповіді при роботі з терміналами Ощадбанку та Укрсиббанку./dm/vchasno-kasa/api/v1/settings
змінивши значення для "server_alias"
"need_upd"
і "dfs_metr"
більше не повертаються в json відповіді від ДМ. Для отримання стабільності ДПС та наявності оновлень з версії 5.177 розроблено окремі методи./dm/execute-pkg
) для сумісності з інтеграціями на старих версіях додатку.Приклад вигляду друкованої форми(зліва: 5.188, справа: в попередніх версіях):
Нова смема відображення податків в звітах(приклад вигляду звіту з усіма податковими групами).
Податки відображаються таблицею: ГРУПА-ОБІГ-ПОДАТОК
/dm/execute-pkg
"task":1
), повернення("task":2
), внесення/винесення("task":3/4
) готівки з типом оплати "готівка"("type":0
)"task":14
)Залишок не передається зі зміни в зміну. Обнулення залишку під час закриття зміни, тобто при знятті z-звіту.
при знятті z-звіту буде показана сума залишку, вона ж буде в звіті. Всі методи що повертають залишок по касі, після закриття зміни, будуть повертати 0."task":11
), якщо зміна уже закрита, помилка наступна:...
"res": 1006,
"res_action": 3,
"errortxt": "Зміна по даному ПРРО була закрита. Повторне закриття неможливе",
...
"task":0
) і закриття зміни("task":11
), якщо автовідкриття зміни вимкнено і зміна зараз закрита, помилка наступна:...
"res": 1092,
"res_action": 3,
"errortxt": "Зміна по даному ПРРО закрита. Для фіскалізації чеків необхідно відкрити зміну.",
...
При спробі відкрити зміну("task":0
) якщо зміна відкрита, помилка наступна:
...
"res": 1096,
"res_action": 3,
"errortxt": "Зміна по даному ПРРО уже була відкрита. Повторне відкриття неможливе",
...
...
"res": 1124,
"res_action": 3,
"errortxt": "Для ПРРО \"Kasa_1\" був виконаний метод аварійної заміни ЕЦП, дозволено тільки закриття зміни(11)
...
"submerch"
) для проведення транзакцій по терміналам для протоколу PrivatBankJSON.info.merch
info.submerch
значення отримане від терміналу для протоколу PrivatBankJSON./dm/bankping
для протоколу PrivatBankJSON./dm/getmerchantlist
і /dm/bankecho
.transaction_id
та transaction_search
в API запиті.pf_fontsize
/dm/api/v1/sys_info
повертає інформацію яка субд використовується для роботи."errortxt": "Відсутні оффлайн номери для роботи ПРРО в режимі оффлайн. Отримання номерів, від ДПС, буде здійснено автоматично, після успішного відкриття зміни в режимі онлайн."
"errortxt": "Закінчились оффлайнові номери для роботи ПРРО в режимі оффлайн. Було використано всі номери для чеків під час роботи в оффлайні. Отримання номерів буде здійснено автоматично після успішної реєстрації оффлайнових чеків та переходу до режиму онлайн."
Встановили таймаут запиту до АЦСК в 9 секунд. Якщо АЦСК не відповідає або немає доступу, ПРРО перейде до режиму оффлайн(якщо ПРРО було дозволено перехід в оффлайн в налаштуваннях.
Змінили UI на Аndroid. Наразі функціонал у вебінтерфейсі на android аналогічний як і на windows/linux.
Версія Device Manager для linux red hat enterprise.
Додали відображення файлу логу за поточний день у вебінтерфейсі.
Змінили дані в QR-коді чеку згідно вимог ДПС. Посилання на чек у кабінеті Вчасно.Каса повертається у відповіді по API, параметр "qr" у QR-коді чеку знаходиться інформація яка міститься в полі "qr1".
Виправили пагінацію у реєстрі змін по ПРРО. Всі зміни та чеки тепер доступні для перегляду.
Покращили механізм перевірки даних при виході каси з оффлайн режиму, що значно зменшило кількість проблемних ситуацій при автоматичному виході з режиму оффлайн.
Виправили перевірку поточного статусу ПРРО при роботі в оффлайні.
Виправили відображення коректної суми готівки по чекам на повернення у періодичних звітах("task":12/13).
Виправлення по роботі з оффлайновими чеками при роботі з MS SQL.
Виправлення відображення візуалізації чеку при роботі з MS SQL.
Виправлення помилки при повторному запиту по tag чеку на якому було здійснено перехід до режиму оффлайн.
Автоматичне виправлення послідовності передачі чеків після збоїв ДПС на чеках відкриття/закриття зміни.
Додано текст "Звіт нульовано. Фіскальний звіт дійсний." до візуалвзації z-звіту.
Коректний розрахунок сейфу у разі якщо для ПРРО відключено тип оплати "готівка".
Виправлення помилки з вибіркою даних з БД ручним запитом.
Виправлення роботи мехізму вибору та запису оффлайнових номерів.
Прибрали перевірку "sign" для API методів роботи з пристроями(друк на принтери, термінали).
Виправили відображення помилок в роботі ПРРО з боку кабінету Вчасно.Каса.
/dm/vchasno-kasa/api/v1/dashboard
і /dm/vchasno-kasa/api/v1/prro?dev_id={{dev_id}}
."billing": {
"paid_date_to": "20221010030000000",
"enough_to_renew_subscription": 2
}
Опис значень "enough_to_renew_subscription"
enough_to_renew_subscription == 0 Не вдалось визначити, або ПРРО не підключено до системи автоматичного білінгу(якщо "paid_date_to": ""), або не вистачає коштів для активації усіх ПРРО в день деактивації по компанії. ПРРО може не активуватись автоматично якщо кошти будуть списані з балансу іншим ПРРО
enough_to_renew_subscription == 1 Кошти на рахунку в наявності, підписка на ПРРО продовжиться автоматично після закінчення терміну дії поточної.
enough_to_renew_subscription == 2 Відсутні, для того щоб каса продовжувала працювати після закінчення поточної підписки поповніть баланс в кабінеті Вчасно.Каса
"aq_errortxt"
у відповіді на відкриття зміни по ПРРО