สรุปการเข้างานรอบนี้จาก attendance_synced
คำนวณเงินเดือน
—
ปกส. 875 คงที่ (ตาม Excel)
รอบนี้ยังไม่บันทึก
คอลัมน์ "วัน" = นับจริงจากข้อมูล (สแกนเข้า + หยุดตามกะ + ลาได้ค่าจ้าง) ในช่วงที่มีสถานะจ้าง — ขาด/ลาไม่รับค่าจ้าง ถูกตัดออกจากจำนวนวันแล้ว จึงไม่หักซ้ำในช่องหัก (มูลค่าที่หายไปแสดงในธงท้ายแถว) · วันที่ไม่มีข้อมูลเลย นับให้ก่อนและขึ้นธง ⚠ ให้ตรวจก่อนปิดรอบ · ฐานหาร 30 วัน · เบี้ยขยันตัดสิทธิ์เมื่อมี ลา/ขาด/สาย · OT ชม.ละ บาท · ปกส. 875×วัน/30 · ค้ำประกัน 500×วัน/30 · ภาษี %
Commission Ledger — ปรับยอดข้ามรอบอัตโนมัติ
🔒 กติกา: คอม = 1% ตั้งแต่บาทแรก, 2% ส่วนเกินเป้า · หักคืนได้เฉพาะจากค่าคอม ห้ามแตะเงินเดือน · จ่ายจริงไม่ติดลบ · ยอดค้างยกไปรอบถัดไปอัตโนมัติ
พนักงาน PC—
แก้เงินเดือน / วันเริ่มงาน / วันลาออก — บันทึกลง employees + audit_log
💡 "วันในรอบนี้" นับจริงจาก สแกนเข้า + หยุดตามกะ + ลาได้ค่าจ้าง ของรอบที่เลือกบนแถบเดือน · ลาออก = ใส่วันทำงานวันสุดท้าย ไม่ลบแถว (ประวัติ/สลิป/คอมค้างยังอยู่ครบ) · ทุกการแก้ไขลง audit_log
ตารางกะทำงาน
shift_plan + attendance_synced
แถว = พนักงาน · คอลัมน์ = วันที่ · สีในช่อง = กะที่พนักงานกรอกเองในแอปลงเวลา · จุดมุมขวาล่าง = ผลสแกนจริง (เขียว สแกนแล้ว / แดง ถึงวันแล้วยังไม่สแกน) · แถวล่างสุด = จำนวนคนเข้างานในแต่ละวัน · คอลัมน์ขวา = สรุปรายคนที่ใช้คิดเงินเดือน
คำขอที่รออนุมัติ—
จุด แดง = วันนั้นไม่มีสแกนเข้างาน (เช่นขอ OT วันหยุด) — ระบบไม่บล็อก แต่ให้ HR ดูก่อนตัดสิน · กด ✕ ต้องใส่เหตุผล พนักงานจะเห็นเหตุผลในแอป
อนุมัติแล้ว รอบนี้—
อนุมัติแล้วระบบเขียน ot_hours + ot_rate + ot_approved ลงวันนั้นใน attendance_synced ทันที → หน้า Payroll คิดเงิน OT ให้เอง → เข้าสลิปตอนปิดรอบ · รอบที่ปิดแล้วกดอนุมัติไม่ได้ ต้องเปิดรอบกลับก่อน · ทุกการอนุมัติ/ถอน ลง audit_log
ผู้ใช้ที่เข้าระบบได้—
⚠ ยังไม่มีบัญชี = ให้สิทธิ์ไว้แล้วในแอป แต่ยังไม่มี user จริงใน Supabase Auth → คนนั้นยัง login ไม่ได้ ·
หน้านี้ให้ได้แค่ "สิทธิ์" — ตัวบัญชี + รหัสผ่าน ต้องสร้างที่ Supabase → Authentication → Users → Add user
สิทธิ์ของแต่ละบทบาทแก้ที่โค้ด (ROLE_MATRIX)
ขอบเขตของหน้านี้ — ซ่อนเมนู/ซ่อนปุ่มตามบทบาท กันกดผิดได้จริง ·
ฐานข้อมูลบังคับแล้วเฉพาะ ตาราง app_users (เฉพาะ admin แก้ได้) ·
ตารางเงินเดือน/พนักงานยังใช้สิทธิ์ระดับ "ล็อกอินแล้ว" — ถ้าต้องการกันระดับฐานข้อมูลทุกตาราง ต้องทำ RLS ต่อบทบาทเพิ่ม
ประวัติการเปลี่ยนสิทธิ์audit_log
—
ตั้งค่าการคำนวณ (payroll_config)
ค่าเหล่านี้เก็บในตาราง payroll_config ของ DB B — แก้ที่นี่ที่เดียว ไม่ต้องแก้โค้ด