BIZARRE BAZAAR天津 · 运营中心
BIZARRE BAZAAR · 天津 · 运营中心

Как связаны системы

Схема потоков: прайс → заказ → ERP → склад → остатки → статистика.

1. Путь заказа

клиент → склад
1Прайс-листbbprice: клиент собирает корзину и отправляет заказ (POST /order.pdf)
2Заказы прайсатаблица orders в bb_reg.db: номер, клиент, строки, сумма
3ERP · «Заказы с сайта»сбор при открытии страницы, дублей нет (ext_id UNIQUE)
4Черновик накладнойкнопка «В накладную»: клиент, строки, цены из прайса
5Проведениеадмин в ERP: approved=1 и движения по складу одной транзакцией

Строки заказа сопоставляются с номенклатурой ERP по китайскому названию. Если позиция не найдена — строка пропускается, накладная остаётся черновиком: её правит менеджер.

2. Остатки склада

одна формула

Остаток = сумма всех движений moves по позиции и складу. Других источников остатка нет — и ERP, и склад, и кабинет читают одно представление v_stock.

ОперацияГдеЧто пишетсяОстаток
Приход (поставка)Склад, ERPmoves.kind=in+
Продажа / отгрузкаERP, проведение накладнойmoves.kind=out−
Списание в бракСкладkind=writeoff−
Перемещение между складамиСкладkind=move, wh_id → wh_to0
ИнвентаризацияERP, проведение накладнойkind=adjust±

Склад не даёт уйти в минус: перед списанием проверяется текущий остаток. Продажа уменьшает остаток только в момент проведения, а не в момент черновика.

3. Четыре менеджера одновременно

что для этого сделано
ЧтоКак
Отдельные учёткиERP → «Пользователи»: логин, пароль, роль admin / manager / staff, блокировка. Роль admin одна — управление справочниками и людьми.
Свои документыКаждый черновик записан на автора (sales.user); менеджер видит свои накладные, админ — все.
Одновременная записьSQLite в режиме WAL, busy_timeout 10 c: читатели не блокируют писателей, писатели встают в очередь и не падают с «database is locked».
Номера документовXSCK-ГГГГММДД-00001; при совпадении номера вставка повторяется с новым номером (до 6 попыток) — гонки нет.
Двойное проведениеПроведение — одна транзакция BEGIN IMMEDIATE с условием approved=0. Второй менеджер получает «уже проведено», движения не дублируются.
История действийКаждое действие пишется в audit с логином: кто провёл, кто списал, кто создал пользователя.

Практика: 4 менеджера собирают заказы и черновики, проведение — одна точка (админ). Это исключает двойные списания и расхождение остатков без блокировок и ожиданий.

4. Кто где живёт

домены
СистемаАдресДанные
Центр управленияhub.redbutton.beerчитает обе базы, ничего не меняет
ERPerp2.redbutton.beerbb_erp.db
Складstock.redbutton.beerbb_erp.db · moves
Кабинет менеджераmanager.redbutton.beerbb_erp.db · черновики
Прайс-листbbprice.redbutton.beerbb_reg.db · orders