ATTV1 实现考勤统一入口与企微同步
这个提交包含在:
@@ -55,6 +55,19 @@ describe("Workflow Route Permissions", () => {
|
||||
expect(actions).toEqual(["approve", "reject", "return"]);
|
||||
});
|
||||
|
||||
it("allows attendance approvers to approve/reject attendance corrections without return action", () => {
|
||||
const actions = listAllowedActionsForTask(
|
||||
{ employee: { permissionCodes: ["attendance.approve"] } },
|
||||
{
|
||||
status: "pending",
|
||||
workflow_instance: { entity_type: "attendance_correction" },
|
||||
},
|
||||
true,
|
||||
);
|
||||
|
||||
expect(actions).toEqual(["approve", "reject"]);
|
||||
});
|
||||
|
||||
it("allows transfer on approval tasks when actor also has expense.transfer", () => {
|
||||
const reimbursementActions = listAllowedActionsForTask(
|
||||
{ employee: { permissionCodes: ["expense.approve", "expense.transfer"] } },
|
||||
@@ -109,9 +122,9 @@ describe("Workflow Route Permissions", () => {
|
||||
});
|
||||
|
||||
it("parses optional workflow entityType filter for PC approval center", () => {
|
||||
expect(parseTaskListQuery({ status: "pending", entityType: "purchase_request", page: "2" })).toMatchObject({
|
||||
expect(parseTaskListQuery({ status: "pending", entityType: "attendance_correction", page: "2" })).toMatchObject({
|
||||
status: "pending",
|
||||
entityType: "purchase_request",
|
||||
entityType: "attendance_correction",
|
||||
page: 2,
|
||||
pageSize: 20,
|
||||
});
|
||||
|
||||
在新工单中引用
屏蔽一个用户