Skip to Content
🚀 Welcome to Humansoft Open API Documentation
DocumentationWebhookPayroll Events

Payroll Events

Events ที่เกี่ยวข้องกับการจัดการงวดเงินเดือนและการคำนวณเงินเดือนพนักงาน


เปิดงวด / ปิดงวดเงินเดือน (Payroll Period)

การเปิดและปิดงวดเงินเดือนจะส่งผลให้ระบบส่ง Event แจ้งเตือนสถานะของงวดเงินเดือนนั้นๆ ทั้งแบบงวดปกติ (เดือนละครั้ง) และแบบแบ่งงวด (จ่ายหลายครั้งในหนึ่งเดือน)

payroll.month.unfinished

เกิดขึ้นเมื่อมีการปลดล็อคหรือเปิดงวดเงินเดือนเพื่อเริ่มการคำนวณเงินเดือน หรือแก้ไขข้อมูลใหม่

ตัวอย่าง Payload:

{ "request_id": "req_py12345678", "event": "payroll.month.unfinished", "event_occurred_at": "2025-01-25 09:00:00", "body": { "master_salary_report_id": "REP2501001", "master_salary_month": "2025-01", "salary_report_start_dt": "2025-01-01", "salary_report_end_dt": "2025-01-31", "read_only_flag": "N", "publish_flag": "N", "total_employees": 150, "status": "unfinished", "unfinished_at": "2025-01-25 09:00:00" } }

payroll.month.finished

เกิดขึ้นเมื่อยืนยันการคำนวณเงินเดือนเสร็จสิ้นและล็อคข้อมูลงวด

ตัวอย่าง Payload:

{ "request_id": "req_py12345679", "event": "payroll.month.finished", "event_occurred_at": "2025-01-28 17:00:00", "body": { "master_salary_report_id": "REP2501001", "master_salary_month": "2025-01", "salary_report_start_dt": "2025-01-01", "salary_report_end_dt": "2025-01-31", "read_only_flag": "Y", "publish_flag": "Y", "total_employees": 150, "status": "finished", "finished_at": "2025-01-28 17:00:00" } }

payroll.split_month.unfinished

เกิดขึ้นเมื่อเปิดงวดเงินเดือนย่อย สำหรับบริษัทที่จ่ายเงินเดือนหลายครั้งใน 1 เดือน

ตัวอย่าง Payload:

{ "request_id": "req_py12345680", "event": "payroll.split_month.unfinished", "event_occurred_at": "2025-01-10 09:00:00", "body": { "master_salary_split_report_id": "SREP2501001-1", "master_salary_report_id": "REP2501001", "master_salary_month": "2025-01", "master_salary_split_seq": 1, "read_only_flag": "N", "publish_flag": "N", "total_employees": 150, "status": "unfinished", "unfinished_at": "2025-01-10 09:00:00" } }

payroll.split_month.finished

เกิดขึ้นเมื่อปิดงวดเงินเดือนย่อย

ตัวอย่าง Payload:

{ "request_id": "req_py12345681", "event": "payroll.split_month.finished", "event_occurred_at": "2025-01-14 17:00:00", "body": { "master_salary_split_report_id": "SREP2501001-1", "master_salary_report_id": "REP2501001", "master_salary_month": "2025-01", "master_salary_split_seq": 1, "read_only_flag": "Y", "publish_flag": "Y", "total_employees": 150, "status": "finished", "finished_at": "2025-01-14 17:00:00" } }

การคำนวณเงินเดือนพนักงาน (Employee Payroll Calculation)

payroll.employee.calculated

เกิดขึ้นเมื่อการคำนวณเงินเดือนของพนักงานคนนั้นๆ เสร็จสิ้นสมบูรณ์

ตัวอย่าง Payload:

{ "request_id": "req_py12345682", "event": "payroll.employee.calculated", "event_occurred_at": "2025-01-26 23:45:10", "body": { "master_salary_report_id": "REP2501001", "master_salary_month": "2025-01", "employee_id": "20250101ABCD1234", "employee_code": "EMP001", "employee_title_lv": "1", "employee_title_name": "นาย", "employee_name": "สมชาย", "employee_last_name": "ใจดี", "employee_type_code": "01", "company_code": "COM001", "company_name": "บริษัท เอบีซี จำกัด", "company_name_en": "ABC Co., Ltd.", "branch_code": "BR001", "branch_name": "สำนักงานใหญ่", "department_code": "DEP001", "department_name": "ฝ่ายไอที", "position_code": "POS001", "position_name": "โปรแกรมเมอร์", "salary_amt": 30000.00, "sum_income": 5000.00, "sum_expense": 0.00, "total_income": 35000.00, "total_expense": 1250.00, "total_salary": 33750.00, "work_day": 22.00, "work_day_total": 22.00, "tax_amt": 500.00, "sso_amt": 750.00, "status": "success", "calculate_to": "NOW", "is_split": false, "split_seq": null, "master_salary_split_report_id": "" } }

payroll.employee.calculate_failed

เกิดขึ้นเมื่อการคำนวณเงินเดือนของพนักงาน ล้มเหลว จากสาเหตุต่างๆ เช่น การตั้งค่าเงินเดือนผิดพลาด หรือข้อมูลไม่ครบถ้วน

ตัวอย่าง Payload:

{ "request_id": "req_py12345683", "event": "payroll.employee.calculate_failed", "event_occurred_at": "2025-01-26 23:45:15", "body": { "employee_id": "20250102EFGH5678", "employee_code": "EMP001", "employee_title_lv": "2", "employee_title_name": "นางสาว", "employee_name": "สมหญิง", "employee_last_name": "รักงาน", "company_code": "COM001", "company_name": "บริษัท เอบีซี จำกัด", "company_name_en": "ABC Co., Ltd.", "branch_code": "BR001", "branch_name": "สำนักงานใหญ่", "department_code": "DEP001", "department_name": "ฝ่ายไอที", "position_code": "POS002", "position_name": "นักวิเคราะห์ระบบ", "year_month": "2025-01", "error_message": "ไม่พบการตั้งค่ารายได้พื้นฐาน (Base Salary) ของพนักงาน", "status": "failed", "is_split": false, "split_seq": null, "master_salary_split_report_id": "" } }

Payroll Body Fields Reference

เพื่อให้เข้าใจความหมายของข้อมูลที่ส่งไปใน Payload มากขึ้น ด้านล่างนี้คือคำอธิบายของคีย์ (Key) ที่ปรากฏในแต่ละ Event

Period Finished / Unfinished Fields (คีย์สำหรับการเปิด/ปิดงวด)

FieldTypeDescription
master_salary_report_idstringรหัสอ้างอิงงวดเงินเดือนหลัก
master_salary_monthstringเดือนของงวดเงินเดือน (รูปแบบ YYYY-MM)
salary_report_start_dtstringวันที่เริ่มต้นงวดเงินเดือน (YYYY-MM-DD)
salary_report_end_dtstringวันที่สิ้นสุดงวดเงินเดือน (YYYY-MM-DD)
master_salary_split_report_idstringรหัสอ้างอิงงวดเงินเดือนแบ่งงวด (กรณีเป็น Event แบ่งงวด)
master_salary_split_seqintegerลำดับการแบ่งงวด (เช่น งวดที่ 1, 2)
read_only_flagstringสถานะปิดงวดบัญชี (Y = ปิดงวดบัญชี, N = เปิดงวดบัญชี)
publish_flagstringสถานะการเผยแพร่สลิปเงินเดือน (Y = เผยแพร่แล้ว, N = ยังไม่เผยแพร่)
total_employeesintegerจำนวนพนักงานทั้งหมดที่ถูกคำนวณในงวดนี้
statusstringสถานะของการเปิด/ปิดงวด (finished หรือ unfinished)
finished_at / unfinished_atstringวันที่และเวลาที่ทำรายการเปิดหรือปิดงวด

Employee Calculate Fields (คีย์สำหรับการคำนวณเงินเดือนรายบุคคล)

FieldTypeDescription
master_salary_report_idstringรหัสอ้างอิงงวดเงินเดือนหลัก (เฉพาะกรณีสำเร็จ)
master_salary_monthstringเดือนของงวดเงินเดือน (เฉพาะกรณีสำเร็จ)
year_monthstringเดือนของงวดเงินเดือน (เฉพาะกรณีล้มเหลว)
employee_idstringรหัสพนักงานในระบบ (Internal ID)
employee_codestringรหัสพนักงาน
employee_title_lvstringรหัสคำนำหน้าชื่อพนักงาน
employee_title_namestringคำนำหน้าชื่อพนักงาน (ภาษาไทย)
employee_namestringชื่อพนักงาน (ภาษาไทย)
employee_last_namestringนามสกุลพนักงาน (ภาษาไทย)
employee_type_codestringรหัสประเภทพนักงาน (เช่น รายเดือน, รายวัน)
company_codestringรหัสบริษัท
company_namestringชื่อบริษัท (ภาษาไทย)
company_name_enstringชื่อบริษัท (English)
branch_codestringรหัสสาขา
branch_namestringชื่อสาขา (ภาษาไทย)
department_codestringรหัสแผนก
department_namestringชื่อแผนก (ภาษาไทย)
position_codestringรหัสตำแหน่ง
position_namestringชื่อตำแหน่ง (ภาษาไทย)
salary_amtnumber (float)เงินเดือนพื้นฐาน (Base Salary)
sum_incomenumber (float)ยอดรวมรายได้อื่นๆ นอกเหนือจากเงินเดือน (เช่น OT, เบี้ยขยัน)
sum_expensenumber (float)ยอดรวมรายการหักอื่นๆ (ไม่รวมภาษีและประกันสังคม)
total_incomenumber (float)ยอดรายรับรวมทั้งหมด (salary_amt + sum_income)
total_expensenumber (float)ยอดรายการหักรวมทั้งหมด (รวมภาษีและประกันสังคมแล้ว)
total_salarynumber (float)รายได้สุทธิที่พนักงานได้รับหลังหักทุกอย่าง (Net Income)
tax_amtnumber (float)ยอดหักภาษี ณ ที่จ่าย
sso_amtnumber (float)ยอดหักประกันสังคม
work_daynumber (float)จำนวนวันทำงานที่คำวณค่าจ้าง
work_day_totalnumber (float)จำนวนวันทำงานตามรอบการคำนวณทั้งหมด
statusstringสถานะการคำนวณ (success หรือ failed)
is_splitbooleanเป็นการคำนวณแบบแบ่งงวดหรือไม่ (true / false)
split_seqintegerลำดับการแบ่งงวด (ถ้ามี)
master_salary_split_report_idstringรหัสอ้างอิงงวดเงินเดือนแบ่งงวด (ถ้ามี)
calculate_tostringระยะเวลาหรือขอบเขตของการคำนวณ
error_messagestringสาเหตุที่ทำให้คำนวณไม่ได้ (เฉพาะกรณีล้มเหลว)

สรุป Payroll Events

Event Codeคำอธิบาย
payroll.month.unfinishedเปิดงวดเงินเดือนปกติ (ปลดล็อคเพื่อแก้ไข/คำนวณใหม่)
payroll.month.finishedปิดงวดเงินเดือนปกติ (ล็อคงวด)
payroll.split_month.unfinishedเปิดงวดเงินเดือนแบบแบ่งงวด
payroll.split_month.finishedปิดงวดเงินเดือนแบบแบ่งงวด
payroll.employee.calculatedคำนวณเงินเดือนพนักงานสำเร็จ
payroll.employee.calculate_failedคำนวณเงินเดือนพนักงานล้มเหลว
Last updated on