JWS Project Description

สาขา

เป็นข้อมูลสาขา มีผลเกี่ยวกับสิทธิการเข้าถึงข้อมูลต่างๆ ดูรายละเอียด

คุณสมบัติ

เป็นข้อมูลที่ใช้ในการสร้าง Flow Account โดยจะเป็นข้อมูลเสริมที่สามารถเพิ่มเข้าไปนอกเหนือจากที่ระบบมีให้ได้ โดยข้อมูลคุณสมบัติจะมีผลกับ ใบรายการคำขอ ให้สามารถกรอกข้อมูลเพิ่มเติมเข้าไปเก็บได้

ขั้นตอนการทำงาน

เป็นข้อมูลสำหรับใช้กำหนดขั้นตอน ผู้รับผิดชอบและคุณสมบัติ โดยข้อมูลนี้จะถูกนำไปใช้กำหนดในข้อมูลสินค้าและบริการใน่ส่วนของ Package และมีผลในใบรายการคำขอ โดยที่ใบรายการคำขอจะมีขั้นตอนตามที่กำหนดไว้

NOTE 1: ข้อมูลขั้นตอนการทำงานถูกออกแบบในตอนแรกให้สามารถกำหนดเองได้อย่างอิสระ ซึ่งระบบที่ทำไว้ เมื่อกำหนดค่าของขั้นตอนในสินค้าและบริการจะมี Field ข้อมูลหนึ่งที่ใช้ในการเก็บข้อมูลอะไรก็ได้ซึ่งในตอนนี้ใช้ในการกำหนดว่าสินค้านั้นๆ อยู่ในขั้นตตอนไหน และมีคุณสมบัติอะไรบ้าง และสามารถเพิ่มข้อมูลเข้าไปได้เลย และ Field ข้อมูลนี้ หลังบ้านจะไม่ถูกนำมาใช้ในการดึงข้อมูลโดยเด็ดขาดเนื่องจากไม่รู้ว่าโครงสร้างเป็นยังไง (จริงๆ สามารถทำได้ แต่ต้องตกลงกับหน้าบ้าน) เนื่องจาก Field นี้หลักๆ จะใช้ในการแสดงผลในหน้าบ้านเพียงเท่านั้น

NOTE 2: ขั้นตอนการทำงานแก้ไขมีผลต่อการแสดงผลข้อมูล Flow การทำงานใบรายการคำขอ

ผู้ใช้

ข้อมูลผู้ใช้ของระบบ โดยผู้ใช้จะมีสิทธิตามสาขาๆ นั้นๆ แตกต่างกันขึ้นอยู่กับ Role ของผู้ใช้

ในส่วนของหลังบ้าน สิทธิ ของ Role นั้นๆ ถูกกำหนดโดย Code ดังนี้

const MANAGE_ROLES = [
  "system",
  "head_of_admin",
  "admin",
  "executive",
  "accountant",
  "branch_admin",
  "branch_manager",
  "branch_accountant",
];

function globalAllow(user: RequestWithUser["user"]) {
  const listAllowed = ["system", "head_of_admin", "admin", "executive", "accountant"];
  return user.roles?.some((v) => listAllowed.includes(v)) || false;
}

const permissionCondCompany = createPermCondition((_) => true);
const permissionCond = createPermCondition(globalAllow);
const permissionCheckCompany = createPermCheck((_) => true);
const permissionCheck = createPermCheck(globalAllow);

ซึ่ง globalAllow จะเป็นการกำหนดว่าใครสามารถดำเนินการ Create / Update / Delete ข้ามสาขาได้บ้าง

และเมื่อต้องการดึงข้อมูลแยกตามสิทธิจะใช้ createPermCondition เพื่อสร้างเงื่อนไขสำหรับใช้ Query ขึ้นมา และ createPermCheck จะใช้สำหรับสร้างฟังก์ชั่นตรวจสอบสิทธิเมื่อมีการดำเนินการ Create / Update / Delete ขึ้นมา

สามารถดูตัวอย่างการ Implementation ได้ ใน controller ต่างๆ

สินค้าและบริการ, ลูกค้า(นายจ้าง/ลูกจ้าง), ประเภทกิจการ, กลุ่มผู้ใช้และหน่วยงาน

ข้อมูลนี้เป็นข้อมูลหลักที่ถูกนำไปใช้ในระบบต่อไป