收敛报销退回动作与审批布局 [09-04-approval-return-reject-actions]

这个提交包含在:
2026-09-04 10:31:32 +08:00
父节点 59df0594bb
当前提交 8551601818
共修改 17 个文件,包含 520 行新增和 56 行删除
@@ -32,6 +32,19 @@ describe("Workflow Route Permissions", () => {
expect(actions).toEqual(["approve", "reject", "return"]);
});
it("exposes return instead of reject for reimbursement tasks", () => {
const actions = listAllowedActionsForTask(
{ employee: { permissionCodes: ["expense.approve"] } },
{
status: "pending",
workflow_instance: { entity_type: "reimbursement" },
},
true,
);
expect(actions).toEqual(["approve", "return"]);
});
it("does not allow expense approvers to act on leave tasks without leave.approve", () => {
const actions = listAllowedActionsForTask(
{ employee: { permissionCodes: ["expense.approve"] } },
@@ -117,11 +130,20 @@ describe("Workflow Route Permissions", () => {
},
true,
);
const attendanceActions = listAllowedActionsForTask(
{ employee: { permissionCodes: ["attendance.approve", "expense.transfer"] } },
{
status: "pending",
workflow_instance: { entity_type: "attendance_correction" },
},
true,
);
expect(reimbursementActions).toContain("transfer");
expect(leaveActions).toContain("transfer");
expect(purchaseActions).toContain("transfer");
expect(travelActions).toContain("transfer");
expect(reimbursementActions).toEqual(["approve", "return", "transfer"]);
expect(leaveActions).toEqual(["approve", "reject", "return", "transfer"]);
expect(purchaseActions).toEqual(["approve", "reject", "return", "transfer"]);
expect(travelActions).toEqual(["approve", "reject", "return", "transfer"]);
expect(attendanceActions).toEqual(["approve", "reject", "transfer"]);
});
it("does not allow transfer without matching approve permission", () => {