สมอง SML

คลังความรู้ / หน้าจอทีละจอ

#screens#master

กำหนดพนักงาน (เมนู 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 ของช่องสาขาตั้ง maxLength 25 (erpUser.ts:134) รหัสสาขายาวกว่า 10 ตัวจึงไม่ผ่านตอนบันทึกจริง
  • รูปพนักงานในฟอร์ม (picture_1) กับจอ 1007 กำหนดรูปพนักงาน เป็นสองทางที่ต่างกัน ดู กำหนดรูปภาพสินค้า/พนักงาน/สินทรัพย์ และบันทึกรูปภาพเอกสาร (ItemPictureScreen, DocumentPictureScreen) ก่อนแก้

ที่มาในโค้ด