Update Employee Leave Quota
บันทึกโควตาการลาของพนักงาน กำหนดโควตาแต่ละประเภทการลาในแต่ละปี รองรับหลายพนักงานในครั้งเดียว
Endpoint
POST /api/v1/open-apis/employee/update-employee-setting?path_action=quotaสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลพนักงานพื้นฐาน (employee:read:basic)
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
path_action | string | Yes | ต้องเป็น quota (หรือ save-quota) |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
employee_lists | array | Yes | รายการพนักงานและโควตาที่ต้องการบันทึก |
employee_lists[]
| Field | Type | Required | Description |
|---|---|---|---|
employee_code | string | Conditional | รหัสพนักงาน (แนะนำ) |
employee_id | string | Conditional | ID ของพนักงาน (Base64) — ใช้แทน employee_code ได้ |
quota | array | Yes | รายการโควตาแต่ละประเภทการลา |
ต้องส่ง employee_code หรือ employee_id อย่างน้อยหนึ่งอย่าง — ถ้าส่งทั้งคู่ ระบบจะใช้ employee_code
employee_lists[].quota[]
| Field | Type | Required | Description |
|---|---|---|---|
quota_year | string | Yes | ปีโควตาเป็น ปี ค.ศ. (YYYY) เช่น 2026 |
time_leave_flag | string | Yes | รหัสประเภทการลา เช่น "01", "03" |
time_leave_flag_quota | string/number | No | จำนวนโควตา (หน่วยตามประเภทการลา วัน/ชั่วโมง) — ถ้าไม่ส่งหรือส่งค่าว่าง ระบบจะใช้โควตาเริ่มต้นตามการตั้งค่าประเภทการลาขององค์กร |
รหัส time_leave_flag ขึ้นกับการตั้งค่าของแต่ละองค์กร ดูรหัสได้จากฟิลด์ time_leave_flag ใน Get Quota หรือรายการทั้งหมดจาก Get Active Leave Types (ต้องมีสิทธิ์ payroll:read:self)
Example Request
{
"employee_lists": [
{
"employee_code": "EMP001",
"quota": [
{
"quota_year": "2026",
"time_leave_flag": "01",
"time_leave_flag_quota": "6"
},
{
"quota_year": "2026",
"time_leave_flag": "03",
"time_leave_flag_quota": "30"
}
]
}
]
}Response Format
Success Response
{
"code": 200,
"message": "Save Multi Employee Quota Success",
"payload": {
"processed": [
{
"employee_id": "20251127D4573C421639",
"quotas": [
{
"quota_year": "2026",
"time_leave_flag": "01",
"quota": "6"
},
{
"quota_year": "2026",
"time_leave_flag": "03",
"quota": "30"
}
]
}
]
}
}Response Fields
| Field | Type | Description |
|---|---|---|
processed | array | รายการพนักงานที่บันทึกโควตาแล้ว เรียงตามลำดับใน employee_lists |
processed[].employee_id | string | ID ของพนักงาน |
processed[].quotas | array | รายการโควตาที่บันทึก |
processed[].quotas[].quota_year | string | ปีโควตา (ค.ศ.) |
processed[].quotas[].time_leave_flag | string | รหัสประเภทการลา |
processed[].quotas[].quota | string/number | จำนวนโควตาที่บันทึก (กรณีใช้ค่าเริ่มต้น จะเป็นค่าที่ระบบคำนวณให้) |
Error Response
ไม่ส่ง employee_lists
{
"code": 400,
"message": "ข้อมูลไม่ถูกต้อง",
"errors": [
"กรุณาระบุ 'employee_lists' สำหรับ action 'quota'"
]
}ข้อมูลในรายการไม่ครบ
{
"code": 400,
"message": "ข้อมูลไม่ถูกต้อง",
"errors": [
"ไม่พบ 'quota' (array) ในรายการที่ 0"
]
}ไม่พบพนักงาน
{
"code": 400,
"message": "Employee not found"
}Validation Rules
| เงื่อนไข | Error Message |
|---|---|
ไม่ส่ง employee_lists หรือส่งค่าว่าง | กรุณาระบุ 'employee_lists' สำหรับ action 'quota' (ใน errors) |
employee_lists ไม่ใช่ array | 'employee_lists' ต้องเป็น array (ใน errors) |
รายการไม่มีทั้ง employee_code และ employee_id | ไม่พบ 'employee_id' หรือ 'employee_code' ในรายการที่ {index} (ใน errors) |
รายการไม่มี quota หรือ quota ไม่ใช่ array | ไม่พบ 'quota' (array) ในรายการที่ {index} (ใน errors) |
ไม่พบพนักงานตาม employee_code / employee_id | Employee not found (ใน message) |
{index} คือลำดับของรายการใน employee_lists โดยเริ่มนับจาก 0
Code Examples
cURL
curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/employee/update-employee-setting?path_action=quota" \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-d '{
"employee_lists": [
{
"employee_code": "EMP001",
"quota": [
{ "quota_year": "2026", "time_leave_flag": "01", "time_leave_flag_quota": "6" },
{ "quota_year": "2026", "time_leave_flag": "03", "time_leave_flag_quota": "30" }
]
}
]
}'Notes
- ถ้ามีโควตาของพนักงาน ปี และประเภทการลาเดียวกันอยู่แล้ว ระบบจะแทนที่ด้วยค่าใหม่ (ไม่ได้บวกเพิ่ม) ถ้ายังไม่มีจะสร้างใหม่
- การบันทึกทั้งคำขอเป็นแบบ all-or-nothing — ถ้าพนักงานรายการใดไม่พบ จะไม่มีโควตาใดในคำขอนั้นถูกบันทึก
- API ไม่ตรวจสอบว่า
time_leave_flagมีอยู่ในระบบหรือไม่ หากส่งรหัสที่ไม่ถูกต้อง คำขอจะสำเร็จแต่โควตานั้นจะไม่แสดงใน Get Quota — ควรตรวจสอบรหัสก่อนส่ง - ตรวจสอบโควตาหลังบันทึกได้ด้วย Get Quota
Related APIs
- Get Quota - ดึงข้อมูลโควตาการลา
- Add Actual Leave - เพิ่มยอดลาจริง
- Delete Actual Leave - ลบยอดลาจริง
Last updated on