Concepts fondamentaux
Ce chapitre décrit les différents concepts utilisés par le moteur de salaire.
Généralités
Le moteur de salaire (SAL24) effectue une boucle sur les lignes de salaires (SAL02) pour chaque employé (SAL04). Les lignes de salaire sont traitées séquentiellement par ordre alphanumérique.
Par convention, une ligne de salaire est sur 3 caractères, le premier étant une lettre, les deux derniers étant des chiffres. Cela afin de facilement savoir dans quel ordre les lignes vont êtres exécutées.
Une ligne de salaire peut être configurée pour aller chercher des informations dans les données de l’employé (en-tête ou pages), dans les constantes (SAL03), des tabelles datées ou non (UNI18/UNI19/UNI85) ou encore parmi des résultats des lignes calculées précédemment.
Il est essentiel qu’une ligne de salaire qui utilise les résultats d’une ligne précédente soit calculée après cette dernière. Logiquement, la ligne B30 pourra utiliser les résultats de la ligne A15 ou B10, mais pas ceux de la ligne B35 ou C10.
Par convention, les lignes qui sont préfixées par A
(A00
, A08
, …) contiennent les données élémentaires nécessaires au calcul de salaire. Les nouvelles lignes devraient être ajoutées au minimum avec le préfix B
ou plus.
Si le premier caractère est un entier, la ligne sera clasée avant les lignes dont le premier caractère est une lettre. Par conséquent, il est recommandé de toujours commencer par une lettre. Cela permet également une meilleure lecture du plan de salaire.
Input/Output
Chaque ligne de salaire va utiliser et générer les variables suivantes:
BASE
(BigDecimal): le montant utilisé pour le calcul sans transformation (plancher ou plafond).SUBJECT
(BigDecimal): le montant soumis après transformation (plancher ou plafond).RATE
(BigDecimal): le taux.AMOUNT
(BigDecimal): le montant final calculé (ou défini).NUMBER
(BigDecimal): nombre de jours ou d’heures. Peut également représenter un autre type de valeur (âge de l’employé, …).CODE
(String): code spécial attaché au résultat du calcul (indice de tabelle, mois/année pour correction rétroactive, …).LABEL
(String): libellé spécifique de la ligne.
Ces noms sont également ceux utilisés dans les scripts.
A noter que le moteur de calcul est totalement générique et peut très bien utiliser ou stocker n’importe quelle autre variable au cours du processus. Par contre, seules ces 7 variables seront enregistrées dans la base de données.
Variable (SAL21)
Selon la configuration d’une ligne de salaire, il est possible pour l’utilisateur de forcer:
- le type de calcul de la ligne
- une valeur d’entrée (input)
- le libellé de la ligne
- le département
Les variables de salaire sont saisies par employé dans la tâche SAL21. Elles sont généralement datées sur un jour (ou un mois), mais peuvent être valides pour une durée quelconque.
Période extra-annuelle (mois 13)
Dans certains cas, le calcul du SAL24 peut être lancé sur le mois 13 (attention cela n’a rien à voir avec le 13ème salaire). Cette période est généralement utilisée pour les heures supplémentaires effectuées en décembre, mais dont les variables sont saisies en janvier (avec une date en décembre), après le bouclement du salaire de décembre.
Lors du calcul du mois 13, le moteur tiens compte de la configuration des lignes dans le SAL02 (2ème onglet) pour savoir dans quelles conditions une ligne peut/doit être calculée.
Pour déterminer si le mois 13 peut être calculé, le moteur lit simplement les valeurs possibles dans la liste des mois du SAL24.
Cumuls
Un cumul est simplement un espace de stockage (Map<String, Object>
) commun aux différentes lignes de salaire. Toutes les lignes soumises à un cumul vont alimenter ce dernier avec leur résultat final.
Généralement, un cumul va contenir les variables standards. Si plusieurs lignes alimentent le même cumul, les valeurs numériques seront sommées. Pour les valeurs non numériques (CODE
ou LABEL
), seul le résultat de la 1ère ligne est enregistré.
Dans l’exemple ci-dessus, la ligne F16
est (entre autres) soumise au cumul 147
qui est le cumul qui sera utilisé pour calculer les retenues AVS (L10
), AC (L15
) et AC complémentaire (L16
). On voit également qu’elle n’est pas soumise au cumul 110
(Caisse d’allocation familiales).
Un cumul est simplement un identifiant alphanumérique, tel que P_PR_VHC
ci-dessus. Cet identifiant sera ensuite utilisé par d’autres lignes afin d’aller y rechercher les valeurs voulues. Le nom du cumul est libre, mais il faut être attentif au risque de collision (réutiliser un nom de cumul déjà existant pour autre chose).
Il n’y a pas de contrainte quant à l’alimentation d’un cumul par une ligne. Typiquement, une ligne peut très bien alimenter un cumul, même si celui-ci a été utilisé par une autre ligne. Toutefois, ce n’est guère pratique car il devient alors compliqué d’expliquer les montants ensuite affichés dans le résultat du calcul (SALSE).
Cumuls prédéfinis
Il existe plusieurs cumuls prédéfinis qui sont identifiés uniquement par des chiffres (147
, 140
, 100
). Ces derniers sont indiqués entre parenthèses dans le SAL02.
Dans le cas ou la valeur de la combo est 1 (Oui), le nom du cumul est celui indiqué entre parenthèse (100
, 140
, …). Par contre, si le code est différent de 0 ou 1, alors le nom du cumul est celui entre parenthèse, suffixé par le code de la combo (ci-dessous: 158_12
ou 122_F
)
Constantes (SAL03)
Les constantes représentent généralement des valeurs communes à tous les employés (bien que personnalisables). Elles peuvent être considérées comme des montant ou des taux et sont exploitées par les lignes de salaires.
Leur identifiants dépend souvent de la ligne de salaire, sauf pour certaines constantes spéciales.