Skip to Content
🚀 Welcome to Humansoft Open API Documentation

Net Total Split Month Report

ดึงรายงานผลการคำนวณเงินเดือนสุทธิแบบแบ่งงวดจ่ายตาม master_salary_split_seq ที่ระบุ รองรับ JSON, Excel และ PDF

ใช้ API นี้สำหรับเรียกรายงานเงินเดือนสุทธิของงวดจ่ายย่อยภายในเดือนเดียวกัน เช่น งวดที่ 1 หรือ งวดที่ 2 ระบบจะดึงงวดเงินเดือนหลักจาก year_month และดึงงวดจ่ายย่อยจาก year_month + master_salary_split_seq เพื่อเตรียมยอดรายรับ รายจ่าย เบิกล่วงหน้า และยอดสุทธิของพนักงานในงวดจ่ายนั้น

Endpoint

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

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

Authorization

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

Request Parameters

Required

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

Output / Export Parameters

ParameterTypeDefaultDescriptionExample
typestringjsonรูปแบบผลลัพธ์ (ดูค่าที่อนุญาตด้านล่าง)json
filenamestringชื่อรายงานตามงวดชื่อไฟล์สำหรับ export PDF/Excel (ไม่ต้องใส่นามสกุล)net_salary_split_2026_03_1
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""กรองตามวิธีจ่ายเงินของ split 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 รายงาน split หลักapplication/vnd.ms-excel
excel2Excel split รูปแบบย่อยapplication/vnd.ms-excel
pdfPDF รายงาน split หลักapplication/pdf
pdf2PDF split รูปแบบย่อย 2application/pdf
pdf3PDF split รูปแบบย่อย 3application/pdf

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

json, excel, excel2, pdf, pdf2, pdf3

master_salary_split_seq

ใช้ระบุรอบแบ่งจ่ายของ year_month นั้น:

ค่าความหมาย
1งวดจ่ายย่อยที่ 1
2งวดจ่ายย่อยที่ 2
3 ขึ้นไปรองรับตามจำนวน split round ที่ตั้งค่าในงวดเงินเดือนหลัก

ถ้าไม่พบงวดจ่ายย่อยของ year_month และ master_salary_split_seq ที่ส่งมา ระบบจะตอบ 406

filename — ชื่อไฟล์ export

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

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ทั้งสองค่าไม่ว่างmerge group เข้ารายการ split slip แล้วเก็บรายการที่ตรง group หรือ code
ส่งเฉพาะ codegroup ว่าง / code ไม่ว่างกรองจาก field employee_type_code ใน split slip
ส่งเฉพาะ groupgroup ไม่ว่าง / code ว่างmerge group แล้วกรองตาม 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
master_salary_split_seqต้องไม่ว่าง และต้องพบ split report ของงวดนั้น
typeถ้าไม่ส่งจะ default เป็น json; ถ้าส่งต้องอยู่ใน allowlist
master split payrollต้องพบงวดจ่ายย่อย; ถ้าไม่พบตอบ 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-split-month" \ -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "authorize_id": "EMP001", "year_month": "2026-03", "master_salary_split_seq": "1", "type": "json" }'

Response Format

Response Structure ตามประเภท

typeResponse
jsonJSON object ที่มี payload.column และ payload.row
excel, excel2Binary/download stream จาก template Excel
pdf, pdf2, pdf3Binary/download stream จาก template PDF

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", 10, 15, 15000, "... amount columns ..." ] ] } ] } ] } ] } }

Response Fields

FieldTypeDescription
payload.columnarray<string>รายชื่อ column ของรายงาน split สร้างจาก 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เงินเดือนหรือเงินเดือนตามงวด split
Income configรายรับจาก config เช่น OT, เบี้ยขยัน, รายได้อื่น
Dynamic incomeรายรับตาม salary type ของงวด split
Total incomeรายรับรวม
Expense configรายจ่ายจาก config เช่น มาสาย, ขาดงาน, หักอื่น
Dynamic expenseรายจ่ายตาม salary type ของงวด split
Total expenseรายจ่ายรวม
Netยอดรวม, เบิกล่วงหน้า, คงเหลือ

Error Response

Validation Error (HTTP 400)

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

Invalid Type (HTTP 400)

{ "code": 400, "message": "Validation failed", "errors": [ "'type' must be one of: json, excel, excel2, pdf, pdf2, pdf3" ] }

No Master Split 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 + master_salary_split_seq
413จำนวนพนักงานเกิน count_of_employee_limit
500เกิด error ระหว่างสร้างรายงาน

Notes & Best Practices

  • ใช้ json ก่อน export เพื่อยืนยันว่าพบงวด split และยอดเงินถูกต้อง
  • master_salary_split_seq ต้องตรงกับรอบแบ่งจ่ายที่ระบบ payroll สร้างไว้จริง
  • ใช้ employee_lists เมื่อต้องตรวจพนักงานเฉพาะราย จะช่วยลดจำนวนข้อมูลและเวลา query
  • employee_type_group ต้อง encode เป็น base64 ก่อนส่ง ส่วน employee_type_code ไม่ต้อง encode
  • ถ้าต้องการเฉพาะพนักงานงวดเต็ม ให้ใช้ lists_flag = FULL
  • รายงาน split มี logic เบิกล่วงหน้าต่างจากรายงานปกติ เพราะต้องอิงช่วงวันที่ของงวดจ่ายย่อย
  • 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
split หลายงวดในเดือนเดียวกันระบุ master_salary_split_seq ให้ชัดเจนทุกครั้ง
filter แล้วไม่มีพนักงานผลลัพธ์ JSON จะมี row ว่าง ควรตรวจ payload ก่อนใช้งานต่อ

  • Net Total Month - รายงานเงินเดือนสุทธิประจำเดือนหลัก
  • Tax Month - รายงานภาษีรายเดือน ภงด.1
Last updated on