Розширення системи, які в разі потреби можна підключити як додатковий функціонал.
Безпосередньо на роботу основної системи не впливають.
Підключити потрібний модуль можна в загальних налаштуваннях, після чого з'являються відповідні пункти меню.
Модуль до складської програми дозволяє отримувати нові замовлення з магазину, оновлювати в магазині
статус виконаних замовлень, додавати в магазин нові товари, а також оновлювати зі складу кількість
і ціни товарів.
Для роботи необхідно встановити додаток для Опенкарт. Доповнення розширює стандартне API
і може використовуватись для інтеграції з іншими складськими програмами.
Доповнення до ІМ розташоване на GitHub, там же
опис
і керівництво по установці.
Для автоматичної синхронізації (оновлення цін, кількості та імпорту замовлень) в корені проекту є скрипт
cron_updateoc.php,
який можна додати до системного планувальника (cron або task sheduler). Також його можна викликати за адресою
https://<адреса сайту>/cron_updateoc.php. На початку скрипта встановлюється назва статусу, з яким імпортуються
замовлення.
У Модулі-> Опенкарт-> Налаштування потрібно вказати адресу ІМ, а також аккаунт API, який створюється в адміністративній панелі Опенкарт.
На сторінці Модулі-> Опенкарт-> Замовлення в складській системі вибираємо статус замовлень ІМ, які вважаються новими і завантажуємо список з магазину. Потім імпортуємо в складську програму. На кожний запис створюється документ Замовлення. На цій сторінці можна оновити статуси замовлень в ІМ після їх обробки.
На сторінці Модулі-> Опенкарт-> Товари можна експортувати нові товари зі складу в магазин, а також імпортувати з магазину, якщо товар там виявився раніше. Відповідність товарів забезпечується по артикулу. Так само можна в будь який момент відновити в магазині ціни і кількість у відповідності зі складом.
Модуль по функціональності аналогічний модулю інтеграції з Опенкарт.
У Модулі-> WooCommerce-> Налаштування потрібно вказати адресу ІМ, а також ключі, які створюються в адміністративній панелі магазину.
Модуль по функціональності аналогічний модулю інтеграції з Опенкарт.
У Модулі-> PromUA-> Налаштування потрібно вказати адресу ІМ, а також ключ, який створюється в адміністративній панелі магазину.
Модуль по функціональності аналогічний модулю інтеграції з Опенкарт.
У Модулі->Хорошоп-> Налаштування потрібно вказати адресу сайтуЮ логін та пароль (зі списку адмінів в хорошопі) .
Невеликий модуль онлайн каталогу інтегрований з бухобліком і складським обліком. Особливість каталогу -
ієрархічна система атрибутів товару,
що дозволяє автоматично генерувати фільтри пошуку товару і сторінку порівняння.
Наприклад, для категорії побутова техніка можна задати атрибути Вага і Розміри.
Виставити каталог домашньою сторінкою можна в налаштуваннях модуля.
Перейти в адмінку можна за адресою http: //<адреса сайту>/store.
На основі замовлень магазину автоматично створюються замовлення в журналі замовлень.
Для налаштування магазину необхідно вибрати склад і вказати його в налаштуваннях модуля
інтернет-магазину.
Після цього товари будуть доступні в редагуванні каталогу в модулі магазину.
Для відображення в каталогу в довіднику ТМЦ повиннин бути тип Товар та вказана категорія.
Дизайн по дефолту - на Twitter Bootstrap.
Організатор для зберігання неструктурованих даних в ієрархічному вигляді. По суті вбудований проект Notty. Оскільки користувачі є користувачами однієї корпоративної системи, додана можливість спільного перегляду і редагування топіків.
Менеджер завдань. Дозволяє призначати співробітникам різні завдання, що дає можливість контролювати хід
виконання.
Для завдань можна вказати пріоритет, поточний статус, час виконання на кожному етапі,
додавати коментарі і прикріплювати файли. Може використовуватися як елемент CRM, наприклад, при роботі над
договорами
клієнтів. Завдання групуються в проекти.
Також є можливість для співробітників фіксувати виконану роботу в тайм-трекері
із зазначенням номеру завдання.
Для адміністратора є таблиця статистики по проектам і співробітникам.
Модуль призначений для автоматичної відправки чеків і z-звітів в податкову.
Для роботи модуля також потрібно ввести реєстраційні дані РРО з особистого кабінету в податковій. У довідник
компаній ввести
назву компанії, ЄДРПОУ та ІПН (для платників ПДВ) та налаштувати роботу з приватним ключем та сертифiкатом. Також
потрібно вказати назву та адресу
торгової точки, фіскальний і локальний номери в довіднику POS терміналів. У разі використання стороннього ключа
(наприклад, ключа ПриватБанку) необхідно зареєструвати в особистому кабiнетi податкової ідентифікатор ключа,
завантаженого у програму.
Робота з фіскалізованими чеками ведеться, в основному, в АРМ касира. Перед початком роботи необхідно відкрити
зміну для даного POS терміналу.
Після закінчення роботи по клiку "закриття зміни" автоматично формується z-звіт і закривається зміна.
Так само фіскалізація при виборі відповідного POS терміналу, на якому відкрита зміна вiдбувається
при внесенні оплати в журналі оплат і в накладнiй на повернення.
Дані з податкової (РРО, зміни і відправлені документи) можна переглянути на сторінці в модулі фіскалізації.
В якості бібліотеки використовується проект ppolib. Додаткове ПЗ при цьому не потрібне, але бібліотека працює досить повільно.
Зокрема, завантаження ключа займає до хвилини і може не виконатися на повільних серверах, тому бажано встановити
тайм-аут роботи в кілька разів більше, ніж стандартні 30 сек,
або використати зовнішній сервер.
Завантаження (перевірка) ключів та сертифікатів виконується у довіднику POS терміналів. .
Модуль дає можливість створювати відправки через Api Нової Пошти та вiдслiдковувати їх статус.
Перед початком використання в налаштуваннях модуля необхідно додати ключ доступу і дані відправника за
замовчуванням.
Декларація НП створюється в журналі Продажі при виборі в списку потрібної ТТН в статусi Готово до вiдправки.
Перегляд і управління деклараціями на стороні НП здійснюється зі спеціальної сторінки в модулі.
Перед початком роботи в налаштуваннях модуля необхідно оновити локальні довідники міст та відділень.
Для прискорення роботи довідники міст і відділень попередньо скачуються і перiодично оновлюються
натисканням кнопки Оновити на сторінці налаштувань модуля.
Файли скачуються в папку uploads (з правом запису) в корені сайту.
Бот створюється стандартним способом за домомогою @BotFather. Токен, котрий буде при цьому сгенеровано, вводиться в загальних налаштуваннях. Після цього треба активувати діалог з новоствореним ботом. Перелік команд - /help. Щоб отримувати повідомлення потрібно залогінитись тим самим способом, як і на сайті.
Для відправки чеків в ДПС яерез CheckBox потрібно ввімкнути модуль в загальних налаштуваннях та
вкзати в довіднику кас (POS терміналів) що даний термінал використовує фіскалізацію.
Також необхідно ввести ліцензійний ключ та пін код касира, отримані з налаштувань кас в особистому кабінеті CheckBox.
Аналогічно вбудованому ПРРО перед початком роботи необхідно відкрити зміну в АРМ касира та
закрити після закінчення роботи.
API призначено для iнтеграцiї зi стороннiми системами та мобiльними додатками.
За допомогую API можна синхронiзувати довiдники номенклатури та контрагеннтiв,
отримувати та створювати документи, та iн.
Опис API за адресою <сайт складу>/api/help
Для відправки чеків в ДПС яерез ВчасноКаса потрібно ввімкнути модуль в загальних налаштуваннях та
вкзати в довіднику кас (POS терміналів) що даний термінал використовує фіскалізацію.
Також необхідно ввести токен доступу, отриманий з налаштувань кас в особистому кабінеті ВчасноКаса.
Аналогічно вбудованому ПРРО перед початком роботи необхідно відкрити зміну в АРМ касира та
закрити після закінчення роботи.
Модуль для відправки документів в сервіс з можливістю накладання цифрового підпису (КЕП).
Перед початком роботи потрібно отримати токен з налаштувань компанії в сервісі і
задати його в налаштуваннях відплвідної компаії в довіднику компаній. ЄДРПОУ компаії також повинно відповідати заданому в компаії з Вчасно.
На сторінці переліку документів можна відібрати документи для відправки в сервіс,
або відмітити непотрібні документи (ніби як відправлені), щоб більше не виводились у переліку. Також можливо вибрати
компанію (в довіднику компаній),
в якій завантажено приватний ключ для накладання ЕЦП (КЕП) аналогічно, як і в модулі РРО. В такому разі
документ відправиться в сервіс вже підписаним.
У програмі може бути використано два типи принтерів – широкий (А4) та вузький (чековий).
Широкий принтер призначений для виведення друкованих форм первинних документів (накладних тощо).
Підключається як звичайний системний принтер і не потребує будь яких налаштувань у програмі.
Вузький принтер призначений для друку чеків, квитанцій, а також цінників та етикеток.
Може бути підключений як системний або, при низькій якості друку, через додаткове ПЗ (сервер друку). Тип підключення
задається у профілі користувача.
Для вузького принтера створюються окремі шаблони друкованих форм у папці templates/printform,
структура яких залежить від типу підключення.
Якщо принтер підключений як системний, його друковані форми містять html розмітку як і форми стандартного широкого принтера, а
друк здійснюється браузером через системний драйвер.
Якщо принтер підключений через сервер друку (див. нижче), друковані форми (з суфіксом _ps або _ts ) містять спеціальну розмітку в XML, яка відповідає
набору команд принтера.
Вузькі принтери зазвичай підтримують один із двох (або обидва) режимів друку - receipt (ESC/POS) для чеків
та label (tspl/tspl2) для етикеток. У налаштуваннях принтера (профіль користувача) необхідно встановити в якому режимі принтер.
(Етикетки можна друкувати і в режимі receipt).
В режимі label можна використовувати Zebra та інші строкові протоколи для tspl/tspl2.
Шаблони для чекового (receipt) режиму зберігаються у файлах з ім'ям, що закінчується на _ps
(наприклад, poscheck_bill_ps.tpl) для режиму label на _ts (наприклад item_tag_ts.tpl ).
Як і всі шаблони їх можна катомізувати додавши до кінця імені _custom щоб не перезатирало при оновленні. Наприелад item_tag_ps_custom.tpl
Для розмітки шаблонів відповідно використовуються спеціальні теги, що перетворюються на ESC/POS команди (див. нижче)
або безпосередньо команди tspl/rspl2 (див. документацію до принтера)
printforms/item_tag.tpl - шаблон етикетки товару
printforms/item_qr.tpl - шаблон QR коду товару
printforms/item_sticker.tpl - шаблон стікера вагового товару
printforms/pays_bill.tpl - квитанція про оплату
printforms/doc/*_bill.tpl - решта шаблонів відповідають назві документів
Шаблон повинен відповідати структурі 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" для вирівнювання
тексту всередині колонки. Текст, що виходить за межі колонки, буде обрізаний.
Для реалізації логіки в шаблоні використовується синтаксис шаблонізатора Mustache
Позаяк програма працює в онлайн режимі через браузер - підключення принтерів (крім системного принтера на який брауер може друкувати безпосередньо )
та торгівельного обладнання проблематично без допоміжного забезпечення.
POS сервер реалізований як локальний веб-сервер, що приймає команди, що відправляються з браузера як на будь-який інший веб-сервер
і виконує роль проміжної ланки
POS сервер виконаний у двох варіантах для Віндовс та кроссплатформенний для NodeJs.
Обидва рішення – проекти з відкритим кодом, розташовані на GitHub відповідно за адресами
POS Server Net (Windows)
POS Server Node
В обох проектах реалізований режим принт сервера для чекових принтерів і принтерів етикеток, що підключаються по USB.
Реалізація інших режимів залежить від обладнання та покладається на сторонніх розробників. Для роботи зі складом у серверах
передбачений конкретний інтерфейс обміну (API) командами і даними, що розуміється складською програмою, однаковий для будь-якого обладнання.
Адреса та порт серверів задається в appsettings.json та config.json відповідно За замовяанням http://127.0.0.1:8080. Сервери повинні
бути розташованим на тому самому компьютері обо в тій самій локальній мережі де користувач прицює з браузера.
Перевірити що сервер стартував нормально можна набравши в браузері http://127.0.0.1:8080/check.
Звісно ж сервер можу бути доданий в меню автостарту Віндовс.
Дана реалізація може бути як приклад - POS сервер може бути реалізований на будь-якому іншому технологічному стеку, якщо буде реалізований аналогічний інтерфейс обміну
з складом.
Підключення принтера через сервер друку дозволяє виводити інформацію (включаючи штрих коди) безпосередньо за
допомогою спеціальних команд принтера, що забезпечує кращу якість друку.
Тобто спеціалізована чекова інформація виводиться призначеними для цього апаратними та програмними засобами.
Обидві програми можна перевірити з браузера, набравши http://127.0.0.1:8080/testprint ( http://127.0.0.1:8080/testprintlabel для принтера етикеток в режимі Label).
Повинна надрукуватись строка на принетрі.
.
В варіанті принт сервера для віндовс (можна зкачати готовий сервер)
в конфігураційному файл appsettings.json повиненна бути прописана назва принтера відповідно тому як вона записана в системі
в списку принтерів.
Робочий адрес (за замовчанням http://127.0.0.1:8080 ) задається в налаштуваннях профiлю користувача складу.
Позаяк електронні ваги мають різне підключення і ПЗ користувачеві необхідно самостійно реалізуватим
інтерфейс підключення.
В POS сервері повиннен бути реалізований метод /scale, який поверне вагу в кг
Адреса серверу задається в профілі коритсувача аналогічно серверам друку
(скоріше за все це буде той самий сервер). В такому випадку при друку стікера
вогового товару в довіднику ТМЦ або в АРМ касира біля поля вводу кількость буде
кнопка зчитування даних з електронних ваг.
В розробці