Биржа: учёт товара от накладной до продажи с рейса

(Корпоративный портал · кабинеты · PWA)
ОтрасльОПТОВАЯ ТОРГОВЛЯ, СКЛАД, ЛОГИСТИКА, СВЕЖИЕ ОВОЩИ
УслугаВЕБ-ПЛАТФОРМА, API, РОЛИ, МОБИЛЬНЫЙ КАБИНЕТ ПРОДАВЦА
ПлощадьЗакупщик · логист · продавец (PWA) · бухгалтер · админ
Год2025—2026

«Биржа» — внутренний контур учёта для оптовой торговли свежим товаром: партии, кг, ящики, деньги и рейсы в одном потоке; роли разделены, полевые продажи — через PWA.

Tagline Накладная → склад → рейс → продажа · роли и PWA

Посмотреть в продакшене

Биржа: учёт товара от накладной до продажи с рейса — интерфейс

Биржа — система учёта товара для оптовой цепочки. У каждой роли свой контур: закупщик ведёт приёмку, логист — рейсы и погрузку, продавец — продажи с рейса в PWA, бухгалтер — сверку денег. Админ закрепляет рейсы, видит KPI и контролирует весь поток в реальном времени.

  • Роли с отдельными кабинетами и правами: закупщик, логист, продавец, бухгалтер, админ (JWT)
  • Админ-сводка: KPI по складу, погрузке, открытым рейсам и продажам; баланс массы и разбивка по калибрам
  • Закупщик: накладная со строками калибров (брутто / нетто / ящики / ₽/кг) → партии на складе
  • Логист: рейсы (город, водитель, машина), погрузка, возврат/списание, догрузка, смена рейса
  • Недостача по рейсу: партия, рейс, кг, причина — фиксация списания из «в пути»
  • Продавец (PWA): мобильный кабинет продаж — тип сделки (розница/опт) → рейс → калибр → количество → оплата; отчёт по рейсу и архив
  • Админ-контроль продаж: закрепление рейса за продавцом, продажи по продавцу; догрузка в ПН доступна в любой момент
  • Бухгалтер (/b): сверка по рейсам — выручка, себестоимость, валовая прибыль, оплаты; отчёт и контрагенты
  • Настройки: справочники (склады, калибры, логистика, тепличники, оптовики), накладные, сотрудники
  • Архив: закрытые рейсы с полным отчётом; поиск закупочных и погрузочных накладных
  • Тёмная / светлая тема

Ключевые задачи:

Развести ответственность по ролям и убрать «устные» остатки: закупщик, логист, продавец и бухгалтер работают в своих кабинетах, а весь поток сходится в одном контуре. Продавцам — PWA на телефоне, руководству — полный контроль рейсов, продаж и денег без сторонних таблиц.

Приёмка · закупка товара: тепличник, склад, строки калибров (брутто / нетто / ящики / ₽/кг), создание накладной и список «В работе»

Приёмка · закупка товара: тепличник, склад, строки калибров (брутто / нетто / ящики / ₽/кг), создание накладной и список «В работе»

Бизнес строится вокруг свежего товара: калибры, партии, ящики, перемещение между складом, погрузочной и рейсом. Ручной учёт в таблицах не успевает за сменой остатков и деньгами на рейсе. Нужна была операционная система с жёстким потоком документов — от накладной до продажи — и ролями, чтобы закупщик, логист, продавец и бухгалтер видели только свой контур, а контроль оставался централизованным.

Спроектировали веб-платформу с кабинетами по ролям: /a — админ и операционный контур (сводка, закуп, рейсы, настройки), /o — логистика и склад, /s — продавец (PWA, устанавливается на телефон и привязан к тому же бэкенду), /b — бухгалтерия. Права на API через JWT: каждый сотрудник входит под своей ролью. Стек: Fastify + PostgreSQL (Drizzle), Vite + React, доменные модели партий и денег, контракты Zod.

Рейсы: город, водитель, машина · Погрузка: отбор партий, возврат на склад и списание (кг / ящики) — фрагмент слева
Рейсы: город, водитель, машина · Погрузка: отбор партий, возврат на склад и списание (кг / ящики) — фрагмент справа

Рейсы: город, водитель, машина · Погрузка: отбор партий, возврат на склад и списание (кг / ящики)

Продавец и продажи: закрепление рейса за продавцом, контроль продаж по продавцу из админки

Продавец и продажи: закрепление рейса за продавцом, контроль продаж по продавцу из админки

Недостача по рейсу: партия, рейс, кг и причина — прозрачная фиксация потерь

Недостача по рейсу: партия, рейс, кг и причина — прозрачная фиксация потерь

Админ-панель — единый пульт: KPI, баланс массы, операции «сейчас», закрепление рейсов за продавцами и просмотр их продаж. Логист ведёт рейсы и погрузку; с погрузочной можно вернуть товар на склад или списать — по калибру или всей накладной, в кг или ящиках. Недостача фиксируется отдельно и списывается из «в пути». Закупщик оформляет приёмку: тепличник, склад, строки калибров. Закрытые рейсы и накладные уходят в архив с полным отчётом.

Продавцы работают в PWA «Кабинет продаж» на телефоне, подвязанном к тому же проекту: пошаговая продажа с рейса — тип сделки (розница / опт) → рейс → калибр → количество → оплата. Итоги — в отчёте по рейсу и архиве. Данные сразу в общем контуре: админ и бухгалтер видят результат без мессенджеров и таблиц. Бухгалтерия: сверка по рейсам, отчёт и контрагенты. Настройки сотрудников и справочников — без разработчика. Всё контролируется из одного контура. Продукт в продакшене: https://www.24birzha.ru/. CODE 1.618.

Результаты

4+

роли: закуп · логист · продавец · бухгалтер

PWA

приложение продавца

1

контур: всё под контролем

кг · ящ. · ₽

единый учёт

Технологии

  • Fastify + PostgreSQL
  • Vite + React
  • TanStack Query
  • JWT / роли
  • PWA продавца
  • Тёмная / светлая тема
  • UX/UI кабинетов
Настройки: справочники — склады, калибры, логистика, тепличники, оптовики · накладные · сотрудники

Настройки: справочники — склады, калибры, логистика, тепличники, оптовики · накладные · сотрудники

Кабинет бухгалтера: сверка по рейсам — выручка, себестоимость, валовая прибыль и оплаты

Кабинет бухгалтера: сверка по рейсам — выручка, себестоимость, валовая прибыль и оплаты

Архив: закрытые рейсы с отчётом по продажам · поиск закупочных и погрузочных накладных

Архив: закрытые рейсы с отчётом по продажам · поиск закупочных и погрузочных накладных

PWA продавца «Кабинет продаж»: розница/опт → рейс → калибр → количество → оплата

PWA продавца «Кабинет продаж»: розница/опт → рейс → калибр → количество → оплата