Workflow: Recruit to Payroll
Modules involved: Recruitment · Staff (HR) · HR Profile · HR Payroll · Timesheets
Who uses it: HR manager, Recrutor, Manager departament, Financiar
Durata tipică: 2–8 săptămâni recrutare + continuu (lunar pentru payroll)
Overview
Ciclul complet de HR: de la identificarea nevoii de angajare până la primul fluturaj de salariu. Acoperă recrutarea structurată (propunere → campanie → candidați → interviuri → angajare), onboarding-ul HR, și calculul lunar al salariului (prezență → calcul brut → deduceri → net).
Diagrama fluxului
[PROPUNERE RECRUTARE]
│ definești nevoia: poziție, departament, număr posturi, buget
│ ↓ Aprobare propunere → lansare campanie
│
[CAMPANIE RECRUTARE]
│ anunț publicat pe canale (LinkedIn, job boards, etc.)
│ ↓ Candidații aplică
│
[CANDIDAT]
│ status: Application (1) → Potential (2) → Interview (3)
│ → Won Interview (4) → Send Offer (5) → Elect / Hired (6)
│ ↘ Non-Elect (7) / Unanswer (8) / Transferred (9)
│
[INTERVIU]
│ programare + evaluare + scoring candidat
│ ↓ Candidat selectat → status Elect (6)
│
[ANGAJARE → STAFF creat automat]
│ fișă de post, departament, rol, acces CRM
│
[ONBOARDING HR PROFILE]
│ checklist onboarding, contracte HR, persoane întreținere
│ training, fișă HR completă
│
[PONTAJ LUNAR]
│ zile lucrate / concedii / absențe înregistrate
│ ↓ Aprobare pontaj
│
[CALCUL SALARIU (Payroll)]
│ brut = salariu de bază + bonusuri + comisioane
│ deduceri = asigurări + impozit pe venit + rețineri
│ net = brut − deduceri
│ ↓ Generare fluturaș
│
[FLUTURAȘ (Payslip) ✓]
│ status: payslip_opening → aprobat → distribuit
Pas cu pas
1. Propunere de Recrutare — Definirea nevoii
Unde: /admin/recruitment/recruitment_proposal
Ce conține propunerea:
- Poziția căutată (Job Position din HR Profile)
- Departamentul angajator
- Numărul de posturi necesare (
amount_recruiment) - Perioada: dată start – dată final
- Justificare / buget estimat
Flux de aprobare:
Propunerea trece prin aprobare managerială (dacă e configurat) înainte de a deveni campanie activă.
2. Campanie de Recrutare — Publicarea postului
Unde: /admin/recruitment/recruitment_campaign
Campania conține:
- Codul campaniei (
campaign_code) - Titlul postului și descrierea
- Canalul de recrutare (
cp_position,cp_status) - Canale de distribuție: LinkedIn, eJobs, BestJobs, intern, etc. (configurabile în
/admin/recruitment/recruitment_channel)
Statusuri campanie:
Numerice (1–10) configurabile per implementare; tipic: Deschisă, Închisă, Suspendată.
3. Candidat — Evaluarea și selecția
Unde: /admin/recruitment/candidate_profile
Cum intră un candidat:
- Manual: HR introduce CV-ul
- Import: din fișier sau formular de aplicare public
Profilul candidatului include:
- Date personale: nume, dată naștere, gen, CNP
- Experiență profesională (
cd_work_experience) - Educație / certificări (
cd_literacy) - Informații familie (
cd_family_infor) - Note follow-up (
cd_care)
Statusurile candidatului — mașina de stare:
| Cod | Status | Descriere | Acțiune tipică |
|---|---|---|---|
| 1 | Application | CV primit, neevaluat | HR verifică CV-ul |
| 2 | Potential | CV selectat | Invitație la interviu telefonic |
| 3 | Interview | Programat la interviu | Programare interviu creată |
| 4 | Won Interview | Promovat la etapa finală | Interviu tehnic / cu managerul |
| 5 | Send Offer | Ofertă trimisă | Email ofertă generat |
| 6 | Elect | Angajat → creează Staff automat | Contract semnat |
| 7 | Non-Elect | Respins | Email de mulțumire (opțional) |
| 8 | Unanswer | Nu a răspuns la ofertă | Follow-up după X zile |
| 9 | Transferred | Mutat la altă campanie | Realocat alt departament |
| 10 | Freedom | Ieșit din proces | Arhivat |
Tranziția critică: Când statusul ajunge la 6 (Elect), sistemul creează automat un Staff record populat cu datele candidatului (nume, email, telefon). Candidatul devine angajat activ în CRM.
4. Interviu — Evaluarea structurată
Unde: /admin/recruitment/interview_schedule
Programare interviu:
- Data, ora (from → to)
- Intervievator (
interviewer= staff) - Legătura cu candidatul via
cd_interview
Evaluare candidat:
- Formular de evaluare (
rec_evaluation_form) cu criterii predefinite (rec_list_criteria) - Scor per criteriu → scor total candidat
- Comparare candidați pentru aceeași poziție
5. Angajare — Crearea angajatului în sistem
Unde: /admin/staff (creat automat) + /admin/hr_profile
Ce se creează automat la status Elect (6):
- Staff record în
tblstaff: firstname, lastname, email, phone din candidat - Record de transfer (
rec_transfer_records) pentru onboarding tracking
Ce se completează manual:
- Rol și permisiuni CRM (
/admin/roles) - Departament
- Data angajării
- Tip contract
6. Onboarding HR Profile — Integrarea angajatului
Unde: /admin/hr_profile
Modulul HR Profile acoperă:
| Sub-modul | URL | Descriere |
|---|---|---|
| Dashboard HR | /admin/hr_profile/dashboard |
Overview angajați |
| Fișe de post | /admin/hr_profile/job_positions |
Descrieri posturi |
| Organigramă | /admin/hr_profile/organizational_chart |
Structura companiei |
| Onboarding | /admin/hr_profile/reception_staff |
Checklist intrare angajat |
| Evidență HR | /admin/hr_profile/staff_infor |
Date HR complete |
| Training | /admin/hr_profile/training |
Programe formare |
| Contracte HR | /admin/hr_profile/contracts |
Contracte individuale muncă |
| Persoane întreținere | /admin/hr_profile/dependent_persons |
Soț/soție, copii (impact fiscal) |
| Checklist ieșire | /admin/hr_profile/resignation_procedures |
Proceduri CIM |
Checklist onboarding:
- Lista de sarcini per angajat nou (acces sisteme, echipamente, inducție)
- Status per sarcină:
status = 0(pending) →status = 1(complet) - Alocate via
group_checklist_allocationcustaffid
7. Pontaj (Timesheets) — Înregistrarea prezenței
Unde: /admin/hr_payroll/manage_attendance sau /admin/staff/timesheets
Date de pontaj lunare per angajat (hrp_employees_timesheets):
| Câmp | Descriere |
|---|---|
standard_workday |
Zile lucrătoare standard în lună |
actual_workday |
Zile efectiv lucrate |
paid_leave |
Zile concediu plătit |
unpaid_leave |
Zile concediu neplătit |
Aprobare pontaj:
Managerul aprobă înregistrările de prezență înainte de generarea payslip-ului. Fără aprobare, datele nu sunt incluse în calcul.
8. Calculul Salariului (Payroll) — Generarea fluturașului
Unde: /admin/hr_payroll
Fluxul de calcul — pas cu pas:
INTRĂRI:
├── Salariu de bază (din contractul HR)
├── Zile lucrate efectiv (din pontaj aprobat)
├── Bonusuri KPI (hrp_bonus)
├── Comisioane (din commission module)
└── Deduceri (hrp_deductions)
CALCUL BRUT:
salariu_zilnic = salariu_baza / standard_workday
salariu_realizat = salariu_zilnic × actual_workday
brut = salariu_realizat + bonusuri + comisioane
DEDUCERI:
asigurari_angajat = brut × cota_CAS + cota_CASS + ...
impozit_pe_venit = (brut - asigurari - rebate_personal) × cota_impozit
retineri_diverse = din hrp_deductions
NET = brut - asigurari_angajat - impozit_pe_venit - retineri_diverse
COST_TOTAL = brut + contributii_angajator
Componente configurable (hrp_payroll_columns):
taking_method:system(calculat automat),calculator(formulă custom),constant(sumă fixă)- Rate de impozit: brackets progressive din
hrp_income_tax_rates - Deduceri: configurabile din
/admin/hr_payroll/setting
Statusuri payslip:
| Status | Descriere |
|---|---|
payslip_opening |
Draft — generat, nesupus aprobării |
| Aprobat | Verificat de HR/Financiar |
| Distribuit | Fluturașul trimis angajatului |
Generare:
Buton Generează Fluturași pentru luna selectată → sistem calculează automat pentru toți angajații activi cu pontaj aprobat.
Ce se creează automat
| Eveniment | Se creează automat |
|---|---|
| Candidat → status Elect (6) | Staff record în CRM cu date din profil candidat |
| Staff record creat | rec_transfer_records pentru onboarding tracking |
| Onboarding activat | Checklist tasks alocate angajatului nou |
| Generare payroll | Payslip per angajat cu toate componentele calculate |
| Payslip aprobat | Email/notificare angajat cu fluturașul atașat |
Puncte unde fluxul poate bloca
| Problemă | Cauză probabilă | Soluție |
|---|---|---|
| Staff nu se creează la angajare | Status candidat nu a ajuns la 6 (Elect) | Schimbă explicit statusul în Elect |
| Payslip-ul are valori 0 | Pontaj neaprobat sau salariu neconfigurat | Aprobă pontajul; completează salariul în contractul HR |
| Impozitul calculat greșit | Rate de impozit neconfigurate | Configurează hrp_income_tax_rates cu brackets corecte |
| Fluturașul nu ajunge la angajat | Email SMTP nesetat sau angajat fără email | Verifică email angajat + SMTP la setări |
| Bonusul KPI nu apare | KPI-urile perioadei neînchise sau neaprobate | Aprobă KPI-urile din /admin/hr_payroll/manage_bonus |
Rapoarte relevante
- Rapoarte Recrutare — candidați per campanie, surse, timpi de angajare
- Rapoarte HR Payroll —
/admin/hr_payroll/reports— costuri salariale per departament - Timesheets — ore per angajat per perioadă
- Organigramă —
/admin/hr_profile/organizational_chart— structura actualizată post-angajare