Skip to main content

รายได้นักขับ (Driver Income)

หน้านี้ใช้สำหรับตรวจสอบรายได้ของพนักงานขับรถในมุมของฝ่ายสำนักงาน โดยแบ่งเป็น 2 ระดับ

  1. หน้ารวมรายเดือน
  2. หน้ารายละเอียดรายคน

หน้ารวมรายการ​

หน้า list ใช้ GET /trip-records/driver-income พร้อม groupKey=list

query หลักที่ใช้จริงคือ

  • month
  • search
  • page
  • pageSize

ในหน้าจอผู้ใช้จะเห็นการ์ดสรุป 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-condition
  • detail-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=...

วิธีใช้งานที่แนะนำ​

  1. เลือกเดือนที่ต้องการตรวจ
  2. ถ้าต้องการ ให้กรองด้วยชื่อหรือรหัสพนักงาน
  3. ตรวจยอดรวมจาก info card
  4. เปิดดูรายคนที่ต้องการตรวจเชิงลึก
  5. สลับดูตาม เงื่อนไขรายได้ หรือ กลุ่มลูกค้า
  6. export ตามระดับข้อมูลที่ต้องส่งต่อ

จุดที่ต้องระวัง​

warning
  • ยอดรายได้ในตารางหน้ารวมถูกคำนวณที่ 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.tsx
  • atp30-tos-frontend/src/views/pages/driver-income/viewDriverIncome.tsx
  • atp30-tos-frontend/src/views/pages/driver-income/table/groupByConditionsTable.tsx
  • atp30-tos-frontend/src/hooks/useDriverIncome.ts
  • atp30-tos-frontend/src/api/driver-incomes.ts
  • atp30-core-api/src/trip-records/trip-records-report.service.ts