yueli
7071c89305
feat(outbound): 原单退回后可自动生成补发单
背景
----
原单退回只做两件事:良品加回库存 / 不良品转在管台账。但**申请人的需求并没有
被满足** —— 东西交回来了(甚至还是坏的),系统却不提醒任何人、无单据承载
「我要重新领一份」,退回与后续再出库之间也毫无关联。现场只能靠人记住再手建
一张出库申请,而那张单与原单看不出任何关系。
改动
----
· outbound_approval 新增 source_return_id(非空 = 补发单),把「退回 → 补发」
串成闭环。
· POST /inbound/stock/return-from-outbound 新增 need_reissue / reissue_qty:
勾选即自动生成一张**免审批**出库单(status=1,直接进入待执行),
沿用原单出库类型,并关联回本笔退回。
★ 为什么只存退回单 ID,不加 is_reissue 布尔列
「是不是补发」完全由来源是否存在决定,再加一列就是同一事实的两处存储,
必然有不同步的一天。也不冗余存原出库单 ID:trans_return 已有 outbound_id。
★ 库存不足 → 整笔回滚(关键取舍)
补发走 reserve_for_items(strict=True),与出库申请同一口径。不足时抛错,
退回也一并回滚 —— 若只让补发静默失败,「需要补发」的意图就丢了,
那正是本功能要解决的问题。库管看到提示后取消勾选即可只做退回过账。
★ 一个被发现的数据约束(改变了原设计)
原打算把补发单的申请人设为「原出库单的申请人」,但 **trans_outbound 既没有
申请人字段,也没有指回原审批单的关联**(扫码出库时只把审批单状态置为 3)。
按 consumer_name 反查会重蹈「重名错绑」的覆辙。故申请人取**当前操作人**,
原领用人写入备注供人工追溯。
⚠ 若业务要求补发单挂在原领用人名下,需要前端在退回弹窗里加一个「补发给谁」
的人员选择 —— 请确认是否需要。
验证(打桩 JWT 直连真实接口,22 项断言全通过)
勾选补发 → 免审批单生成、关联退回、预占库存、原领用人入备注;
不勾选 → 不生成补发单、良品正常回库;
★ 库存不足 → 接口拒绝且**退回流水/补发单/退回额度全部未落库**(整笔回滚);
补发量 > 退回量被拒;库存与数据零残留。
2026-09-17 11:56:38 +08:00
..
2026-09-11 14:38:40 +08:00
2026-09-08 10:14:40 +08:00
2026-09-16 16:44:46 +08:00
2026-09-09 09:31:12 +08:00
2026-09-09 10:47:36 +08:00
2026-09-16 16:44:46 +08:00
2026-09-16 16:44:46 +08:00
2026-09-10 17:21:14 +08:00
2026-09-10 09:46:52 +08:00
2026-09-10 09:46:52 +08:00
2026-09-10 10:14:19 +08:00
2026-09-11 11:33:04 +08:00
2026-09-11 13:28:43 +08:00
2026-09-08 10:14:40 +08:00
2026-09-17 10:51:31 +08:00
2026-07-17 13:07:12 +08:00
2026-09-16 15:45:02 +08:00
2026-07-17 15:29:59 +08:00
2026-09-09 13:00:35 +08:00
2026-09-16 15:45:22 +08:00
2026-09-16 15:45:22 +08:00
2026-09-17 09:17:51 +08:00
2026-09-17 09:17:51 +08:00
2026-09-17 10:04:05 +08:00
2026-09-17 10:12:31 +08:00
2026-09-17 10:44:00 +08:00
2026-09-17 10:46:31 +08:00
2026-09-17 11:07:50 +08:00
2026-09-17 11:26:36 +08:00
2026-09-17 11:56:38 +08:00
2026-09-10 10:14:19 +08:00