Модулі та інтеграції

Розширення системи, які в разі потреби можна підключити як додатковий функціонал. Безпосередньо на роботу основної системи не впливають.
Підключити потрібний модуль можна в загальних налаштуваннях, після чого з'являються відповідні пункти меню.


Iнтеграція з Опенкарт

Модуль до складської програми дозволяє отримувати нові замовлення з магазину, оновлювати в магазині статус виконаних замовлень, додавати в магазин нові товари, а також оновлювати зі складу кількість і ціни товарів. Для роботи необхідно встановити додаток для Опенкарт. Доповнення розширює стандартне API і може використовуватись для інтеграції з іншими складськими програмами. Доповнення до ІМ розташоване на GitHub, там же опис і керівництво по установці.
Для автоматичної синхронізації (оновлення цін, кількості та імпорту замовлень) в корені проекту є скрипт cron_updateoc.php, який можна додати до системного планувальника (cron або task sheduler). Також його можна викликати за адресою https://<адреса сайту>/cron_updateoc.php. На початку скрипта встановлюється назва статусу, з яким імпортуються замовлення.

У Модулі-> Опенкарт-> Налаштування потрібно вказати адресу ІМ, а також аккаунт API, який створюється в адміністративній панелі Опенкарт.

На сторінці Модулі-> Опенкарт-> Замовлення в складській системі вибираємо статус замовлень ІМ, які вважаються новими і завантажуємо список з магазину. Потім імпортуємо в складську програму. На кожний запис створюється документ Замовлення. На цій сторінці можна оновити статуси замовлень в ІМ після їх обробки.

На сторінці Модулі-> Опенкарт-> Товари можна експортувати нові товари зі складу в магазин, а також імпортувати з магазину, якщо товар там виявився раніше. Відповідність товарів забезпечується по артикулу. Так само можна в будь який момент відновити в магазині ціни і кількість у відповідності зі складом.

Iнтеграція з WooCommerce

Модуль по функціональності аналогічний модулю інтеграції з Опенкарт.

У Модулі-> WooCommerce-> Налаштування потрібно вказати адресу ІМ, а також ключі, які створюються в адміністративній панелі магазину.

Iнтеграція з PromUA

Модуль по функціональності аналогічний модулю інтеграції з Опенкарт.

У Модулі-> PromUA-> Налаштування потрібно вказати адресу ІМ, а також ключ, який створюється в адміністративній панелі магазину.

Iнтеграція з Хорошоп

Модуль по функціональності аналогічний модулю інтеграції з Опенкарт.

У Модулі->Хорошоп-> Налаштування потрібно вказати адресу сайтуЮ логін та пароль (зі списку адмінів в хорошопі) .

Онлайн каталог

Невеликий модуль онлайн каталогу інтегрований з бухобліком і складським обліком. Особливість каталогу - ієрархічна система атрибутів товару, що дозволяє автоматично генерувати фільтри пошуку товару і сторінку порівняння.
Наприклад, для категорії побутова техніка можна задати атрибути Вага і Розміри.

Виставити каталог домашньою сторінкою можна в налаштуваннях модуля. Перейти в адмінку можна за адресою http: //<адреса сайту>/store. На основі замовлень магазину автоматично створюються замовлення в журналі замовлень.
Для налаштування магазину необхідно вибрати склад і вказати його в налаштуваннях модуля інтернет-магазину. Після цього товари будуть доступні в редагуванні каталогу в модулі магазину. Для відображення в каталогу в довіднику ТМЦ повиннин бути тип Товар та вказана категорія.
Дизайн по дефолту - на Twitter Bootstrap.

База знань

Організатор для зберігання неструктурованих даних в ієрархічному вигляді. По суті вбудований проект Zippy Note. Оскільки користувачі є користувачами однієї корпоративної системи, додана можливість спільного перегляду і редагування топіків.

Проекти та завдання

Менеджер завдань. Дозволяє призначати співробітникам різні завдання, що дає можливість контролювати хід виконання. Для завдань можна вказати пріоритет, поточний статус, час виконання на кожному етапі, додавати коментарі і прикріплювати файли. Може використовуватися як елемент CRM, наприклад, при роботі над договорами клієнтів. Завдання групуються в проекти.
Також є можливість для співробітників фіксувати виконану роботу в тайм-трекері із зазначенням номеру завдання.
Для адміністратора є таблиця статистики по проектам і співробітникам.

Модуль фiскалiзацiї РРО (Україна)

Модуль призначений для автоматичної відправки чеків і z-звітів в податкову.
Для роботи модуля також потрібно ввести реєстраційні дані РРО з особистого кабінету в податковій. У довідник компаній ввести назву компанії, ЄДРПОУ та ІПН (для платників ПДВ) та налаштувати роботу з приватним ключем та сертифiкатом. Також потрібно вказати назву та адресу торгової точки, фіскальний і локальний номери в довіднику POS терміналів. У разі використання стороннього ключа (наприклад, ключа ПриватБанку) необхідно зареєструвати в особистому кабiнетi податкової ідентифікатор ключа, завантаженого у програму.
Робота з фіскалізованими чеками ведеться, в основному, в АРМ касира. Перед початком роботи необхідно відкрити зміну для даного POS терміналу. Після закінчення роботи по клiку "закриття зміни" автоматично формується z-звіт і закривається зміна.
Так само фіскалізація при виборі відповідного POS терміналу, на якому відкрита зміна вiдбувається при внесенні оплати в журналі оплат і в накладнiй на повернення.
Дані з податкової (РРО, зміни і відправлені документи) можна переглянути на сторінці в модулі фіскалізації.

В якості бібліотеки використовується проект ppolib. Додаткове ПЗ при цьому не потрібне, але бібліотека працює досить повільно. Зокрема, завантаження ключа займає до хвилини і може не виконатися на повільних серверах, тому бажано встановити тайм-аут роботи в кілька разів більше, ніж стандартні 30 сек, або використати зовнішній сервер.
Завантаження (перевірка) ключів та сертифікатів виконується у довіднику компаній.

Iнтеграція з Новою Поштою

Модуль дає можливість створювати відправки через Api Нової Пошти та вiдслiдковувати їх статус.
Перед початком використання в налаштуваннях модуля необхідно додати ключ доступу і дані відправника за замовчуванням. Декларація НП створюється в журналі Продажі при виборі в списку потрібної ТТН в статусi Готово до вiдправки.
Перегляд і управління деклараціями на стороні НП здійснюється зі спеціальної сторінки в модулі.
Перед початком роботи в налаштуваннях модуля необхідно оновити локальні довідники міст та відділень.

Для прискорення роботи довідники міст і відділень попередньо скачуються і перiодично оновлюються натисканням кнопки Оновити на сторінці налаштувань модуля. Файли скачуються в папку uploads (з правом запису) в корені сайту.

Пiдключення та використання принтерiв

У програмі може бути використано два типи принтерів – широкий (А4) та вузький (чековий). Широкий принтер призначений для виведення друкованих форм первинних документів (накладних тощо). Підключається як звичайний системний принтер і не потребує будь яких налаштувань у програмі.
Вузький принтер призначений для друку чеків, квитанцій, а також цінників та етикеток. Може бути підключений як системний або через додаткове ПЗ (сервер друку). Тип підключення задається у профілі користувача.
Для вузького принтера створюються окремі шаблони друкованих форм у папці templates/printform (з префіксом _ps ), структура яких залежить від типу підключення. Якщо принтер підключений як системний, його форми містять html розмітку як і форми стандартного широкого принтера, а вивід здійснюється браузером через системний драйвер. Якщо принтер підключений через сервер друку, друковані форми містять спеціальну розмітку в XML, яка відповідає набору команд принтера.
Підключення принтера через сервер друку дозволяє виводити інформацію (включаючи штрих коди) безпосередньо за допомогою принтера, що забезпечує кращу якість друку. Тобто спеціалізована чекова інформація виводиться призначеними для цього апаратними та програмними засобами. Сервер друку може бути реалізований різноманітними способами - це можуть бути як серверні програми для настільного ПК, так і розширення для браузера або мобільні додатки. В налаштуваннях принтера (у профілі користувача) задається адреса сервера, куди браузер відсилатиме набір команд у вигляді масиву байтів у форматі JSON (наприклад "[27,116,17]"). Завдання сервера друку перенаправити ці команди на принтер за допомогою будь якого інтерфейсу підключення.

Готові реалізації сервера друку

Для ESCPOS сумісних принтерів

Обидва рішення можуть бути використані як готові (у випадку USB принтера), або взяті за основу для власної реалізації.
Якщо використовуются окремі принтери для чеків та етикеток можна запустити два екземпляри програми. Тільки мають бути задані різні порти. Наприклад 8080 і 8082


Програма для Node.js Завантажити

Кросплатформовий варіант для NodeJs. Запуск стандартний:
npm install
node index.js
Проект використовує бібліотеку node-escpos, яка дозволяє підключити як USB принтер, так і за допомогою інших інтерфейсів. Адреса та порт сервера задається в config.json. Для принтера можливо знадобиться вказати id вендора та продукта (залежить від способу підключення).


Программа для Windows Завантажити

Програма для встановлення USB принтерів звичайними користувачами Windows. Запускається із папки bin/PrintServer.exe. Вимагає встановленого фреймворка .Net6.0. Для попередніх версій Windows можна запустити повну збірку з папок win-x64 або win-x86 для 64- або 32-розрядних версій відповідно.
В файлі appsettings.json потрібно зазначити назву принтера, так як вона написана в системі (перелік принтерів в налаштуваннях).

Обидві програми можна перевірити з браузера, набравши http://127.0.0.1:8080/test.
Робочий адрес http://127.0.0.1:8080/print задається в налаштуваннях профiлю користувача складу.
Адреса сервера друку за замовчуванням може бути змiнена в конфігупвційному файлі.

Вузькі принтери зазвичай підтримують один із двох (або обидва) режимів друку - receipt (ESC/POS) для чеків та label (tspl/tspl2) для етикеток. У налаштуваннях принтера (профіль користувача) необхідно встановити в якому режимі принтер. (Етикетки можна друкувати і в режимі receipt).
В режимі label можна використовувати Zebra та інші строкові протоколи.
Шаблони для чекового (receipt) режиму зберігаються у файлах з ім'ям, що закінчується на _ps (наприклад, poscheck_bill_ps.tpl) для режиму label на _ts (наприклад item_tag_ts.tpl ). Як і всі шаблони їх можна катомізувати додавши до кінця імені _custom щоб не перезатирало при оновленні.
Для розмітки шаблонів відповідно використовуються спеціальні теги, що перетворюються на ESC/POS команди (див. нижче) або безпосередньо команди tspl/rspl2 (див. документацію до принтера)

Опис тегів шаблонів друкованих форм для ESC/POS принтера

Шаблон повинен відповідати структурі XML. Як правило, теги визначають відповідні команди для принтера. Теги можуть мати обов'язкові або необов'язкові атрибути. Також реалізація декотрих тегів як, наприклад, cut або beep залежить від моделі принтера. Некоректно вказані теги будуть пропущені.
Опис тегів
Тег Приклад Опис
text <text>Hi, dude</text> Текст в UTF-8
font <font>a</font> Шрифт (a abo b). Може мати атрибут bold="true"
size <size height="2" width="2"></size> Розмір тексту. Обов'язкові атрибути height та width. Значення - коефіцієнти ( 1 - 8)
align <align>center</align> Вирівнювання (left, center, right)
separator <separator>*</separator> Строка символiв
barcode <barcode type="code128">1234567890</barcode> Штрих код. Обов'язковий атрибут type ('code128','code39','EAN13').
Може мати атрибути height (0-255) та width (2 - 6)
qrcode <qrcode>http://mysite.ua/</qrcode> QR код. Може мати атрибут size від 1 до 24. Наприкдад size="12"
newline <newline></newline> Перевід строки
cash <cash>2</cash> Відкрити касовий ящик. Пін 2 або 5
cut <cut></cut> Відрізати після друку.
partialcut <partialcut></partialcut> Частково відрізати після друку.
beep <beep></beep> Звуковий сигнал
color <color>0</color> Колір. Може приймати значення 0 або 1
commands <commands>27,116,17</commands> Послідовність команд принтера. Байти (0 - 255) через кому
row,col <row>
<col length="22" >11.11.2022</col><col align="left" length="10" >100.00</col>
</row>
Друк данних по колонкам у вигляді таблиці. Колонка повинна мати обов'язковий атрибут length - ширина стовпця в символах. Сума не може перевищувати ширину друку, задану в налаштуваннях (за замовчуванням 32 символи). Колонка може мати атрибут align="left" для вирівнювання тексту всередині колонки. Текст, що виходить за межі колонки, буде обрізаний.


Підключення телеграм чат-боту

Бот створюється стандартним способом за домомогою @BotFather. Токен, котрий буде при цьому сгенеровано, вводиться в загальних налаштуваннях. Після цього треба активувати діалог з новоствореним ботом. Перелік команд - /help. Щоб отримувати повідомлення потрібно залогінитись тим самим способом, як і на сайті.

Iнтеграція з CheckBox

Для відправки чеків в ДПС яерез CheckBox потрібно ввімкнути модуль в загальних налаштуваннях та вкзати в довіднику кас (POS терміналів) що даний термінал використовує фіскалізацію. Також необхідно ввести ліцензійний ключ та пін код касира, отримані з налаштувань кас в особистому кабінеті CheckBox.
Аналогічно вбудованому ПРРО перед початком роботи необхідно відкрити зміну в АРМ касира та закрити після закінчення роботи.

API для iнтеграцiї з боку зовнiшнiх систем.

API призначено для iнтеграцiї зi стороннiми системами та мобiльними додатками. За допомогую API можна синхронiзувати довiдники номенклатури та контрагеннтiв, отримувати та створювати документи, та iн.
Опис API за адресою <сайт складу>/api/help

Iнтеграція з ВчасноКаса

Для відправки чеків в ДПС яерез ВчасноКаса потрібно ввімкнути модуль в загальних налаштуваннях та вкзати в довіднику кас (POS терміналів) що даний термінал використовує фіскалізацію. Також необхідно ввести токен доступу, отриманий з налаштувань кас в особистому кабінеті ВчасноКаса.
Аналогічно вбудованому ПРРО перед початком роботи необхідно відкрити зміну в АРМ касира та закрити після закінчення роботи.

Iнтеграція з ВчасноДокумент

Модуль для відправки документів в сервіс з можливістю накладання цифрового підпису (КЕП).
Перед початком роботи потрібно отримати токен з налаштувань компанії в сервісі і задати його в налаштуваннях відплвідної компаії в довіднику компаній. ЄДРПОУ компаії також повинно відповідати заданому в компаії з Вчасно.
На сторінці переліку документів можна відібрати документи для відправки в сервіс, або відмітити непотрібні документи (ніби як відправлені), щоб більше не виводились у переліку. Також можливо вибрати компанію (в довіднику компаній), в якій завантажено приватний ключ для накладання ЕЦП (КЕП) аналогічно, як і в модулі РРО. В такому разі документ відправиться в сервіс вже підписаним.