รายได้นักขับ (Driver Income)
หน้านี้ใช้สำหรับตรวจสอบรายได้ของพนักงานขับรถในมุมของฝ่ายสำนักงาน โดยแบ่งเป็น 2 ระดับ
- หน้ารวมรายเดือน
- หน้ารายละเอียดรายคน
หน้ารวมรายการ
หน้า list ใช้ GET /trip-records/driver-income พร้อม groupKey=list
query หลักที่ใช้จริงคือ
monthsearchpagepageSize
ในหน้าจอผู้ใช้จะเห็นการ์ดสรุป 4 ตัวจาก response
- จำนวนพนักงานขับรถ
- รายได้รวม
- รายได้สูงสุด
- รายได้ต่ำสุด
รอบรายได้ที่หน้าใช้
หน้า list ไม่ได้อธิบายเดือนแบบ 1-31 ตรง ๆ แต่คำนวณข้อความ รอบรายได้
จาก logic ต่อไปนี้
- เริ่มรอบ = วันที่
21ของเดือนก่อนหน้า - สิ้นสุดรอบ = วันที่
20ของเดือนที่เลือก
ดังนั้นถ้าเลือก 2026-04
ข้อความรอบรายได้ที่หน้าใช้จะอิงช่วงประมาณ 21 Mar 2026 - 20 Apr 2026
การกรองข้อมูล
ข้อมูลหลักที่ใช้กรองคือ:
monthสำหรับเลือกเดือนsearchสำหรับค้นหาพนักงานขับรถ
ข้อมูลที่แสดงในรายการ
ระบบจะแสดงข้อมูลรายได้แยกตาม:
- ชื่อพนักงานขับรถ (Driver Name)
- รหัสพนักงาน (Driver Display Name)
- พื้นที่ทำงาน (Work Area)
- รายได้ ซึ่ง frontend คำนวณจาก
amount × quantity
หน้ารายละเอียดรายคน
เมื่อกดดูรายคน ระบบจะไปที่ /driver-income/:id?month=...
และหน้า detail สามารถสลับมุมมองได้ 2 แบบผ่าน radio
detail-income-conditiondetail-customer
ความหมายของแต่ละโหมดคือ
- แยกตามเงื่อนไขรายได้
- แยกตามลูกค้า
หน้า detail ใช้ GET /trip-records/driver-income/{id}/?month=...&groupKey=...
รายละเอียด OT ที่หน้า condition view แสดงได้
ถ้าเปิดมุมมอง detail-income-condition และรายการนั้นเป็น otHour
frontend จะต่อท้ายชื่อเงื่อนไขรายได้ด้วย incomeConditionDetail
เช่น ช่วงเวลา standby ที่ backend คำนวณได้จริงในวันนั้น
ผลที่ผู้ใช้จะเห็นคือชื่อแถวอาจออกมาในลักษณะ:
OT Hour (18:30 - 20:00)OT Hour (06:30 - 08:00, 17:30 - 19:00)
จุดนี้มีประโยชน์เวลาใช้ตรวจกลับว่า OT ถูกนับจากช่วงเวลาใดบ้าง โดยไม่ต้องเปิด log หรือไล่ดู standby ทีละรายการ
การ Export รายได้นักขับ (Excel)
ระบบรองรับ export 3 แบบที่แยกตามบริบทของหน้า
Export ทั้งหมด- ใช้
GET /trip-records/driver-income/export?groupKey=list&month=...
- ใช้
Export รายคน- ใช้
GET /trip-records/driver-income/{displayName}/export?month=...
- ใช้
Export รายงาน- ใช้
GET /trip-records/driver-income/export?groupKey=report&month=...
- ใช้
วิธีใช้งานที่แนะนำ
- เลือกเดือนที่ต้องการตรวจ
- ถ้าต้องการ ให้กรองด้วยชื่อหรือรหัสพนักงาน
- ตรวจยอดรวมจาก info card
- เปิดดูรายคนที่ต้องการตรวจเชิงลึก
- สลับดูตาม
เงื่อนไขรายได้หรือกลุ่มลูกค้า - export ตามระดับข้อมูลที่ต้องส่งต่อ
จุดที่ต้องระวัง
- ยอดรายได้ในตารางหน้ารวมถูกคำนวณที่ frontend จาก
amount × quantity - หน้า detail ใช้ endpoint คนละแบบกับหน้ารวม
- ถ้าต้องการรายงานภาพรวมทั้งเดือนสำหรับฝ่ายบัญชี ควรใช้
Income Reportหรือ export แบบgroupKey=report
:::tip ใช้คู่กับหน้า Driver Manual ถ้าต้องการดูว่า driver บันทึกข้อมูลอะไรไปทำให้เกิดยอดในหน้านี้ ให้ดู Driver Income :::
อ้างอิงโค้ด
atp30-tos-frontend/src/views/pages/driver-income/index.tsxatp30-tos-frontend/src/views/pages/driver-income/viewDriverIncome.tsxatp30-tos-frontend/src/views/pages/driver-income/table/groupByConditionsTable.tsxatp30-tos-frontend/src/hooks/useDriverIncome.tsatp30-tos-frontend/src/api/driver-incomes.tsatp30-core-api/src/trip-records/trip-records-report.service.ts