fix(scan-draft): 撤回申请单时清理其扫码草稿
问题
----
草稿按 (user_id, biz_type, request_id) 存储,而撤回逻辑原先只做两件事:
释放预占、把状态置为 4。没有任何草稿清理 —— 撤回后草稿成为孤儿数据:
· 单据状态变为 4,不再出现在扫码页的下拉里(那里只拉 status=1),
草稿从此永远读不到;
· 若不清理会持续累积,每行是一个整单 JSON 快照。
实测(撤回前 2 份草稿):撤回后该单草稿数归 0。
★ 清的是**所有用户**在这张单上的草稿,而非仅撤回者自己的 ——
可能有多人扫过同一张单,只清自己的会留下他人的孤儿数据。
出库 outbound_service._release_and_close
借库 borrow_service._release_and_close
两处共用底层,一并补上。
This commit is contained in:
@ -559,6 +559,14 @@ class BorrowApprovalService:
|
||||
from app.services.inventory_reservation import release_reserved
|
||||
restored = release_reserved(approval.get_items())
|
||||
|
||||
# ★ 清理该单据的扫码草稿(含其他用户的)。
|
||||
# 撤回后单据状态变为 4,不再出现在扫码页的下拉里(那里只拉 status=1),
|
||||
# 草稿从此成为永远读不到的死数据。
|
||||
from app.models.scan_draft import ScanDraft
|
||||
ScanDraft.query.filter_by(
|
||||
biz_type='borrow', request_id=approval.id
|
||||
).delete(synchronize_session=False)
|
||||
|
||||
approval.status = 4 # 已撤回/已完结
|
||||
db.session.commit()
|
||||
return True, f"申请单已撤回,释放 {restored} 项预占库存", approval
|
||||
|
||||
@ -1327,6 +1327,18 @@ class OutboundApprovalService:
|
||||
from app.services.inventory_reservation import release_reserved
|
||||
restored = release_reserved(approval.get_items())
|
||||
|
||||
# ★ 清理该单据的扫码草稿。
|
||||
# 草稿按 (user_id, request_id) 隔离,撤回后单据状态变为 4,
|
||||
# 不会再出现在扫码页的单据下拉里(那里只拉 status=1),
|
||||
# 草稿从此成为永远读不到的死数据。此处一并清掉。
|
||||
#
|
||||
# 注意:要清**所有用户**在这张单上的草稿,而非仅撤回者自己的 ——
|
||||
# 可能有多人扫过同一张单,只清自己的会留下他人的孤儿数据。
|
||||
from app.models.scan_draft import ScanDraft
|
||||
ScanDraft.query.filter_by(
|
||||
biz_type='outbound', request_id=approval.id
|
||||
).delete(synchronize_session=False)
|
||||
|
||||
approval.status = 4 # 4-已撤回/已完结
|
||||
approval.actual_approver_id = user_id
|
||||
approval.approved_at = None
|
||||
|
||||
Reference in New Issue
Block a user