Submit Holiday Change
ยื่นคำขอเปลี่ยนวันหยุดใหม่ เพื่อเปลี่ยนประเภทของวันใดวันหนึ่ง
ใช้ API นี้เพื่อสร้างคำขอเปลี่ยนวันหยุดใหม่ เช่น เปลี่ยนจากวันหยุดเป็นวันทำงาน หรือเปลี่ยนจากวันทำงานเป็นวันหยุด
Endpoint
POST /api/v1/open-apis/holiday-change/submitสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลการยื่นเอกสาร (document:manage)
Request Parameters
Required Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
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
{
"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 10:30:00",
"approve_remark": "",
"created": "2026-01-13 10:30:00",
"last_upd": "2026-01-13 10:30:00",
"image_url": null
}
}Error Response - Validation Failed (HTTP 400)
{
"code": 400,
"message": "Validation failed",
"errors": [
"Missing required parameter: 'employee_code'",
"'holiday_change_dt' must be in Y-m-d format (e.g., 2024-01-15)"
]
}Error Response - Duplicate Request (HTTP 400)
{
"code": 400,
"message": "ไม่สามารถบันทึกได้ เพราะได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้ว!!"
}Error Response - Salary Period Closed (HTTP 400)
{
"code": 400,
"message": "ไม่สามารถเพิ่มข้อมูลได้เนื่องจากปิดงวดเงินเดือนแล้ว"
}Response Fields
| Field | Type | Description |
|---|---|---|
holiday_change_id | string | ID ของคำขอที่สร้างใหม่ (ค่า raw ไม่ได้เข้ารหัส Base64 — ต้องเข้ารหัส Base64 ก่อนส่งให้ Update, Delete หรือ Approve) |
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 หากไม่มีไฟล์แนบ |
Code Examples
cURL
curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/holiday-change/submit" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"employee_code": "EMP001",
"holiday_change_dt": "2026-01-15",
"holiday_mode_lv": "change",
"holiday_flag_lv": "00",
"holiday_change_desc": "ต้องประชุมลูกค้า"
}'Example: Submit with Image
// แปลงรูปภาพเป็น Base64
const fileInput = document.getElementById('imageInput')
const file = fileInput.files[0]
const reader = new FileReader()
reader.onload = async function(e) {
const base64Image = e.target.result // data:image/png;base64,...
const response = await fetch(
'https://openapi.humansoft.co.th/api/v1/open-apis/holiday-change/submit',
{
method: 'POST',
headers: {
'Ocp-Apim-Subscription-Key': 'YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
employee_code: 'EMP001',
holiday_change_dt: '2026-01-15',
holiday_mode_lv: 'change',
holiday_flag_lv: '00',
holiday_change_desc: 'ต้องประชุมลูกค้า',
image_content: base64Image
})
}
)
const data = await response.json()
console.log(data)
}
reader.readAsDataURL(file)Validation Rules
| Parameter | Validation | Error Message |
|---|---|---|
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
ข้อจำกัดการยื่นคำขอ:
- ไม่สามารถยื่นคำขอได้ หากพนักงานมีคำขอเปลี่ยนวันหยุดในวันเดียวกันอยู่แล้ว (ยกเว้นคำขอที่ไม่อนุมัติ
03) - ไม่สามารถยื่นคำขอในงวดเงินเดือนที่ปิดแล้ว ยกเว้นวันที่นั้นอยู่ในงวด OT หรืองวดเวลาทำงานที่ยังเปิดอยู่
- อาจมี cut-off date จำกัดวันที่สามารถยื่นได้
- อาจมี quota จำกัดจำนวนคำขอต่องวด
- คำขอเปลี่ยนเป็นวันหยุดพิเศษ (
holiday_flag_lv = 04) ต้องมีโควตาวันหยุดพิเศษคงเหลือเพียงพอ
Error Handling
| Error | Cause | Solution |
|---|---|---|
Missing required parameter: 'employee_code' | ไม่ได้ส่ง employee_code | ตรวจสอบ request body |
Employee not found: XXX | ไม่พบพนักงาน | ตรวจสอบ employee_code |
ไม่สามารถบันทึกได้ เพราะได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้ว!! | มีคำขอในวันเดียวกันอยู่แล้ว | ตรวจสอบคำขอที่มีอยู่ |
ไม่สามารถเพิ่มข้อมูลได้เนื่องจากปิดงวดเงินเดือนแล้ว | งวดเงินเดือนปิดแล้ว | ติดต่อ HR |
ไม่สามารถขอเอกสารได้ เนื่องจากเกินกำหนดวันที่ขอเอกสารแล้ว | เกิน cut-off date | ติดต่อ HR |
ไม่สามารถขอเอกสารได้ เนื่องจากเกินจำนวนโควตาการขอเอกสาร | เกิน quota | รอถึงงวดถัดไป |
ไม่สามารถบันทึก เพราะการเปลี่ยนวันหยุดครั้งนี้เกินโควตาแล้ว!! | โควตาวันหยุดพิเศษไม่พอ (holiday_flag_lv = 04) | ตรวจสอบโควตาวันหยุดพิเศษของพนักงาน |
Related APIs
- Get Holiday Types - ดึงรายการประเภทวันหยุด
- Get Holiday Change List - ดึงรายการคำขอเปลี่ยนวันหยุด
- Update Holiday Change - แก้ไขคำขอเปลี่ยนวันหยุด
Last updated on