Featured image of post 企业进销存系统:业务架构与数据模型实战

企业进销存系统:业务架构与数据模型实战

企业进销存系统完整业务架构:商品管理 / 商业伙伴 / 业务单据(进货销货退换)/ 对账单 / 收付款 7 张核心表设计 + 7 大功能模块实战

进销存系统(Purchase-Sales-Stock)是企业 ERP 系统的核心模块,覆盖商品流通企业的全部业务流:采购进货 → 库存管理 → 销售出货 → 客户对账 → 收付款。本文基于行业实践,做一次完整业务架构 + 数据模型实战。

本文写于 2024 年 3 月——中小企业数字化加速,进销存 SaaS 进入红海。

一、7 大功能模块

1.1 业务总览

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
┌─────────────────────────────────────────────────┐
│             进销存系统功能地图                      │
├─────────────────────────────────────────────────┤
│  基础数据   │ 进货管理  │ 销货管理  │ 库存管理    │
│  商品信息   │ 采购进货  │ 销售出货  │ 库存查询    │
│  商业伙伴   │ 采购退货  │ 销售退货  │ 库存预警    │
│  数据字典   │          │          │            │
├─────────────────────────────────────────────────┤
│  财务管理   │ 统计报表           │ 系统管理      │
│  供应商对账 │ 进货明细表         │ 角色管理      │
│  客户对账   │ 进退货明细表       │ 用户管理      │
│  收付款单   │ 销货明细表         │ 部门管理      │
│  其他费用   │ 销退货明细表       │ 功能权限      │
│             │                  │ 参数配置      │
│             │                  │ 系统日志      │
└─────────────────────────────────────────────────┘

1.2 各模块功能清单

基础数据

  • 数据字典(分类、计量单位、结算方式等)
  • 商品信息(编码、名称、规格、价格、库存)
  • 商业伙伴(客户、供应商、物流)

进货管理

  • 采购进货单(向供应商进货)
  • 采购退货单(向供应商退货)

销货管理

  • 销售出货单(向客户销货)
  • 销售退货单(客户退货)

库存管理

  • 商品库存查询(实时库存)
  • 安全库存预警
  • 库存盘点

财务管理

  • 供应商对账单
  • 客户对账单
  • 收付款单(应收应付)
  • 其他费用单

统计报表

  • 进货明细表
  • 进退货明细表
  • 销货明细表
  • 销退货明细表

系统管理

  • 角色管理
  • 用户管理
  • 部门管理
  • 功能权限
  • 参数配置
  • 系统日志

二、7 大核心数据表

2.1 数据模型总览

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
┌──────────────┐
│  JxGoods     │ ← 商品
└──────────────┘
┌──────────────┐    ┌──────────────────┐
│  JxPartner   │ ←──│  商业伙伴          │
└──────────────┘    │  (客户/供应商)     │
       ↓            └──────────────────┘
┌──────────────────┐
│  JxBillHead      │ ← 业务单据(进货/销货/退换)
│  + JxBillList    │   (主表 + 详单)
└──────────────────┘
┌──────────────────┐    ┌─────────────────┐
│  JxAccountHead   │ ←──│  对账单           │
│  + JxAccountList │    │  (客户/供应商)    │
└──────────────────┘    └─────────────────┘
┌──────────────────┐
│  JxPayment       │ ← 收付款单(应收/应付)
└──────────────────┘
       +
┌──────────────────┐
│  JxOtherFee      │ ← 其他费用
└──────────────────┘

2.2 7 大表详细字段

表 1:商品信息(JxGoods)

名称代码类型长度必填
商品编码CodeText50Y
商品名称NameText200Y
商品类别CategoryText50Y
规格型号ModelText500
产地ProducerText50
计量单位UnitText50Y
采购单价BuyPriceNumber18,2
销售单价SalePriceNumber18,2
安全库存SafeQtyNumber
备注NoteTextArea
附件FilesText500

设计要点

  • Code 必须唯一(业务主键)
  • Category 用数据字典(避免硬编码)
  • BuyPrice / SalePrice 单独字段而非关联价格表(简单场景)
  • SafeQty 触发库存预警

表 2:商业伙伴信息(JxPartner)

名称代码类型长度必填
类型(客户/供应商/物流)TypeText50Y
名称NameText100Y
简称ShortNameText50
信用代码SccNoText50
联系人ContactText50
联系电话PhoneText50
联系地址AddressText500
开票地址InvAddressText500
开票电话InvPhoneText50
开户银行BankText100
银行账号AccountText100
备注NoteTextArea
附件FilesText500

设计要点

  • Type 字段区分客户/供应商/物流(多类型合一表)
  • 开票信息与联系信息分离(财务合规)
  • 信用代码用于企业客户开票

表 3:业务单表头(JxBillHead)

名称代码类型长度必填
单据类型(进货/进退货/销货/销退货)TypeText50Y
业务单号BillNoText50Y
单证状态StatusText50Y
单证日期BillDateDateY
商业伙伴PartnerText100Y
合同号ContractNoText50
发票号InvoiceNoText50
结算方式SettleModeText50Y
总金额TotalAmountNumber18,2
物流公司LogisticsText100
物流单号LogisticsNoText50
物流费用LogisticsFeeNumber18,2
退货单号ReturnNoText50
备注NoteTextArea
附件FilesText500

设计要点

  • Type 字段统一 4 种单据(进货 / 进退货 / 销货 / 销退货)
  • Status 字段单据状态(草稿 / 已审核 / 已完成 / 已作废)
  • ReturnNo 关联原单(退货单反查原单)
  • Logistics 字段支持内嵌物流信息

表 4:业务单表体(JxBillList)

名称代码类型长度必填
表头 IDHeadIdText50Y
序号SeqNoNumberY
商品编码CodeText50Y
商品名称NameText200Y
商品类别CategoryText50Y
规格型号ModelText500
产地ProducerText50
计量单位UnitText50Y
数量QtyNumberY
单价PriceNumber18,2
金额AmountNumber18,2
备注NoteTextArea

设计要点

  • HeadId 关联表头(一对多)
  • 冗余 Name / Category(避免 JOIN 商品表)
  • Amount = Qty × Price(应用层计算 + 数据库 CHECK 约束)

表 5:对账单表头(JxAccountHead)

名称代码类型长度必填
单据类型(客户 / 供应商)TypeText50Y
对账单号AccountNoText50Y
单证状态StatusText50Y
对账日期AccountDateDateY
商业伙伴PartnerText100Y
业务日期BizDatesText100Y
合同号ContractNoText50
发票号InvoiceNoText50
总金额TotalAmountNumber18,2
备注NoteTextArea
附件FilesText500

设计要点

  • BizDates 用 Text 存(“2024-01-01~2024-01-31”)
  • 总金额 = 各业务单据金额合计

表 6:对账单表体(JxAccountList)

名称代码类型长度必填
表头 IDHeadIdText50Y
单据 IDBillIdText50Y

设计要点

  • 极简表体:只存关联关系(多对多:一张对账单对应多张业务单据)

表 7:收付款单(JxPayment)

名称代码类型长度必填
单据类型(应收 / 应付)TypeText50Y
单据编号PaymentNoText50Y
单据状态StatusText50Y
单据日期PaymentDateDateY
商业伙伴PartnerText100Y
单据来源(对账 / 新增)SourceText50Y
总金额TotalAmountNumber18,2
已收付金额PaidAmountNumber18,2
剩余金额RemainAmountNumber18,2
备注NoteTextArea
附件FilesText500
记录RecordsTextArea
业务单据 IDBizIdText50

设计要点

  • RemainAmount = TotalAmount - PaidAmount(数据库 CHECK 约束)
  • Records 字段记录每次收付款流水(JSON 数组)
  • Source 字段区分"对账生成"vs"手动新增"

附表:其他费用信息(JxOtherFee)

名称代码类型长度必填
类型(收入 / 支出)TypeText50Y
费用编号FeeNoText50Y
单据状态StatusText50Y
发生金额AmountNumber18,2
发生日期FeeDateDateY
所属部门DepartmentText50
备注NoteTextArea
附件FilesText500

三、核心业务流程

3.1 采购流程

1
2
3
供应商 ──→ 采购进货单 ──→ 库存增加 ──→ 供应商对账单 ──→ 付款单
   ↑         ↓
   └────── 采购退货单

关键业务规则

  • 进货单必须关联供应商
  • 进货审核后库存才增加
  • 退货单必须关联原进货单
  • 对账单的金额 = 进货金额 - 退货金额
  • 付款单有"已付/未付"两种状态

3.2 销售流程

1
2
3
客户 ──→ 销售出货单 ──→ 库存减少 ──→ 客户对账单 ──→ 收款单
   ↑       ↓
   └────── 销售退货单

关键业务规则

  • 出货前必须检查库存(不允许负库存)
  • 出货单必须关联客户
  • 退货单必须关联原出货单
  • 销售价不能低于进价(可选规则)
  • 收款单按"已收/未收"管理

3.3 库存预警

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
-- 库存预警 SQL
SELECT
    g.Code,
    g.Name,
    g.SafeQty,
    COALESCE(SUM(b.Qty), 0) AS CurrentQty,
    g.SafeQty - COALESCE(SUM(b.Qty), 0) AS ShortQty
FROM JxGoods g
LEFT JOIN JxBillList b ON b.Code = g.Code
LEFT JOIN JxBillHead h ON h.Id = b.HeadId
WHERE h.Status = '已审核'
GROUP BY g.Code, g.Name, g.SafeQty
HAVING CurrentQty < g.SafeQty;

四、关键设计原则

4.1 表设计原则

  1. 主从分离:表头(Head)+ 表体(List)模式
  2. 类型字段:单据类型用 Type 字段区分(避免建 4 张表)
  3. 冗余字段:商品名称 / 类别冗余到表体(避免 JOIN)
  4. 审计字段:每张表都加 CreateBy / CreateTime / UpdateBy / UpdateTime
  5. 软删除:Status = ‘已作废’ 而非物理删除

4.2 业务规则原则

  1. 单据状态机:草稿 → 已审核 → 已完成 → 已作废
  2. 金额一致性:表头 TotalAmount = SUM(表体 Amount)
  3. 库存一致性:每次进出货都更新库存表
  4. 对账一致性:对账单金额 = 关联单据金额
  5. 收付款一致性:已付 + 剩余 = 总金额

五、扩展设计

5.1 水平扩展

  • 多仓库:增加 Warehouse 表 + BillHead 增加 WarehouseId
  • 多币种:增加 Currency 字段
  • 批次管理:增加 Batch 表(生产日期 / 过期日期)
  • 序列号:增加 SerialNumber 表(每件商品唯一标识)

5.2 性能优化

  • 索引:Code(商品编码)、BillNo(业务单号)、Partner(商业伙伴)
  • 分区:按 BillDate 分区(按月 / 按年)
  • 归档:已完成超过 1 年的单据归档到历史表

5.3 集成扩展

  • 财务系统:对接金蝶 / 用友,自动生成凭证
  • 电商系统:对接淘宝 / 京东 / 拼多多,订单同步
  • WMS 系统:对接仓储管理,自动同步库存
  • CRM 系统:对接客户管理,关联销售机会

六、写在最后

进销存系统的本质是"单据驱动库存"——每张业务单据都触发一次库存变动,每张对账单都基于业务单据生成。

个人建议

  1. 新项目起步:先做"商品 + 商业伙伴 + 业务单据"3 张表
  2. MVP 阶段:先做"进货 + 销货"两个核心流程
  3. 完整阶段:再补"对账 + 收付款 + 报表"
  4. 优化阶段:最后做"多仓库 / 多币种 / 批次管理"
  5. 参考开源jxcsoft 是一套成熟的进销存参考实现

参考资料

2024+ 视角(进销存 SaaS 的 AI 化与多渠道融合)

2024 年 3 月的进销存架构在 2024-2026 年的几个关键演进:

  1. 云原生 SaaS 主导
    • 国内:用友 YonBuilder、金蝶云·星辰、管家婆云 ERP、柠檬云进销存、浪潮 GS Cloud 已成主流
    • 国际:NetSuite、Odoo 18、SAP Business One Cloud 仍是大型企业首选
    • 多租户架构(Multi-Tenant)是 SaaS ERP 的标配,租户隔离通过行级安全(RLS)+ 独立 Schema 实现
  2. 多渠道融合
    • 进销存从"线下 + 单一电商"升级为全渠道订单路由
      • 淘宝/天猫、京东、拼多多、抖音、快手、小红书、视频号
      • 海外:Shopify、Amazon、eBay、Lazada、Shopee
    • 订单中台(如管易云、万里牛、店小秘)聚合所有渠道订单,再分发到 WMS
  3. AI 选品 + 智能补货
    • AI 选品:基于历史销售 + 季节 + 趋势预测下季爆品
    • 智能补货:基于安全库存 + 在途库存 + 销售预测,自动生成采购建议
    • AI 需求预测(Prophet / LSTM / XGBoost)替代人工经验
  4. 金税四期 + 数电票合规
    • 金税四期(2022 起)全面落地,数电票(数字化电子发票) 取代传统税控发票
    • ERP 系统必须直连税务系统(如航天信息、百望电子),自动开具数电票
    • 进销存发票流(进项发票 → 销项发票)对账成为核心
  5. WMS + TMS 深度集成
    • WMS(仓储管理):PDA 扫码、电子标签、AGV 联动
    • TMS(运输管理):路径优化、运费计算、在途追踪
    • 进销存 ↔ WMS ↔ TMS 实时同步(MQ / CDC)
  6. 财务业务一体化
    • 业务单据自动生成会计凭证(金蝶 EAS Cloud、用友 NC Cloud)
    • 银企直连(与银行系统对接,自动收付款)
    • 电子档案(会计档案电子化,进销存发票、单据电子归档)
  7. 数据模型演进
    • 7 大表(商品/伙伴/单据/对账/收付款)的"主从分离 + 类型字段"思路依然成立
    • 新增关键字段:
      • 多租户字段(TenantId)—— SaaS 必备
      • 多组织(OrgId)—— 集团多公司
      • 币种 / 汇率(Currency、ExchangeRate)—— 跨境必备
      • 批次 / 序列号(BatchNo、SerialNo)—— 食品/医药/3C 行业刚需
      • 附件 OSS 化(Files → OSS Key)—— 不再存数据库
  8. 低代码 / SaaS 平台化
    • 金蝶云·苍穹、用友 BIP、钉钉宜搭、飞书多维表格 让中小企业用"低代码"自建进销存
    • 简道云、明道云、氚云 等 aPaaS 平台让进销存二次开发零代码
  9. 数据中台 / BI 增强
    • 进销存数据进数据中台(阿里云 DataWorks、华为 DataArts)
    • BI 工具(FineBI、PowerBI、Tableau、Quick BI)做销售分析、库存周转分析、毛利分析
    • 毛利率分析(按商品 / 客户 / 渠道)成为管理者核心看板
  10. 行业垂直化
    • 医药行业(GSP 合规、批号追溯、冷链监控)
    • 食品行业(FIFO、保质期、批次追溯)
    • 服装行业(SKU 多、季节性、颜色尺码)
    • 建材行业(长账期、批次价、计量单位复杂)
    • 跨境电商(多币种、海外仓、退货逆向物流)

实战选型(2024-2026)

  • 小型企业(< 50 人):金蝶云·星辰 / 管家婆云 / 简道云—— SaaS + 低代码
  • 中型企业(50-500 人):用友 YonSuite / 金蝶云·星空 / 浪潮 GS Cloud
  • 大型企业(> 500 人):用友 NC Cloud / 金蝶 EAS Cloud / SAP S/4HANA
  • 跨境电商:店小秘 + 旺店通 + 海外仓 WMS
  • 特殊行业(医药/食品/冷链):行业 SaaS(药师帮、餐道、九曳供应链等)

核心结论:2024 年这篇的"7 大表 + 7 大模块"骨架至今仍是进销存系统的最小完备设计——变化的是多租户、多渠道、AI 智能、合规(金税四期)、低代码、行业垂直化这 6 个方向。业务本质未变,技术栈与边界在持续扩张

使用 Hugo 构建
主题 StackJimmy 设计