Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Net Total Month Report

ดึงรายงานผลการคำนวณเงินเดือนสุทธิประจำเดือนจากงวดเงินเดือนหลัก รองรับ JSON, Excel, PDF และ Text

ใช้ API นี้สำหรับเรียกรายงานเงินเดือนสุทธิของพนักงานตาม year_month ที่ระบุ เหมาะสำหรับแสดงผลรายงานบนระบบ ส่งออก Excel/PDF/Text หรือใช้ตรวจสอบยอดรายรับ รายจ่าย เงินเบิกล่วงหน้า และยอดสุทธิหลังคำนวณเงินเดือนประจำเดือน

Endpoint

POST /api/v1/open-apis/report/net-total-month

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

Authorization

ผู้เรียกต้องส่ง authorize_id จึงจะเรียกรายงานนี้ได้

Request Parameters

Required

ParameterTypeRequiredDescriptionExample
authorize_idstringYesรหัสผู้เรียก API ใช้สำหรับตรวจสิทธิ์และข้อมูลผู้ใช้งานEMP001
year_monthstring (YYYY-MM)Yesงวดเดือนเงินเดือนที่ต้องการดึงรายงาน2026-03

Output / Export Parameters

ParameterTypeDefaultDescriptionExample
typestringjsonรูปแบบผลลัพธ์ (ดูค่าที่อนุญาตด้านล่าง)json
filenamestringชื่อรายงานตามงวดชื่อไฟล์สำหรับ export PDF/Excel/Text (ไม่ต้องใส่นามสกุล)net_salary_2026_03
skip_queuestringYใช้กับ report export เพื่อส่งออกทันทีY

Filter & Scope Parameters

ParameterTypeDefaultDescriptionExample
company_listsarray[]กรองตามบริษัท ใช้ object {id: base64(company_id)}[{"id":"Q09NUDAwMQ=="}]
branch_listsarray[]กรองตามสาขา[{"id":"QlJBTkNIMDAx"}]
department_listsarray[]กรองตามแผนก[{"id":"REVQMDAx"}]
division_listsarray[]กรองตามฝ่าย[{"id":"RElWMDAx"}]
section_listsarray[]กรองตามหน่วยงาน[{"id":"U0VDMDAx"}]
section_lists_lv01array[]กรองตามหน่วยงานย่อยระดับ 1[{"id":"U0VDTFYwMQ=="}]
section_lists_lv02array[]กรองตามหน่วยงานย่อยระดับ 2[{"id":"U0VDTFYwMg=="}]
section_lists_lv03array[]กรองตามหน่วยงานย่อยระดับ 3[{"id":"U0VDTFYwMw=="}]
section_lists_lv04array[]กรองตามหน่วยงานย่อยระดับ 4[{"id":"U0VDTFYwNA=="}]
section_lists_lv05array[]กรองตามหน่วยงานย่อยระดับ 5[{"id":"U0VDTFYwNQ=="}]
employee_listsarray[]กรองพนักงานรายบุคคล[{"id":"RU1QMDAx"}]
employee_typearray[]กรองตามรอบคำนวณเงินเดือน เช่น Full["Full"]
employee_type_grouparray[]กลุ่มประเภทพนักงาน (array ของ base64 string)["R1JPVVAxMDE="]
employee_type_codearray[]รหัสประเภทพนักงาน (plain string)["01"]
lists_flagstring""ถ้าเป็น FULL จะกรองเฉพาะพนักงานงวดเต็มFULL
payment_methodstring""กรองตามวิธีจ่ายเงินของ slip01

Limit & Performance Parameters

ParameterTypeDefaultDescriptionExample
check_count_of_employeeboolean / stringtrueเปิด/ปิดการตรวจจำนวนพนักงานก่อนสร้างรายงาน รองรับ true, false, 1, 0, Y, Ntrue
count_of_employee_limitinteger2000จำนวนพนักงานสูงสุดที่อนุญาตก่อนตอบ 413 Payload Too Large2000

โครงสร้าง List Parameters

ทุก *_lists parameter ใช้ array ของ object ที่มี id เป็น base64 encoded:

[ {"id": "Q09NUDAwMQ=="}, {"id": "Q09NUDAwMg=="} ]

employee_type_group ใช้ array ของ base64 string:

["R1JPVVAxMDE=", "R1JPVVAxMDI="]

employee_type_code และ employee_type ใช้ array ของ string ปกติ:

{ "employee_type_code": ["01", "02"], "employee_type": ["Full"] }

Output Types

type — ค่าที่อนุญาต

ค่าคำอธิบายMIME
jsonJSON ตารางรายงานapplication/json
excelExcel รายงานหลักapplication/vnd.ms-excel
excel1excel6Excel รูปแบบย่อย 1–6application/vnd.ms-excel
pdfPDF รายงานหลักapplication/pdf
pdf2pdf7PDF รูปแบบย่อย 2–7application/pdf
textText exporttext/plain

ค่าที่อนุญาตทั้งหมด:

json, excel, excel1, excel2, excel3, excel4, excel5, excel6, pdf, pdf2, pdf3, pdf4, pdf5, pdf6, pdf7, text

filename — ชื่อไฟล์ export

  • ใช้กับ excel*, pdf*, text
  • ส่งเป็นชื่อไฟล์โดยไม่ต้องใส่นามสกุล
  • ถ้าไม่ส่ง ระบบจะใช้ชื่อรายงานตามงวดเดือน

lists_flag

ค่าผลลัพธ์
FULLแสดงเฉพาะพนักงานที่ round_month_config = Full
"" หรือไม่ส่งไม่กรองด้วย round_month_config เพิ่ม

check_count_of_employee

ค่า inputผลลัพธ์
true, "true", "1", "Y", "y"เปิดตรวจ limit
false, "false", "0", "N", "n"ปิดตรวจ limit
ไม่ส่งค่าใช้ default true

employee_type_group + employee_type_code

กรณีเงื่อนไขผลลัพธ์
ส่งทั้ง group และ codeทั้งสองค่าไม่ว่างรวมรายการที่ตรง group และที่ตรง employee_type_code
ส่งเฉพาะ codegroup ว่าง / code ไม่ว่างกรองจาก field employee_type_code ใน slip
ส่งเฉพาะ groupgroup ไม่ว่าง / code ว่างกรองตาม employee_type_group_id
ไม่ส่งทั้งสองค่าทั้งสองค่าเป็น array ว่างไม่กรองประเภทพนักงานเพิ่มเติม

employee_type_group ต้องส่งเป็น base64 string ส่วน employee_type_code ส่งเป็น plain string


Validation Rules

กฎรายละเอียด
authorize_idต้องไม่ว่าง และต้องผ่านสิทธิ์ document:manage
year_monthต้องตรงรูปแบบ YYYY-MM และเดือนต้องอยู่ในช่วง 01 ถึง 12
typeถ้าไม่ส่งจะ default เป็น json; ถ้าส่งต้องอยู่ใน allowlist
master payrollต้องพบงวดเงินเดือนของ year_month; ถ้าไม่พบตอบ 406
employee limitถ้าเปิด check_count_of_employee และจำนวนพนักงานเกิน count_of_employee_limit จะตอบ 413
*_listsต้องเป็น array; ถ้าไม่ส่ง ระบบ normalize เป็น array ว่าง

Code Examples

curl -X POST "https://openapi.humansoft.co.th/api/v1/open-apis/report/net-total-month" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "authorize_id": "EMP001", "year_month": "2026-03", "type": "json" }'

Response Format

Response Structure ตามประเภท

typeResponse
jsonJSON object ที่มี payload.column และ payload.row
excel*Binary/download stream จาก template Excel
pdf*Binary/download stream จาก template PDF
textText/download stream จาก template text

Success Response — type: json

{ "code": 200, "message": "Success", "payload": { "column": [ "รหัสพนักงาน", "ชื่อพนักงาน", "มาทำงาน", "วันทำงาน", "อัตราเงินเดือน", "เงินเดือน", "... dynamic income/expense columns ..." ], "row": [ { "id": "COMPANY_ID", "code": "COMPANY_CODE", "name": "Company Name", "child": [ { "id": "BRANCH_ID", "code": "BRANCH_CODE", "name": "Branch Name", "child": [ { "id": "DEPARTMENT_OR_SECTION_ID", "code": "ORG_CODE", "name": "Org Name", "structure": "REP_DEPARTMENT", "child": [ [ "EMP001", "Employee Name", 22, 30, 30000, 30000, "... amount columns ..." ] ] } ] } ] } ] } }

Response Fields

FieldTypeDescription
payload.columnarray<string>รายชื่อ column ของรายงาน สร้างจาก config, salary type และ field มาตรฐาน
payload.rowarray<object>รายการข้อมูลแบบ tree เรียงตามบริษัท สาขา และ node องค์กร
row[].child[]array<object>node ย่อย เช่น branch, department, division, section หรือ section_lv
structurestringรหัสโครงสร้าง เช่น REP_DEPARTMENT, REP_DIVISION, REP_SECTION, REP_SECTION_LV01
employee rowarrayค่าแต่ละ column ของพนักงานตามลำดับใน payload.column

Column สำคัญใน JSON

กลุ่ม columnรายละเอียด
Employeeรหัสพนักงาน, ชื่อพนักงาน
Workมาทำงาน, วันทำงาน
Salaryอัตราเงินเดือน, เงินเดือน
Income configรายรับจาก config เช่น OT, เบี้ยขยัน, รายได้อื่น
Dynamic incomeรายรับตาม salary type ของงวด
Total incomeรายรับรวม
Expense configรายจ่ายจาก config เช่น มาสาย, ขาดงาน, หักอื่น
Dynamic expenseรายจ่ายตาม salary type ของงวด
Total expenseรายจ่ายรวม
Netยอดรวม, เบิกล่วงหน้า, คงเหลือ

Error Response

Validation Error (HTTP 400)

{ "code": 400, "message": "Validation failed", "errors": [ "Missing required parameter: 'year_month'" ] }

Invalid Type (HTTP 400)

{ "code": 400, "message": "Validation failed", "errors": [ "'type' must be one of: json, excel, excel1, excel2, excel3, excel4, excel5, excel6, pdf, pdf2, pdf3, pdf4, pdf5, pdf6, pdf7, text" ] }

No Master Payroll (HTTP 406)

{ "code": "406", "payload": "Error: no master salary report id" }

Employee Over Limit (HTTP 413)

{ "code": "413", "payload": "Payload Too Large" }

Server Error (HTTP 500)

{ "code": "500", "payload": "undefined", "message": "error message" }

Status Codes

Codeความหมาย
200สำเร็จ
400validation ไม่ผ่าน เช่น parameter หาย, format ผิด, type ไม่อยู่ใน allowlist
403ไม่มีสิทธิ์ document:manage หรือ API key ไม่ผ่าน
406ไม่พบงวดเงินเดือนของ year_month ที่ระบุ
413จำนวนพนักงานเกิน count_of_employee_limit
500เกิด error ระหว่างสร้างรายงาน

Notes & Best Practices

  • ใช้ json ในการตรวจสอบข้อมูลก่อน export เป็น excel หรือ pdf
  • หากต้อง export รายงานขนาดใหญ่ ควรกำหนด count_of_employee_limit ให้เหมาะกับระบบปลายทาง
  • ใช้ employee_lists เมื่อต้องการตรวจรายบุคคล จะช่วยลดจำนวนข้อมูลและเวลา query
  • employee_type_group ต้อง encode เป็น base64 ก่อนส่ง ส่วน employee_type_code ไม่ต้อง encode
  • ถ้าต้องการเฉพาะพนักงานงวดเต็ม ให้ใช้ lists_flag = FULL
  • column บางส่วนเป็น dynamic ตาม config และ salary type ของงวดเงินเดือน

Performance Considerations

กรณีคำแนะนำ
พนักงานจำนวนมากเปิด check_count_of_employee และกำหนด limit ให้เหมาะสม
ต้องการแค่บางส่วนขององค์กรส่ง company_lists, branch_lists, department_lists หรือ employee_lists
ต้องตรวจผลลัพธ์ก่อน exportเรียก type=json ก่อน แล้วค่อยเรียก excel/pdf
filter แล้วไม่มีพนักงานผลลัพธ์ JSON จะมี row ว่าง ควรตรวจ payload ก่อนใช้งานต่อ

  • Net Total Split Month - รายงานเงินเดือนสุทธิแบบแบ่งงวดจ่าย
  • Tax Month - รายงานภาษีรายเดือน ภงด.1
Last updated on