📖 Полное описание функций APKassa
Интернет-магазин, кассовый терминал и киоск самообслуживания – как они работают, откуда берутся данные и как настраиваются.
Общая архитектура: Все модули работают с одной базой данных. Данные изолированы по организациям – каждый юрлицо видит только свои товары, заказы и клиентов. Единая система управления позволяет синхронизировать кассу, сайт и терминал в реальном времени.
🛒 Интернет-магазин
Назначение: Приём заказов от покупателей через сайт (витрина). Покупатели выбирают товары, оформляют заказ и оплачивают онлайн (через ЮKassa) или при получении.
📦 Откуда берутся товары и категории?
- Товары и категории загружаются из таблиц
products и categories БД, фильтруются по org_id (организация).
- Управление товарами происходит в панели управления «Товары» (доступно администратору и менеджеру).
- Изображения товаров хранятся в папке
/uploads/products/, пути сохраняются в БД.
🛍️ Как работает корзина и оформление заказа?
- Корзина хранится в
localStorage браузера (покупатель может закрыть и открыть страницу – корзина сохранится).
- При оформлении заказа данные отправляются в
/shop/api/create_order.php.
- Заказ сохраняется в таблицу
orders, товары – в order_items. Привязка к org_id и cash_register_id.
- Если выбран способ оплаты «ЮKassa», создаётся платёж, покупатель перенаправляется на страницу оплаты. После оплаты статус заказа меняется на
paid.
🔧 Настройки интернет-магазина
- Название магазина, логотип, телефон, email, адрес, часы работы – задаются в карточке кассы (таблица
cash_registers).
- Стоимость доставки и порог бесплатной доставки – там же.
- Интеграция с ЮKassa – заполняются поля
yookassa_shop_id и yookassa_secret_key.
- Внешний вид и шаблон можно редактировать через файл
/shop/index.php и стили.
📊 Куда попадают заказы?
- Заказы отображаются в панели управления «Заказы» (для менеджера, старшего смены, повара, курьера – только по своей организации).
- Кассир видит заказы, привязанные к его кассе (
cash_register_id).
- В интерфейсе кассы (
/kassa1/) заказы также отображаются и доступны для обработки.
💳 Кассовый терминал (касса)
Назначение: Работа кассира: приём заказов, продажа товаров, оплата наличными/картой, печать чеков.
📦 Откуда берутся товары?
- Товары загружаются из таблицы
products, отфильтрованные по org_id и cash_register_id (касса).
- Категории из
categories.
- Остатки товаров обновляются при продажах и оприходовании.
🛍️ Как проходит продажа?
- Кассир выбирает товары из каталога, добавляет в корзину (на стороне сервера, сессия или БД).
- Оформляет заказ (создаётся запись в
orders и order_items).
- Принимает оплату (наличные, карта, ЮKassa). Статус заказа меняется на
paid.
- Чек печатается через фискальный регистратор (если настроен).
🔧 Настройки кассы
- Название магазина, телефон, адрес – в таблице
cash_registers.
- Настройка ЮKassa (ключи) – там же.
- Выбор кассы для кассира – при создании пользователя (роль
cashier).
- Смена кассира выполняется администратором или менеджером через раздел «Сотрудники».
📊 Куда попадают операции?
- Все продажи сохраняются в
orders и order_items.
- Изменение остатков товаров – автоматически обновляется
stock в products.
- Финансовые данные доступны в отчётах («Отчёт»).
📱 Киоск самообслуживания (терминал)
Назначение: Покупатель самостоятельно выбирает товары, оплачивает и получает заказ. Работает на планшете или сенсорном экране.
📦 Откуда берутся товары?
- Те же таблицы
products и categories, фильтр по org_id.
- Товары отображаются крупными плитками для удобства нажатия.
🛍️ Как происходит заказ?
- Покупатель выбирает товары на экране, они добавляются в корзину (хранится в сессии сервера).
- Можно войти как клиент (по телефону) – тогда применяются бонусы и скидки (берутся из таблиц
customers и customer_groups).
- При оформлении заказа создаётся запись в
orders и order_items.
- Оплата через ЮKassa (QR-код или ссылка). Если терминал оборудован NFC, можно добавить оплату картой через Android-приложение (требуется отдельная разработка).
🔧 Настройки киоска
- Выбор организации – через параметр
?org_id= или ?inn=.
- Дизайн и поведение настраиваются в файле
/kiosk/index.php.
- Подключение ЮKassa – те же ключи, что и для интернет-магазина (из кассы).
- Для работы требуется планшет с сенсорным экраном и доступом в интернет.
📊 Куда попадают заказы?
- В ту же таблицу
orders, что и заказы из интернет-магазина и кассы.
- Они отображаются в панели управления и в кассовом интерфейсе.
- Статус заказа обновляется автоматически после оплаты.
🔄 Взаимосвязь модулей
| Модуль | Источник данных | Куда сохраняет | Кто видит |
| Интернет-магазин | products, categories | orders, order_items | Все (в зависимости от роли) |
| Кассовый терминал | products, categories | orders, order_items | Кассир, менеджер, админ |
| Киоск самообслуживания | products, categories | orders, order_items | Все (в зависимости от роли) |
| Панель управления | Все таблицы | Вносит изменения во все таблицы | Админ, менеджер |
Единая база данных – все модули работают с одними и теми же данными. Это гарантирует актуальность остатков, заказов и клиентов во всех точках продаж.
Что такое панель бухгалтера и кто имеет к ней доступ?
▼
Панель бухгалтера (/buh/) предназначена для финансового учёта. Доступ имеют только пользователи с ролью администратор и бухгалтер (роль buh). В ней можно просматривать сотрудников, складские остатки, продажи, формировать отчёты и работать с документами.
Как добавить роль бухгалтера?
▼
В разделе «Сотрудники» панели управления при создании или редактировании пользователя выберите роль «Бухгалтер». Только администратор может назначать эту роль.
Какие разделы доступны в панели бухгалтера?
▼
- Сотрудники – список сотрудников, их зарплаты и должности.
- Склад – товарные остатки, приходы и расходы.
- Продажи – все заказы, выручка, средний чек.
- Отчёты – финансовая аналитика за период.
- Документы – счета, накладные, акты (в разработке).
🧾 Технологические карты и ингредиенты
Этот модуль позволяет управлять составом блюд и контролировать складские остатки ингредиентов.
📦 Ингредиенты
- Хранятся в таблице
ingredients, привязаны к организации (org_id).
- Имеют единицу измерения, текущий остаток и минимальный запас.
- Добавляются и редактируются через раздел «Ингредиенты» (доступен менеджеру и администратору).
- Приход ингредиентов можно оформить через раздел «Приход товара» (выбор ингредиента, указание количества и цены).
📋 Технологические карты
- Привязываются к товару (блюду) через таблицу
recipes.
- Содержат пошаговый процесс приготовления, время приготовления, количество порций.
- Состоят из ингредиентов (таблица
recipe_items) с указанием количества и единицы.
- Создаются и редактируются через страницу «Техкарта» (доступна из карточки товара).
🔄 Автоматическое списание
- При переводе заказа в статус «В сборке» или «Готов» система запускает списание ингредиентов.
- Списание происходит по API
/api/consume_ingredients.php.
- Если остатков не хватает, заказ не переводится в следующий статус, выводится ошибка.
- Все движения записываются в таблицу
stock_movements.
📊 Контроль остатков
- На дашборде менеджера и старшего смены отображается виджет «Нехватка ингредиентов».
- Показывает все ингредиенты с остатком ниже минимального.
- Рекомендуется заказывать недостающее количество.