编辑 | blame | 历史 | 原始文档

发货通知单生成销售出库单 - 前端联调方案

涉及页面

  • 发货通知单列表页
  • 发货通知单详情页
  • 销售出库单列表页
  • 销售出库单详情页

业务流程

销售订单 → 发货通知单 → 销售出库单 → 出库完成
   ↓            ↓             ↓            ↓
出库状态同步  出库状态同步   执行出库    状态回写上游

状态同步规则:

触发动作 上游单据 更新内容
销售出库单执行出库 发货通知单行 累加 outCount(已出库数量)
销售出库单执行出库 发货通知单 更新 outStatus(出库状态),全部出库时 status 变为"已完成"
销售出库单执行出库 ERP销售订单行 累加 outCount(出库数量)
销售出库单执行出库 ERP销售订单 更新 outStatus(出库状态)

数据带入规则:

源单据 目标单据 带入字段
发货通知单 销售出库单 客户、销售订单号、收货人、联系电话、收货地址
发货通知单行 销售出库单行 物料、数量、批次、是否检验

新增 API

从发货通知单生成销售出库单

方法 路径 说明
POST /mes/wm/sales-notice/generate-product-sales 从发货通知单生成销售出库单

请求参数:

参数 类型 必填 说明
id Long 发货通知单ID(Query参数)

响应:

{
  "code": 0,
  "data": 123,  // 新生成的销售出库单ID
  "msg": "操作成功"
}

新增字段

发货通知单主表新增字段

字段 类型 说明
outStatus Integer 出库状态:0-未出库,1-部分出库,2-全部出库

发货通知单行新增字段

字段 类型 说明
outCount Decimal 已出库数量

前端修改点

1. 发货通知单列表页/详情页

在"待出库"状态的发货通知单上添加"生成出库单"按钮:

按钮显示条件:
- 单据状态 = 待出库(status = 20)

按钮点击逻辑:
1. 调用 API /mes/wm/sales-notice/generate-product-sales?id={noticeId}
2. 成功后提示"生成成功",跳转到销售出库单详情页
3. 失败时显示错误信息

列表显示新增:
- 出库状态列:显示"未出库"/"部分出库"/"全部出库"

2. 发货通知单行列表

显示新增:
- 已出库数量列:显示每行的已出库数量
- 出库进度列:显示 已出库数量/总数量 的进度条或文字

3. 销售出库单详情页

从发货通知单生成的销售出库单,以下字段已自动填充:
- 基本信息:出库单号、客户、销售订单号、出库日期
- 收货信息:联系人、联系电话、收货地址
- 行信息:物料、数量、批次、是否检验

注意: 拣货明细需要手动添加

字段映射表

主表字段映射

发货通知单字段 销售出库单字段 说明
clientId clientId 客户ID
saleOrderId saleOrderId 销售订单ID
saleOrderCode salesOrderCode 销售订单号
salesDate salesDate 出库日期
recipientName contactName 收货人 → 联系人
recipientTelephone contactTelephone 联系电话
recipientAddress contactAddress 收货地址

行表字段映射

发货通知单行字段 销售出库单行字段 说明
saleOrderItemId saleOrderItemId 销售订单明细ID
itemId itemId 物料ID
quantity quantity 出库数量
batchId batchId 批次ID
batchCode batchCode 批次号
oqcCheckFlag oqcCheckFlag 是否检验

业务规则说明

场景 规则
生成条件 发货通知单状态必须为"待出库"
生成后状态 销售出库单状态为"草稿"
关联关系 销售出库单的 noticeId 关联发货通知单的 id
出库完成 累加发货通知单行的 outCount,计算主单 outStatus
全部出库 发货通知单 outStatus=2 时,status 自动变为"已完成"

出库状态枚举

名称 说明
0 未出库 所有行的 outCount = 0
1 部分出库 部分行已出库,或部分数量已出库
2 全部出库 所有行的 outCount >= quantity

注意事项

  • 一个发货通知单可以生成多个销售出库单(部分出库场景)
  • 生成的销售出库单为草稿状态,需要提交后才能执行拣货、出库操作
  • 拣货明细需要手动添加,指定从哪个仓库、库区、库位拣货
  • 如果发货通知单行有"是否检验"标识,销售出库单提交后会进入"待检测"状态
  • 出库完成后会自动同步状态到发货通知单和 ERP 销售订单