# 发货通知单生成销售出库单 - 前端联调方案 ## 涉及页面 - 发货通知单列表页 - 发货通知单详情页 - 销售出库单列表页 - 销售出库单详情页 ## 业务流程 ``` 销售订单 → 发货通知单 → 销售出库单 → 出库完成 ↓ ↓ ↓ ↓ 出库状态同步 出库状态同步 执行出库 状态回写上游 ``` **状态同步规则:** | 触发动作 | 上游单据 | 更新内容 | |----------|----------|----------| | 销售出库单执行出库 | 发货通知单行 | 累加 outCount(已出库数量) | | 销售出库单执行出库 | 发货通知单 | 更新 outStatus(出库状态),全部出库时 status 变为"已完成" | | 销售出库单执行出库 | ERP销售订单行 | 累加 outCount(出库数量) | | 销售出库单执行出库 | ERP销售订单 | 更新 outStatus(出库状态) | **数据带入规则:** | 源单据 | 目标单据 | 带入字段 | |--------|----------|----------| | 发货通知单 | 销售出库单 | 客户、销售订单号、收货人、联系电话、收货地址 | | 发货通知单行 | 销售出库单行 | 物料、数量、批次、是否检验 | ## 新增 API ### 从发货通知单生成销售出库单 | 方法 | 路径 | 说明 | |------|------|------| | POST | /mes/wm/sales-notice/generate-product-sales | 从发货通知单生成销售出库单 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | 发货通知单ID(Query参数) | **响应:** ```json { "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 销售订单