Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Update OT

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

ใช้ API นี้เพื่อแก้ไขรายละเอียดคำขอ OT เช่น เวลาเริ่มต้น/สิ้นสุด ประเภท OT หรือรายละเอียด

Endpoint

POST /api/v1/open-apis/overtime/update

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

Request Parameters

Required Parameters

ParameterTypeRequiredDescriptionExample
ot_work_idstringYesID ของคำขอที่ต้องการแก้ไข (Base64)MjAyNTExMjdENDU3M0M0MjE2Mzk=
employee_codestringYesรหัสพนักงานเจ้าของเอกสารEMP001
ot_work_dtstringYesวันที่ของรอบกะการทำงานที่ OT นี้สังกัด (YYYY-MM-DD) — ดู OT Work Date2026-01-16
ot_work_start_hourstringYesเวลาเริ่มต้น (YYYY-MM-DD HH:mm:ss)2026-01-16 18:00:00
ot_work_end_hourstringYesเวลาสิ้นสุด (YYYY-MM-DD HH:mm:ss) ต้องมากกว่า ot_work_start_hour2026-01-16 22:00:00
ot_work_flag_lvstringYesประเภท OT รองรับทั้งรูปแบบตัวเลข (01-08) หรือ string format (OT_1_0-OT_7_0)02 หรือ OT_1_5

Optional Parameters

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

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

Request Body Example

{ "ot_work_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=", "employee_code": "EMP001", "ot_work_dt": "2026-01-16", "ot_work_start_hour": "2026-01-16 18:00:00", "ot_work_end_hour": "2026-01-16 22:00:00", "ot_work_flag_lv": "03", "ot_work_desc": "แก้ไข: ทำงานโปรเจกต์พิเศษ" }

Response Format

Success Response (HTTP 200)

{ "code": 200, "message": "สำเร็จ", "payload": { "ot_work_id": "20251127D4573C421639", "employee_id": "20251127D4573C421639", "employee_code": "EMP001", "ot_work_dt": "2026-01-16", "ot_work_start_hour": "2026-01-16 18:00:00", "ot_work_end_hour": "2026-01-16 22:00:00", "ot_work_flag_lv": "OT_2_0", "ot_work_desc": "แก้ไข: ทำงานโปรเจกต์พิเศษ", "approve_flag": "01", "last_upd": "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: 'ot_work_id'", "'ot_work_start_hour' must be before 'ot_work_end_hour'" ] }

Error Response - Not Found (HTTP 400)

{ "code": 400, "message": "OT work record not found" }

Error Response - Already Approved (HTTP 400)

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

Error Response - Salary Period Closed (HTTP 400)

{ "code": 400, "message": "สิ้นสุดการคำนวณเงินเดือนไปแล้ว" }

ข้อผิดพลาดจากการตรวจสอบรูปแบบข้อมูลจะอยู่ใน errors (array) ส่วนข้อผิดพลาดอื่นจะอยู่ใน message ข้อความทางธุรกิจ (เช่น อนุมัติแล้ว, งวดปิดแล้ว) แสดงเป็นภาษาไทยโดยค่าเริ่มต้น และเป็นภาษาอังกฤษเมื่อส่ง language_code เป็น EN

Response Fields

FieldTypeDescription
ot_work_idstringID ของคำขอที่แก้ไข
employee_idstringID ของพนักงาน
employee_codestringรหัสพนักงาน
ot_work_dtstringวันที่ของรอบกะการทำงานที่ OT นี้สังกัด
ot_work_start_hourdatetimeเวลาเริ่มต้นที่บันทึก
ot_work_end_hourdatetimeเวลาสิ้นสุดที่บันทึก
ot_work_flag_lvstringประเภท OT — คืนกลับเป็นรูปแบบ string เสมอ (OT_1_0-OT_7_0)
ot_work_descstringรายละเอียดงาน OT
approve_flagstringสถานะการอนุมัติ — หลังแก้ไขจะเป็น 01 (รออนุมัติ) เสมอ
last_upddatetimeวันเวลาที่แก้ไขเอกสาร
image_urlstring | nullURL ของไฟล์แนบ, null หากไม่มีไฟล์แนบ — หากไม่ได้ส่ง image_content จะคืนไฟล์แนบเดิม

ระบบอาจปรับเวลาเริ่มต้น/สิ้นสุดให้สอดคล้องกับเวลากะการทำงานของพนักงานในวันนั้น (เช่น ตัดช่วงที่ทับกับเวลากะออก) — ot_work_start_hour และ ot_work_end_hour ใน response คือค่าที่บันทึกจริง ซึ่งอาจไม่ตรงกับค่าที่ส่งมา

Code Examples

curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/overtime/update" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ot_work_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=", "employee_code": "EMP001", "ot_work_dt": "2026-01-16", "ot_work_start_hour": "2026-01-16 18:00:00", "ot_work_end_hour": "2026-01-16 22:00:00", "ot_work_flag_lv": "03", "ot_work_desc": "แก้ไข: ทำงานโปรเจกต์พิเศษ" }'

Validation Rules

ParameterValidationError Message
ot_work_idต้องระบุMissing required parameter: 'ot_work_id'
ot_work_idต้องเป็น string'ot_work_id' must be a string
employee_codeต้องระบุMissing required parameter: 'employee_code'
employee_codeต้องเป็น string'employee_code' must be a string
ot_work_dtต้องระบุMissing required parameter: 'ot_work_dt'
ot_work_dtต้องเป็น string'ot_work_dt' must be a string
ot_work_dtต้องอยู่ในรูปแบบ YYYY-MM-DD'ot_work_dt' must be in Y-m-d format (e.g., 2024-01-15)
ot_work_dtต้องเป็นวันที่ที่มีอยู่จริงตามปฏิทิน'ot_work_dt' is not a valid date
ot_work_dtต่างจากวันที่ของ ot_work_start_hour ได้ไม่เกิน 1 วัน'ot_work_dt' (2026-01-13) must be within +/- 1 day of 'ot_work_start_hour' date (2026-01-15)
ot_work_dtต่างจากวันที่ของ ot_work_end_hour ได้ไม่เกิน 1 วัน'ot_work_dt' (2026-01-13) must be within +/- 1 day of 'ot_work_end_hour' date (2026-01-15)
ot_work_start_hourต้องระบุMissing required parameter: 'ot_work_start_hour'
ot_work_start_hourต้องอยู่ในรูปแบบ YYYY-MM-DD HH:mm:ss'ot_work_start_hour' must be in Y-m-d H:i:s format (e.g., 2024-01-15 18:00:00)
ot_work_end_hourต้องระบุMissing required parameter: 'ot_work_end_hour'
ot_work_end_hourต้องอยู่ในรูปแบบ YYYY-MM-DD HH:mm:ss'ot_work_end_hour' must be in Y-m-d H:i:s format (e.g., 2024-01-15 22:00:00)
ot_work_end_hourต้องมากกว่า ot_work_start_hour'ot_work_start_hour' must be before 'ot_work_end_hour'
ot_work_flag_lvต้องระบุMissing required parameter: 'ot_work_flag_lv'
ot_work_flag_lvต้องรองรับ 01-08 หรือ OT_1_0-OT_7_0'ot_work_flag_lv' must be one of: 01, 02, 03, 04, 05, 06, 07, 08 or OT_1_0, OT_1_5, OT_2_0, OT_3_0, OT_4_0, OT_5_0, OT_6_0, OT_7_0
ot_work_descต้องเป็น string (ถ้าระบุ)'ot_work_desc' must be a string
image_contentต้องเป็น string (ถ้าระบุ)'image_content' must be a string

เงื่อนไขช่วงวันของ ot_work_dt ใช้กฎเดียวกับ Submit OT และถูกตรวจแยกกันสองครั้ง (เทียบกับเวลาเริ่มและเทียบกับเวลาสิ้นสุด) จึงอาจได้รับ error ทั้งสองข้อความพร้อมกันใน errors

Business Rules

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

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

Side Effects

เมื่อแก้ไขคำขอสำเร็จ ระบบจะ:

  1. Recalculate OT Hours - คำนวณชั่วโมง OT ใหม่
  2. Reset Status - ตั้งสถานะกลับเป็นรออนุมัติ (01)
  3. Create Notification - แจ้งเตือนผู้อนุมัติ (เมื่อองค์กรเปิดใช้การแจ้งเตือนเอกสาร)
  4. Update Feed - อัพเดท feed ของเอกสารตามสายอนุมัติ

Error Handling

ErrorCauseSolution
Missing required parameter: 'ot_work_id'ไม่ได้ส่ง ot_work_idตรวจสอบ request body
Employee not found: EMP001ไม่พบพนักงานจาก employee_codeตรวจสอบ employee_code
OT work record not foundไม่พบคำขอตรวจสอบ ot_work_id
Cannot update deleted OT work recordคำขอถูกลบไปแล้วสร้างคำขอใหม่ด้วย Submit OT
ไม่สามารถแก้ไขเอกสารที่อนุมัติแล้วคำขออนุมัติแล้วไม่สามารถแก้ไขได้
สิ้นสุดการคำนวณเงินเดือนไปแล้วงวดเงินเดือนปิดแล้วติดต่อ HR
ได้มีการขอเอกสารทับซ้อนกับที่ขอมาก่อนหน้าแล้วช่วงเวลา OT ทับกับคำขอ OT อื่นของพนักงานตรวจสอบคำขอเดิมด้วย Get OT List
เวลาโอทีทับซ้อนกับกะการทำงานช่วงเวลา OT อยู่ในเวลากะการทำงานของวันนั้นปรับเวลา OT ให้อยู่นอกเวลากะ
เนื่องจากพนักงานไม่สามารถขอโอทีประเภทนี้ได้!!พนักงานถูกปิดสิทธิ์ขอ OT ประเภทนี้ตรวจสอบการตั้งค่า OT ของพนักงาน
ประเภทโอทีนี้ถูกปิดใช้งานสำหรับประเภทพนักงานของพนักงานคนนี้ ...ประเภท OT ถูกปิดสำหรับประเภทพนักงานนี้ตรวจสอบการตั้งค่าประเภท OT
โอทีประเภทนี้ขอได้เฉพาะวันทำงานเท่านั้นขอ OT ประเภทที่จำกัดให้ใช้เฉพาะวันทำงาน ในวันที่ไม่ใช่วันทำงาน (ตามการตั้งค่าขององค์กร)เลือกประเภท OT ให้ตรงกับวัน
ไม่สามารถแก้ไขเอกสารได้เนื่องจากเกินกำหนดเวลาที่ร้องขอแล้วเกินกำหนดวันตัดรอบการขอเอกสาร OT (เมื่อองค์กรเปิดใช้)ติดต่อ HR

Notes

Use Cases

  1. แก้ไขเวลา OT - เปลี่ยนเวลาเริ่มต้นหรือสิ้นสุด
  2. เปลี่ยนประเภท OT - เปลี่ยนจาก OT 1.5x เป็น OT 2.0x
  3. เพิ่มรายละเอียด - อัพเดทเหตุผลการทำ OT

Full Update

API นี้ต้องการให้ส่งข้อมูลครบทุก required field — ระบบจะอัพเดทเอกสารเต็มรูปแบบ ไม่รองรับ partial update

  • หากไม่ส่ง ot_work_desc รายละเอียดเดิมจะถูกล้างเป็นค่าว่าง — ให้ส่งค่าเดิมมาด้วยหากต้องการเก็บไว้
  • หากไม่ส่ง image_content ไฟล์แนบเดิมยังคงอยู่ และ image_url ใน response จะเป็นไฟล์เดิม

OT Types (ประเภท OT)

API รองรับการส่งค่า ot_work_flag_lv ได้ 2 รูปแบบ:

รูปแบบที่ 1: ตัวเลข (Numeric Code)

Codeอัตรา OTคำอธิบาย
011.0xOT อัตราปกติ
021.5xOT อัตรา 1.5 เท่า
032.0xOT อัตรา 2 เท่า
043.0xOT อัตรา 3 เท่า
054.0xOT อัตรา 4 เท่า
065.0xOT อัตรา 5 เท่า
076.0xOT อัตรา 6 เท่า
087.0xOT อัตรา 7 เท่า

รูปแบบที่ 2: String Format

Codeอัตรา OTเทียบเท่ากับ
OT_1_01.0x01
OT_1_51.5x02
OT_2_02.0x03
OT_3_03.0x04
OT_4_04.0x05
OT_5_05.0x06
OT_6_06.0x07
OT_7_07.0x08

ระบบจะแปลง OT_X_X เป็นรหัสตัวเลขอัตโนมัติ เช่น OT_1_5 → 02

  • Get OT List - ดึงรายการคำขอ OT
  • Submit OT - ยื่นคำขอ OT ใหม่
  • Delete OT - ลบคำขอ OT
Last updated on