Update Holiday Change
แก้ไขคำขอเปลี่ยนวันหยุดที่ยังไม่ได้อนุมัติ
ใช้ API นี้เพื่อแก้ไขคำขอเปลี่ยนวันหยุด แก้ไขได้ทุกสถานะยกเว้นคำขอที่อนุมัติแล้ว (02) และหลังแก้ไข สถานะจะกลับเป็นรออนุมัติ (01) เสมอ
Endpoint
POST /api/v1/open-apis/holiday-change/updateสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลการยื่นเอกสาร (document:manage)
Request Parameters
Required Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
holiday_change_id | string | Yes | ID ของคำขอที่ต้องการแก้ไข (Base64) | MjAyNTExMjdENDU3M0M0MjE2Mzk= |
employee_code | string | Yes | รหัสพนักงานเจ้าของคำขอ | EMP001 |
holiday_change_dt | string | Yes | วันที่ต้องการเปลี่ยน (Y-m-d) | 2026-01-15 |
holiday_flag_lv | string | Yes | ประเภทวันหยุดที่ต้องการเปลี่ยนเป็น | 00 |
Optional Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
holiday_mode_lv | string | No | โหมดการเปลี่ยน — change = เปลี่ยนประเภทของวันที่ holiday_change_dt เป็นค่าใน holiday_flag_lv (ไม่ส่ง = คงค่าเดิม) | change |
holiday_change_desc | string | No | เหตุผลการเปลี่ยน (ไม่ส่ง = คงค่าเดิม) | แก้ไข: ต้องประชุมลูกค้า |
image_content | string | No | รูปภาพ (Base64 encoded) — ส่งเพื่อแทนที่ไฟล์แนบเดิม (ไม่ส่ง = คงไฟล์แนบเดิม) | data:image/png;base64,... |
authorize_id | string | No | ID ผู้ทำรายการ (Base64) | MjAyNjA0MzBVU0VSMDAwMDAx |
หา authorize_id ได้อย่างไร: รับค่าจาก Get Employee Data Filter โดยใช้ path_action=get-user พร้อม employee_code ของผู้ทำรายการ — ใช้ค่า user_id ที่ได้กลับมาเป็น authorize_id
Holiday Flag Values
| Code | ประเภท | Description |
|---|---|---|
00 | วันทำงาน | Workday |
01 | วันหยุดนักขัตฤกษ์ | Public Holiday |
03 | วันหยุดพนักงาน | Employee Holiday |
04 | วันหยุดพิเศษ | Special Holiday (ใช้โควตาวันหยุดพิเศษ) |
Request Body Example
{
"holiday_change_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=",
"employee_code": "EMP001",
"holiday_change_dt": "2026-01-15",
"holiday_mode_lv": "change",
"holiday_flag_lv": "00",
"holiday_change_desc": "แก้ไข: ต้องประชุมลูกค้า"
}Response Format
Success Response (HTTP 200)
{
"code": 200,
"message": "Success",
"payload": {
"holiday_change_id": "20251127D4573C421639",
"employee_id": "20251127D4573C421639",
"employee_code": "EMP001",
"holiday_change_dt": "2026-01-15",
"holiday_mode_lv": "change",
"holiday_flag_lv": "00",
"holiday_switch_dt": null,
"switch_holiday_flag_lv_from": null,
"switch_holiday_flag_lv_to": null,
"holiday_change_desc": "แก้ไข: ต้องประชุมลูกค้า",
"approve_flag": "01",
"approve_id": "20251127D4573C421639",
"approve_upd": "2026-01-13 11:00:00",
"approve_remark": "",
"created": "2026-01-13 10:30:00",
"last_upd": "2026-01-13 11:00:00",
"image_url": "https://cdn.humansoft.co.th/.../image/a1B2c3D4e5F6.png"
}
}Error Response - Validation Failed (HTTP 400)
{
"code": 400,
"message": "Validation failed",
"errors": [
"Missing required parameter: 'holiday_change_id'",
"'holiday_change_dt' must be in Y-m-d format (e.g., 2024-01-15)"
]
}Error Response - Document Not Found (HTTP 400)
{
"code": 400,
"message": "Holiday change document not found: 20251127D4573C421639"
}Error Response - Cannot Edit Approved (HTTP 400)
{
"code": 400,
"message": "ไม่สามารถแก้ไขเอกสารที่อนุมัติแล้ว"
}Error Response - Wrong Owner (HTTP 400)
{
"code": 400,
"message": "Holiday change document does not belong to this employee"
}Response Fields
| Field | Type | Description |
|---|---|---|
holiday_change_id | string | ID ของคำขอ (ค่า raw ไม่ได้เข้ารหัส Base64) |
employee_id | string | ID ของพนักงาน |
employee_code | string | รหัสพนักงาน |
holiday_change_dt | string | วันที่เปลี่ยน (YYYY-MM-DD) |
holiday_mode_lv | string | โหมดการเปลี่ยน (change, switch) ตามที่บันทึกในคำขอ |
holiday_flag_lv | string | ประเภทวันหยุด |
holiday_switch_dt | string | null | วันที่สลับไป (ใช้กับโหมด switch) |
switch_holiday_flag_lv_from | string | null | ประเภทวันเดิม (ใช้กับโหมด switch) |
switch_holiday_flag_lv_to | string | null | ประเภทวันใหม่ (ใช้กับโหมด switch) |
holiday_change_desc | string | เหตุผลการเปลี่ยน |
approve_flag | string | สถานะการอนุมัติ (รีเซ็ตเป็น 01 = รออนุมัติ) |
approve_id | string | user_id ของผู้ทำรายการล่าสุด (ผู้ยื่น/แก้ไขคำขอ หรือผู้อนุมัติ) |
approve_upd | datetime | วันเวลาที่ปรับสถานะล่าสุด (ยื่น/แก้ไข/อนุมัติ) |
approve_remark | string | หมายเหตุการอนุมัติ |
created | datetime | วันเวลาที่สร้าง |
last_upd | datetime | วันเวลาที่แก้ไขล่าสุด |
image_url | string | null | URL ของไฟล์แนบ, null หากไม่มีไฟล์แนบ (หากไม่ได้ส่ง image_content จะเป็นไฟล์แนบเดิม) |
Code Examples
cURL
curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/holiday-change/update" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"holiday_change_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=",
"employee_code": "EMP001",
"holiday_change_dt": "2026-01-15",
"holiday_mode_lv": "change",
"holiday_flag_lv": "00",
"holiday_change_desc": "แก้ไข: ต้องประชุมลูกค้า"
}'Step-by-step Workflow
Step 1: Get Current Data
// ดึงข้อมูลคำขอปัจจุบัน
const params = new URLSearchParams({
start_date: '2026-01-01',
end_date: '2026-01-31',
employee_code: 'EMP001'
})
const listResponse = await fetch(
`https://openapi.humansoft.co.th/api/v1/open-apis/holiday-change/get-list?${params}`,
{
headers: { 'Ocp-Apim-Subscription-Key': 'YOUR_API_KEY' }
}
)
const listData = await listResponse.json()
const pendingRequest = listData.payload.find(item => item.approve_flag === '01')
console.log('Found pending request:', pendingRequest.holiday_change_id)Step 2: Update Request
// แก้ไขคำขอ
const updateResponse = await fetch(
'https://openapi.humansoft.co.th/api/v1/open-apis/holiday-change/update',
{
method: 'POST',
headers: {
'Ocp-Apim-Subscription-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
// get-list คืน ID เป็น plain text ต้องเข้ารหัส Base64 ก่อนส่ง
holiday_change_id: btoa(pendingRequest.holiday_change_id),
employee_code: 'EMP001',
holiday_change_dt: pendingRequest.holiday_change_dt,
holiday_flag_lv: '01', // เปลี่ยนเป็นวันหยุดนักขัตฤกษ์
holiday_change_desc: 'เปลี่ยนเหตุผล: ลูกค้าเลื่อนประชุม'
})
}
)
const updateData = await updateResponse.json()
console.log('Updated:', updateData)Validation Rules
| Parameter | Validation | Error Message |
|---|---|---|
holiday_change_id | ต้องระบุ | Missing required parameter: 'holiday_change_id' |
employee_code | ต้องระบุ | Missing required parameter: 'employee_code' |
holiday_change_dt | ต้องระบุ | Missing required parameter: 'holiday_change_dt' |
holiday_change_dt | รูปแบบ Y-m-d | 'holiday_change_dt' must be in Y-m-d format (e.g., 2024-01-15) |
holiday_flag_lv | ต้องระบุ | Missing required parameter: 'holiday_flag_lv' |
holiday_change_desc | ต้องเป็น string | 'holiday_change_desc' must be a string |
image_content | ต้องเป็น string | 'image_content' must be a string |
Business Rules
ข้อจำกัดการแก้ไข:
- ไม่สามารถแก้ไขคำขอที่ อนุมัติแล้ว (
approve_flag = '02') ส่วนสถานะอื่นแก้ไขได้ทั้งหมด employee_codeต้องเป็นเจ้าของคำขอ ไม่สามารถแก้ไขคำขอของพนักงานคนอื่น- ไม่สามารถแก้ไขในงวดเงินเดือนที่ปิดแล้ว
- อาจมี cut-off date จำกัดวันที่สามารถแก้ไขได้
holiday_change_dtต้องไม่ซ้ำกับคำขออื่นของพนักงานคนเดียวกัน (ยกเว้นคำขอที่ไม่อนุมัติ03)- คำขอเปลี่ยนเป็นวันหยุดพิเศษ (
holiday_flag_lv = 04) ต้องมีโควตาวันหยุดพิเศษคงเหลือเพียงพอ - เมื่อแก้ไข สถานะจะถูกรีเซ็ตเป็นรออนุมัติ (
01) เพื่อให้อนุมัติใหม่
Error Handling
| Error | Cause | Solution |
|---|---|---|
Missing required parameter: 'holiday_change_id' | ไม่ได้ส่ง holiday_change_id | ตรวจสอบ request body |
Employee not found: XXX | ไม่พบพนักงาน | ตรวจสอบ employee_code |
Holiday change document not found: XXX | ไม่พบคำขอ | ตรวจสอบ holiday_change_id (ต้องเข้ารหัส Base64) |
Holiday change document does not belong to this employee | คำขอไม่ใช่ของพนักงานนี้ | ตรวจสอบ employee_code |
ไม่สามารถแก้ไขเอกสารที่อนุมัติแล้ว | คำขออนุมัติแล้ว | ติดต่อ HR |
ไม่สามารถเพิ่มข้อมูลได้เนื่องจากปิดงวดเงินเดือนแล้ว | งวดเงินเดือนปิดแล้ว | ติดต่อ HR |
ไม่สามารถแก้ไขเอกสารได้เนื่องจากเกินกำหนดเวลาที่ร้องขอแล้ว | เกิน cut-off date | ติดต่อ HR |
ไม่สามารถบันทึกได้ เพราะได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้ว!! | มีคำขออื่นในวันเดียวกันอยู่แล้ว | ตรวจสอบคำขอที่มีอยู่ |
ไม่สามารถบันทึก เพราะการเปลี่ยนวันหยุดครั้งนี้เกินโควตาแล้ว!! | โควตาวันหยุดพิเศษไม่พอ (holiday_flag_lv = 04) | ตรวจสอบโควตาวันหยุดพิเศษของพนักงาน |
Related APIs
- Get Holiday Change List - ดึงรายการคำขอเปลี่ยนวันหยุด
- Submit Holiday Change - ยื่นคำขอเปลี่ยนวันหยุดใหม่
- Delete Holiday Change - ลบคำขอเปลี่ยนวันหยุด
Last updated on