C cenaly.com
Почати безкоштовно

Друк на кухні

Тікети по станціях, стікери 60×40 та касові документи через міст обладнання

On this page 15

Друк на кухні та в залі

Увесь фізичний друк закладу йде через Cenaly Hardware Bridge — невелику програму на касовому пристрої, до якого підключені принтери. Браузер не друкує на термопринтер напряму: він надсилає документ мосту, а міст уже говорить із залізом мовою ESC/POS.

Через міст друкуються: кухонні тикети за станціями, стікери на товар і на пакет, чек продажу й повернення, пречек, X- і Z-звіти та манифест пакета на екрані видачі.


Кухонні тикети за станціями#

Тикет має приїжджати туди, де готують страву: холодний цех — на свій принтер, гриль — на свій, бар — на свій.

Налаштування — у Кухні (KDS) → панель «Цехи», таблиця «станція → принтер» усередині неї. За кожною станцією задаються:

Поле Що означає
Принтер конкретний пристрій моста; порожньо — друкувати на принтер із роллю «кухонний»
Резервний принтер куди піде тикет, якщо основний не відповідає
Хто друкує вимкнено, каса або KDS
Ширина стрічки 42 символи (80-мм стрічка) або 32 (58-мм)
Кодова сторінка див. нижче
Стікери на товар друкувати наліпки при переведенні тикета в «готово»

Список принтерів підтягується в локального моста, тому налаштовувати станцію потрібно з тієї машини, до якої принтер фізично підключений.

Що потрапляє в тикет. Великий шрифт (кухар читає папірець через стіл), назва страви, кількість, модифікатори окремим рядком під стравою, коментар («без цибулі»), номер гостя і курс подачі, якщо замовлення за ними розкладено. Цін і підсумків у кухонному тикеті немає.

Друкується лише нове. Повторний тап офіціанта не друкує другий тикет: система пам'ятає, які рядки вже поїхали на станцію. Якщо товар додали або змінили кількість — поїде тикет-дозамовлення, а не повний дубль замовлення.


Стікери на товар і на пакет#

Наліпка 60×40 мм на склянці та на коробці вирішує дві проблеми видачі: пакети перестають плутатися між кур'єрами, а гість бачить на склянці, що молоко справді безлактозне — модифікатор більше не залишається лише на кухонному тикеті.

  • стікер на товар — друкується при переведенні тикета в «готово», якщо в станції увімкнено відповідне налаштування;
  • стікер на пакет — друкується на видачі: екран запитує число пакетів і друкує «Пакет 1 з 3», «2 з 3» і так далі;
  • манифест пакета — папірець усередині пакета з повним складом замовлення, включно з модифікаторами окремими рядками: за ним кур'єр і гість звіряють комплектність, а спір «не доложили товар» з агрегатором закривається друкованим доказом. Кнопка — на екрані Видача (Expo).

Стікери друкує пристрій із роллю «етикетувальний принтер»; якщо такої ролі на мості немає, наліпка піде на звичайний чековий принтер.


Касові документи#

Документ Через міст Коментар
Чек продажу / повернення так фолбек — друк браузером
Пречек (рахунок гостя) так нефискальний, з явним підписом на папері
X- і Z-звіти так див. Касова зміна
Манифест пакета так екран Видача (Expo)
Кухонний тикет, стікери так без браузерного фолбеку

Репринт виданого чека завжди записується в журнал небезпечних операцій; менеджерський PIN він запитує лише в посад, де увімкнено «репринт під PIN» — див. Контроль втрат.

Фіскальний чек — окрема історія: він друкується фіскальним реєстратором і підкоряється законам країни, див. Фіскалізація.


Черга друку і що означає результат#

У моста restart-safe черга з ретраями: якщо принтер офлайн, завдання не губиться, а чекає й повторюється. Індикатор черги видно в шапці каси.

Зависле завдання можна зняти. Класична біда кухні: принтер зажував папір, його лагодять пів години, а коли вмикають — він випльовує пів сотні застарілих тикетів. З черги в шапці каси завдання скасовується по одному: міст ставить позначку «скасовано» і, коли принтер оживе, просто пропустить його. Якщо завдання вже пішло в друк, скасування чесно скаже про це — папір у цьому разі вийде.

Кнопка «скасувати» є лише у завислих — тих, що чекають на принтер довше трьох хвилин. Свіжі завдання видно рядком, але зняти їх не можна, і це зроблено навмисно: секундна заминка (принтер прокинувся, смикнули кабель) — норма, міст допечатає сам, а кнопка поруч із таким завданням означала б загублений чек.

Результат друку — чотиризначний, і для касира це різні новини:

Результат Що сталося
Надруковано міст підтвердив фізичний друк
У черзі міст прийняв завдання, але принтер недоступний — гість чек на руки не отримав
Браузером моста немає або він не прийняв документ, друк пішов через діалог браузера
Не надруковано не вдалося жодним способом

За результату «у черзі» браузерний фолбек не запускається — інакше один чек надрукувався б двічі.

Завдання ідемпотентні: повторне надсилання того самого документа не дає другої бумажки.


Кодові сторінки та нелатиниця#

Термопринтер не знає, що таке UTF-8: він малює по гліфу на байт із вибраної однобайтової таблиці. Тому кодова сторінка задається на кожен налаштований принтер:

Значення Що робить
auto (за замовчуванням) знайшов кирилицю — перемикає голову на CP1251; латиниця та латиниця-розширена (турецька, польська, албанська) залишаються як є
cp1251 / cp866 явний вибір кириличної таблиці — дешеві головки бувають з однією з двох
georgian-academy / georgian-ps / georgian-expert розкладки шрифтового ПЗП грузинських пристроїв
utf8 історична поведінка: на будь-якій нелатиниці — кракозябри

Про грузинську чесно. Яку таблицю «розуміє» конкретна головка — властивість фізичного пристрою, у специфікації протоколу цього немає; тому таблиця вибирається за пристроєм. Грузинської кодової сторінки у стандарті ESC/POS немає взагалі, тож раніше «ხინკალი» виїжджало романізацією — khinkali: читається, але замовлено було не це.

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

Поведінка керується галочкою «растр для нелатиниці» у кожного пристрою (за замовчуванням увімкнена, є і на сторінці моста, і в хмарному розділі «Обладнання»). Знімете — повернеться попередня романізація: це потрібно для рідкісних головок, які не розуміють растрового друку.

Ієрогліфи (китайська, японська, корейська), іврит та арабиця до шрифту навмисно не увійшли: у письменностях справа наліво рядок вийшов би задом наперед, і це гірше за нинішній результат. Панель станцій на кухні чесно показує, що буде з рядком: «піде картинкою» або «ні таблиці, ні шрифту немає».

Турецька, польська та албанська латиниця навмисно не проганяються через CP1251: там ş, ğ, ą перетворилися б на ?.


Що потрібно для запуску#

  • Міст на касовому комп'ютері — Cenaly Hardware Bridge. Увесь фізичний друк іде через нього.
  • Принтер, підключений до цього ж комп'ютера — USB, LAN або Bluetooth; міст знаходить пристрої сам.
  • Мапінг «станція → принтер» — інакше тикети нікуди маршрутизувати.
  • Рулон потрібного формату для стікерів товару й пакета.
  • Станції у страв — тикет збирається за станцією товару (KDS).

Обмеження#

  • Міст друкує лише зі свого комп'ютера. Браузер не достукається до моста на сусідньому ПК: ставте міст на кожен касовий пристрій або використовуйте друк через хмару на принтер іншого ПК.
  • Етикеткові принтери TSPL/ZPL на живому залізі не перевірені — зараз етикетки друкуються растром на чековому принтері.
  • Ширину стрічки вирішує пристрій. Вона береться з налаштування принтера, інакше з моделі фіскального реєстратора, інакше приймається безпечною; ширина документа 80 мм на фіскальний реєстратор не переноситься, бо реєстратор не переносить рядок, а обрізає його разом із сумами.
  • Пречек не залишається в черзі. Якщо чековий принтер налаштований, але офлайн, рахунок гостю друкується на фіскальному реєстраторі: бумажка потрібна зараз, а копія через годину поверх оплаченого замовлення — це друга бумажка. Чек продажу поводиться інакше — він чекає на повтор.
  • Пречек не йде на кухонний принтер — для рахунку гостю такий принтер вважається непридатним, і робота йде на касу.

Усунення неполадок#

Тикет не надрукувався. Перевірте статус моста: якщо він офлайн, завдання стоїть у черзі друку й піде після відновлення зв'язку з ним — черга переживає перезапуск.

Друкується не на тому принтері. У станції не задано власний принтер, і резолвер вибрав «будь-який доступний». Пропишіть мапінг станцій явно.

Замість літер — ієрогліфи або порожні квадрати. Проблема кодової сторінки принтера: увімкніть растровий шрифт — він малює текст картинкою і друкує будь-які мови.

Обрізаються суми справа. Указано завелику ширину стрічки: поставте реальну ширину в опції пристрою.

Стікери виходять кривим розміром. Перевірте формат рулону й те, що друк іде на етикетковий принтер, а не на чековий (зараз етикетки на чековому друкуються растром).


Пов'язані розділи#


Часті питання#

Тикет надрукувався двічі — чому?#

Найімовірніше, у станції увімкнено друк і на касі, і на KDS. Це два різні пристрої з двома мостами, і кожен надрукував свій примірник. Залиште одне значення в полі «Хто друкує».

Принтер вимкнули — замовлення загубилися?#

Ні. Завдання йде в чергу моста й друкується, коли принтер оживе. Але поки воно в черзі, паперу фізично немає — інтерфейс це прямо каже.

Чи можна друкувати на кухню без моста?#

Кухонні тикети та стікери — ні, вони йдуть лише через міст. Касові документи мають браузерний фолбек: друк через звичайний діалог друку. Виняток — точка, де із заліза лише фіскальний реєстратор: там чек друкує сама каса, і браузерний фолбек не вмикається.

Чому в списку принтерів порожньо?#

Список береться в моста на цьому пристрої. Якщо міст не запущено або принтер під'єднано до іншої машини, пристрої не з'являться — налаштовуйте станцію з тієї машини, де принтер фізично під'єднано.

Модифікатори друкуються в маніфесті пакета?#

Так. Кухонний тикет, стікер товару й маніфест пакета збираються одним форматом рядка: назва страви, під нею модифікатори окремими рядками та коментар. Так три папірці за одним замовленням виглядають однаково й звіряються очима.

Was this article helpful?