Approve Petty Cash
API สำหรับดำเนินการกับเอกสารเบิกเงินสดย่อยในขั้นตอนการอนุมัติ ผู้อนุมัติสามารถเลือกที่จะ “อนุมัติ” หรือ “ไม่อนุมัติ” พร้อมระบุเหตุผลได้ เมื่อสถานะเปลี่ยน ระบบอาจส่งแจ้งเตือนถึงเจ้าของเอกสาร ผู้อนุมัติลำดับถัดไป หรือฝ่าย HR ตามการตั้งค่าการแจ้งเตือนเอกสารขององค์กร
Endpoint
POST /api/v1/open-apis/petty-cash/approveสิทธิ์ที่ต้องการ: API Key ต้องมีสิทธิ์ ข้อมูลการยื่นเอกสาร (document:manage)
Request Body
Required Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
petty_cash_id | string | Yes | รหัสเอกสารที่ต้องการดำเนินการ (Base64) | "MjAyNTExMjdENDU3M0M0MjE2Mzk=" |
petty_cash_type_lv | string | Yes | สถานะใหม่ที่ต้องการเปลี่ยน (ดู Option Values) — หากส่ง 02 ระบบจะกำหนดสถานะจริงตามสายอนุมัติ (ดู Notes) | "02" |
Optional Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
authorize_id | string | No | ID ของผู้ใช้ที่ทำรายการ (Base64) — แนะนำให้ส่ง ระบบใช้ผู้ใช้นี้ตรวจสิทธิ์และลำดับในสายอนุมัติ หากไม่ส่ง ผู้ทำรายการล่าสุดของเอกสารจะถูกบันทึกเป็นค่าว่าง | "MjAyNTAzMDM1MUIwQTJDQ0JEOUM=" |
authorize_line | string | No | ส่งค่าที่ไม่ว่างและไม่ใช่ "0" (เช่น "Y") เพื่อให้ระบบพิจารณาผู้ทำรายการในฐานะผู้อนุมัติตามสายอนุมัติของพนักงาน ไม่นับสิทธิ์ฝ่ายบุคคล — มีผลกับการกำหนดสถานะเมื่อส่ง 02 และการรับค่า petty_cash_in_calculation หากไม่ต้องการให้ละ parameter นี้ (ค่า "false" แบบข้อความถือว่าเปิดใช้) | "Y" |
approve_dt | string | No | วันที่ดำเนินการ (YYYY-MM-DD) — ค่าเริ่มต้นคือวันที่ทำรายการ และเมื่อเอกสารเปลี่ยนเป็นสถานะ 02 ระบบใช้วันที่ทำรายการเสมอ | "2026-03-25" |
approve_remark | string | No | หมายเหตุหรือเหตุผลการพิจารณา — หากไม่ส่ง ระบบคงหมายเหตุเดิมของเอกสารไว้ (ส่ง "" หากต้องการล้างหมายเหตุ) | "อนุมัติให้ตามระเบียบ" |
petty_cash_in_calculation | string | No | วิธีจ่ายเงิน: "Y" = จ่ายในเงินเดือน (ต้องส่ง req_dt และสถานะเอกสารจะเป็น 12), "N" = จ่ายนอกเงินเดือน — ต้องส่งเป็นข้อความ ค่า boolean true จะไม่มีผล ระบบรับค่านี้เฉพาะเมื่อผู้ทำรายการเป็นผู้อนุมัติขั้นสุดท้าย (ดู Notes) | "Y" |
req_dt | string | No | วันที่ใช้หางวดเงินเดือน (YYYY-MM-DD) — ต้องส่ง เมื่อ petty_cash_in_calculation เป็น "Y" ค่านี้จะถูกบันทึกเป็นวันที่ยื่นคำขอของเอกสารด้วย จึงควรส่งวันที่ยื่นคำขอเดิมของเอกสาร | "2026-03-25" |
lang | string | No | ภาษาของข้อความตอบกลับ: TH (ค่าเริ่มต้น) หรือ EN | "EN" |
Option Values: petty_cash_type_lv
| ค่า | ความหมาย (EN) | ความหมาย (TH) |
|---|---|---|
01 | Pending | รออนุมัติ |
02 | Withdrawing | กำลังตั้งเบิก (อนุมัติขั้นสุดท้ายแล้ว) |
03 | Not Approved | ไม่อนุมัติ |
04 | Withdrew | ตั้งเบิกแล้ว |
05 | Received | ได้รับเงินแล้ว |
06 | Recheck | ตรวจสอบอีกครั้ง |
07 | Manager Approved | หัวหน้าอนุมัติ (ขั้นที่ 1) |
08 | Manager Approved | หัวหน้าอนุมัติ (ขั้นที่ 2) |
09 | Manager Approved | หัวหน้าอนุมัติ (ขั้นที่ 3) |
10 | Manager Approved | หัวหน้าอนุมัติ (ขั้นที่ 4) |
11 | Manager Approved | หัวหน้าอนุมัติ (หัวหน้าลำดับสุดท้ายในสายอนุมัติ รอฝ่ายบุคคลอนุมัติ) |
12 | Approved | อนุมัติแล้ว — สถานะเมื่อส่ง petty_cash_in_calculation เป็น "Y" (จ่ายในเงินเดือน) |
Response Format
Success Response
{
"code": 200,
"message": "อนุมัติเอกสารเงินสดย่อยสำเร็จ",
"payload": {
"petty_cash_id": "20251127D4573C421639",
"petty_cash_type_lv": "02",
"approve_dt": "2026-03-25",
"send_doc_dt": null,
"receive_dt": null,
"approve_id": "2025030351B0A2CCBD9C",
"approve_flag": "02"
}
}ข้อความ message ขึ้นกับสถานะของเอกสารหลังดำเนินการ:
petty_cash_type_lv | message (TH) |
|---|---|
02 | อนุมัติเอกสารเงินสดย่อยสำเร็จ |
03 | ปฏิเสธสำเร็จ |
04 | ส่งเอกสารเงินสดย่อยสำเร็จ |
05 | รับเอกสารเงินสดย่อยสำเร็จ |
12 | บันทึกเอกสารเข้างวดเงินเดือนสำเร็จ |
| สถานะอื่น | อัปเดตสถานะเอกสารเงินสดย่อยสำเร็จ |
Response Fields
| Field | Type | Nullable | Description |
|---|---|---|---|
petty_cash_id | string | No | รหัสเอกสาร |
petty_cash_type_lv | string | No | สถานะของเอกสารหลังดำเนินการ (อาจต่างจากค่าที่ส่ง ดู Notes) |
approve_dt | string | No | วันที่อนุมัติ (YYYY-MM-DD) |
send_doc_dt | string | Yes | วันที่ตั้งเบิก — มีค่าเฉพาะเมื่อเอกสารที่อยู่ในสถานะ 02 ถูกอนุมัติเป็น 02 อีกครั้งจนเปลี่ยนเป็น 04 (การส่ง 04 โดยตรงไม่บันทึกวันที่นี้) นอกนั้นเป็น null |
receive_dt | string | Yes | วันที่ได้รับเงินที่บันทึกในเอกสาร — API นี้ไม่ได้บันทึกค่านี้ แม้ส่งสถานะ 05 (บันทึกได้ผ่าน Update Status เฉพาะเอกสารสถานะ 12 ที่เปลี่ยนเป็น 05) |
approve_id | string | No | ID ของผู้ใช้ที่ทำรายการ (ค่าจาก authorize_id) — เป็นค่าว่างหากไม่ได้ส่ง authorize_id |
approve_flag | string | No | ผลการอนุมัติตามสายอนุมัติ — ปกติเท่ากับ petty_cash_type_lv ยกเว้นกรณีจ่ายในเงินเดือนที่ petty_cash_type_lv เป็น 12 |
Error Response
ข้อมูลไม่ผ่านการตรวจสอบ (422)
{
"code": 422,
"message": "การตรวจสอบข้อมูลล้มเหลว",
"errors": ["'petty_cash_type_lv' is required"]
}ข้อความใน errors | สาเหตุ |
|---|---|
'<parameter>' is required | ไม่ได้ส่ง petty_cash_id หรือ petty_cash_type_lv |
ไม่สามารถดำเนินการได้ (400)
{
"code": 400,
"message": "ไม่สามารถอนุมัติได้<br>เนื่องจากปิดงวดการคำนวณเงินเดือนไปแล้ว"
}ข้อความใน message | สาเหตุ |
|---|---|
ไม่สามารถอนุมัติได้<br>เนื่องจากปิดงวดการคำนวณเงินเดือนไปแล้ว | ส่ง petty_cash_in_calculation เป็น "Y" แต่งวดเงินเดือนของ req_dt ปิดไปแล้ว |
ไม่สามารถอนุมัติได้<br>เนื่องจากยังไม่ได้เปิดงวดการคำนวณเงินเดือน | ส่ง petty_cash_in_calculation เป็น "Y" แต่ไม่พบงวดเงินเดือนของ req_dt (รวมถึงกรณีไม่ได้ส่ง req_dt) |
ไม่มีสิทธิ์อนุมัติเอกสารนี้ (403)
เกิดเมื่อส่งสถานะ 02 ขณะที่องค์กรกำหนดให้ฝ่ายบุคคลเป็นผู้อนุมัติ (เป็นค่าเริ่มต้นเมื่อไม่ได้ตั้งค่าสายอนุมัติ) แต่ผู้ทำรายการไม่มีสิทธิ์ฝ่ายบุคคล — เอกสารจะไม่ถูกเปลี่ยนแปลง ส่วนองค์กรที่ใช้สายอนุมัติหัวหน้า ผู้ใช้ที่ไม่อยู่ในสายอนุมัติจะไม่ได้ 403 แต่สถานะเอกสารจะเป็น 01 (ดู Notes)
{
"code": 403,
"message": "ไม่สามารถอนุมัติได้<br>เนื่องจากไม่มีสิทธิ์อนุมัติเอกสารนี้"
}ไม่พบเอกสาร (404)
{
"code": 404,
"message": "ไม่พบรายการ"
}ข้อความใน message ที่มีแท็ก <br> เป็นส่วนหนึ่งของ string จริง
| HTTP Status | Description |
|---|---|
400 | นำเอกสารเข้างวดเงินเดือนไม่ได้ |
403 | API Key ไม่มีสิทธิ์ document:manage หรือส่ง 02 ขณะที่องค์กรกำหนดให้ฝ่ายบุคคลเป็นผู้อนุมัติ แต่ผู้ทำรายการไม่มีสิทธิ์ฝ่ายบุคคล |
404 | ไม่พบเอกสารตาม petty_cash_id หรือเอกสารถูกลบไปแล้ว |
422 | ไม่ได้ส่ง parameter บังคับ |
Code Examples
cURL
curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/petty-cash/approve" \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
-d '{
"petty_cash_id": "MjAyNTExMjdENDU3M0M0MjE2Mzk=",
"petty_cash_type_lv": "02",
"authorize_id": "MjAyNTAzMDM1MUIwQTJDQ0JEOUM=",
"approve_remark": "เบิกจ่ายได้ตามปกติ"
}'Notes
API นี้ไม่ได้ตรวจสถานะปัจจุบันของเอกสารก่อนเปลี่ยน สถานะอื่นนอกจาก 02 ระบบจะบันทึกตามค่าที่ส่งมา (ยกเว้นเมื่อระบบรับ petty_cash_in_calculation = "Y" สถานะจะเป็น 12 — ดูหัวข้อจ่ายในเงินเดือน) ส่วนสถานะ 02 ระบบจะกำหนดสถานะจริงจากผู้ใช้ตาม authorize_id (หากไม่ส่ง ระบบตรวจสิทธิ์ฝ่ายบุคคลจากบัญชีผู้ใช้ที่ผูกกับ API Key เท่านั้น และจะไม่นับเป็นหัวหน้าในสายอนุมัติ ผลจึงเป็น 01, 02 หรือ 403):
- ผู้ใช้ที่มีสิทธิ์ฝ่ายบุคคล (HR) และไม่ได้ส่ง
authorize_line— เปลี่ยนเป็น02ทันที - หัวหน้าในสายอนุมัติของพนักงาน — เป็น
07–10ตามลำดับของหัวหน้า หรือ11เมื่อเป็นหัวหน้าลำดับสุดท้าย (หากองค์กรตั้งค่าให้หัวหน้าลำดับสุดท้ายอนุมัติจบได้เอง จะเป็น02) - ผู้ใช้ที่ไม่อยู่ในสายอนุมัติของพนักงาน — สถานะเป็น
01(รออนุมัติ) - พนักงานที่ไม่มีหัวหน้าในสายอนุมัติ — เปลี่ยนเป็น
02 - หากองค์กรกำหนดให้ฝ่ายบุคคลเป็นผู้อนุมัติเอกสารเงินสดย่อย ผู้ทำรายการต้องมีสิทธิ์ฝ่ายบุคคล มิฉะนั้นระบบตอบ
403
หากเอกสารอยู่ในสถานะ 02 อยู่แล้วและผลลัพธ์เป็น 02 อีกครั้ง ระบบจะเปลี่ยนเป็น 04 (ตั้งเบิกแล้ว) และบันทึกวันที่ตั้งเบิกเป็นวันที่ทำรายการ — แต่หากผลลัพธ์ไม่ใช่ 02 (เช่น 01, 07–11) สถานะเอกสารจะเปลี่ยนเป็นผลลัพธ์นั้นแทน
เมื่อส่ง petty_cash_in_calculation เป็น "Y" ระบบจะหางวดเงินเดือนที่ req_dt อยู่ แล้วเปลี่ยนสถานะเอกสารเป็น 12 พร้อมผูกเอกสารกับงวดเงินเดือนนั้น หากไม่พบงวดเงินเดือนหรืองวดเงินเดือนปิดไปแล้ว ระบบจะปฏิเสธคำขอ (400)
ระบบรับค่า petty_cash_in_calculation เฉพาะเมื่อผลการอนุมัติเป็น 02 (ผู้ทำรายการเป็นผู้อนุมัติขั้นสุดท้าย) หรือผู้ทำรายการมีสิทธิ์ฝ่ายบุคคลและไม่ได้ส่ง authorize_line — กรณีอื่น เช่น หัวหน้าลำดับกลางในสายอนุมัติ ระบบจะไม่สนใจค่านี้ และเอกสารจะเดินตามสายอนุมัติตามปกติ
- API นี้ไม่ได้บังคับลำดับการอนุมัติ แม้องค์กรตั้งรูปแบบการอนุมัติเอกสารเป็น “ตามลำดับขั้น” (
approver_visibility_mode=sequential) — ควรตรวจauthorize_flagจาก Get Detail ก่อนว่าถึงลำดับของผู้ใช้แล้ว - ระบบบันทึกเฉพาะข้อมูลที่เกี่ยวกับการอนุมัติตามที่ระบุในหน้านี้ — parameter อื่นที่ส่งมาจะถูกละเว้น
- ระบบบันทึกประวัติการอนุมัติของเอกสารโดยอัตโนมัติ
- ข้อความ
messageเป็นภาษาตาม parameterlang(ค่าเริ่มต้น TH) — API นี้ไม่ได้ใช้language_code
พารามิเตอร์ petty_cash_id และ authorize_id ต้องส่งเป็น Base64-encoded
Related APIs
- Get Detail - ดูรายละเอียดเอกสาร
- Update Status - อัปเดตสถานะเอกสาร (ส่งเอกสาร/รับเงิน)
- Search List - ค้นหาเอกสารสำหรับ HR/ผู้อนุมัติ