BIZARRE BAZAAR天津 · 运营中心
奇异集市 · 天津 · 运营中心

系统如何衔接

流程:报价单 → 订单 → ERP → 仓库 → 库存 → 统计。

1. 订单路径

客户 → 仓库
1报价单bbprice:客户选货并提交订单(POST /order.pdf)
2报价单订单bb_reg.db 的 orders 表:编号、客户、明细、金额
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 秒:读不阻塞写,写排队等待,不会出现 database is locked。
单据编号XSCK-YYYYMMDD-00001;编号冲突时自动重试(最多6次),不会撞号。
防止重复过账过账是带 approved=0 条件的 BEGIN IMMEDIATE 事务。第二个经理得到「已过账」,流水不会重复。
操作记录每个操作带登录名写入 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