实现 B-2a 报销审批内容工作台(reimbursement-approval-content-workbench)
这个提交包含在:
@@ -854,6 +854,40 @@ describe("reimbursements routes expense standard integration", () => {
|
||||
exceededAmount: "60.00",
|
||||
}),
|
||||
]);
|
||||
expect(state.workflowInstanceCreatePayload?.context_data).toEqual(expect.objectContaining({
|
||||
budgetCheck: null,
|
||||
budgetCheckRecorded: true,
|
||||
}));
|
||||
|
||||
await app.close();
|
||||
});
|
||||
|
||||
it("persists the calculated budget check in the workflow submission snapshot", async () => {
|
||||
resolveEntityPrecheckMock.mockResolvedValue(buildPrecheck());
|
||||
resolveApplicableBudgetPoolByContextMock.mockResolvedValue({
|
||||
id: "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
|
||||
code: "BUDGET-2026",
|
||||
allocated_amount: "1000.00",
|
||||
used_amount: "700.00",
|
||||
warning_threshold_percent: 80,
|
||||
});
|
||||
|
||||
const { app, state } = await buildApp();
|
||||
const response = await app.inject({
|
||||
method: "POST",
|
||||
url: `/api/reimbursements/${REIMBURSEMENT_ID}/submit`,
|
||||
});
|
||||
|
||||
expect(response.statusCode).toBe(200);
|
||||
expect(state.workflowInstanceCreatePayload?.context_data?.budgetCheck).toEqual({
|
||||
budgetId: "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
|
||||
budgetCode: "BUDGET-2026",
|
||||
controlMode: "warn",
|
||||
usagePercent: 88,
|
||||
exceededThreshold: true,
|
||||
exceededBudget: false,
|
||||
});
|
||||
expect(state.workflowInstanceCreatePayload?.context_data?.budgetCheckRecorded).toBe(true);
|
||||
|
||||
await app.close();
|
||||
});
|
||||
|
||||
在新工单中引用
屏蔽一个用户