กำหนดพนักงาน (เมนู 1006)
จอทะเบียนพนักงานและ สิทธิ์ใช้งานรายคน ของระบบ (ผู้ขาย/ผู้บันทึกเอกสาร สิทธิ์ POS สิทธิ์ดูต้นทุน วงเงินอนุมัติ) เก็บที่ตาราง erp_user ดู erp_user — ผู้ใช้/พนักงานในฐานบริษัท จอเป็นแบบมือเขียนตามแพตเทิร์นเดียวกับจอ master อื่น (รายการซ้าย + ฟอร์มขวา) ดู รายการจอข้อมูลหลักแบบตารางเดียว (IC_MASTER_CONFIGS); สิทธิ์ที่จอนี้ตั้งไปมีผลกับการทำงานอย่างไรดู การตรวจสิทธิ์เมนูของ route process (Process route rights)
วิธีเปิด
เมนูตั้งค่า 1006 "กำหนดพนักงาน" (menu_setup_staff, screenRegistry.tsx:285) กลไกเมนู/แท็บดู ทะเบียนหน้าจอและโครงเมนู (Screen registry & smlMenu) และ พื้นที่ทำงานแบบแท็บ MDI และสิทธิ์จอ (TabWorkspace) รูปพนักงานอยู่เมนูแยก 1007 menu_setup_staff_pic ซึ่งเปิด ItemPictureScreen แบบ kind="staff" (screenRegistry.tsx:391-395) ดู กำหนดรูปภาพสินค้า/พนักงาน/สินทรัพย์ และบันทึกรูปภาพเอกสาร (ItemPictureScreen, DocumentPictureScreen)
โครงจอ
- ซ้าย: รายการพนักงาน (รหัส, ชื่อ 1) จาก
select code, name_1 from erp_user(:147) ค้นหาได้ มีเลือกหลายแถวเพื่อลบ ปุ่มคัดลอกอยู่ในแถบเครื่องมือรายการ (onCopy={startCopy},:775) กลไกรายการดู รายการข้อมูล ค้นหา lookup และ dialog กลาง (SmlDataList / SmlLookupModal / SmlDialog) - ขวา: ฟอร์ม 6 ส่วนตาม
erpUser.ts(ด้านล่าง) - ปุ่ม: เพิ่มใหม่, แก้ไข, ลบ, ปิดหน้าจอ ในโหมดดู; บันทึก, ปิดหน้าจอ ในโหมดแก้ ปุ่มทั้งหมดถูกปิดตามสิทธิ์เพิ่ม/แก้ไข/ลบของผู้ใช้บนจอนี้ (ชี้เมาส์จะบอก "ไม่มีสิทธิ์...",
:842-862) - คีย์ลัด Ctrl+S บันทึก (
:698) ใช้ได้เฉพาะตอนอยู่โหมดแก้ มีข้อมูลเปลี่ยน และมีสิทธิ์; ทำงานเมื่อแท็บของจอนี้แสดงอยู่เท่านั้น
ช่องในฟอร์ม (ตาม erpUser.ts)
| ส่วน | ช่อง | ข้อกำหนด |
|---|---|---|
| ข้อมูลพนักงาน | รหัส | บังคับ ไม่เกิน 25 ตัว; เป็นคีย์หลัก แก้ไม่ได้ตอนแก้เอกสารเดิม (EMPLOYEE_LOCKED_ON_EDIT, :906) |
| ชื่อ 1 | บังคับ ไม่เกิน 100 ตัว | |
| ชื่อ 2 / เลขที่บัตรประชาชน / ที่อยู่ / โทรศัพท์ / มือถือ | ชื่อ 2 ไม่เกิน 100, บัตร ไม่เกิน 15, ที่อยู่ ไม่เกิน 255, โทร/มือถือ ไม่เกิน 50 | |
| สิทธิ์การใช้งาน | สถานะ, สามารถแก้ไขราคาได้, สามารถถอนมีสิทธิ์ราคาตามกลุ่มลูกค้าได้ | ช่องติ๊ก |
| รหัสผ่าน | ไม่เกิน 100 ตัว (ดูหัวข้อรหัสผ่านด้านล่าง) | |
| สามารถใช้ระบบ POS, แก้ไขส่วนลดสินค้า, ยกเลิกใบเสร็จ POS, เปิดลิ้นชัก POS, แสดงยอดขาย POS | ช่องติ๊กสิทธิ์ POS | |
| ตำแหน่ง | ข้อความ ไม่เกิน 255 | |
| คลัง ที่เก็บ และสาขา | คลังมาตรฐาน, ที่เก็บมาตรฐาน | ช่องค้นหา (SmlLookupInput) ไม่เกิน 10 ตัว; รายการที่เก็บถูกกรองตามคลังที่เลือก (shelfLookupWhere, :960) |
| สาขา | ช่องค้นหา ไม่เกิน 25 ใน schema | |
| อนุญาตให้เปลี่ยนสาขาได้ | ช่องติ๊ก | |
| สิทธิ์เอกสารและต้นทุน | อนุญาตให้ล็อคเอกสาร, สามารถถอนอนุมัติวงเงินเครดิตลูกค้า, สามารถดูต้นทุนสินค้า, ห้ามแก้ไขวันที่และเลขที่เอกสาร, สามารถลบรายการสินค้า (POS), สามารถล้างประวัติการพิมพ์เอกสาร, สามารถ copy เอกสารได้ | ช่องติ๊ก |
| วงเงินอนุมัติ | อนุมัติใบสั่งซื้อ, ใบสั่งจอง (มูลค่าและ % เทียบมัดจำ), ใบสั่งขาย, ตรวจสอบวงเงินสินเชื่อ — แต่ละกลุ่มมี "จาก" และ "ถึง" | ช่องตัวเลข (กลุ่มแบบนี้คือช่วงมูลค่าที่ผู้ใช้นี้อนุมัติได้) ดู ตัวเลข เงิน ภาษี และปี พ.ศ. ฝั่ง frontend (numeric.ts) |
| รูปภาพและลายมือชื่อ | รูปภาพ, ลายมือชื่อ | ช่องรูป (picture_1, signature_1) |
หัวไฟล์ schema ระบุว่าช่องของโค้ดเดิม discount_bill_pos/mobile_user ถูกคอมเมนต์ทิ้ง และ parent_code/area_code/area_paybill เป็นของเวอร์ชัน IMS/IMEX จึงไม่ได้ใส่ (erpUser.ts:5-12)
คลัง/ที่เก็บ/สาขา — ช่องที่เปิดหน้าต่างค้นหา
ปุ่มค้นหาของช่องเปิด SmlLookupModal ของตาราง ic_warehouse (คลังสินค้า), ic_shelf (ที่เก็บสินค้า), erp_branch_list (สาขา), erp_side_list (ฝ่าย), erp_department_list (แผนก) (:721-750) ค่าที่เลือกแสดงเป็น รหัส~ชื่อ ชื่อที่โชว์ดึงจากตารางเหล่านี้ตอนเปิดเอกสาร (:233-251) ดู erp_branch_list — ทะเบียนสาขา และ คลังสินค้า (ic_warehouse); สิทธิ์ว่าพนักงานเข้าคลัง/ที่เก็บไหนได้ ตั้งแยกที่ สิทธิ์คลัง/ที่เก็บรายกลุ่มผู้ใช้ (perm_wh_shelf)
รหัสผ่าน
- ตอนเปิดเอกสาร จอ ไม่ดึงคอลัมน์
password(EMPLOYEE_LOAD_COLUMNSตัดออก,:40-47) ช่องรหัสผ่านจึงว่างเสมอ (password: "",:201) - ตอนบันทึกแก้ไข ถ้าไม่พิมพ์รหัสผ่านใหม่ คำสั่ง UPDATE จะไม่แตะคอลัมน์นี้ (
hasNewPassword,:516-523) ถ้าพิมพ์ใหม่จึงเขียนทับ - ตาม erp_user — ผู้ใช้/พนักงานในฐานบริษัท รหัสนี้ใช้ยืนยันการอนุมัติเครดิต ห้ามนำไปแสดงหรือบันทึกลงบันทึก/log
บันทึก (:391-535)
ลำดับตรวจ: สิทธิ์ (เพิ่มสำหรับรายการใหม่ แก้ไขสำหรับรายการเดิม — ไม่มีสิทธิ์ขึ้น "ไม่มีสิทธิ์บันทึกข้อมูล") → รหัสว่าง ("ข้อมูลไม่สมบูรณ์ : รหัสพนักงาน") → ชื่อ 1 ว่าง ("ข้อมูลไม่สมบูรณ์ : ชื่อ 1 (ไทย)") → ช่องบังคับของฟอร์ม → รหัสซ้ำ ตอนเพิ่มใหม่ (รหัสพนักงาน "..." มีอยู่ในระบบแล้ว) → ตัดส่วน ~ชื่อ ท้ายค่าของช่องค้นหา (คลัง ที่เก็บ สาขา ฝ่าย แผนก) ให้เหลือแต่รหัส → ตรวจความยาวรหัสของ ฝ่าย/แผนก/สาขา/คลัง/ที่เก็บ ต้องไม่เกิน 10 ตัว (ข้อความ <ชื่อช่อง> ("<ค่า>") มีความยาวเกิน 10 ตัวอักษร) แล้วจึงสั่ง INSERT (buildInsertSql) หรือ UPDATE ผ่าน queryExec สำเร็จขึ้น "บันทึกข้อมูลเสร็จเรียบร้อย"
ลบ (:592-680)
เลือกหลายแถวแล้วลบได้ ถ้าไม่เลือกขึ้น "กรุณาเลือกรายการที่ต้องการลบก่อน" ถามยืนยัน ต้องการลบ [รหัส] จริงหรือไม่ (หลายรายการบอกจำนวน) แล้ว ตรวจการอ้างอิง ในตาราง หัวเอกสารสินค้า/ซื้อ/ขาย (ic_trans) 2 จุดก่อนลบ — sale_code (พนักงานขาย) และ creator_code (ผู้บันทึก) — ถ้าพบขึ้น "ห้ามลบ : รหัสพนักงาน [..] ถูกอ้างอิงใน... แล้ว ไม่สามารถลบได้" ผ่านแล้วจึงลบด้วย buildDeleteSql สำเร็จขึ้น "ลบข้อมูลเสร็จเรียบร้อย"
คัดลอก
ปุ่มคัดลอก (startCopy, :570) เปิดฟอร์มเพิ่มใหม่ด้วยค่าของพนักงานที่เลือก ล้างรหัส และเติม " (คัดลอก)" ต่อท้ายชื่อ 1 ต้องกรอกรหัสใหม่ก่อนบันทึก
ข้อควรระวัง
- ตรวจอ้างอิงตอนลบมีแค่
ic_trans.sale_codeและic_trans.creator_code(:621-622) ตารางอื่นที่เก็บรหัสพนักงาน จอนี้ไม่ได้ตรวจ - ข้อความตรวจความยาว 10 ตัวของ คลัง/ที่เก็บ/สาขา ใช้เลข 10 เท่ากัน แต่ schema ของช่องสาขาตั้ง
maxLength25 (erpUser.ts:134) รหัสสาขายาวกว่า 10 ตัวจึงไม่ผ่านตอนบันทึกจริง - รูปพนักงานในฟอร์ม (
picture_1) กับจอ 1007 กำหนดรูปพนักงาน เป็นสองทางที่ต่างกัน ดู กำหนดรูปภาพสินค้า/พนักงาน/สินทรัพย์ และบันทึกรูปภาพเอกสาร (ItemPictureScreen, DocumentPictureScreen) ก่อนแก้
ที่มาในโค้ด
frontend/account/master/EmployeeScreen.tsx:40-47คอลัมน์ที่โหลด;:147รายการ;:191-251โหลดเอกสารและชื่อ FK;:391-535บันทึก;:570-583คัดลอก;:592-680ลบ;:698Ctrl+S;:721-750หน้าต่างค้นหา;:906ล็อกรหัสfrontend/src/config/schemas/erpUser.ts:14-322ฟอร์ม 6 ส่วนfrontend/account/tabs/screenRegistry.tsx:285(1006),:391-395(1007)- ดูเพิ่ม: กำหนดคลังสินค้า และจอคลังที่เก็บสินค้า (WarehouseScreen) · จัดกลุ่มผู้ใช้ ข้อความระบบ และสิทธิ์รายเมนู (UserGroupsScreen, SystemTextScreen, GroupPermissionScreen, DataPermissionScreen) · สารบัญหน้าจอทั้งหมดของ SML Ai Account (ต้นไม้เมนู → หน้าจอ → โน้ต)