这是一套专门给 经销商 用的 B2B 在线订货平台。简单说,就是把咱们 ERP 里的销售、库存、回款、开票,和经销商 线上下单 打通,形成一条完整闭环:下单 → 审批 → 发货 → 对账 → 返利,经销商在门户就能自助完成大部分业务。
第一部分:
经销商登录后,首页能看到自己的 账余、订货统计、待办消息。
核心功能是 在线订货。可以建混合单,也可以按洗护、牙膏、牙刷等品类建单。选商品时支持按名称、条码筛选,同一品种还能按 普通装、返利装、不同批号 分行下单。
下单过程中可以选 折扣券、返利余额,填收货地址、开票要求。系统会自动算原价、折后价、实收金额。
这里有一个很重要的规则:订单在「输入中」时,只是暂存,不会占库存、不会扣券;只有经销商点 「提交」 之后,系统才会检查账余够不够、库存够不够、折扣券够不够,然后才真正扣减。这样避免草稿单误占资源。
提交后订单进入 「待审核」,内部人员审批。通过就进入发货流程;驳回的话,库存、返利占用、折扣券会 自动返还,经销商可以改完再提交。
另外有 订单查询:看全部订单、已发明细、欠货明细,还能做退货、计提返利,明细都可以导出 Excel。
第二部分:
销售管理 这边,内部可以维护客户档案、授信额度、是否参与满两万九折;配置 促销品配额,控制某个客户某个时段能买多少;还有 返利库存管理,从 ERP 库存里划出一块专门给返利装用,和订货联动。
财务中心 覆盖对账单、回款录入、回款统计、返利核算、开票确认,以及已开票、未开票查询。经销商打了多少钱、用了多少、还剩多少可用,财务都能查清楚。
物流中心 可以查发运单、物流单号、批号,支持明细和汇总两种视图。
另外还有 费用结算 模块,给省区、专员做结算、分期、月度对账。
第三部分:
第一,提交才扣库存。 选商品、改数量、保存明细,都不占库存;只有提交时才校验并扣减。
第二,普通装和返利装分开管。 返利装必须选批号,走返利库存;只有返利装才能用返利抵扣。同一单可以混着下。
第三,折扣和返利有风控。 比如使用返利时,返利金额不能超过返利装合计;特别客户还要至少搭配 5% 的现金产品。满两万指定商品可以自动九折,也可以按客户配置不参与九折。
第四,账余和授信。 账余不够不能提交;有授信额度的客户可以在一定范围内负账余下单。
第五,权限精细。 不同角色看到不同菜单、不同按钮;经销商只能看自己的数据,内部人员按单位、区域做数据隔离
一、整体架构与设计思路
本项目为经销商 B2B 在线订货平台,采用前后端分离架构:前端 Vue 3 + Vite + Element Plus,后端 Python Flask + Flask-Login,数据库 SQL Server,并与 ERP 库通过存储过程对接。按业务域划分模块:订货中心(下单、订单查询)、客户中心(促销配额、折扣折让、地址/开票)、销售管理(客户、库存、返利库存、KPI)、财务中心(对账、回款、开票、返利核算)、物流与费用结算、系统设置(账号/权限/日志)。核心设计原则:明细与主单分离、提交时才扣库存/占返利/扣券、审批驳回自动回滚,保证与 ERP 数据一致。
二、我负责的模块与结果
我主要负责 订货中心(DH) 全链路开发与优化,包括:混合弹窗选品/下单、普通装与返利装分行(编码+用途+批号)、返利库存提交占用与驳回释放、折扣券草稿/正式记录、订单明细展示与导出等。量化结果:完成订货主流程 30+ 接口联调;支持同一单普通装+返利装混下;
三、遇到的难点与解决方案
难点1:普通装与返利装业务规则完全不同,还要允许同一单混下。
普通装走促销库存,返利装必须带批号、走返利库存池,且只有返利装才能用返利抵扣;同一品种可能同时有普通行和返利行。若按品种合并明细,会互相覆盖数量,保存失败或扣错库存。
实现: 明细按「编码 + 用途 + 批号」分行存储与展示;保存时只做数据写入,提交时再分别校验促销库存与返利库存;占用按批号维度计算,驳回/取消统一释放。
难点2:返利使用有复杂业务约束,不能只做「金额够不够」。
返利金额不能超过返利装合计;特别客户须至少搭配 5% 现金产品;折扣券在草稿阶段不能影响其它在途订单的可用余额判断。
实现: 提交前做规则引擎式校验(返利装合计、现金产品占比、客户类型);折扣暂存为草稿记录,提交成功后再转正式并扣减金额;前端选品、后端提交双层校验,避免合规风险。
难点3:明细字段、单价精度、商品编码等与 ERP/存储过程不一致时,下游对账、发货、开票会出问题;返利装若不走与普通装相同的写入链路,会出现 ERP 认不到明细行的情况。
实现: 普通装与返利装优先统一走 存储过程,再覆盖返利专用字段(用途、批号、返利价);单价统一两位小数;关键编码字段与普通装对齐,保证门户订单可被 ERP 后续流程正常承接。