Fix Bug #517: [库房管理-领用管理] 业务逻辑校验缺失:允许保存并提交领用数量大于库存数量(零库存领用)的单据
根因分析: - 前端 handleSubmitApproval(提交审批)未做库存校验,直接调用后端 API - 后端 submitApproval 也未做库存校验,仅在保存时(addOrEditIssueReceipt)有 validateRequisitionStock - 用户可绕过前端保存校验(如编辑已有草稿后直接提交审批),将超库存单据提交审批流 修复方案: 1. 后端:在 submitApproval 方法中增加 validateRequisitionStockByBusNo,通过单据详情查询已保存明细,逐行校验领用数量是否超过源仓库库存 2. 前端:在 handleSubmitApproval 提交前逐行调用 validateRequisitionQtyVsStock 校验库存,超库存时拦截并提示 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -982,6 +982,16 @@ function handleSubmitApproval() {
|
||||
} else if (!form.purchaseinventoryList[length - 1].isSave) {
|
||||
proxy.$modal.msgWarning('第' + length + '行单据未保存,请先保存');
|
||||
} else {
|
||||
// 提交审批前逐行校验库存,防止超库存单据进入审批
|
||||
for (let i = 0; i < form.purchaseinventoryList.length; i++) {
|
||||
const line = form.purchaseinventoryList[i];
|
||||
if (!line) continue;
|
||||
const err = validateRequisitionQtyVsStock(line, i + 1);
|
||||
if (err) {
|
||||
proxy.$modal.msgWarning(err);
|
||||
return;
|
||||
}
|
||||
}
|
||||
submitApproval(receiptHeaderForm.busNo).then((response) => {
|
||||
if (response.code == 200) {
|
||||
proxy.$modal.msgSuccess('提交审批成功');
|
||||
|
||||
Reference in New Issue
Block a user