Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Update Leave

แก้ไขคำขอลาที่มีอยู่

ใช้ API นี้เพื่อแก้ไขรายละเอียดคำขอลา เช่น ช่วงเวลา ประเภทการลา รายละเอียด หรือไฟล์แนบ

Endpoint

POST /api/v1/open-apis/time-leave/update

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

Request Parameters

Required Parameters

ParameterTypeRequiredDescriptionExample
time_leave_idstringYesID ของคำขอที่ต้องการแก้ไข (Base64)MjAyNTExMjdENDU3M0M0MjE2Mzk=
employee_codestringYesรหัสพนักงานเจ้าของคำขอEMP001
absence_flag_lvstringYesประเภทการลา (01-08, 10-20 หรือรูปแบบ absence-01) ดูรหัสได้จาก Get Leave Typesabsence-01
effective_hourstringYesเวลาเริ่มต้น (YYYY-MM-DD HH:MM:SS)2026-01-15 08:00:00
expire_hourstringYesเวลาสิ้นสุด (YYYY-MM-DD HH:MM:SS)2026-01-15 17:00:00

Optional Parameters

ParameterTypeRequiredDescriptionExample
time_leave_descstringNoรายละเอียด/เหตุผล (ถ้าไม่ส่ง รายละเอียดจะถูกบันทึกเป็นค่าว่าง)แก้ไขเหตุผลการลา
image_contentstringNoไฟล์แนบใหม่ (Base64 encoded) — ถ้าไม่ส่ง ไฟล์แนบเดิมจะยังคงอยู่data:image/png;base64,...
language_codestringNoภาษาของข้อความตอบกลับ: TH (ค่าเริ่มต้น) หรือ ENTH
authorize_idstringNoID ผู้ทำรายการ (Base64)MjAyNjA0MzBVU0VSMDAwMDAx

หา authorize_id ได้อย่างไร: รับค่าจาก Get Employee Data Filter โดยใช้ path_action=get-user พร้อม employee_code ของผู้ทำรายการ — ใช้ค่า user_id ที่ได้กลับมาเป็น authorize_id

time_leave_id ที่ได้จาก Get Leave List หรือ Submit Leave เป็นค่า raw ต้องเข้ารหัส Base64 ก่อนส่งใน API นี้

Request Body Example

{ "time_leave_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=", "employee_code": "EMP001", "absence_flag_lv": "absence-01", "effective_hour": "2026-01-15 08:00:00", "expire_hour": "2026-01-16 17:00:00", "time_leave_desc": "แก้ไขเหตุผลการลา" }

Response Format

Success Response (HTTP 200)

{ "code": 200, "message": "สำเร็จ", "payload": { "time_leave_id": "20251127D4573C421639", "employee_id": "20251127D4573C421639", "employee_code": "EMP001", "type": "01", "start_dt": "2026-01-15 08:00:00", "end_dt": "2026-01-16 17:00:00", "description": "แก้ไขเหตุผลการลา", "approve_flag": "01", "updated_at": "2026-01-13 14:30: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: 'time_leave_id'", "'expire_hour' must be greater than or equal to 'effective_hour'" ] }

Error Response - Not Found (HTTP 400)

{ "code": 400, "message": "Time leave record not found" }

Error Response - Already Approved (HTTP 400)

{ "code": 400, "message": "ไม่สามารถแก้ไขเอกสารที่อนุมัติแล้ว" }

Error Response - Already Deleted (HTTP 400)

{ "code": 400, "message": "Cannot update deleted time leave record" }

Error Response - Salary Period Closed (HTTP 400)

{ "code": 400, "message": "ไม่สามารถบันทึกได้ เพราะสิ้นสุดการคำนวณเงินเดือนไปแล้ว" }

Response Fields

FieldTypeDescription
time_leave_idstringID ของคำขอที่แก้ไข
employee_idstringID ของพนักงาน
employee_codestringรหัสพนักงาน
typestringรหัสประเภทการลาในรูปแบบตัวเลข เช่น 01 (แม้จะส่งมาเป็น absence-01)
start_dtdatetimeเวลาเริ่มต้น
end_dtdatetimeเวลาสิ้นสุด
descriptionstringรายละเอียด
approve_flagstringสถานะการอนุมัติ — เป็น 01 (รออนุมัติ) หลังแก้ไขสำเร็จ
updated_atdatetimeวันเวลาที่แก้ไข
image_urlstring | nullURL ของไฟล์แนบ, null หากไม่มีไฟล์แนบ — ถ้าไม่ได้ส่ง image_content จะคืนไฟล์แนบเดิมของคำขอ

Code Examples

curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/time-leave/update" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "time_leave_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=", "employee_code": "EMP001", "absence_flag_lv": "absence-01", "effective_hour": "2026-01-15 08:00:00", "expire_hour": "2026-01-16 17:00:00", "time_leave_desc": "แก้ไขเหตุผลการลา" }'

Validation Rules

ParameterValidationError Message
time_leave_idต้องระบุMissing required parameter: 'time_leave_id'
employee_codeต้องระบุMissing required parameter: 'employee_code'
employee_codeต้องเป็น string'employee_code' must be a string
absence_flag_lvต้องระบุMissing required parameter: 'absence_flag_lv'
absence_flag_lvต้องเป็น 01-08 หรือ 10-20 (หรือ absence-01 ถึง absence-20 ยกเว้น 09)'absence_flag_lv' must be 01 to 08 or 10 to 20
effective_hourต้องระบุMissing required parameter: 'effective_hour'
effective_hourรูปแบบ YYYY-MM-DD HH:MM:SS'effective_hour' must be in format YYYY-MM-DD HH:MM:SS
effective_hourต้องเป็นวันเวลาที่มีอยู่จริง'effective_hour' is not a valid datetime
expire_hourต้องระบุMissing required parameter: 'expire_hour'
expire_hourรูปแบบ YYYY-MM-DD HH:MM:SS'expire_hour' must be in format YYYY-MM-DD HH:MM:SS
expire_hourต้องเป็นวันเวลาที่มีอยู่จริง'expire_hour' is not a valid datetime
expire_hourต้อง >= effective_hour'expire_hour' must be greater than or equal to 'effective_hour'
time_leave_descต้องเป็น string'time_leave_desc' must be a string
image_contentต้องเป็น string'image_content' must be a string

Business Rules

ข้อจำกัดการแก้ไข:

  • ไม่สามารถแก้ไขคำขอที่อนุมัติแล้ว (approve_flag = 02)
  • ไม่สามารถแก้ไขคำขอที่ลบไปแล้ว
  • ไม่สามารถแก้ไขเมื่อวันเริ่มหรือวันสิ้นสุดการลาอยู่ในงวดเงินเดือนที่ปิดแล้ว ยกเว้นวันเริ่มลาอยู่ในงวดเวลาทำงานที่ยังเปิดอยู่
  • ช่วงเวลาใหม่ต้องไม่ทับซ้อนกับคำขอลาอื่นของพนักงาน (ไม่นับคำขอนี้เอง คำขอที่ไม่อนุมัติ 03 และคำขอที่ถูกลบ)
  • ระบบอาจตรวจสอบเงื่อนไขตามการตั้งค่าประเภทการลาขององค์กรเช่นเดียวกับการยื่นคำขอ และอาจปฏิเสธการแก้ไขที่เกินกำหนดวันตัดรอบการยื่นเอกสารที่องค์กรตั้งค่าไว้
  • เมื่อแก้ไขสำเร็จ สถานะของคำขอจะกลับเป็น 01 (รออนุมัติ) เสมอ
  • ระบบจะบันทึกคำขอเป็นของพนักงานตาม employee_code ที่ส่งมา โดยไม่ได้ตรวจสอบว่าตรงกับเจ้าของคำขอเดิม จึงต้องส่ง employee_code ของเจ้าของคำขอเสมอ

Error Handling

ErrorCauseSolution
Missing required parameter: 'time_leave_id'ไม่ได้ส่ง time_leave_idตรวจสอบ request body
Employee not foundไม่พบพนักงานจาก employee_codeตรวจสอบ employee_code
Time leave record not foundไม่พบคำขอตรวจสอบ time_leave_id (ต้องเข้ารหัส Base64)
Cannot update deleted time leave recordคำขอถูกลบไปแล้วไม่สามารถแก้ไขได้
ไม่สามารถแก้ไขเอกสารที่อนุมัติแล้วคำขออนุมัติแล้วไม่สามารถแก้ไขได้
ไม่สามารถบันทึกได้ เพราะสิ้นสุดการคำนวณเงินเดือนไปแล้ววันเริ่มหรือวันสิ้นสุดการลาอยู่ในงวดเงินเดือนที่ปิดแล้วติดต่อ HR
ไม่สามารถบันทึกได้ เพราะได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้ว!!ช่วงเวลาซ้ำกับคำขออื่นตรวจสอบช่วงเวลา
ไม่สามารถแก้ไขเอกสารได้เนื่องจากเกินกำหนดเวลาที่ร้องขอแล้วเกินกำหนดวันตัดรอบการยื่นเอกสารที่องค์กรตั้งค่าไว้ติดต่อ HR

ข้อความ error จากการตรวจสอบเงื่อนไขของประเภทการลา (โควตา การลาล่วงหน้า การลาย้อนหลัง จำนวนวันลาติดต่อกัน และประเภทการลาที่ใช้ไม่ได้) เป็นชุดเดียวกับ Submit Leave

Notes

Use Cases

  1. แก้ไขช่วงเวลา - เปลี่ยนวันเริ่มต้นหรือสิ้นสุด
  2. เปลี่ยนประเภทการลา - เปลี่ยนจากลาป่วยเป็นลากิจ
  3. เพิ่มรายละเอียด - อัพเดทเหตุผลการลา
  4. แนบไฟล์เพิ่มเติม - อัพโหลดใบรับรองแพทย์

Time Format

  • effective_hour และ expire_hour ใช้รูปแบบ YYYY-MM-DD HH:MM:SS
  • ตัวอย่าง: 2026-01-15 08:00:00

File Attachment

  • ส่งไฟล์แนบใหม่เป็น Base64 encoded string ใน image_content (แนะนำให้มี prefix เช่น data:image/jpeg;base64,...) ไฟล์ใหม่จะใช้แทนไฟล์แนบเดิม
  • ถ้าไม่ส่ง image_content ไฟล์แนบเดิมจะยังคงอยู่ และ image_url ใน response จะเป็น URL ของไฟล์แนบเดิม

Message Language

  • ข้อความสำเร็จและข้อความภาษาไทยในตาราง Error Handling จะเป็นภาษาอังกฤษเมื่อส่ง language_code = EN
  • ข้อความ validation (errors), Employee not found, Time leave record not found และ Cannot update deleted time leave record เป็นภาษาอังกฤษเสมอ
Last updated on