Approve Holiday Change
อนุมัติหรือปฏิเสธเอกสารเปลี่ยนวันหยุด รองรับการอนุมัติแบบหลายขั้นตอน (Multi-level Approval)
ใช้ API นี้เพื่ออนุมัติ ปฏิเสธ หรือยกเลิกเอกสารเปลี่ยนวันหยุด เมื่ออนุมัติขั้นสุดท้ายระบบจะเปลี่ยนวันหยุดให้พนักงานอัตโนมัติ
Endpoint
POST /api/v1/open-apis/holiday-change/approveสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลการยื่นเอกสาร (document:manage)
Request Parameters
Required Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
holiday_change_id | string | Yes | รหัสเอกสารเปลี่ยนวันหยุด (Base64) | MjAyNjA0MzBIQzAwMDAwMDAx |
employee_code | string | Yes | รหัสพนักงานเจ้าของเอกสาร | EMP001 |
approve_flag | string | Yes | สถานะการอนุมัติ (02-08) | 02 |
authorize_id | string | Yes | รหัสผู้อนุมัติ (Base64) | MjAyNjA0MzBVU0VSMDAwMDAx |
หา authorize_id ได้อย่างไร: รับค่าจาก Get Employee Data Filter โดยใช้ path_action=get-user พร้อม employee_code ของผู้ทำรายการ — ใช้ค่า user_id ที่ได้กลับมาเป็น authorize_id
Optional Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
approve_remark | string | "" | หมายเหตุ (บังคับสำหรับการปฏิเสธ) |
authorize_line | string | boolean | "" | เช็คสายอนุมัติตามลำดับ (true/false) |
extra_round | string | "N" | งวดพิเศษ (Y/N) |
no_hr_permission | boolean | false | ระงับสิทธิพิเศษ HR |
Option Values for approve_flag
| ค่า | สถานะ (TH) | สถานะ (EN) | การทำงาน |
|---|---|---|---|
02 | อนุมัติ | Approved | อนุมัติขั้นสุดท้าย — ระบบจะเปลี่ยนวันหยุดให้พนักงานอัตโนมัติ |
03 | ไม่อนุมัติ | Not Approved | ปฏิเสธเอกสาร |
04 | หัวหน้าอนุมัติขั้นที่ 1 | Manager Approved Step 1 | ส่งต่อไปยังขั้นตอนถัดไป |
05 | ยกเลิก | Cancelled | ยกเลิก/ถอนคืนเอกสาร |
06 | หัวหน้าอนุมัติขั้นที่ 2 | Manager Approved Step 2 | ส่งต่อไปยังขั้นตอนถัดไป |
07 | หัวหน้าอนุมัติขั้นที่ 3 | Manager Approved Step 3 | ส่งต่อไปยังขั้นตอนถัดไป |
08 | หัวหน้าอนุมัติขั้นที่ 4 | Manager Approved Step 4 | ส่งต่อไปยังขั้นตอนถัดไป |
authorize_line — เมื่อส่ง true ผู้ใช้ที่เป็น HR จะต้องผ่านกระบวนการอนุมัติตามลำดับเหมือนพนักงานทั่วไป (ไม่ bypass สายอนุมัติ)
no_hr_permission — เมื่อส่ง true ระบบจะระงับสิทธิพิเศษ HR ทำให้ต้องตรวจสอบกฎอย่างเคร่งครัด (เช่น cut-off date)
Request Body Example
{
"holiday_change_id": "MjAyNjA0MzBIQzAwMDAwMDAx",
"employee_code": "EMP001",
"approve_flag": "02",
"authorize_id": "MjAyNjA0MzBVU0VSMDAwMDAx",
"approve_remark": "อนุมัติเปลี่ยนวันหยุด"
}Response Format
Success Response (HTTP 200)
{
"code": 200,
"message": "สำเร็จ",
"payload": {
"holiday_change_id": "20260430HC00000001",
"employee_code": "EMP001",
"approve_flag": "02",
"approve_remark": "อนุมัติเปลี่ยนวันหยุด",
"approved_at": "2026-04-30 10:30:00"
}
}Error Response - Validation Failed (HTTP 400)
{
"code": 400,
"message": "Validation failed",
"errors": [
"Missing required parameter: 'authorize_id'",
"'approve_flag' must be 02-08"
]
}Error Response - Remark Required for Rejection (HTTP 400)
{
"code": 400,
"message": "Validation failed",
"errors": [
"'approve_remark' is required when approve_flag is '03'"
]
}Error Response - Document Not Found (HTTP 400)
{
"code": 400,
"message": "Document not found"
}Error Response - Exceed Quota (HTTP 400)
{
"code": 400,
"message": "Exceed quota"
}Error Response - Salary Period Closed (HTTP 400)
{
"code": 400,
"message": "ไม่สำเร็จ",
"error": "ไม่สามารถบันทึกได้ งวดเงินเดือนปิดแล้ว"
}Error Response - Cut-off Date Exceeded (HTTP 400)
{
"code": 400,
"message": "ไม่สำเร็จ",
"error": "เกินวันที่ cut-off แล้ว"
}Response Fields
| Field | Type | Description |
|---|---|---|
holiday_change_id | string | รหัสเอกสารเปลี่ยนวันหยุด |
employee_code | string | รหัสพนักงานเจ้าของเอกสาร |
approve_flag | string | สถานะการอนุมัติ |
approve_remark | string | หมายเหตุการอนุมัติ |
approved_at | string | วันเวลาที่อนุมัติ (YYYY-MM-DD HH:MM:SS) |
Code Examples
cURL
curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/holiday-change/approve" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"holiday_change_id": "MjAyNjA0MzBIQzAwMDAwMDAx",
"employee_code": "EMP001",
"approve_flag": "02",
"authorize_id": "MjAyNjA0MzBVU0VSMDAwMDAx",
"approve_remark": "อนุมัติเปลี่ยนวันหยุด"
}'Validation Rules
| Parameter | Validation | Error Message |
|---|---|---|
holiday_change_id | ต้องระบุและเป็น string | Missing required parameter: 'holiday_change_id' |
employee_code | ต้องระบุและเป็น string | Missing required parameter: 'employee_code' |
approve_flag | ต้องระบุและเป็น 02-08 | 'approve_flag' must be 02-08 |
authorize_id | ต้องระบุและเป็น string | Missing required parameter: 'authorize_id' |
approve_remark | บังคับเมื่อ approve_flag = 03 (ปฏิเสธ) | 'approve_remark' is required when approve_flag is '03' |
holiday_change_id | ต้องมีอยู่ในระบบ | Document not found |
Business Rules
ข้อจำกัดการอนุมัติ:
- ระบบคำนวณขั้นตอนถัดไปอัตโนมัติตามสายการอนุมัติที่กำหนด
- เมื่ออนุมัติขั้นสุดท้าย (
approve_flag=02) ระบบจะเปลี่ยนวันหยุดให้พนักงานอัตโนมัติ - การปฏิเสธ (
approve_flag=03) ต้องระบุapprove_remarkเสมอ - ตรวจ quota วันหยุดก่อนอนุมัติ
- ไม่สามารถอนุมัติได้หากมีเอกสาร OT ในวันเดียวกัน
- ต้องไม่อยู่ในงวดเงินเดือนที่ปิดแล้ว ยกเว้นเข้าเงื่อนไข
extra_round - HR สามารถข้ามการตรวจสอบ cut-off date ได้ (ยกเว้น
no_hr_permission=true) - ระบบจะส่งการแจ้งเตือนอัตโนมัติ
Error Handling
| Error | Cause | Solution |
|---|---|---|
Missing required parameter: 'holiday_change_id' | ไม่ได้ส่ง holiday_change_id | ตรวจสอบ request body |
Missing required parameter: 'authorize_id' | ไม่ได้ส่ง authorize_id | ตรวจสอบ request body |
'approve_flag' must be 02-08 | ค่า approve_flag ไม่ถูกต้อง | ใช้ค่า 02-08 ตามตาราง Option Values |
'approve_remark' is required when approve_flag is '03' | ปฏิเสธโดยไม่ระบุหมายเหตุ | ส่ง approve_remark เมื่อ approve_flag = 03 |
Document not found | ไม่พบเอกสาร | ตรวจสอบ holiday_change_id |
Exceed quota | quota วันหยุดไม่เพียงพอ | ตรวจสอบ quota วันหยุดของพนักงาน |
ไม่สามารถบันทึกได้ งวดเงินเดือนปิดแล้ว | งวดเงินเดือนปิดแล้ว | เลือกเอกสารในงวดที่เปิดอยู่ |
เกินวันที่ cut-off แล้ว | เกินวัน cut-off | ติดต่อ HR หรือส่ง no_hr_permission = false |
Notes
Use Cases
- หัวหน้าอนุมัติคำขอ - อนุมัติเอกสารเปลี่ยนวันหยุดของพนักงานในสายงาน
- HR อนุมัติหรือปฏิเสธเอกสาร - อนุมัติหรือปฏิเสธเอกสารในฐานะ HR
- อนุมัติแบบหลายขั้นตอน - ส่ง
approve_flag=04-08เพื่ออนุมัติในแต่ละขั้นตอน - ยกเลิกเอกสาร - ส่ง
approve_flag=05เพื่อยกเลิก/ถอนคืนเอกสาร
Approval Flow
04->06->07->08->02(ตามสายการอนุมัติที่กำหนด)- ระบบจะคำนวณขั้นตอนถัดไปอัตโนมัติ ไม่จำเป็นต้องส่ง
approve_flagถัดไปเอง - หากเป็นขั้นตอนสุดท้าย ระบบจะเปลี่ยนสถานะเป็น
02(Approved) อัตโนมัติ และเปลี่ยนวันหยุดให้พนักงานทันที
HR Special Permission
- โดยปกติ HR สามารถข้ามการตรวจสอบ cut-off date ได้
- หากต้องการให้ HR ปฏิบัติตามกฎเดียวกับพนักงานทั่วไป ให้ส่ง
authorize_line=trueและ/หรือno_hr_permission=true
Related APIs
- Submit Holiday Change - ยื่นเอกสารเปลี่ยนวันหยุด
- Get Holiday Change List - ดึงรายการเอกสารเปลี่ยนวันหยุด
- Update Holiday Change - แก้ไขเอกสารเปลี่ยนวันหยุด
- Delete Holiday Change - ลบเอกสารเปลี่ยนวันหยุด
Last updated on