Just shipped — модальное окно оплаты со сдачей, отмена заказа с подтверждением
Оплата открывается модальным окном во всех трёх каналах: способ оплаты, бонусы и сертификат, поле «Получено» — сдача считается на лету (D-152) · Кассир отменяет неоплаченный заказ сам — с подтверждением «точно выйти, не сохраняя заказ?», места мгновенно в продаже (D-153) · Сплит нал+карта пришёл в кафе и доп-продажи: одна семантика во всех трёх каналах — отчёты и чек ПРРО (CASH+CASHLESS) считают деньги одинаково, over-pay отбивается до денег (D-149) · Возврат по номеру билета: кассир сканирует билет гостя и попадает прямо в заказ (D-150) · Кассир больше не видит мёртвую вкладку «Возврат» — она есть только у ролей с правом возврата (D-151) · Билет оплачивается частью картой, частью наличными — Z-отчёт и ДПС видят оба платежа как они были (D-145) · Обрыв связи с кассой гасится сам: чеки-должники дорегистрируются при восстановлении связи, вплоть до усыновления чеков, которые касса уже приняла (D-147) · «Без фискализации» стало честнее: карточные деньги регистрируются всегда, наличные — по выбору владельца (D-148) · Расписание на экране покупателя — карточки фильмов со временами-чипами, весь день без скролла (D-146) · Невыкупленная бронь сама возвращает места в продажу за 30 минут до сеанса (D-144) · Кассир бронирует места без оплаты — гость выкупает позже любым способом, список броней сеанса с выкупом и снятием прямо над схемой (D-143) · Касса по LAN-адресу больше не падает на оформлении заказа — фоллбек crypto.randomUUID для не-HTTPS (D-143.1) · Продажа без фискального чека — отдельное право fiscal.skip: у менеджеров есть, у кассира нет (но выдаётся персонально), сервер отвечает 403 (D-141) · У каждой кассы свои принтеры билетов и чеков — назначаются в Back Office, печать через device-слой без диалогов ОС (D-142) · Служебные вносы/выносы кассира входят в ожидаемую наличность Z-отчёта — инкассация посреди смены больше не выглядит недостачей (D-139) · Owner-панель показывает фискальные тревоги ЛЮБОЙ локации сети с её именем, не только выбранной (D-140) · Залы с числовыми рядами «Ряд 1, 2, 3…» — как в кинотеатре: двузначный ряд не путается на билете («3-7»), существующие буквенные залы живут как раньше (D-138) · Киоск: тач-чипы «Сегодня/Завтра/…» и «Все залы / зал» над сеткой сеансов — залы только выбранного дня, сброс для следующего гостя (D-137) · Касса: выбор даты ‹ › и зала («все / конкретный») в списке сеансов + тот же фильтр в BO-«Репертуаре» — фильтры никогда не трогают начатую продажу (D-136) · Импорт репертуара от дистрибьютора: любой фид по mapping-правилам, ключи в шифротексте, SSRF-гард (D-135) · Дистрибьюторы (D-134) · ML-советник авторасписания (D-133) · Auto-schedule: the kinoplan optimizer ported 1:1 (D-132) · Paid-module licensing: the vendor switches Кіноплан per tenant, the gate answers 403 and the client menu hides it (D-131, first Licensing slice) · Amending a published day: cancel a show (sales close, history stays) or add an extra one that sells immediately (D-130) · Rotation list: the day plan offers only the films the cinema actually runs (D-129, Кіноплан slice 3) · Platform.Repertoire — the day plan that publishes straight into open screenings (D-128, Кіноплан slice 2) · Кіноплан becomes a platform MODULE (ADR + film metadata ported, D-127) · Film card import from the user’s own Кіноплан service — search, one click, poster included (D-126, simulator-first) · Film cards managed in the Back Office — the schedule is built by picking a card (D-125) · Film posters and ticket prices on the guest screens — schedule, live sale view and the kiosk (D-124) · Customer display governed by workstation settings in the Back Office, deployed via OS autostart (D-123) · Customer-facing display: the guest watches their seats being picked on a second monitor (D-122) · the float and the till collection file themselves on the ПРРО when the shift opens and closes (D-121) · Cash in and out of the drawer (D-120) · per-sale fiscalization choice, and an audit trail that finally records failures (D-119) · fiscal alerts on the owner phone (D-118) · a watchdog for shifts nobody closed (D-117) · ПРРО credentials configured per location in the Back Office (D-116) · live status in the till header (D-115) · cashier-driven shift lifecycle — X-reports and Z-reports (D-114) · Checkbox certified across all three channels (D-111…D-112) · configurable location currency (D-113) · per-seat partial ticket refunds (D-109) · loyalty at ALL FOUR points of sale, kiosk included (D-108) · fiscal RETURN receipts across ALL channels (D-099…D-101) — tickets, cafe and retail, including partial refunds · manual discounts (D-096) · free escort seats (D-097) · certificate = advance (D-098)
D-122 adds the guest-side screen: the cashier opens a second browser window (🖥 in the till header), drags it onto the customer monitor, and it mirrors the sale over a BroadcastChannel — hall scheme with the picked seats pulsing ✓, the cart with prices, the payable total and a green «Оплачено — приятного просмотра» after payment; the window holds no token and talks to no API. It places itself on the guest monitor (Window Management API), reopens itself if the cashier closes it, and falls back to today’s schedule after five idle minutes. D-121 closes the D-120 gap: the counted float now files itself as a ПРРО service deposit when the till opens, and the declared cash leaves as a service withdrawal on close — before the Z-report, replay-safe, best-effort with a loud discrepancy when the register is down. D-096 adds audited manual discounts: a manager-only permission, a closed reason set and a configurable percent cap; the guest pays the payable, every report and the fiscal receipt (with an explicit negative «Знижка» line) agree with the drawer. D-097 closes group screenings: any cart seat can become a FREE escort (👥) — a real ticket at price 0, policy-capped per order, with at least one paid seat required. D-098 fixes the certificate tax semantics: the certificate SALE is the fiscal moment (advance), so spending it later is excluded from the ticket receipt. D-099…D-101 close the refund side across every channel: each refund registers a fiscal RETURN receipt mirroring what the sale registered — linked to the original and idempotent. Cafe and retail refund line by line, so the rule is one return receipt per refund EVENT: a partial return gets its own receipt, and a later full refund only reports the remainder. The tax record now reconciles with the ledger transaction for transaction. D-111 takes fiscalization from hypothesis to fact: the adapter written from documentation alone was wrong in four ways against the live ПРРО — most seriously, a refund without the is_return flag registers a SECOND SALE, and receipts carrying a discount were rejected outright. Sales and refunds now come back with real fiscal codes across tickets, cafe and retail — the cafe/retail refunds needed their own fix, because a real ПРРО reconciles every returned line against the original sale. D-114 closes a production blocker certification exposed: the fiscal shift was opened lazily and never closed, and an unclosed shift stops the register the next day — the cashier now ticks the ПРРО shift open, chooses whether closing the till takes the Z-report, and can pull an X-report any time. D-113 makes the trading currency a location setting instead of a constant in the clients, without ever reinterpreting money already booked. D-109 closes the last big gap at the till: a guest can hand back ONE ticket of three — that seat goes straight back on sale, its ticket is voided, and the order stays open for the seats they kept; a scanned ticket now blocks only its own seat, and discounts, bonuses and certificates come back in exactly the proportions they were paid. D-108 finishes the loyalty series at the self-service kiosk: the guest scans the same card, sees the balance and spends bonuses without a cashier — the machine may only LOOK a card up (customers.read), never register a guest or move a balance.
Up next — Next horizon, together
customer list paging · offsite backups & AccessControl (blocked on owner/hardware)
The whole candidate queue is delivered: kiosk snacks, partial refunds, reprints, retail receipts, CI (now including UI scenarios), backups, and the AccessControl ADR (extraction deferred until real turnstiles/offline cache). The requested loyalty series is delivered end to end: cards, earn/spend bonuses, certificates, discounts, group escorts. The loyalty series is closed end to end (D-093…D-108), and with per-seat ticket refunds (D-109) and customer list paging (D-110) the unblocked queue is empty. Checkbox is now certified against a live test cash register — real fiscal codes for both the sale and the return. Still blocked on the owner/hardware: offsite backups and AccessControl.