Formule calcul sporuri la unitatile bugetare
Formule calcul sporuri la unitatile bugetare
Adaugat 3 Mar 2016
| Prioritate N
| Tags spor vechime, spor diferenta clasa, spor conducere, spor diferenta clasa vechime
| Categorie Salarizare
La unitatile bugetare calculul sporurilor se face putin diferit fata de cel de la agentii economici. Astfel procentul sporului de vechime nu se poate schimba automat (cand trece la o alta transa de vechime) ci numai in urma unei decizii de salarizare sporul de vechime se aplica la salariul de incadrare si la sporul de conducere, sporul de diferenta de clasa se aplica la salariul de incadrare , la sporul de conducere si la sporul de vechime sporul de diferenta de clasa vechime se aplica la salariul de incadrare , la sporul de conducere, la sporul de vechime si la sporul de diferenta de clasa. etc. Aceste sporuri intra si in calculul CO. Ca atare formulele acestora trebuie modificate si trebuie stabilita o anumita ierarhie (prioritate) in calculul lor.
Iata un exemplu:
SPORUL DE DIFERENTA CLASA VECHIME
Spor diferenta clasa vechime(id.33) = ( salariu_negociat+spor conducere(id.9)+spor vechime(id.10)+spor diferenta clasa(id.16) )*procent/100 * (ore_regie/ore_luna) (se aplica la perioada lucrata si intra in calculul CO)
Spor conducere(id.9)->prioritate 1
Spor vechime(id.10)->prioritate 2
Spor diferenta clasa(id.16)->prioritate 3
Spor diferenta clasa vechime(id.33)->prioritate 4
Formula de calcul:
IF @pt_co = 0
SELECT @ret_val = ((b.sal_neg+ dbo.sal_blc_get_val_spor(b.anluna, b.pct_lcr, b.id, 1, 9)+dbo.sal_blc_get_val_spor(b.anluna,b.pct_lcr,b.id,1,10)+dbo.sal_blc_get_val_spor(b.anluna,b.pct_lcr,b.id,1,16))*(b.ore_reg+b.ore_aco+b.ore_ate+b.ore_rep)*8*s.procent)/(@ore_lun*b.ore_norm*100),
@ret_ore = b.ore_reg+b.ore_aco+b.ore_ate+b.ore_rep,
@ret_proc = s.procent
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
WHERE s.anluna=@anluna AND s.pct_lcr=@pl_sp AND s.id=@id_sp
ELSE
SELECT @ret_val = ((b.sal_neg+ dbo.sal_blc_get_val_spor(b.anluna, b.pct_lcr, b.id, 1, 9)+dbo.sal_blc_get_val_spor(b.anluna,b.pct_lcr,b.id,1,10)+dbo.sal_blc_get_val_spor(b.anluna,b.pct_lcr,b.id
Răspuns 1 Formule calcul sporuri la unitatile bugetare
Adaugat 4 Mar 2016
Functia pe care ati folosit-o, Sal_blc_get_val_spor, aduce sporul calculat si salvat la un pas anterior.
Mai exista posibilitatea de a caclula valoarea sporului pentru concediu, la valoare integrala, prin aplicarea catorva modificari.
De exemplu, daca in calculul sporului de vechime dorim sa folosim sporul de conducere procedam astfel:
IF @pt_co = 0
SELECT @ret_val = (b.sal_neg+ dbo.sal_blc_get_val_spor(b.anluna, b.pct_lcr, b.id, 1, 9))*(b.ore_reg+b.ore_aco+b.ore_ate+b.ore_rep)*s.procent/100/@ore_lun,
@ret_ore = b.ore_reg+b.ore_aco+b.ore_ate+b.ore_rep,
@ret_proc = s.procent
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
WHERE s.anluna=@anluna AND s.pct_lcr=@pl_sp AND s.id=@id_sp
ELSE
BEGIN
DECLARE @pl_blc_spor SMALLINT, @id_blc_spor NUMERIC
SELECT @pl_blc_spor = s.pct_lcr, @id_blc_spor = s.id
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 AND s.pl_spor = 1 AND s.id_spor = 9
WHERE b.anluna = @anluna AND b.pl_cm = @pl_cm AND b.id_cm = @id_cm
SELECT @ret_val = (b.sal_neg+r.valoare)*s.procent/100, @ret_ore = @ore_lun, @ret_proc = s.procent
FROM blc_linii s
INNER JOIN blc b ON s.pl_blc=b.pct_lcr AND s.id_blc=b.id
CROSS APPLY dbo.sal_calc_spor_cond(b.anluna, @ore_lun, @pl_blc_spor, @id_blc_spor, b.pct_lcr, b.id, b.pl_cm, b.id_cm, 1) r
WHERE s.anluna=@anluna AND s.pct_lcr=@pl_sp AND s.id=@id_sp
INSERT INTO @ret_table (valoare, ore, procent) VALUES (@ret_val, @ret_ore, @ret_proc)
END
RETURN
END
Putin cam complicat :(, dar important este ca exista solutie :).
Trebuie evitate cazurile de imbricare a sporurilor, deoarece calculul ar intra intr-o bucla infinita.