Staff Management & Payroll System

Staff Contract Types

Contract TypePay StructureUse CaseExample
Monthly FixedFixed salary + attendance bonusesFull-time teachers, admin staff$2,000/month
HourlyRate × hours workedPart-time staff, substitutes$15/hour
Per LectureRate × lectures deliveredVisiting lecturers, coaches$50/lecture

Attendance Bonus/Deduction Logic

Monthly Fixed Staff:

text

Perfect Attendance (0 absences): Base + 1 extra day's salary
1 Absence: Full base salary (no deduction)
2+ Absences: Base - (absent_days - 1) × per_day_rate

Hourly Staff:

text

Pay = hours_worked × hourly_rate

Per Lecture Staff:

text

Pay = lectures_delivered × lecture_rate

Multi-Campus Payroll Splitting

For Admin/Roving staff working across campuses:

php

// Example: Staff works 60% at Campus A, 40% at Campus B
Campus A pays: net_pay × 0.60
Central budget covers: net_pay × 0.40

Staff Roles

Role CodeDescriptionAccess Level
teacher_permanentFull-time teacherSingle campus, gradebook, homework
teacher_visitingPart-time/hourlyAttendance-based pay, limited access
admin_campusCampus administratorSingle campus management
admin_rovingMulti-campus administratorAssigned campuses with percentage split
support_staffNon-teaching staffAttendance tracking, no gradebook

Payroll Generation Flow

  1. Trigger: Auto-generated monthly or manually via admin

  2. Staff Selection: All active staff at campus (employment_status = 'active')

  3. Attendance Calculation: Pulls from institutionkit_staff_attendance

  4. Deductions: Auto-calculates absent day deductions

  5. Earnings: Base salary + bonuses + overtime

  6. Net Pay: Earnings - Deductions

  7. Status: Created as 'pending', requires approval

Salary Components System

Staff can have custom earnings and deductions:

json

// earnings_json example
[
{"type": "housing_allowance", "label": "Housing", "amount": 500.00, "is_taxable": false},
{"type": "transport_allowance", "label": "Transport", "amount": 200.00, "is_taxable": false}
]

// deductions_json example
[
{"type": "loan_repayment", "label": "Loan EMI", "amount": 300.00},
{"type": "insurance", "label": "Health Insurance", "amount": 50.00}
]

Comments are closed.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
💬 Ask Me Anything!