CRMconnect Azuvio · Docs

Workflow: HR Performance Review — Evaluare & Salarizare

Module implicate: OKR · HR (Promotions · Warnings · Workshops · Awards) · HR Profile (Bonus/Discipline · Contracts · Training) · HR Payroll
Cine îl folosește: HR Manager · Manageri Departamente · Angajați
Durata tipică: Ciclu trimestrial (OKR check-ins) + ciclu lunar (salarizare) + ciclu anual (evaluare completă)

Overview

CRMConnect nu are un formular dedicat de „evaluare anuală" — review-ul de performanță este asamblat din mai multe module independente. Fiecare modul contribuie cu o piesă distinctă:

Modul / Tabel Contribuție
OKR (tblokrs + tblokrs_checkin) Progresul obiectivelor + evaluare calitativă per check-in
HR Profile (tblbonus_discipline) Înregistrare formală bonus sau disciplinară
HR Profile (tblhr_promotions) Log promoție (schimbare de funcție/designation)
HR Profile (tblhr_warnings) Avertismente formale
HR (tblhr_workshops) Participare la training-uri
HR Payroll (tblhrp_bonus_kpi) Bonus KPI alimentat manual în payroll
HR Payroll (tblhrp_payslips) Fluturasul de salariu lunar (declanșat manual)

Atenție critică — tblhr_checkins: Tabelul tblhr_checkins din modulul HR reprezintă prezența fizică (oră intrare/ieșire la locul de muncă), NU check-in-urile OKR. Cele două nu au nicio legătură.

Payroll nu rulează automat. Nu există cron sau trigger automat pentru salarizare. Fiecare fluturaf de salariu este creat și închis manual de HR.


Diagrama fluxului

[PREGĂTIRE CICLU — admin HR, o dată per perioadă]
  │
  ├── OKR: creare Circulation (perioadă) + Units + Questions + Evaluation Criteria
  ├── HR Payroll: configurare template fluturaf + earning list + deduceri + taxe
  └── HR Profile: contracte staff cu contract_status='valid'
  │
  ↓
[SETARE OBIECTIVE — începutul perioadei]
  │
  ├── Manager/Angajat creează OKR-uri personale (type=1) legate de Circulation
  └── Key Results definite: target, unitate, plan
  │
  ↓
[CHECK-IN-URI PERIODICE — pe tot parcursul perioadei]
  │
  ├── Angajat completează check-in: achieved, progress, confidence_level, evaluation_criteria
  ├── Aprobare opțională (dacă Approval Setting configurat): manager aprobă/respinge
  └── Log imutabil creat în tblokrs_checkin_log la fiecare check-in
  │
  ↓
[EVALUARE FORMALĂ — la finalul perioadei]
  │
  ├── [A] Manager înregistrează Bonus/Disciplinary în HR Profile
  │     → tblbonus_discipline + tblbonus_discipline_detail per angajat
  │
  ├── [B] Manager înregistrează Avertisment (dacă e cazul)
  │     → tblhr_warnings (from_user_id, user_id, title, type_id)
  │
  └── [C] Manager verifică participări la Workshops/Training
        → tblhr_workshops + tblhr_workshop_employees
  │
  ↓
[PROMOȚIE (dacă e cazul)]
  │
  ├── HR înregistrează promoție: tblhr_promotions (user_id, designation_id, title, date)
  └── ⚠ Promoția este un LOG — nu actualizează automat designation-ul pe staff
        HR trebuie să actualizeze manual câmpul designation pe fișa angajatului
  │
  ↓
[BONUS KPI → PAYROLL]
  │
  ├── HR introduce manual bonus KPI în HR Payroll:
  │     tblhrp_bonus_kpi: staffid, month_bonus_kpi, bonus_kpi (valoare)
  └── La generarea fluturafului, coloana bonus_kpi (taking_method='system')
        preia automat valoarea din acest tabel
  │
  ↓
[GENERARE FLUTURAF — lunar, manual]
  │
  ├── Verificare prealabilă: contract staff cu contract_status='valid' pentru luna respectivă
  ├── HR Payroll → Payslips → New Payslip:
  │     payslip_month, payslip_template_id, payslip_range
  ├── Status: payslip_opening (editabil)
  ├── Sistem agregă automat (dacă integrările sunt active):
  │     - Timesheets: zile lucrate, concedii plătite/neplătite
  │     - HR Profile: salariu din contract, funcție, date personale
  │     - Commission: comisioane lunii
  │     - Bonus KPI: din tblhrp_bonus_kpi
  ├── HR verifică și ajustează valorile în spreadsheet
  └── HR Payroll → Payslip → Close Payslip → status: payslip_closing
        → scrie tblhrp_payslip_details (detalii finale per angajat)
        → scrie tblhrp_income_taxs (impozit calculat)

[CICLU COMPLET ✓ — OKR închis · Bonus înregistrat · Salariu procesat]

Pas cu pas

1. Configurare HR Payroll (admin — o singură dată)

Unde: /admin/hr_payroll → Settings

1a. Integrări

Opțiune Valoare Efect
integrated_hrprofile 1 Trage salariu + date angajat din HR Profile (contracte, funcție, cod fiscal)
integrated_timesheets 1 Trage zilele lucrate/concedii din modulul Timesheets
integrated_commissions 1 Include comisioanele lunii din modulul Commission
standard_working_time 160 (implicit) Ore de lucru standard per lună
integration_actual_workday "W,B" (implicit) Coduri de prezență care contează ca zi lucrată
integration_paid_leave "AL,HO,EB" (implicit) Coduri concediu plătit
integration_unpaid_leave "U,SI,UB,P" (implicit) Coduri concediu neplătit

1b. Taxe și impozite

Unde: HR Payroll → Settings → Income Tax Rates

Introduceți tranșele de impozitare în tblhrp_income_tax_rates:

Câmp Descriere
tax_bracket_value_from / to Intervalul venitului impozabil
tax_rate Cota de impozit (%)
equivalent_value Valoare echivalentă tranșă

Și rebate-urile (scutiri) în tblhrp_income_tax_rebates: code, description, value.

1c. Template fluturaf

Unde: HR Payroll → Settings → Payslip Templates → New Template

Un template definește:

  • Care angajați/departamente/roluri sunt incluși (department_id, role_employees, staff_employees)
  • Coloanele afișate (payslip_columns — din tblhrp_payroll_columns)
  • Exceptii per staff (except_staff)

Coloane sistem disponibile (preluate automat când taking_method='system'):

column_key Sursă
actual_workday Timesheets
paid_leave Timesheets (coduri AL, HO, EB)
unpaid_leave Timesheets (coduri U, SI, UB, P)
gross_pay Calculat din contract
commission_amount tblhrp_commissions (din Commission module)
bonus_kpi tblhrp_bonus_kpi (introdus manual de HR)
income_tax_paye Calculat din tranșe
net_pay gross_pay - deduceri - taxe
total_cost Cost total angajator

1d. Contract angajat (obligatoriu pentru payroll)

Unde: HR Profile → Staff → fișa angajat → tab Contracts

Condiție critică: Numai contractele cu contract_status = 'valid' sunt incluse în payroll. Staff fără contract valid în luna respectivă nu apare în fluturaf.

Câmp contract Descriere
contract_code Număr contract
name_contract FK → tblhr_staff_contract_type
start_valid / end_valid Valabilitate
contract_status Trebuie să fie 'valid'
hourly_or_month Tip remunerare

2. OKR — setare obiective

Unde: /admin/okr → New OKR

Creați OKR-uri personale (type=1) pentru fiecare angajat evaluat:

Câmp Valoare recomandată
type 1 (Personal)
person_assigned staffid angajat
circulation Ciclul perioadei de evaluare
display 1 (Public) — vizibil managerului

Adăugați Key Results cu target numeric, unit (ex: %, RON, nr. proiecte) și plan de acțiune.

Referință completă pentru OKR: Vezi Workflow 20 — OKR Cycle pentru detalii despre check-in-uri și aprobare.


3. Bonus/Disciplinar formal (HR Profile)

Unde: /admin/hr_profile → Bonus & Discipline → Add

Câmpuri tblbonus_discipline:

Câmp Descriere
name Denumire eveniment (ex: „Bonus performanță Q1")
id_criteria JSON array cu IDs din tblrec_criteria (criterii de evaluare)
type Tipul (1=bonus)
from_time Perioada de referință
approver staffid aprobator (aprobare single-step)
status Statusul înregistrării

Detalierea per angajat (tblbonus_discipline_detail):

Câmp Descriere
staff_id Angajatul vizat
lever_bonus Nivelul bonusului
formality Forma (ex: cash, scrisoare)
formality_value Valoarea (sumă sau text)
description Justificare

Criterii de evaluare utilizate (tblrec_criteria — modul Recruitment, reutilizat): Câmpurile score_des1..score_des5 definesc 5 niveluri de scor descriptiv per criteriu.


4. Avertismente formale

Unde: /admin/hr → Warnings → Add Warning

Câmp Descriere
from_user_id Cine emite avertismentul (manager/HR)
user_id Angajatul care primește
title Subiectul avertismentului
type_id Tipul avertismentului (din lookup)
img Atașament (document)

5. Promoție

Unde: /admin/hr → Employee → fișa angajat → Add Promotion

Câmp Descriere
title Denumire promoție (ex: „Promovat Senior Developer")
user_id Angajatul promovat
designation_id Noua funcție (din tbldesignations)
date Data efectivă

Atenție: tblhr_promotions este un jurnal — nu actualizează automat câmpul designation_id pe tblstaff. HR trebuie să actualizeze manual fișa angajatului după înregistrarea promoției.


6. Training / Workshop

Unde: /admin/hr → Workshops → Add Workshop

Câmp Descriere
description Descrierea training-ului
mode internal sau external
cost Costul training-ului
date_start / date_end Perioada
type_id Tip workshop (din lookup)
trainer_id / trainer_name Trainerul

Adăugați participanți în tblhr_workshop_employees: legătură user_id + workshop_id.


7. Bonus KPI în payroll

Unde: /admin/hr_payroll → Bonus KPI → Add

Câmp Descriere
staffid Angajatul
month_bonus_kpi Luna (ex: 2026-03)
bonus_kpi Valoarea bonusului (varchar 100 — sumă sau procent)

La generarea fluturafului pentru luna respectivă, coloana bonus_kpi (cu taking_method='system' și function_name='bonus_kpi') preia automat valoarea din acest tabel.


8. Generare și închidere fluturaf

Unde: /admin/hr_payroll → Payslips → New Payslip

Statusuri fluturaf:

Status Semnificație
payslip_opening Fluturaf deschis — editabil, calculele se actualizează
payslip_closing Fluturaf închis — valorile finale scrise în tblhrp_payslip_details

Pași:

  1. New Payslip: completați payslip_month (luna), payslip_template_id, payslip_range (intervalul în lună)
  2. Sistemul generează spreadsheet JSON în payslip_data agregând toate sursele configurate
  3. HR verifică valorile în spreadsheet-ul editat (Luckysheet format)
  4. Ajustați manual dacă necesar (deduceri speciale, corecții)
  5. Close Payslip (necesită permisiunea hrp_payslip → edit):
    • Parsează spreadsheet-ul
    • Scrie tblhrp_payslip_details (câte un rând per angajat cu toate valorile finale)
    • Scrie tblhrp_income_taxs (impozitul calculat per angajat)
    • Status devine payslip_closing
  6. HR poate reface un fluturaf închis: butonul Reset → status revine la payslip_opening

Fluxuri de aprobare în HR

Modul Tabel Mecanism
OKR check-in tblokr_approval_setting + tblokr_approval_details Multi-step complet cu deadline + notificări
Bonus/Discipline tblbonus_discipline.approver Un singur aprobator, câmp varchar — fără tabel de tracking
Demisie/Plecare tblhr_list_staff_quitting_work.approval Câmp varchar simplu: 'approved'
Fluturaf salariu Nicio aprobare Închis manual de HR cu permisiunea hrp_payslip → edit

Permisiuni necesare

Modul Permisiune Acces
OKR okr → view / view_own Vizualizare OKR-uri
OKR Settings OKR is_admin() exclusiv
HR hr_employees → view/create/edit/delete Fișe angajați
HR hr_workshops → view/create/edit/delete Training-uri
HR hr_awards → view/create Premii
HR hr_warnings → view/create Avertismente
HR Profile hr_profile → view/edit Date extinse angajat, contracte
HR Payroll hr_payroll → view Vizualizare fluturași
HR Payroll hrp_payslip → edit Închidere fluturaf (Close Payslip)
HR Payroll hrp_settings → view Configurare payroll

Gotchas

Problemă Cauză Soluție
Angajatul nu apare în fluturaf Contract lipsă sau contract_status ≠ 'valid' Adăugați/validați contractul în HR Profile → Contracts
Bonus KPI nu apare în fluturaf tblhrp_bonus_kpi gol pentru luna respectivă Introduceți manual bonusul în HR Payroll → Bonus KPI
Comisionul nu apare în fluturaf integrated_commissions=0 sau commission modul inactiv Activați integrarea din HR Payroll → Settings
Zilele lucrate sunt 0 integrated_timesheets=0 sau Timesheets nu au date Activați integrarea și verificați că timesheets-urile sunt completate
Promoția nu a schimbat funcția angajatului tblhr_promotions este doar un log Actualizați manual câmpul Designation pe fișa Staff
Fluturaf închis incorect payslip_closing e final Folosiți butonul Reset Payslip pentru a reveni la payslip_opening și a corecta
Check-in OKR blocat approval_status=3 (în așteptare) Aprobatorul trebuie să proceseze cererea anterioară
tblhr_checkins arată prezență, nu OKR Module diferite — confuzie frecventă hr_checkins = pontaj fizic; OKR check-ins sunt în tblokrs_checkin

Referințe module

Tip

Creați perioada de circulație OKR înainte de începerea ciclului de performanță — angajații nu pot înregistra check-in-uri față de o perioadă neconfigurate, iar crearea obiectivelor la mijlocul perioadei pierde datele timpurii care fac analiza de tendință semnificativă.

Note

Revizuirile de performanță sunt cele mai credibile când sunt bazate pe date cantitative de progres OKR. Impuneți check-in-uri săptămânale pe tot parcursul ciclului — un singur punct de date este o opinie; o tendință este dovadă.