Rubrique « PRIME A VALOIR » (code 7090) (RUB_GAIN=0 : retenue, info ou technique selon usage). Actuellement active, variante en vigueur depuis le 1980-01-01. Une seule variante de formule définie. La formule actuelle (1204 octets) référence 6 variable(s) et 4 fonction(s).
Explication
Cette regle determine automatiquement l'echelon applicable au salarie pour la prime a valoir, en fonction de son anciennete et de son groupe d'appartenance. Elle met ensuite a jour l'echelon definitif si l'echelon calcule differe de celui actuellement enregistre.
La premiere etape consiste a calculer l'anciennete du salarie en annees, a partir de sa date d'entree. Si cette date n'est pas renseignee (ou anterieure au 1/1/1900, ce qui est traite comme une absence d'information), l'anciennete vaut 0. Sinon, on compte le nombre de jours entre la date d'entree et aujourd'hui, divise par 365, avec un arrondi a deux decimales.
Ensuite, l'echelon depend du groupe du salarie :
- Pour les groupes BLO et IDE : echelon 1 jusqu'a 6 mois, echelon 2 jusqu'a 2 ans, echelon 3 jusqu'a 3 ans, echelon 4 jusqu'a 5 ans, echelon 5 au-dela.
- Pour les groupes ADM et ASH : echelon 1 jusqu'a 6 mois, echelon 2 ensuite (seulement deux paliers).
- Pour le groupe AS : echelon 1 jusqu'a 6 mois, echelon 2 jusqu'a 1 an, echelon 3 jusqu'a 3 ans, echelon 4 jusqu'a 5 ans, echelon 5 au-dela.
Enfin, si l'echelon ainsi calcule ne correspond pas a l'echelon actuel du salarie, le systeme enregistre le nouvel echelon comme echelon final retenu. Autrement dit, la regle detecte automatiquement les passages d'echelon lies a l'anciennete et met a jour la fiche du salarie en consequence.
Point d'attention : aucun comportement n'est defini pour les groupes autres que BLO, IDE, ADM, ASH et AS ; pour ces cas, l'echelon applicable resterait non calcule par cette regle.
Ancienneté = Arrondi(((datecourante+1)-
Evaluer( // test si la date 'entre' est renseignée
// si date 'entre' est inférieure à 1/1/1900
// alors date 'entre' non renseigné
Max(date_anc;coderdate(1;1;1900))=CoderDate(1;1;1900)
// si date non renseigne alors age = 0
:DateCourante;date_anc))/365;0.01;-1)
si groupe = 'BLO'ou groupe = 'IDE' alors
si Ancienneté <= 0.5 alors
echelon_appli = 1
sinonsi Ancienneté <= 2 alors
echelon_appli = 2
sinonsi Ancienneté <= 3 alors
echelon_appli = 3
sinonsi Ancienneté <= 5 alors
echelon_appli = 4
sinon echelon_appli = 5
finsi
finsi
si groupe = 'ADM'ou groupe = 'ASH' alors
si Ancienneté <= 0.5 alors
echelon_appli = 1
sinon echelon_appli = 2
finsi
finsi
si groupe = 'AS' alors
si Ancienneté <= 0.5 alors
echelon_appli = 1
sinonsi Ancienneté <= 1 alors
echelon_appli = 2
sinonsi Ancienneté <= 3 alors
echelon_appli = 3
sinonsi Ancienneté <= 5 alors
echelon_appli = 4
sinon echelon_appli = 5
finsi
finsi
si echelon_appli <> echelon_actuel alors
echelon_final = echelon_appli
finsi
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 4 branche(s) conditionnelle(s), 1 affectation(s).
Affecter à `Ancienneté` la valeur de arrondir(((`datecourante` plus 1) moins évaluer une expression((prendre le maximum(`date_anc`, construire une date(1, 1, 1900)) égal à construire une date(1, 1, 1900)))))
Instruction non interprétée
Si ((`groupe` égal à « BLO ») ou (`groupe` égal à « IDE »))
Alors :
Si (`Ancienneté` inférieur ou égal à 0.5)
Alors :
Affecter à `echelon_appli` la valeur de 1
Sinon, si (`Ancienneté` inférieur ou égal à 2) :
Affecter à `echelon_appli` la valeur de 2
Sinon, si (`Ancienneté` inférieur ou égal à 3) :
Affecter à `echelon_appli` la valeur de 3
Sinon, si (`Ancienneté` inférieur ou égal à 5) :
Affecter à `echelon_appli` la valeur de 4
Sinon :
Affecter à `echelon_appli` la valeur de 5
Si ((`groupe` égal à « ADM ») ou (`groupe` égal à « ASH »))
Alors :
Si (`Ancienneté` inférieur ou égal à 0.5)
Alors :
Affecter à `echelon_appli` la valeur de 1
Sinon :
Affecter à `echelon_appli` la valeur de 2
Si (`groupe` égal à « AS »)
Alors :
Si (`Ancienneté` inférieur ou égal à 0.5)
Alors :
Affecter à `echelon_appli` la valeur de 1
Sinon, si (`Ancienneté` inférieur ou égal à 1) :
Affecter à `echelon_appli` la valeur de 2
Sinon, si (`Ancienneté` inférieur ou égal à 3) :
Affecter à `echelon_appli` la valeur de 3
Sinon, si (`Ancienneté` inférieur ou égal à 5) :
Affecter à `echelon_appli` la valeur de 4
Sinon :
Affecter à `echelon_appli` la valeur de 5
Si (`echelon_appli` différent de `echelon_actuel`)
Alors :
Affecter à `echelon_final` la valeur de `echelon_appli`