从开单到入账
一条数据链走完全程
销售订单与集采开单双链路,一张订单按商品供货商自动拆给多家供应商; 客户、供货商、商品全部从 ERP 基础资料同步,只读不新增; 开单不指定采购价 —— 价格在送货时确认,核验、拍照、补录三条路都能录; 配送单不用人守着电脑点打印:司机一保存订单,办公室那台针式打印机自己把三联单做出来 —— 开单后约 10 秒出纸。
生鲜批发的三件难事,交给状态机与同步机制
单据散在微信群、采购要分头找供货商、客户商品两头维护 —— 这是分销业务最耗人的三件事。
单据进度靠人记
开单、拆单、采购、收货、备货、配送、签收、入账 —— 8 个环节都由系统串起来,订单状态自动推进,谁都能看到卡在哪一环;有效明细没到齐,配送与签收会被闸门拦住。
采购要分头找供货商
一张订单里的商品分属不同供货商,系统按「商品 → 供货商」自动分组拆单,每个供货商一张采购入库单,收货、对账都能按供货商闭环。价格也不用提前问遍:开单不指定采购价,送货时按送货单逐行确认。
主数据两头维护
客户、供货商、商品都由 ERP 同步过来,本系统只读、不新增不删除,从根上避免两边各维护一份档案而分叉。
九项能力,覆盖一张订单的完整生命周期
双链路开单
销售订单面向单个客户开单;集采开单一次收一整批货,再按客户拆成多张销售订单。两条链路共用同一套收货、备货、配送、签收与入账动作。
按商品供货商拆单(1 : N)
拆单即按商品的采购供货商分组:一单多供、一家一张采购单;同一家供货商的商品自动合到一张单里,直接对应 ERP 采购入库单。分组完成后把这家供货商的采购明细一键分享出去(链接 / 二维码 / 订单图片),到货前先对齐品项与数量。
ERP 基础资料同步
客户、供货商、商品全部来自 ERP;可按关键字检索、分页浏览、一键同步。开单时的客户一律从同步结果里下拉选择,不会写出 ERP 里不存在的客户。
商品 5 个别名
同一商品在不同客户、不同单据上有不同叫法,一个商品可维护 5 个别名;开单与拍照识别时,别名会自动归位到主品,库存与财务口径始终统一。
拍照开单 + 语音录入
拍一张客户单据的照片,识别出客户、商品、数量与备注并自动生成订单明细;开单界面的手机号、地址、备注等字段支持语音录入。手机上「拍照 / 从相册选图」两条路都通,管理后台还能直接把图片拖进开单卡片。
一码到底:扫码定位单据
销售单、集采单、收货单都带二维码,手机扫一下就打开对应单据 —— 系统自动认单据类型、按当前岗位的页签权限决定落到哪个界面:库管扫销售单直达备货页并高亮那一单,司机和文员扫同一张看到的是订单详情。没有权限的岗位会得到明确提示,而不是一个打不开的空白页。
远程自动打印三联单
司机保存订单即自动入打印队列,办公室电脑上的打印代理定时来取,按模板排成 241×140mm 整页、直接驱动针式打印机出三联复写单 —— 不用人守着点打印,服务器也不开任何入站端口。模板可以复制一份再改,改完预览满意才启用。
全流程追溯与 ERP 对账
从订单往下可以一路追到收货单、采购入库单、销售出库单与财务单号;入账结果会返写回原单,文员对账时一眼看到单号对应关系。
采购单价:送货时确认
开单只定品项与数量,不指定采购价 —— 价格是送货时才定的。库管核验到货时逐行录价(留空不强制);拍送货单能识别出单价,带出来还能手工改;漏掉的单价文员在入账页补录,入账不因缺价被拦(按商品报价兜底)。
两条链路,同样的八步
左边是散单(单个客户开单),右边是集采(整批收货后按客户拆单)。两条链路的状态机完全一致,只是起点与拆单方向不同。
一张码走全程:现场的人不用记单号
仓库和路上没人对着屏幕翻列表。所有单据都带一枚二维码,扫一下就打开对应单据 —— 系统自动认出这是什么单、你是哪个岗位,直接落到你要用的那个界面;拍一张供货商的送货单,系统自己找到那张还没收完的收货单等你核对。
扫码键就在手边上
手机端右下角常驻一枚「扫码」悬浮键,单手持机拇指就能按到,顶栏也有同样的入口。实时取景(https 下)或「拍照识别 / 从相册选图」都能读码,读出来自动打开那张单据。
自动认单据类型
本系统的码直接带类型(#doc= 深链);只有单号的码(SO- / SH- / JC- 开头)也能按前缀自动判类型、去库里找到这张单。认得出的直接打开,认不出的原样摆出来供复制 —— 绝不乱跳。
谁扫开什么,按岗位落点
同一张码,不同岗位落到不同的界面:库管扫销售单直接进备货页并高亮那一单,司机和文员扫同一张看到的是订单详情。没有权限的岗位会得到明确提示。
拍送货单,自动找收货单
库管不用先翻到那家供货商:拍一张送货单,识别出的商品名按供货商聚合打分,认得出就直接进那张收货单的核对页,认不出才让人点一下是哪家的货。识别出的单价一并带出来,核对时可以逐行改;送货单原件照常留档,随时能调出来对价。
| 岗位端 | 扫销售单 | 扫集采单 | 扫收货单 | 拍供货商送货单 |
|---|---|---|---|---|
| 库管端 | 备货页 · 定位到那一单 | 集采批次详情 | 收货单详情 | 自动找收货单 → 核对收货 |
| 文员端 | 订单详情 | 集采批次详情 | 收货单详情 | — |
| 司机端 | 订单详情 | 集采批次详情 | 收货单详情 | — |
| 管理后台 | 点单据详情里的「本单二维码」调出大图,另一台手机扫这张码就能打开同一张单据;深链同样按岗位路由 | |||
本系统单号 ↔ ERP 单号,一对一还是一对多?
规则很简单:业务单据之间大多一对一;一对多集中在写入 ERP 那一步——集采链路的销售出库单(按客户逐单写入)与采购入库单(按供货商拆单)都是一对多。
| 链路 | 单据关系 | 对应关系 | 说明 |
|---|---|---|---|
| 销售订单 | 销售单号 → 收货单号 | 一对一 | 订单拆单时即建立收货单,明细与订单一致 |
| 销售订单 | 收货单号 → ERP 采购入库单号 | 一对多 | 按商品的采购供货商拆单,从多家供货商分别采购 |
| 销售订单 | 销售单号 → ERP 销售出库单号 | 一对一 | 客户签收后写入,一张订单对应一张出库单 |
| 集采订单 | 集采单号 → 收货单号 | 一对一 | 整批收货只用一张收货单 |
| 集采订单 | 收货单号 → ERP 采购入库单号 | 一对多 | 同样按商品供货商拆单 |
| 集采订单 | 集采单号 → 销售单号 | 一对多 | 按客户拆出多张销售订单,共用同一张收货单 |
| 集采订单 | 集采生成的销售单号 → ERP 销售出库单号 | 一对一 | 拆出的每张销售订单各自写入一张出库单 |
| 集采订单 | 集采单号 → ERP 销售出库单号 | 一对多 | 销售侧逐单写入的结果:一张集采单对应多张出库单 |
一个商品,5 个别名,一位主供货商
客户嘴里的「五花肉」「精品五花」「五花肉片」在系统里是同一个主品。别名归位后,库存、采购与财务口径才不会各说各话。
5 个别名,随手就能维护
商品列表里 5 个别名直接内联编辑,改完自动保存;别名只存在本系统,不回写 ERP,不会污染客户的主数据。
主供货商 + 备选 + 报价
ERP 的商品档案里没有供货商关系,所以由本系统补充:主供货商决定拆单归属,备选用于缺货替补;报价是采购金额的参考与缺价兜底 —— 真正的采购单价在送货时按送货单确认(核验 / 拍照 / 入账前补录),没填的自动回落这里。
只读、可检索、可分页
客户 / 供货商 / 商品三块只做查询、同步与分页浏览,不提供增删改;还能一键筛出「还没设采购供货商」的商品,把主数据补齐这件事变成一张待办清单。
拍一张单据照片,明细自己长出来
司机在客户现场、业务员在门店,拍下客户手写或打印的进货单,系统识别客户、商品、数量与备注,匹配主品与别名后生成订单明细。
识别:把照片变成结构化明细
识别客户名与每一行的商品名、数量、单位、备注;客户名会自动对上 ERP 同步的客户,陌生的名字做临时候选兜底,不阻断开单。
匹配:先主品,后 5 个别名
按名称相似度匹配主品,再逐个比对商品的 5 个别名;命中别名时,明细记别名、商品仍挂主品,库存与财务口径不受影响。
兜底:未匹配自动预填检索词
没匹配上的行,系统取其名称的最后几个汉字(如「精品白玉菇」→「白玉菇」)填进该行搜索框,下拉直接是筛好的候选商品,选中即归位。
语音:能说就不用打字
商品搜索框、客户名、备注、电话、地址等字段都带麦克风按钮,长按说完自动追加;手机端需在 https 或本机环境下授权麦克风。
司机一保存订单,办公室那台针式打印机自己出三联单
以前司机在群里喊一句「单子帮我打一下」,办公室的人再翻订单、点打印、跑过去撕纸。现在司机保存订单的那一刻,单子就自动排进打印队列,装在办公室电脑上的打印代理每 10 秒来取一次:服务端把整张单据排好版(241×140mm 整页),代理只负责转成 PDF 交给打印机 —— 开单后约 10 秒出纸,三联复写,撕下来就能带走。
开单保存即入队
司机点「保存」的那一刻订单就排进打印队列,不用等配送、更不用谁去点。同一张单只排一次,重打要人手动点,不会重复出纸。
办公室电脑来取
代理每 10 秒向服务器要一次待打印的单,带访问密钥认身份。是它主动来拿,所以服务器不用开任何入站端口、也不需要公网 IP。
服务端按模板排版
单头、明细、合计(含大写)、签字栏由服务器渲染成 241×140mm 整页;行数超一页自动分页,每页补空行撑满,末页才出合计与签字。
出纸并回写结果
代理转成 PDF 交针式打印机,打完把「已打印 / 失败」连原因一起回写。失败的单在看板上标红,可以单张重打。
| 序 | 品名 | 规格 | 单位 | 数量 | 单价 | 金额 |
|---|---|---|---|---|---|---|
| 1 | 精品五花肉 | 散装 | 斤 | 40 | 18.60 | 744.00 |
| 2 | 去骨牛腩 | 2kg/袋 | 袋 | 6 | 92.00 | 552.00 |
| 3 | 冻鸡中翅 | 1kg/袋 | 袋 | 12 | 29.50 | 354.00 |
| 4 | — | — | — | — | — | — |
| 5 | — | — | — | — | — | — |
版式由模板决定:抬头、栏宽、明细行数、签字栏都在系统设置里改,改完可以先预览(不落库)再启用。行数不够一页时自动补空行,超一页自动分页并在页脚标「承上页」。
系统模板保留一份,复制了再改
内置那份「系统默认 · 三联送货单」不可删、可改内容但不能换 id,永远能回退;想大改就复制一份副本,副本可改名、改纸宽纸高、改正文。列表里改的是哪一份、当前启用的是哪一份,一眼看清。
模板就是一张 HTML,规则写明白
一页内容 + 顶部一行 <!--rows:17--> 声明每页几行;{{#last}} 里的合计与签字只在末页出现,{{^last}} 里的本页小计留在中间页。改坏了预览一眼就能看出来。
出纸情况看得见
看板上有待打印、今日已打、失败三档,还能按司机汇总今天出了几张。每张单的状态、重打次数、失败原因都留着,出问题不用猜是网络、模板还是打印机。
三个岗位 App,扫码装到手机上
司机在外面跑,文员和库管在店里,手上都不方便输网址。我们把三个岗位的网页各自封装成 Android 安装包:桌面有图标、打开直达本岗位工作台、拍照走系统相机,App 内就能改服务器地址;右下角常驻「扫码」键,扫单据二维码直接打开那张单。三个 App 各认各的岗位 —— 装哪个就只能登哪个岗位的账号,手递手给员工不会开错端。
Android 版司机端
- 一次安装,点图标即用 —— 桌面快捷方式直接进入本店司机工作台,不用再输 IP 地址。
- 拍照开单 —— 点「拍照」直接调系统相机拍摄客户单据,也能从相册选图,识别结果自动填进订单明细。
- 扫码看单据 —— 右下角「扫码」键扫销售单 / 收货单上的二维码,直接打开那张单;扫到只有单号的码也能自动认出来。
- 配送队列随身带 —— 待配送、配送中、已完成的单子按状态分组,客户地址与电话一点即拨。
- 地址可改,装着不白装 —— 换服务器、换门店时在 App 内长按返回键出设置菜单改地址,不用卸载重装。
- 与网页端同一套数据 —— App 只是司机端页面的外壳,订单状态、收货核验、签收结果和网页端完全同步。
安装方式:手机浏览器扫码下载 APK → 点开安装 → 系统提示「未知来源」时选择允许即可(内部使用的自签名安装包,不在应用商店上架)。 装好后第一次打开默认连到店内服务器,如需更换地址,在 App 里长按返回键打开设置菜单。
Android 版文员端
- 开单就在手机上 —— 销售订单 / 集采开单:客户下拉检索、商品带别名识别,拍照识表自动填明细。
- 订单状态跟进 —— 待拆单、待收货、待备货、配送中一眼看完,改单与取消不用再回电脑。
- 一码到底 —— 扫销售单 / 集采单 / 收货单上的二维码直接打开对应单据;出库单右上角那枚码就是给现场互扫用的。
- 入账到财务系统 —— 签收完成的单子按队列写进 ERP,缺的采购单价入账前补录,财务单号返写回原单,随时追溯。
- 只认文员账号 —— 司机 / 库管的账号登不进来,各岗位的 App 各管各的,权限不会串。
安装方式与司机端相同:扫码下载 APK → 允许「未知来源」→ 安装。 App 只是文员端页面的外壳,业务页面更新后无需重装;换服务器地址长按返回键。
Android 版库管端
- 收货核验在货架边 —— 按供货商逐家核验到货,标记未到、部分到货与取消明细;采购单价逐行可录可改(留空不强制),顺手就能记。
- 扫码 + 拍照收货 —— 拍一张供货商送货单自动找到那张未收齐的收货单,识别的单价带出来还能改;扫销售单二维码直接落到备货页并高亮那一单。
- 合单备货 —— 按订单合单、齐套检查,备齐自动转「待配送」,不用来回对单。
- 到货闸门自动拦 —— 明细没到齐就发不了车,系统替你把关,不靠记性。
- 只认库管账号 —— 司机 / 文员的账号登不进来,各岗位的 App 各管各的,权限不会串。
安装方式与司机端相同:扫码下载 APK → 允许「未知来源」→ 安装。 App 只是库管端页面的外壳,业务页面更新后无需重装;换服务器地址长按返回键。
下载中心:打印代理装一台,手机 App 扫码装
打印代理只需要在办公室那台连着针式打印机的电脑上装一台,Mac 与 Windows 各有安装包;司机、文员、库管的手机 App 在上面的「App 下载」里扫码安装。所有安装包都从这台服务器下载,不经过应用商店,也不依赖外网。
下面是另一个产品「店面语音开单」的 Android App —— 对着手机说话直接开单、连蓝牙小票机出票,账号与数据都独立,需在运营平台单独开通:点这里注册,自动送 7 天试用,不用付款也不用审核。
macOS 版 · 远程打印
推荐 .dmg给 Mac 用,Apple 芯片与 Intel 都可以。内嵌 Node 运行时,拖进「应用程序」双击即用,不用另装环境。
dmg 打不开?下载 zip 版(42.4 MB),解压后直接双击「远程打印.app」。
- 1双击 dmg,把「远程打印」拖进「应用程序」。
- 2第一次打开若提示「无法验证开发者」:右键 → 打开 → 再点一次打开,之后就不问了(未签名应用的一次性操作)。
- 3浏览器打开面板 → 右上角「设置」→ 填服务器地址与访问密钥 → 点「检测」选中打印机 → 保存。
配置与数据存在 ~/Library/Application Support/远程打印/,程序本体可以随时覆盖升级,不用重新配置。
Windows 版 · 远程打印
64 位 Win10 / 11给办公室那台 Windows 电脑用。内嵌 Node 和启动脚本,解压后双击「安装.bat」,不需要装 Node.js。
包里带 安装.bat / 启动.bat / 停止.bat / 卸载.bat 和图文说明,装完桌面会有快捷方式。
- 1把 zip 解压到一个固定位置(别在压缩包里直接双击运行)。
- 2双击「安装.bat」:复制到用户目录、建桌面快捷方式、可选开机自启、自动下载 SumatraPDF。
- 3双击桌面快捷方式启动,面板里填服务器地址与访问密钥、选打印机,保存即生效。
配置与数据存在 %LOCALAPPDATA%\远程打印\;渲染 PDF 用系统自带 Edge,不用另装浏览器内核。卸载走「卸载.bat」,会问要不要连数据一起删。
Android 版 · 店面语音开单
独立产品给菜摊、档口用:点一下说话念一句「白菜三斤两块五」,自动拆成商品、数量、单价,确认后直连蓝牙小票机出票。账号、商品词库、小票模板都在手机上,和上面的生鲜批发配送不共用数据,需要在运营平台单独开通。
- 1手机扫码(或点按钮)下载 APK,允许「未知来源」后安装,需要 Android 7.0 及以上。
- 2打开 App,用手机号 + 验证码注册/登录,新号自动送 7 天试用;摊位名会打在小票抬头。
- 3设置里配对蓝牙小票打印机(58mm),点一下麦克风说话、说完再点完成,就能开单出票。
- 4到期前在 App 里输卡密(
vt-XXXX-XXXX)续费,或提交付款凭证由运营开通。
语音识别在服务端完成,手机不用填任何密钥;识别出来的品名会跟词库对一遍,对不上的当场改。词库、常用商品、小票版式都在 App 内的设置里维护。
http://192.168.1.5/wb/),和手机连同一个 Wi-Fi 即可;具体地址与访问密钥在系统设置 → 远程打印里能直接复制。
四类角色,各管一段,状态看得见
司机开单与配送、文员开单与对账追溯、库管收货与配货、管理员全权。所有人都基于同一套订单状态协作,不需要互相打听进度。
司机
在客户现场就能开单,自己的货自己送
- 开销售订单
- 开集采订单(拍照集采)
- 配送与客户签收
- 查看自己的配送队列
文员
开单、跟单、对账,还是基础资料的维护者
- 开销售订单
- 开集采订单(拍照集采)
- 订单状态跟进与全流程追溯
- 入账前补录采购单价
- 与 ERP 对账、核对入账结果
- 维护基础资料(同步 ERP 档案、商品别名与供货商报价)
库管
按供货商收货,按订单配货
- 按供货商收货与到货核验
- 收货时确认采购单价(可不填)
- 合单备货、齐套检查
- 缺货标记与明细修正
- 库存查询与商品检索
管理员
全部权限,主数据与系统设置的守门人
- 全部业务动作(开单 / 收货 / 备货 / 配送 / 入账)
- 基础资料与商品别名、供货商报价
- ERP 连接、单据前缀、入账规则等系统设置
- 用户与角色管理、订单作废
功能权限矩阵
| 功能 | 司机 | 文员 | 库管 | 管理员 |
|---|---|---|---|---|
| 开销售订单 | ✓ | ✓ | — | ✓ |
| 开集采订单(拍照集采) | ✓ | ✓ | — | ✓ |
| 改单 / 明细修正 | ✓ | — | 部分 | ✓ |
| 订单状态跟进与全流程追溯 | ✓ | ✓ | ✓ | ✓ |
| 按供货商收货 / 到货核验 | — | — | ✓ | ✓ |
| 收货时录 / 改采购单价(不强制) | — | — | ✓ | ✓ |
| 入账前补录采购单价 | — | ✓ | — | ✓ |
| 合单备货 | — | — | ✓ | ✓ |
| 配送与签收 | ✓ | — | — | ✓ |
| 入账到 ERP(出库 / 入库单) | — | ✓ | — | ✓ |
| 与 ERP 对账、核对入账结果 | — | ✓ | — | ✓ |
| 基础资料 / 商品别名与供货商报价 | — | ✓ | — | ✓ |
| 系统设置 / 用户与角色 | — | — | — | ✓ |
| 订单作废 | — | — | — | ✓ |
说明:客户 / 供货商 / 商品为 ERP 同步的只读档案,不提供增删改,只能同步与查询;商品别名与供货商报价只存本系统、不回写 ERP,文员与管理员都可以维护。库管的「部分改单」指收货环节的到货数量、取消明细与采购单价;采购单价开单不指定、送货时确认,缺价由文员在入账前补录,不拦入账。
三端一个后端,最终落到 ERP
前端是零外部依赖的单文件页面,打开即用;后端只做状态存取与 ERP 桥接,把单据真正写进财务系统。