Skip to content

销售员-发货管理标准作业程序(SOP)

文档编号: BayesMES-SOP-SALES-003-V1.0
文档版本: V1.0
适用系统: BayesMES 制造执行系统
适用角色: 销售员、仓库操作员、发货协调员
适用终端: Web端 + App端
SOP类型: 双端协作SOP
角色类型: 双端协作
最后更新: 2026-04-29
下次评审: 2026-10-29
文档状态: 评审中
编制人: BayesMES团队
审核人: ysfl
批准人: 待批准


真实性核对说明

本文档依据《SOP编制标准》V2.2.0 编制,发货管理流程以当前 sales/shipments 后端接口、Shared 发货类型、Web 端发货创建页面,以及 App 端发货列表/详情/确认页面源码为准。当前真实流程是“Web 创建待发货单 -> App 执行确认发货 -> Web 或 App 确认签收/取消”,不采用旧文档中的 deliveries 接口定义。


目录


1. 名词术语表

术语说明
发货单销售订单的发货执行单据,单号前缀为 SHP
待发货发货单创建后的初始状态,尚未扣减库存
已发货完成批次选择和库存扣减后的状态
已签收人工确认客户收货后的状态
MTO按单生产。可发货数量 = 已生产数量 - 已发货数量
MTS库存销售。可发货数量 = 订单数量 - 已发货数量
FIFO先进先出。系统按批次生产日期升序返回可用批次

2. 功能概述

2.1 功能说明

当前销售发货是跨销售与仓库协同流程,终端分工如下:

  1. 销售员在 Web 端从已确认销售订单创建发货单。
  2. 仓库或发货执行人员在 App 端查看待发货任务、选择批次并确认发货。
  3. 销售或发货协调人员在 Web 端或 App 端确认签收;如有异常,可取消发货单。

2.2 页面入口

页面路由说明
发货管理列表/sales/shipment查询、查看、创建发货单
创建发货单/sales/shipment/create选择销售订单并生成待发货单
发货单详情/sales/shipment/detail/:id查看发货记录、签收和取消
App 发货列表/mes/pages/shipment/list/index仓库侧查看待发货任务
App 发货详情/mes/pages/shipment/detail/index查看发货单详情并执行签收/取消
App 确认发货/mes/pages/shipment/confirm/index扫码或手动选批次并扣减库存

2.3 覆盖范围

本SOP覆盖创建发货单、App 端确认发货、确认签收和取消发货单。仓库一线操作的简洁版说明仍可参考《仓库操作员-销售发货SOP》。


3. 操作前准备

3.1 权限要求

操作权限标识说明
查看发货单sales:shipment:view进入发货列表和详情
创建发货单sales:shipment:create打开创建页并保存待发货单
确认发货sales:shipment:confirm扣减库存并更新状态
确认签收sales:shipment:receive将状态更新为已签收
取消发货单sales:shipment:cancel取消待发货/已发货单据

3.2 前置条件

条件要求依据
销售订单已确认创建页只加载状态为已确认的订单Web 创建页请求参数 status: 2
存在可发货数量订单至少有一条 shippableQuantity > 0 的明细ShipmentService::getShippableItems()
库存批次可用确认发货时批次必须存在、未冻结、质量状态为合格、库存充足ShipmentService::processShipmentItem()
物流信息准备好发货方式、物流供应商、单号可录入创建页和确认页字段

3.3 相关资料

资料用途
已确认销售订单作为发货源单
客户收货信息核对收货人、联系电话、地址
物流安排选择发货方式、物流供应商和单号
库存批次信息确认可发货批次和数量

4. 创建发货单(Web端)

4.1 流程总览

进入发货管理列表点击创建发货单选择已确认销售订单系统加载收货信息和可发货物料填写计划发货日期和物流信息填写本次发货数量点击创建发货单状态=待发货

4.2 步骤一:打开发货管理列表

操作路径:

销售管理 → 发货管理 (/sales/shipment)

列表页包含:

区域说明
统计卡片全部、待发货、已发货、已签收、已取消
搜索栏关键词、状态、发货日期范围
工具栏搜索、重置、字段设置、创建发货单
数据表格查看发货单号、订单号、客户、状态、发货方式等

4.3 步骤二:点击“创建发货单”

  1. 在列表页点击“创建发货单”。
  2. 系统跳转到 /sales/shipment/create
  3. 页面显示基本信息、收货信息、物流信息和发货明细区域。
Web创建发货单页面

图4-1 Web 创建发货单:已选择销售订单并自动带出待发货明细

4.4 步骤三:选择销售订单

  1. 在“销售订单”下拉框选择订单。
  2. 系统自动带出客户联系人电话和收货地址。
  3. 系统调用可发货接口,加载发货明细。

4.5 步骤四:确认发货模式和数量

系统根据订单明细的“需生产”标记,自动判断模式:

模式触发条件可发货数量规则
MTO明细 needProductionPlan=true已生产数量 - 已发货数量
MTS明细 needProductionPlan=false订单数量 - 已发货数量

页面会在发货明细头部显示当前模式标识,并为每个物料默认带出本次发货数量。

4.6 步骤五:填写基本和物流信息

页面字段说明
计划发货日期可选
收货人/联系电话/收货地址选单后自动带出,可手工修改
发货方式快递、物流、自提
物流供应商可选,选择后自动带出快递公司名称
快递公司可手工填写
物流单号可选
运费可选
备注可选

当选择“自提”时,页面会自动清空物流供应商、快递公司、物流单号和运费。

4.7 步骤六:创建发货单

  1. 确认至少一条物料的“本次发货”数量大于 0。
  2. 点击“创建发货单”。
  3. 系统提示“发货单创建成功”,并返回列表页。
  4. 新发货单状态为「待发货」。

5. 确认发货(App端)

5.1 App入口与任务接收

App操作路径:

库存管理 → 发货管理 (/mes/pages/shipment/list/index)

当前 App 端“发货管理”挂在库存管理首页功能入口下,说明发货执行与仓库库存作业直接关联。

App 列表页支持:

功能说明
统计卡片待发货、已发货、已签收数量
状态筛选全部、待发货、已发货、已签收
详情跳转点击卡片进入发货单详情
App库存管理入口

图5-1 App 库存管理首页:发货管理入口位于库存业务功能区

App发货管理列表

图5-2 App 发货管理列表:可查看待发货单并直接进入确认发货

5.2 进入确认发货页

进入方式有两种:

  1. App 发货列表中,点击待发货单进入详情,再点击“确认发货”。
  2. App 发货详情页底部,对待发货记录点击“确认发货”。

当前 Web 端也有确认发货页,但 App 端实现了扫码选批次与库存作业交互,更符合仓库执行场景。

5.3 页面内容

确认发货页包含:

区域内容
发货单信息发货单号、销售订单、客户、收货人、联系电话、状态、收货地址
物流信息发货方式、物流供应商、快递公司、物流单号、运费
发货明细每个物料的计划数量、可选批次、实际数量
备注发货备注
App待发货详情页

图5-3 App 待发货详情页:可查看发货单信息并进入确认发货

5.4 选择批次

  1. 每条物料必须在“选择批次”下拉框中选择一个批次。
  2. 下拉列表展示批次号和可用数量。
  3. App 支持扫码选择批次,也支持手动选择或手动输入批次号。
  4. 系统按生产日期升序返回批次,建议优先选靠前批次。

批次必须同时满足:

条件说明
批次存在物料和批次号能匹配到库存批次
库存大于 0available_quantity > 0
质量合格quality_status = QUALIFIED
未冻结冻结批次不能发货
App确认发货页

图5-4 App 确认发货页:填写物流信息、调整数量并通过“扫码/选择”指定发货批次

5.5 填写实际数量并提交

  1. 实际数量默认等于计划数量。
  2. 页面限制实际数量不能大于计划数量。
  3. 点击“确认发货”。
  4. 系统校验所有物料已选批次,且实际数量大于 0。
  5. 提交成功后提示“发货确认成功,库存已扣减”,并返回列表页。

5.6 确认发货后的系统结果

项目系统结果
发货单状态待发货 → 已发货
发货时间记录 actualShipDate
发货人记录 shippedBy
库存扣减对应批次库存
库存事务生成 SALES_OUT 出库事务
销售订单明细累加 shipped_quantity
销售订单汇总更新订单已发货数量;全部发完时订单状态变为已完成

6. 确认签收与取消

6.1 确认签收

适用状态:仅已发货。当前 Web 端和 App 端都支持确认签收。

操作步骤:

  1. 在 Web 发货列表/详情页,或 App 发货详情页,对已发货记录点击“确认签收”。
  2. 在弹窗中确认操作。
  3. 系统将状态更新为「已签收」。

6.2 取消发货单

适用状态:待发货、已发货。当前 Web 端和 App 端都支持取消。

操作步骤:

  1. 在 Web 列表/详情页或 App 详情页点击“取消”。
  2. 弹窗提示“已发货的订单将回退库存”。
  3. 确认后系统执行取消。

取消后的系统结果:

取消时状态结果
待发货直接改为已取消
已发货回退库存、生成 SALES_RETURN 入库事务、回退订单明细已发货数量,再改为已取消

已签收状态的发货单不能取消。


7. 状态与业务规则

7.1 发货单状态

状态说明可执行操作
待发货已创建,未扣减库存Web查看,App确认发货,Web/App取消
已发货已扣减库存,等待签收Web/App查看,Web/App确认签收,Web/App取消
已签收客户已签收查看
已取消发货单已作废查看

7.2 关键业务规则

规则说明
只允许已确认订单创建发货单Web 创建页销售订单下拉只加载状态为已确认的订单
只允许待发货单执行确认发货App/ Web 确认发货都只允许待发货单据执行
全部发货完成时订单自动完成总发货数量达到订单总数量时,订单状态变为已完成
取消已发货单会回退库存系统执行库存冲销和订单发货数量回退

8. 异常处理与应急措施

异常场景系统表现处理方式
选不到销售订单Web 创建页下拉框无数据检查订单是否已确认,或是否已无可发货数量
可发货物料为空创建页明细为空回到订单确认生产/库存条件是否满足
批次不存在App 确认发货失败重新选择有效批次
批次被冻结提示无法发货联系仓库管理员处理批次状态
批次质量非合格提示只有合格品才能发货联系质量部门处理
库存不足提示可用数量与需求数量降低本次发货量或更换批次
已签收单据误点取消系统禁止取消需通过退货或补单等业务流程处理

9. 常见问题解答(FAQ)

问题解答
为什么只有部分订单能在创建页选到?当前 Web 创建页只展示已确认状态的订单。
为什么发货执行在 App 里?App 端发货入口挂在库存管理首页下,当前产品设计就是仓库协同执行口径。
为什么发货明细会显示 MTO/MTS?系统根据订单明细是否“需生产”自动区分按单生产和库存销售。
为什么必须选批次?App 确认发货页要求每条明细都选择批次,提交时会校验。
自提还要填物流信息吗?选择“自提”后,页面会清空并禁用物流相关字段。
确认签收是不是自动同步物流平台?当前实现是人工点击确认签收,不是自动回写。

10. 源码与依据清单

类型文件/路径已核对内容结论
后端路由bayes-mes-base-core-php/backend/routes/api.php发货列表、创建、确认、签收、取消真实路径与SOP一致
后端控制器backend/app/Modules/Sales/Controllers/ShipmentController.php创建、确认发货、确认签收、取消入口与校验与SOP一致
后端服务backend/app/Modules/Sales/Services/ShipmentService.phpMTO/MTS规则、批次校验、库存扣减、签收、取消回退与SOP一致
后端模型backend/app/Modules/Sales/Models/Shipment.php状态和发货方式定义与SOP一致
后端资源backend/app/Modules/Sales/Resources/ShipmentResource.phpShipmentItemResource.php页面返回字段与SOP一致
Shared 类型bayes-mes-shared/types/shipment/*.tsapi/shipment/factory.ts发货状态、发货方式、表单结构和 API 路径与SOP一致
前端列表bayes-mes-base-web/apps/mes/src/modules/mes/shipment/views/ShipmentList.vue列表入口、按钮、状态操作与SOP一致
前端创建页apps/mes/src/modules/mes/shipment/views/ShipmentCreate.vue订单选择、模式显示、物流字段、创建动作与SOP一致
前端详情页apps/mes/src/modules/mes/shipment/views/ShipmentDetail.vue查看、确认签收、取消动作与SOP一致
App 库存首页bayes-mes-app-vue/src/mes/pages/inventory/index/index.vue发货管理入口挂在库存管理首页与SOP一致
App 发货列表bayes-mes-app-vue/src/mes/pages/shipment/list/index.vue仓库侧列表、状态筛选、详情入口与SOP一致
App 发货详情bayes-mes-app-vue/src/mes/pages/shipment/detail/index.vue确认发货、确认签收、取消按钮与SOP一致
App 确认发货页bayes-mes-app-vue/src/mes/pages/shipment/confirm/index.vue扫码选批次、数量校验、确认发货动作与SOP一致
App Storebayes-mes-app-vue/src/mes/store/shipment.tsApp 端发货列表、详情、确认发货、签收、取消能力与SOP一致

11. 待确认问题清单

序号问题现状建议
1Web 与 App 的岗位分工是否要固化当前系统支持多端操作,业务职责可配置建议由业务发布正式岗位边界
2创建页是否需要仓库选择表单数据有 warehouse_id,页面未提供仓库选择字段由业务确认是否按批次自动带出即可
3签收是否需要录入签收时间和备注后端支持 received_dateremark,前端当前直接确认如需追溯,补充签收弹窗
4是否保留 Web 确认发货入口Web 已有确认页,但 App 更贴近现场作业建议明确主执行端,避免双端培训口径混乱

12. 关联文档


13. 截图清单

截图编号建议文件名截图内容状态
01shipment-web-create-selected-order.pngWeb 创建发货单页面,已选销售订单并显示发货明细已采集
02shipment-web-list-refreshed.pngWeb 发货管理列表页已采集,页面存在渲染异常需人工复核
03shipment-app-inventory-entry.pngApp 库存管理首页的发货管理入口已采集
04shipment-app-list-with-data.pngApp 发货管理列表,含待发货单已采集
05shipment-app-detail-pending.pngApp 待发货详情页已采集
06shipment-app-confirm-rendered.pngApp 确认发货页、发货方式、批次扫码/选择入口已采集

14. 快速参考卡

场景快速动作
创建发货单Web:发货管理 → 创建发货单
创建条件销售订单必须已确认,且存在可发货数量
确认发货App:库存管理 → 发货管理 → 选择批次 + 填数量 + 确认发货
签收Web 或 App:已发货状态下点击确认签收
取消Web 或 App:待发货/已发货可取消,已签收不可取消

15. 版本记录

版本日期变更内容变更人
V1.02026-04-29首次创建销售发货管理SOP,按真实 shipments 流程重写AI助手