coresmith.dev
← Все работы

ERP для розницы с несколькими складами + POS

Розничные операции2 месяцасвоя командасдано
Проблема

Три точки, один файл Excel, никакой связи с фискальником.

Остатки жили в таблицах Excel, которые вручную копировали между точками. Касса не знала, что лежит на складе, и ничего не общалось с фискальным принтером — каждый чек перебивали заново на отдельном устройстве.

Ошибки в подсчётах накапливались: продажа в одном магазине не видела резерв в другом.

Подход

Одна схема, один бинарник, offline с самого начала.

Единая схема PostgreSQL как источник истины для остатков, цен и документов; десктопный клиент говорит с ней через тонкий слой Express. Клиент работает в зале и продолжает работать, когда сеть падает.

Фискальный принтер был самой трудной частью: управляется по serial, из того же действия, которое закрывает продажу, — чтобы чек никогда не мог разойтись с записанной транзакцией.

Архитектура

Десктопный клиент на настоящей базе данных.

Оболочка Electron, React 19 с TypeScript, Zustand для локального состояния и TanStack Query для серверного кеша. За ними Express и Sequelize, PostgreSQL с 43 таблицами: точки, движения, документы, аудит.

ElectronReact 19TypeScriptZustandTanStack QueryMUIExpressSequelizePostgreSQLserialportTREMOL S
Результат

От продажи до фискального чека одним нажатием.

43таблицы
3точки
2 мес.до продакшена

Остаток снова одно число. Фискальный чек печатается из той же транзакции, которая записывает продажу, поэтому магазин и налоговый учёт больше не могут разойтись.

Нужно что-то похожее?

Начать проект