Get Calendar Month Filter
ดึงปฏิทินการทำงานตามช่วงวันที่ที่ระบุ ไม่จำกัดตามรอบเงินเดือน แสดงรายการพนักงานที่ทำงาน/ลา/หยุดในแต่ละวัน พร้อมกรองตามประเภท
Endpoint
GET /api/v1/open-apis/salary/get-data-filter?path_action=get_calendar_month_filterสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลเงินเดือนของพนักงาน (payroll:read:self)
- หากระบุ
employee_codeหรือemployee_idจะ return เฉพาะข้อมูลของพนักงานคนนั้น - หากไม่ระบุ employee filter จะดึงพนักงานทั้งหมดที่ยังทำงานอยู่
Request Parameters
Required Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
start_date | string | Yes | วันที่เริ่มต้น (YYYY-MM-DD) | "2026-02-01" |
end_date | string | Yes | วันที่สิ้นสุด (YYYY-MM-DD) | "2026-02-28" |
type | string | Yes | ประเภทการกรอง: "leave", "work_cycle", "holiday" | "leave" |
Optional Parameters
| Parameter | Type | Default | Description | Example |
|---|---|---|---|---|
time_leave_flag | string | null | รหัสประเภทการลา (ใช้เมื่อ type=leave) | "01" |
work_cycle_id | string | null | รหัสกะการทำงาน (Base64, ใช้เมื่อ type=work_cycle) | "MjAyNjAxMjFGQzg5RjNCQjkxMjA=" |
holiday_flag_lv | string | null | รหัสประเภทวันหยุด (ใช้เมื่อ type=holiday) | "01" |
language_code | string | "TH" | ภาษา: TH หรือ EN | "TH" |
employee_code | string | null | รหัสพนักงาน (ถ้าระบุจะ return เฉพาะคนเดียว) | "EMP001" |
employee_id | string | null | Internal ID พนักงาน (ใช้แทน employee_code ได้) | "MjAyNjAxMjFGQzg5RjNCQjkxMjA" |
Filter Types
| Type | Description |
|---|---|
"leave" | ลางาน — แสดงเฉพาะพนักงานที่ลางาน |
"work_cycle" | กะการทำงาน — แสดงพนักงานตามกะที่ระบุ |
"holiday" | วันหยุด — แสดงเฉพาะพนักงานที่มีวันหยุด |
Leave Types (time_leave_flag)
| Code | Description |
|---|---|
"01" | ลากิจได้รับค่าจ้าง |
"02" | ลากิจไม่ได้รับค่าจ้าง |
"03" | ลาป่วยมีใบรับรองแพทย์ |
"04" | ลาคลอดได้รับค่าจ้าง |
"05" | ลาคลอดไม่ได้รับค่าจ้าง |
"06" | ลาพักร้อน |
"07" | ลาฝึกอบรม |
"08" | ลาเพื่อทำหมัน |
"09" | ขาดงาน |
Holiday Types (holiday_flag_lv)
| Code | Description |
|---|---|
"00" | วันทำงาน |
"01" | วันหยุดนักขัตฤกษ์ |
"03" | วันหยุดพนักงาน |
"04" | วันหยุดพิเศษ |
Validation Rules
| Rule | Description |
|---|---|
start_date / end_date | ต้องเป็นรูปแบบ YYYY-MM-DD และ end_date ต้องมากกว่าหรือเท่ากับ start_date |
type | ต้องเป็น "leave", "work_cycle", หรือ "holiday" เท่านั้น |
time_leave_flag | ใช้ได้เฉพาะเมื่อ type=leave |
work_cycle_id | ใช้ได้เฉพาะเมื่อ type=work_cycle และต้อง Base64 encoded |
holiday_flag_lv | ใช้ได้เฉพาะเมื่อ type=holiday |
language_code | รองรับเฉพาะ TH หรือ EN (case-insensitive) |
Response Format
Success Response (type=leave)
{
"code": 200,
"message": "Get Calendar Month Accept",
"payload": {
"2026-02-03": [
{
"employee_id": "20260121FC89F3BB9120",
"employee_code": "EMP001",
"employee_name": "ธารวิน",
"employee_last_name": "ศศิพฤกษ์กุล",
"employee_nickname": "วิน",
"employee_name_en": "Tharawin",
"employee_last_name_en": "Sasiprueksakul",
"employee_nickname_en": "Win",
"photograph": "https://example.com/photo.jpg",
"position_name": "โปรแกรมเมอร์",
"department_name": "ฝ่ายพัฒนาโปรแกรม",
"organization": {
"company": { "label": "บริษัท", "value": "บริษัท ฮิวแมนซอฟท์ จำกัด" },
"branch": { "label": "สาขา", "value": "สำนักงานใหญ่" },
"department": { "label": "แผนก", "value": "ฝ่ายพัฒนาโปรแกรม" }
},
"work_date": "2026-02-03"
}
]
}
}Success Response (type=work_cycle หรือ holiday)
{
"code": 200,
"message": "Get Calendar Month Accept",
"payload": {
"2026-02-01": [
{
"employee_id": "20260121FC89F3BB9120",
"employee_code": "EMP001",
"employee_name": "ธารวิน",
"employee_last_name": "ศศิพฤกษ์กุล",
"employee_nickname": "วิน",
"employee_name_en": "Tharawin",
"employee_last_name_en": "Sasiprueksakul",
"employee_nickname_en": "Win",
"photograph": "https://example.com/photo.jpg",
"position_name": "โปรแกรมเมอร์",
"department_name": "ฝ่ายพัฒนาโปรแกรม",
"organization": {
"company": { "label": "บริษัท", "value": "บริษัท ฮิวแมนซอฟท์ จำกัด" },
"branch": { "label": "สาขา", "value": "สำนักงานใหญ่" },
"department": { "label": "แผนก", "value": "ฝ่ายพัฒนาโปรแกรม" }
},
"work_date": "2026-02-01",
"work_cycle_id": "20260121FC89F3BB9120",
"work_cycle_code": "SHIFT_A",
"work_cycle_start_time": "08:00:00",
"work_cycle_end_time": "17:00:00",
"work_cycle_hour": "08:00:00",
"work_total_cyele_limit": "08:00:00",
"work_total_in_cycle": "08:00:00",
"absence_flag_lv": "00",
"absence_flag_name": "",
"day_status": "วันทำงาน"
}
]
}
}Response Fields (ทั่วไป)
| Field | Type | Nullable | Description |
|---|---|---|---|
employee_id | string | No | Internal ID พนักงาน (Base64 encoded) |
employee_code | string | No | รหัสพนักงาน |
employee_name | string | No | ชื่อพนักงาน (ตามภาษาที่เลือก) |
employee_last_name | string | No | นามสกุลพนักงาน (ตามภาษาที่เลือก) |
employee_nickname | string | Yes | ชื่อเล่นพนักงาน (ตามภาษาที่เลือก) |
employee_name_en | string | Yes | ชื่อพนักงาน (ภาษาอังกฤษ) |
employee_last_name_en | string | Yes | นามสกุลพนักงาน (ภาษาอังกฤษ) |
employee_nickname_en | string | Yes | ชื่อเล่นพนักงาน (ภาษาอังกฤษ) |
photograph | string | Yes | URL รูปภาพพนักงาน |
position_name | string | Yes | ชื่อตำแหน่ง |
department_name | string | Yes | ชื่อแผนก |
organization | object | No | ข้อมูลองค์กร: company, branch, department ({label, value}) |
work_date | string | No | วันที่ (YYYY-MM-DD) |
Response Fields (เพิ่มเติมสำหรับ type=work_cycle หรือ holiday)
| Field | Type | Nullable | Description |
|---|---|---|---|
work_cycle_id | string | Yes | รหัสกะการทำงาน (Base64 encoded) |
work_cycle_code | string | Yes | รหัสกะ |
work_cycle_start_time | string | Yes | เวลาเริ่มกะ (HH:mm:ss) |
work_cycle_end_time | string | Yes | เวลาสิ้นสุดกะ (HH:mm:ss) |
work_cycle_hour | string | Yes | ชั่วโมงทำงานในกะ (HH:mm:ss) |
work_total_cyele_limit | string | Yes | ชั่วโมงทำงานสูงสุด (HH:mm:ss) |
work_total_in_cycle | string | Yes | ชั่วโมงทำงานจริง (HH:mm:ss) |
absence_flag_lv | string | Yes | รหัสประเภทการลา |
absence_flag_name | string | Yes | ชื่อประเภทการลา |
day_status | string | Yes | สถานะวัน เช่น "วันทำงาน", "วันหยุดนักขัตฤกษ์", "ยังไม่ได้เริ่มงาน/ลาออกไปแล้ว" |
Error Responses
{
"code": 400,
"message": "ไม่สำเร็จ",
"errors": {
"start_date": "Invalid format. Expected YYYY-MM-DD",
"end_date": "Invalid format. Expected YYYY-MM-DD"
}
}| HTTP Status | สาเหตุ | วิธีแก้ |
|---|---|---|
400 | รูปแบบวันที่ไม่ถูกต้อง | ส่ง start_date/end_date ในรูปแบบ YYYY-MM-DD |
400 | end_date น้อยกว่า start_date | ตรวจสอบให้ end_date มากกว่าหรือเท่ากับ start_date |
400 | ไม่ได้ส่ง parameter ที่จำเป็น | ส่ง start_date, end_date, และ type ให้ครบ |
400 | type ไม่ถูกต้อง | ส่งเป็น "leave", "work_cycle", หรือ "holiday" เท่านั้น |
400 | work_cycle_id ไม่ใช่ Base64 ที่ถูกต้อง | Encode work_cycle_id เป็น Base64 ให้ถูกต้อง |
401 | API Key ไม่ถูกต้องหรือไม่ได้ส่ง | ตรวจสอบ API Key |
Code Examples
cURL
# ดูปฏิทินการลาในเดือนกุมภาพันธ์
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=get_calendar_month_filter" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2026-02-01",
"end_date": "2026-02-28",
"type": "leave",
"language_code": "TH"
}'
# ดูปฏิทินลาป่วยในช่วง 1 สัปดาห์
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=get_calendar_month_filter" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2026-02-01",
"end_date": "2026-02-07",
"type": "leave",
"time_leave_flag": "01",
"language_code": "TH"
}'
# ดูปฏิทินกะการทำงานในเดือนกุมภาพันธ์
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=get_calendar_month_filter" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2026-02-01",
"end_date": "2026-02-28",
"type": "work_cycle",
"work_cycle_id": "MjAyNjAxMjFGQzg5RjNCQjkxMjA=",
"language_code": "TH"
}'
# ดูปฏิทินวันหยุดนักขัตฤกษ์ในไตรมาสแรก
curl -X GET "https://openapi.humansoft.co.th/api/v1/open-apis/salary/get-data-filter?path_action=get_calendar_month_filter" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2026-01-01",
"end_date": "2026-03-31",
"type": "holiday",
"holiday_flag_lv": "01",
"language_code": "TH"
}'Notes
- API นี้ต้องระบุ
typeเสมอ (ไม่สามารถเป็น null ได้ ต่างจาก Get Calendar Month) - สำหรับ type=leave ระบบจะ expand เอกสารลาข้ามวันเป็นรายวัน (เช่น ลา 3 วัน จะแสดง 3 record คนละวัน)
- ระบบจะแสดงเฉพาะเอกสารลาที่ผ่านการอนุมัติ ไม่รวมเอกสารที่ยกเลิกหรือปฏิเสธ
- Response สำหรับ type=leave จะไม่มี work_cycle fields และ day_status
- Response สำหรับ type=work_cycle หรือ holiday จะมี work_cycle fields และ day_status ครบถ้วน
- สำหรับ type=holiday เมื่อ
holiday_flag_lv = "01"ระบบจะแสดงชื่อวันหยุดในday_status(เช่น"วันหยุดนักขัตฤกษ์ (วันขึ้นปีใหม่)")
เพื่อประสิทธิภาพในการดึงข้อมูล:
- แนะนำให้จำกัดช่วงวันที่ไม่เกิน 3 เดือน
- ใช้ flag parameter (
time_leave_flag,holiday_flag_lv) เพื่อกรองข้อมูล - แคชข้อมูลที่ดึงได้และแสดง loading indicator ขณะรอ
Related APIs
- Get Calendar Month - ดูปฏิทินตามรอบเงินเดือน (รองรับ type=null)
- Daily In Month Calendar - ดูปฏิทินของพนักงานรายคน
- Current Month - ดูรอบเดือนปัจจุบัน (เรียกก่อนเพื่อหาช่วงวันที่)
Last updated on