Spor valoric fix care se acordă la îndeplinirea unei condiții
Spor valoric fix care se acordă la îndeplinirea unei condiții
-
Complexitate: Medie.
- Adăugăm Suplimentare S+D în nomenlcatorul de sporuri și stabilim formula de calcul Pentru câmpul Valori: procent și suma fixă selectăm din meniul combo opțiunea: Se preiau valorile din decizia de salarizare.
- valoarea calculată a sporului (@ret_val),
- numărul de ore pentru care se acordă (@ret_ore)
- procentul care a fost folosit în calcul (@ret_proc).
Se adresează: Distribuitori și Utilizatori avansați.
Pentru exemplificare, considerăm că dorim să acordăm un spor în valoare fixă de 200 lei, pentru cazul în care o persoana lucreaza cel puțin 16 ore într-o luna în regim de ore suplimentare lucrate sâmbătă și/sau duminică. În continuare, pentru ușurință, vom denumi sporul: Suplimentare S+D.
Formula de calcul (funcție SQL) trebuie să întoarcă trei coloane/câmpuri:
Anumite sporuri se acordă chiar dacă salariatul se află în concediu de odihnă, însă formula de calcul poate diferi față de cea pentru zilele lucrate. Astfel, toate funcțiile de calcul pentru sporuri vor avea o zona pentru formula destinata zilelor lucrate și o altă zona pentru formula destinată zilelor de concediu de odihnă. Cele două zone sunt separate în cadrul unei instrucțiuni IF.
Formula imediat următoare instrucțiunii IF @pt_co = 0 este aferentă zilelor lucrate, iar formula imediat următoare instrucțiunii ELSE este aferentă zilelor de concediu de odihnă.
În cazul exemplului nostru, Suplimentare S+D nu se aplică pentru perioada de concediu de odihnă și astfel celor trei coloane li se va atribui valoarea zero.
BLC_LINII este tabelul care stochează informațiile despre sporurile din bonul de lucru. Acestui tabel îi asociem aliasul "s", adicî adunci când dorim să utilizăm în formulă un câmp din BLC_LINII vom scrie: s.procent, s.valoare sau s.integral.
BLC este tabelul care stocheazî informațiile despre bonul de lucru. Acestui tabel îi asociem aliasul "b", adică adunci când dorim să utilizăm în formula un câmp din BLC vom scrie: b.sal_neg, b.ore_norm sau b.anluna.
SAL_PONTAJ este tabelul care stochează informațiile despre pontaj. Acestui tabel îi asociem aliasul "p", adică adunci când dorim sa utilizăm în formula un câmp din SAL_PONTAJ vom scrie: p.ore sau p.anluna.
SAL_PONTAJ_NomOre este tabelul care stochează informațiile despre nomenlcatorul de tipuri de ore utilizate pentru pontaj.
Concret, formula de calcul va fi: CASE WHEN o.ore>=16 THEN s.integral ELSE 0 END
s.integral - este valoarea integrală a sporului Suplimentare S+D, pe care o vom completa cu 200 lei în deciziile de salarizare ale salariaților care beneficiază de acest spor.
o.ore - este suma numarului de ore pontate ca lucrate sambata și duminica.
Formula completă este:
IF @pt_co = 0
SELECT @ret_val = CASE WHEN o.ore>=16 THEN s.integral ELSE 0 END,
@ret_ore = 0,
@ret_proc = 0
FROM blc_linii s
INNER JOIN blc b ON s.anluna=b.anluna AND s.pl_blc=b.pct_lcr AND s.id_blc=b.id
INNER JOIN (
SELECT p.anluna, p.pl_blc, p.id_blc, SUM(p.ore) AS ore
FROM Sal_Pontaj p
INNER JOIN Sal_Pontaj_NomOre n ON p.tip = n.id
WHERE n.camp = 'ore_sd' AND p.anluna=@anluna AND p.pl_blc=@pl_blc AND p.id_blc=@id_blc
GROUP BY p.anluna, p.pl_blc, p.id_blc
) o ON s.anluna=o.anluna AND s.pl_blc=o.pl_blc AND s.id_blc=o.id_blc
WHERE s.anluna=@anluna AND s.pct_lcr=@pl_sp AND s.id=@id_sp
ELSE
SELECT @ret_val = 0,
@ret_ore = 0,
@ret_proc = 0
Gata!