Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Update Holiday Change

แก้ไขคำขอเปลี่ยนวันหยุดที่ยังไม่ได้อนุมัติ

ใช้ API นี้เพื่อแก้ไขคำขอเปลี่ยนวันหยุด แก้ไขได้ทุกสถานะยกเว้นคำขอที่อนุมัติแล้ว (02) และหลังแก้ไข สถานะจะกลับเป็นรออนุมัติ (01) เสมอ

Endpoint

POST /api/v1/open-apis/holiday-change/update

สิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลการยื่นเอกสาร (document:manage)

Request Parameters

Required Parameters

ParameterTypeRequiredDescriptionExample
holiday_change_idstringYesID ของคำขอที่ต้องการแก้ไข (Base64)MjAyNTExMjdENDU3M0M0MjE2Mzk=
employee_codestringYesรหัสพนักงานเจ้าของคำขอEMP001
holiday_change_dtstringYesวันที่ต้องการเปลี่ยน (Y-m-d)2026-01-15
holiday_flag_lvstringYesประเภทวันหยุดที่ต้องการเปลี่ยนเป็น00

Optional Parameters

ParameterTypeRequiredDescriptionExample
holiday_mode_lvstringNoโหมดการเปลี่ยน — change = เปลี่ยนประเภทของวันที่ holiday_change_dt เป็นค่าใน holiday_flag_lv (ไม่ส่ง = คงค่าเดิม)change
holiday_change_descstringNoเหตุผลการเปลี่ยน (ไม่ส่ง = คงค่าเดิม)แก้ไข: ต้องประชุมลูกค้า
image_contentstringNoรูปภาพ (Base64 encoded) — ส่งเพื่อแทนที่ไฟล์แนบเดิม (ไม่ส่ง = คงไฟล์แนบเดิม)data:image/png;base64,...
authorize_idstringNoID ผู้ทำรายการ (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

FieldTypeDescription
holiday_change_idstringID ของคำขอ (ค่า raw ไม่ได้เข้ารหัส Base64)
employee_idstringID ของพนักงาน
employee_codestringรหัสพนักงาน
holiday_change_dtstringวันที่เปลี่ยน (YYYY-MM-DD)
holiday_mode_lvstringโหมดการเปลี่ยน (change, switch) ตามที่บันทึกในคำขอ
holiday_flag_lvstringประเภทวันหยุด
holiday_switch_dtstring | nullวันที่สลับไป (ใช้กับโหมด switch)
switch_holiday_flag_lv_fromstring | nullประเภทวันเดิม (ใช้กับโหมด switch)
switch_holiday_flag_lv_tostring | nullประเภทวันใหม่ (ใช้กับโหมด switch)
holiday_change_descstringเหตุผลการเปลี่ยน
approve_flagstringสถานะการอนุมัติ (รีเซ็ตเป็น 01 = รออนุมัติ)
approve_idstringuser_id ของผู้ทำรายการล่าสุด (ผู้ยื่น/แก้ไขคำขอ หรือผู้อนุมัติ)
approve_upddatetimeวันเวลาที่ปรับสถานะล่าสุด (ยื่น/แก้ไข/อนุมัติ)
approve_remarkstringหมายเหตุการอนุมัติ
createddatetimeวันเวลาที่สร้าง
last_upddatetimeวันเวลาที่แก้ไขล่าสุด
image_urlstring | nullURL ของไฟล์แนบ, null หากไม่มีไฟล์แนบ (หากไม่ได้ส่ง image_content จะเป็นไฟล์แนบเดิม)

Code Examples

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

ParameterValidationError 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

ErrorCauseSolution
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)ตรวจสอบโควตาวันหยุดพิเศษของพนักงาน
Last updated on