feat(P17A-1,P17A-2): 新增采购模型权限与系统种子
这个提交包含在:
@@ -35,6 +35,15 @@ describe("Permission Constants", () => {
|
||||
expect(hrPermissions).toEqual(expect.arrayContaining(["leave.view_all", "leave.manage"]));
|
||||
});
|
||||
|
||||
it("grants procurement permissions to configured roles", () => {
|
||||
expect(hasPermission(resolvePermissionsForRoles(["employee"]), "procurement.create")).toBe(true);
|
||||
expect(hasPermission(resolvePermissionsForRoles(["employee"]), "procurement.view_own")).toBe(true);
|
||||
expect(hasPermission(resolvePermissionsForRoles(["manager"]), "procurement.approve")).toBe(true);
|
||||
expect(hasPermission(resolvePermissionsForRoles(["finance"]), "procurement.approve")).toBe(false);
|
||||
expect(hasPermission(resolvePermissionsForRoles(["finance_mgr"]), "procurement.manage")).toBe(true);
|
||||
expect(hasPermission(resolvePermissionsForRoles(["administration"]), "procurement.manage")).toBe(true);
|
||||
});
|
||||
|
||||
it("maps workflow entities to correct permission codes", () => {
|
||||
expect(resolveEntityPermission("reimbursement", "approve")).toBe("expense.approve");
|
||||
expect(resolveEntityPermission("reimbursement", "transfer")).toBe("expense.transfer");
|
||||
|
||||
@@ -87,8 +87,8 @@ describe("documentSequence service", () => {
|
||||
it("falls back to default purchase category when sequence row does not exist", async () => {
|
||||
const prisma = buildPrisma({
|
||||
categoryMap: {
|
||||
purchase_general: {
|
||||
code: "purchase_general",
|
||||
PR_STANDARD: {
|
||||
code: "PR_STANDARD",
|
||||
entity_type: "purchase_request",
|
||||
sequence_prefix: "CG",
|
||||
number_length: 4,
|
||||
@@ -102,15 +102,15 @@ describe("documentSequence service", () => {
|
||||
const config = await resolveDocumentSequenceConfig(prisma, { documentType: "purchase_request" });
|
||||
|
||||
expect(config.source).toBe("document_category");
|
||||
expect(config.documentCategoryCode).toBe("purchase_general");
|
||||
expect(config.documentCategoryCode).toBe("PR_STANDARD");
|
||||
expect(config.prefix).toBe("CG");
|
||||
});
|
||||
|
||||
it("issues a document number using category-driven config", async () => {
|
||||
const prisma = buildPrisma({
|
||||
categoryMap: {
|
||||
purchase_general: {
|
||||
code: "purchase_general",
|
||||
PR_STANDARD: {
|
||||
code: "PR_STANDARD",
|
||||
entity_type: "purchase_request",
|
||||
sequence_prefix: "CG",
|
||||
number_length: 4,
|
||||
|
||||
在新工单中引用
屏蔽一个用户