Workflow: Recruit to Payroll
Modules involved: Recruitment · Staff (HR) · HR Profile · HR Payroll · Timesheets
Who uses it: HR manager, Recruiter, Department manager, Finance
Typical duration: 2–8 weeks recruitment + ongoing (monthly for payroll)
Overview
The complete HR cycle: from identifying a hiring need to the first payslip. Covers structured recruitment (proposal → campaign → candidates → interviews → hiring), HR onboarding, and monthly salary calculation (attendance → gross calculation → deductions → net).
Flow diagram
[RECRUITMENT PROPOSAL]
│ define the need: position, department, number of openings, budget
│ ↓ Proposal approval → launch campaign
│
[RECRUITMENT CAMPAIGN]
│ job posting published on channels (LinkedIn, job boards, etc.)
│ ↓ Candidates apply
│
[CANDIDATE]
│ status: Application (1) → Potential (2) → Interview (3)
│ → Won Interview (4) → Send Offer (5) → Elect / Hired (6)
│ ↘ Non-Elect (7) / Unanswer (8) / Transferred (9)
│
[INTERVIEW]
│ scheduling + evaluation + candidate scoring
│ ↓ Candidate selected → status Elect (6)
│
[HIRING → STAFF record created automatically]
│ job description, department, role, CRM access
│
[HR PROFILE ONBOARDING]
│ onboarding checklist, HR contracts, dependents
│ training, complete HR record
│
[MONTHLY ATTENDANCE]
│ days worked / leave / absences recorded
│ ↓ Attendance approval
│
[PAYROLL CALCULATION]
│ gross = base salary + bonuses + commissions
│ deductions = insurance + income tax + withholdings
│ net = gross − deductions
│ ↓ Generate payslip
│
[PAYSLIP ✓]
│ status: payslip_opening → approved → distributed
Step by step
1. Recruitment Proposal — Defining the need
Where: /admin/recruitment/recruitment_proposal
What the proposal contains:
- The position being sought (Job Position from HR Profile)
- The hiring department
- Number of openings required (
amount_recruiment) - Period: start date – end date
- Justification / estimated budget
Approval workflow:
The proposal goes through managerial approval (if configured) before becoming an active campaign.
2. Recruitment Campaign — Publishing the position
Where: /admin/recruitment/recruitment_campaign
The campaign contains:
- Campaign code (
campaign_code) - Job title and description
- Recruitment channel (
cp_position,cp_status) - Distribution channels: LinkedIn, eJobs, BestJobs, internal, etc. (configurable at
/admin/recruitment/recruitment_channel)
Campaign statuses:
Numeric (1–10), configurable per implementation; typically: Open, Closed, Suspended.
3. Candidate — Evaluation and selection
Where: /admin/recruitment/candidate_profile
How a candidate enters:
- Manually: HR enters the CV
- Import: from a file or public application form
The candidate profile includes:
- Personal data: name, date of birth, gender, national ID number
- Work experience (
cd_work_experience) - Education / certifications (
cd_literacy) - Family information (
cd_family_infor) - Follow-up notes (
cd_care)
Candidate statuses — state machine:
| Code | Status | Description | Typical action |
|---|---|---|---|
| 1 | Application | CV received, not evaluated | HR reviews the CV |
| 2 | Potential | CV selected | Invitation to phone interview |
| 3 | Interview | Scheduled for interview | Interview scheduling created |
| 4 | Won Interview | Advanced to final stage | Technical / manager interview |
| 5 | Send Offer | Offer sent | Offer email generated |
| 6 | Elect | Hired → automatically creates Staff record | Contract signed |
| 7 | Non-Elect | Rejected | Thank-you email (optional) |
| 8 | Unanswer | Did not respond to offer | Follow-up after X days |
| 9 | Transferred | Moved to another campaign | Reallocated to another department |
| 10 | Freedom | Exited the process | Archived |
Critical transition: When the status reaches 6 (Elect), the system automatically creates a Staff record populated with the candidate's data (name, email, phone). The candidate becomes an active employee in the CRM.
4. Interview — Structured evaluation
Where: /admin/recruitment/interview_schedule
Interview scheduling:
- Date, time (from → to)
- Interviewer (
interviewer= staff) - Link to the candidate via
cd_interview
Candidate evaluation:
- Evaluation form (
rec_evaluation_form) with predefined criteria (rec_list_criteria) - Score per criterion → total candidate score
- Compare candidates for the same position
5. Hiring — Creating the employee in the system
Where: /admin/staff (created automatically) + /admin/hr_profile
What is created automatically at Elect status (6):
- Staff record in
tblstaff: firstname, lastname, email, phone from candidate - Transfer record (
rec_transfer_records) for onboarding tracking
What is filled in manually:
- CRM role and permissions (
/admin/roles) - Department
- Hire date
- Contract type
6. HR Profile Onboarding — Integrating the employee
Where: /admin/hr_profile
The HR Profile module covers:
| Sub-module | URL | Description |
|---|---|---|
| HR Dashboard | /admin/hr_profile/dashboard |
Employee overview |
| Job Positions | /admin/hr_profile/job_positions |
Job descriptions |
| Org Chart | /admin/hr_profile/organizational_chart |
Company structure |
| Onboarding | /admin/hr_profile/reception_staff |
New employee checklist |
| HR Records | /admin/hr_profile/staff_infor |
Complete HR data |
| Training | /admin/hr_profile/training |
Training programs |
| HR Contracts | /admin/hr_profile/contracts |
Individual employment contracts |
| Dependents | /admin/hr_profile/dependent_persons |
Spouse, children (tax impact) |
| Offboarding checklist | /admin/hr_profile/resignation_procedures |
Employment termination procedures |
Onboarding checklist:
- Task list per new employee (system access, equipment, induction)
- Status per task:
status = 0(pending) →status = 1(complete) - Allocated via
group_checklist_allocationwithstaffid
7. Attendance (Timesheets) — Recording presence
Where: /admin/hr_payroll/manage_attendance or /admin/staff/timesheets
Monthly attendance data per employee (hrp_employees_timesheets):
| Field | Description |
|---|---|
standard_workday |
Standard working days in the month |
actual_workday |
Days actually worked |
paid_leave |
Paid leave days |
unpaid_leave |
Unpaid leave days |
Attendance approval:
The manager approves attendance records before generating payslips. Without approval, the data is not included in the calculation.
8. Payroll Calculation — Generating the payslip
Where: /admin/hr_payroll
Calculation flow — step by step:
INPUTS:
├── Base salary (from HR contract)
├── Days actually worked (from approved attendance)
├── KPI bonuses (hrp_bonus)
├── Commissions (from commission module)
└── Deductions (hrp_deductions)
GROSS CALCULATION:
daily_salary = base_salary / standard_workday
earned_salary = daily_salary × actual_workday
gross = earned_salary + bonuses + commissions
DEDUCTIONS:
employee_insurance = gross × CAS_rate + CASS_rate + ...
income_tax = (gross - insurance - personal_rebate) × tax_rate
other_withholdings = from hrp_deductions
NET = gross - employee_insurance - income_tax - other_withholdings
TOTAL_COST = gross + employer_contributions
Configurable components (hrp_payroll_columns):
taking_method:system(calculated automatically),calculator(custom formula),constant(fixed amount)- Tax rates: progressive brackets from
hrp_income_tax_rates - Deductions: configurable from
/admin/hr_payroll/setting
Payslip statuses:
| Status | Description |
|---|---|
payslip_opening |
Draft — generated, not yet submitted for approval |
| Approved | Verified by HR/Finance |
| Distributed | Payslip sent to the employee |
Generation:
Generate Payslips button for the selected month → system automatically calculates for all active employees with approved attendance.
What is created automatically
| Event | Created automatically |
|---|---|
| Candidate → status Elect (6) | Staff record in CRM with data from candidate profile |
| Staff record created | rec_transfer_records for onboarding tracking |
| Onboarding activated | Checklist tasks allocated to new employee |
| Payroll generation | Payslip per employee with all components calculated |
| Payslip approved | Email/notification to employee with payslip attached |
Points where the workflow may stall
| Problem | Likely cause | Solution |
|---|---|---|
| Staff record not created at hiring | Candidate status did not reach 6 (Elect) | Explicitly change the status to Elect |
| Payslip has 0 values | Attendance not approved or salary not configured | Approve attendance; fill in salary in the HR contract |
| Tax calculated incorrectly | Tax rates not configured | Configure hrp_income_tax_rates with correct brackets |
| Payslip does not reach employee | SMTP email not configured or employee has no email | Check employee email + SMTP in settings |
| KPI bonus does not appear | KPIs for the period not closed or not approved | Approve KPIs from /admin/hr_payroll/manage_bonus |
Relevant reports
- Recruitment Reports — candidates per campaign, sources, hiring times
- HR Payroll Reports —
/admin/hr_payroll/reports— salary costs per department - Timesheets — hours per employee per period
- Org Chart —
/admin/hr_profile/organizational_chart— updated structure post-hiring
Modules involved — detailed documentation
Start payroll preparation from commission approval — Sales Manager must approve and generate commission payout receipts before payroll is processed so the final payroll total includes confirmed variable compensation.
Offboarding in this workflow requires deactivating the staff account, not deleting it. Deletion removes the employee from all historical records (approved payslips, processed timesheets, resolved tickets) that reference their account.