GRH
- Mettre à jour le gestionnaire de rubriques
- Correction et mise à jour du gestionnaire de rubrique
- Divers
Mettre à jour le gestionnaire de rubriques
La version du programme GRH est 2024.06.01
Le gestionnaire de rubriques passe à 67
Comme d’habitude, le gestionnaire de rubriques ne se met à jour que lors du changement de période.
Dans ce cas il est nécessaire de forcer cette mise à jour. La version du gestionnaire de rubriques est indiquée sur l’écran principal avec la version du programme.
Pour forcer la mise à jour, sélectionnez le menu Option utilisateur/MAJ Gestionnaire de rubrique.
Cette option est accessible si le configurateur vous permet de modifier le gestionnaire de rubrique.
Cliquez sur le bouton afin d’effectuer la mise à jour. A l’issue de celle-ci, le programme s’arrête. Il suffit alors de le relancer et de vérifier la version
Correction et mise à jour du gestionnaire de rubrique
Nouvelles rubriques
MALADIE_AM : Cotisation majoration maladie Alsace Moselle.
- Base de cotisation BC_BRUT_URSSAF
- Elle concerne les salariés exerçant une activité dans les départements du Bas-Rhin, du Haut-Rhin et de la Moselle
- Le taux est de taux 1.30% et est déclarée à l'aide du CTP 381 et du code cotisation 115
PREV_TH : Prévoyance travailleur handicapé
- Base de cotisation BC_SALDIR
FORMATION_TH : Formation professionnelle continue travailleur handicapé
- Base de cotisation BC_SALDIR
ACCIDENT_TH : Accident du travail travailleur handicapé
Ajout de accident_TH : Base de cotisation BC_CPLDDTE CTP 999 et CTP1 122
V_PLAFPREV : Nombre de plafond prévoyance à appliquer
Cette rubrique libre permet de définir le nombre de plafond de prévoyance à appliquer pour la tranche B et la tranche C de prévoyance.
En effet, jusqu'à présent, ce nombre était directement intégré dans les rubriques bases de cotisation de prévoyance :
Avec la mise à jour, les formules EIG de ces rubriques utilisent la rubrique libre V_PLAFPREV.
Exemple pour BC_TR_B_PREV_C :
Avant
F_TRANCHEBPREV([BC_BRUT_PREV_C.MONTANT];[BC_TR_A_PREV_C.MONTANT];
[BC_TR_B_PREV_C.MONTANT];[PLAFONDS_A.PLA_OC];3)
Après
F_TRANCHEBPREV([BC_BRUT_PREV_C.MONTANT];[BC_TR_A_PREV_C.MONTANT];
[BC_TR_B_PREV_C.MONTANT];[PLAFONDS_A.PLA_OC];[V_PLAFPREV.NB_TRB_C])
Les formules de la rubrique libre V_PLAFPREV ont été définies comme suit, afin de ne pas modifier la codification actuelle
- NB_TRB_C -> 3
- NB_TRC_C -> 4
- NB_TRB_NC -> 2
- NB_TRC_NC -> 4
A quoi ça sert ?
Dans la majorité des cas, cette modification n'est pas utile. Mais il arrive parfois que le nombre de plafond de prévoyance dépende d'une caractéristique du salarié : La convention, le type de contrat ou de salarié, etc. Dans ce cas, il sera possible de définir en un endroit le nombre de plafond à utiliser.
Exemple : En CCN51 , le nombre de plafond de prévoyance cadre est comme celui des non cadres, c'est à dire 2 plafonds pour la tranche B et 4 plafonds pour la tranche C. Pour les autres conventions pas de changement.
On va modifier la formule V_PLAFPREV.NB_TRB_C comme suit ;
si ([NUMCONV.NUMCONV]=51)
alors (2)
sinon (3)
Les cas exceptionnels où le salarié change de convention ne sont pas gérés. Dans ce cas, c'est le dernier nombre qui sera pris en compte dans le cumul annuel
Non résident actif
Pour l'assurance maladie, la cotisation suivante a été créée.
MALADIE_NRA : Cotisation maladie non résidents actif
- Base de cotisation BC_BRUT_NRA : Est égal à zéro si le salarié n'est pas résident à l'étranger (fonction de son code pays de résidence)
si (CONSTANTE(CONTRAT.PAS_RESIDENTETRANGER)=1)
alors ([BC_BRUT_URSAFF.MONTANT])
sinon (0)
- Elle concerne les personnes non domiciliées fiscalement en France et relevant à titre obligatoire d’un régime français d’assurance maladie.
Depuis le 1er mars 2018, le taux de la cotisation salariale d’assurance maladie pour les non-résidents fiscaux français est de 5,50 %. - Elle est déclarée à l'aide du CTP 206 « salariés non-résidents actifs » et le code cotisation 075.
Cette cotisation peut être ajoutée dans tous les régimes car la base de cotisation s'appuie sur le pays de résidence du salarié pour déterminer si la cotisation est due ou pas
Pour la retenue à la source, plusieurs éléments ont été créés.
Une liste de constante : RETSOURCE : Permet de renseigner les valeurs du barème MENSUEL pour le taux d'imposition
- 1 : Montant mensuel maximum pour la fraction à 0% : 1402€
- 2 : Montant mensuel maximum pour la fraction à 12% : 4066€
- 3 : Montant journalier maximum pour la fraction à 0% : 54€
- 4 : Montant journalier maximum pour la fraction à 12% : 156€
- 5 : Pourcentage d'abattement du net imposable : 10%
Pour rappel , le barème est le suivant en 2024 :
RET_JRSTRAV : Nombre de jours travaillés retenue à la source
Si le nombre de jours non travaillés est égal à zéro, cette rubrique sera égale à zéro et dans ce cas c'est le barème mensuel qui sera utilisé. Sinon, on utilise le barème journalier et cette rubrique est égale au nombre de jour travaillés (NB_JRSTRAV). En effet, en cas d'entrée sortie, c'est le barème journalier qui doit être appliqué. La rubrique RET_JRSTRAV est saisissable en paye dans le cas ou vous désirez ajuster le nombre de jour de travail.
si ([JRSNONTRAV.BASE]=0)
alors (0)
sinon ([NB_JRSTRAV.MONTANT])
RET_SOURCE : Retenue cotisation retenue à la source à ajouter dans le gestionnaire de régime
Comme pour la cotisation maladie, cette cotisation peut être ajoutée dans tous les régimes car la base de cotisation s'appuie sur le pays de résidence du salarié pour déterminer si la cotisation est due ou pas.
BC_RET_SOURCE : Base de cotisation de la retenue à la source
declarer (BASE)
affecter (base;arrondir([NETIMP.MONTANT]*(100-LISTEGEN(RETSOURCE;5))/100))
declarer (PLAF1)
affecter (PLAF1;si ([RET_JRSTRAV.BASE]=0)
alors (LISTEGEN(RETSOURCE;1)) sinon (LISTEGEN(RETSOURCE;3)*[RET_JRSTRAV.BASE])
)
declarer (PLAF2)
affecter (PLAF2;si ([RET_JRSTRAV.BASE]=0)
alors (LISTEGEN(RETSOURCE;2)) sinon (LISTEGEN(RETSOURCE;4)*[RET_JRSTRAV.BASE])
)
si (CONSTANTE(CONTRAT.PAS_RESIDENTETRANGER)=1)
alors (
arrondir(
0.12
*
si (:BASE>:PLAF2)
alors (:PLAF2-:PLAF1)
sinon (
si (:BASE>:PLAF1)
alors (:BASE-:PLAF1)
sinon (0)
)
)
+
arrondir(
0.20
*
si (:BASE>:PLAF2)
alors (:BASE-:PLAF2)
sinon (0)
)
)
sinon (0)
Base de CSG-CRDS
Les rubriques BC_CSG et BC_CRDS ont été modifiées pour prendre en compte le pays de résidence du salarié (constante contrat PAS_RESIDENTETRANGER). Si le code pays de résidence est différent de la France, ces bases de cotisations seront égales à zéro.
On peut donc utiliser un régime quelconque (général, cadre) qui inclut les cotisations CSG-CRDS, celles ci seront égales à zéro lorsque le salarié réside hors de France
Correctifs
V_NEWAGCP.HREMU : Heures rémunérées pour le nouveau calcul AGCP
- Le correctif permet d'ajuster le nombre d'heure rémunéré pour les cas de forfait jour, lors de l'entrée-sortie. Le nombre d'heure est alors proratisé en trentième en fonction du nombre de jour travaillé (30 - JRSNONTRAV)
Avant
si (([NB_HEUREREMU.BASE]=0) ou (CONSTANTE(CONTRAT.TYPESALARIE)=5))
alors (
{Assistante Maternelle}
si (CONSTANTE(CONTRAT.NATURECONTRAT)=0003)
alors (( CONSTANTE(CONTRAT.HORAIRECOLLECTIF)
)
*
(
si ([IJBRUT.MONTANT]<>0)
alors ([BC_BRUT_URSAFF.MONTANT]/([BC_BRUT_URSAFF.MONTANT]+[IJBRUT.MONTANT]) )
sinon (1)
)
)
sinon (
{Forfait Annuel en jours}
si (CONSTANTE(CONTRAT.SITUATIONHORAIRE)=4)
alors (CONSTANTE(CONTRAT.HORAIRECOLLECTIF)*CONSTANTE(CONTRAT.JOUR_FORFAIT)/CONSTANTE(CONTRAT.FORFAITJOURCOLLECTIF)
*
si (([IJBRUT.MONTANT]<>0) ou ([ABSTOTALV.MONTANT]-[ABSTOTALM.MONTANT]<>0))
alors ([BC_BRUT_URSAFF.MONTANT]
/
([BC_BRUT_URSAFF.MONTANT]+[IJBRUT.MONTANT] +[ABSTOTALV.MONTANT]-[ABSTOTALM.MONTANT])
)
sinon (1)
)
sinon (
{Forfait Annuel en heures}
si (CONSTANTE(CONTRAT.SITUATIONHORAIRE)=5)
alors (CONSTANTE(CONTRAT.HORAIRECOLLECTIF)*CONSTANTE(CONTRAT.HEURE_FORFAIT)/1596
*
si ([IJBRUT.MONTANT]<>0)
alors ([BC_BRUT_URSAFF.MONTANT]/([BC_BRUT_URSAFF.MONTANT]+[IJBRUT.MONTANT]) )
sinon (1)
)
{Horaire fixe / Horaire variable}
sinon (
si (CONSTANTE(CONTRAT.TYPESALARIE)=5)
alors ([AD_HNEXO.BASE])
sinon ([NB_HEURESCON.MONTANT])
*
(
([AGCP_NUMHREMU.MONTANT]
/
[B_PXHEURE.MONTANT]
)
)
+
si (CONSTANTE(CONTRAT.TYPESALARIE)=5)
alors([AGCP_HREMUPLUS.MONTANT]*[AD_HNEXO.BASE]/([AD_HNEXO.BASE]+[AD_HEXO.BASE]))
sinon ([AGCP_HREMUPLUS.MONTANT])
)
)
)
)
sinon ( [NB_HEUREREMU.BASE])
+[NB_HREMUREGUL.BASE]
si (([NB_HEUREREMU.BASE]=0) ou (CONSTANTE(CONTRAT.TYPESALARIE)=5))
alors (
{Assistante Maternelle}
si (CONSTANTE(CONTRAT.NATURECONTRAT)=0003)
alors (( CONSTANTE(CONTRAT.HORAIRECOLLECTIF)
)
*
(
si ([IJBRUT.MONTANT]<>0)
alors ([BC_BRUT_URSAFF.MONTANT]/([BC_BRUT_URSAFF.MONTANT]+[IJBRUT.MONTANT]) )
sinon (1)
)
)
sinon (
{Forfait Annuel en jours}
si (CONSTANTE(CONTRAT.SITUATIONHORAIRE)=4)
alors (CONSTANTE(CONTRAT.HORAIRECOLLECTIF)*CONSTANTE(CONTRAT.JOUR_FORFAIT)/CONSTANTE(CONTRAT.FORFAITJOURCOLLECTIF)
*
si (([IJBRUT.MONTANT]<>0) ou ([ABSTOTALV.MONTANT]-[ABSTOTALM.MONTANT]<>0))
alors ([BC_BRUT_URSAFF.MONTANT]
/
([BC_BRUT_URSAFF.MONTANT]+[IJBRUT.MONTANT] +[ABSTOTALV.MONTANT]-[ABSTOTALM.MONTANT])
)
sinon (1)
-----------------------NOUVEAU CODE ----------------------------------------------------------------
*
si ([JRSNONTRAV.BASE]<>0)
alors(maximum(1;(30 - [JRSNONTRAV.BASE])) / 30)
sinon(1)
----------------------------------------------------------------------------------------------------
)
sinon (
{Forfait Annuel en heures}
si (CONSTANTE(CONTRAT.SITUATIONHORAIRE)=5)
alors (CONSTANTE(CONTRAT.HORAIRECOLLECTIF)*CONSTANTE(CONTRAT.HEURE_FORFAIT)/1596
*
si ([IJBRUT.MONTANT]<>0)
alors ([BC_BRUT_URSAFF.MONTANT]/([BC_BRUT_URSAFF.MONTANT]+[IJBRUT.MONTANT]) )
sinon (1)
)
{Horaire fixe / Horaire variable}
sinon (
si (CONSTANTE(CONTRAT.TYPESALARIE)=5)
alors ([AD_HNEXO.BASE])
sinon ([NB_HEURESCON.MONTANT])
*
(
([AGCP_NUMHREMU.MONTANT]
/
[B_PXHEURE.MONTANT]
)
)
+
si (CONSTANTE(CONTRAT.TYPESALARIE)=5)
alors([AGCP_HREMUPLUS.MONTANT]*[AD_HNEXO.BASE]/([AD_HNEXO.BASE]+[AD_HEXO.BASE]))
sinon ([AGCP_HREMUPLUS.MONTANT])
)
)
)
)
sinon ( [NB_HEUREREMU.BASE])
+[NB_HREMUREGUL.BASE]
APPRENTI.ABTBRANCHE : Abattement en % de la rémunération Accord de Branche
Modification pour prendre en compte les nouveaux pourcentages dans l'accord de branche :
- Pas d'ancienneté avant 18 ans : on passe de 30 à 35%
- Ancienneté>1 avant 18 ans : on passe de 0 à 55%
- Après 25 ans : Toujours 100%
Avant
selon (
cas ([APPRENTI.AGES] = 1)
alors (
selon (
cas ([APPRENTI.ANC] = 1) alors (30)
cas ([APPRENTI.ANC] = 2) alors (45)
cas ([APPRENTI.ANC] = 3) alors (0)
)
)
cas ([APPRENTI.AGES] = 2)
alors (
selon (
cas ([APPRENTI.ANC] = 1) alors (50)
cas ([APPRENTI.ANC] = 2) alors (60)
cas ([APPRENTI.ANC] = 3) alors (70)
)
)
cas ([APPRENTI.AGES] >= 3)
alors (
selon (
cas ([APPRENTI.ANC] = 1) alors (65)
cas ([APPRENTI.ANC] = 2) alors (75)
cas ([APPRENTI.ANC] = 3) alors (85)
)
)
)
Après
selon (
cas ([APPRENTI.AGES] = 1)
alors (
selon (
cas ([APPRENTI.ANC] = 1) alors (35)
cas ([APPRENTI.ANC] = 2) alors (45)
cas ([APPRENTI.ANC] = 3) alors (55)
)
)
cas ([APPRENTI.AGES] = 2)
alors (
selon (
cas ([APPRENTI.ANC] = 1) alors (50)
cas ([APPRENTI.ANC] = 2) alors (60)
cas ([APPRENTI.ANC] = 3) alors (70)
)
)
cas ([APPRENTI.AGES] = 3)
alors (
selon (
cas ([APPRENTI.ANC] = 1) alors (65)
cas ([APPRENTI.ANC] = 2) alors (75)
cas ([APPRENTI.ANC] = 3) alors (85)
)
)
cas ([APPRENTI.AGES] = 4)
alors (100
)
)
JRSNONTRAV : Jours non travaillés
Lors d'un changement de situation en cours de mois, permet d'avoir le nombre de jour correct au total
Avant :
si([H_N0NTRAV.BASE]=0)
alors(
(
si (constante(general.mois_paye)=2)
alors (
si (CONSTANTE(CONTRAT.CIVJOURSTRAVAIL)=CONSTANTE(GENERAL.NBJMOISPAYE))
alors (0)
sinon (30-CONSTANTE(CONTRAT.CIVJOURSTRAVAIL))
)
sinon (30-minimum(constante(contrat.CIVJOURSTRAVAIL);30))
)
*
CONSTANTE(CONTRAT.USEJOURSNONTRAVAIL))
sinon (0)
Après
si([H_N0NTRAV.BASE]=0)
alors(
si (CONSTANTE(CONTRAT.USEJOURSNONTRAVAIL)=0)
alors (0)
sinon (
si (constante(general.mois_paye)=2)
alors (
si (CONSTANTE(CONTRAT.CIVJOURSTRAVAIL)=CONSTANTE(GENERAL.NBJMOISPAYE))
alors (0)
sinon (30-CONSTANTE(CONTRAT.CIVJOURSTRAVAIL)
-
si ((CONSTANTE(CONTRAT.CIVJOURSTRAVAIL)<>CONSTANTE(CONTRAT.CIVJOURSTRAVAIL_EMB))
et (CONSTANTE(CONTRAT.CIVJOURSTRAVAIL_EMB)>=28))
alors (2)
sinon (0)
)
)
sinon (30-minimum(constante(contrat.CIVJOURSTRAVAIL);30))
+
si ((CONSTANTE(CONTRAT.CIVJOURSTRAVAIL)<>CONSTANTE(CONTRAT.CIVJOURSTRAVAIL_EMB)) et (CONSTANTE(CONTRAT.CIVJOURSTRAVAIL_EMB)=31))
alors (1)
sinon (0)
)
)
sinon (0)
Divers
Non résident actif
Ajout d'un système pour le calcul des cotisations des non résidents actifs
https://wikiapp.heberg-eig.fr/books/calcul-de-paye-rubriques/page/non-residents-actifs
PERECO
Ajout du module pour la mise en place du PERECO
https://wikiapp.heberg-eig.fr/books/pereco
https://wikiapp.heberg-eig.fr/books/calcul-de-paye-rubriques/chapter/le-pereco-dans-eig
DSN
Régularisation DSN
On rappelle ici que la régularisation DSN permet de déclarer des éléments qui ont été calculés correctement en paye mais incorrectement déclarés en DSN
Il est désormais possible de faire une régularisation DSN du bloc 58 utilisé pour le net social mais aussi pour les heures supplémentaires exonérées.
Il est également possible de faire une régularisation DSN pour des contrats clos sans qu'il soit nécessaire de faire un bulletin de régularisation. Par contre, il ne sera pas possible de générer la DSN pour un seul matricule d'un contrat clos.
Lorsque l'on fait une régularisation DSN de l'AGCP (urssaf ou AA) avec le code cotisation 018 ou 106 en bloc 81, le bloc 79 code 01 smic fillon est obligatoire. Le programme va le générer automatiquement à zéro s'il n'a pas été spécifié dans la régularisation DSN
Génération DSN
Lorsque l'on génère la DSN pour un matricule, un message d'avertissement s'affiche lorsque le matricule n'existe pas.
Correctif passage statut boeth a non statut dans A rappeler en DSN : utilisation de la date depuis le
Autre
Bulletin de régularisation
La DSN issue d'un bulletin de régularisation utilise les données de la fiche contractuelle.
Lorsque l'on réalise un bulletin de régularisation sur une fiche qui a été clôturé en changement de situation, les modalités reprisent en DSN sont celle du contrat actif.
Toutefois, s'il n'y a pas de contrat actif, ou si ce contrat est dans un autre établissement, les modalités reprises sont celles de la fiche du bulletin de régularisation. Dans ce cas, et UNIQUEMENT dans ce cas, le programme averti qu'il est préférable de faire le bulletin de régularisation sur la dernière fiche contractuelle qui en principe contient les dernières modalités.
Exemple 1 :
- Fiche contrat 1.1.0 sur établissement ET01 clôturé en changement de situation le 31 mars 2024.
- Fiche contrat 1.2.0 sur établissement ET01 à la suite du précédent contrat avec changement d'horaire de 75.84 à 151.67
En mai, on clôture le contrat 1.2.0 mais il est toujours actif. On réalise un bulletin de régularisation sur le contrat 1.1.0. En DSN l'horaire contractuel repris est bien 151.67.
En juin, on refait un bulletin de régularisation sur le contrat 1.1.0. Le message précédent apparait car en DSN, l'horaire contractuel repris sera 151.67 (avec un bloc 41 changement de contrat). Il faut dans ce cas la faire le bulletin de régularisation sur le contrat 1.2.0
Exemple 2 :
- Fiche contrat 1.1.0 sur établissement ET01 clôturé en changement de situation le 31 mars 2024.
- Fiche contrat 1.2.0 sur établissement ET02 à la suite du précédent contrat avec changement d'horaire de 75.84 à 151.67
En mai, on réalise un bulletin de régularisation sur le contrat 1.1.0. Comme il n'est pas dans le même établissement que le contrat 1.2.0, la DSN reprendra les modalités de la fiche 1.1.0 avec un horaire contractuel de 151.67. Il est donc préférable dans ce cas de faire un bulletin de régularisation sur la fiche contrat 1.2.0.
Proposition de contrat
La validation des propositions lorsque la paye est bloquée partiellement est désormais possible après l'accord de l'utilisateur sur un message d'avertissement.
Gestionnaire de régime
Le bouton permet d'afficher les régimes sous forme de tableau. tous les tris et recherche sont possibles et l'export Excel est également réalisable.
Reliquat prime décentralisée
Le module de calcul du reliquat de prime décentralisée a été modifié.
En effet le calcul de la prime décentralisée et donc du reliquat est très variable d'une association à l'autre : prime décentralisée payée en décembre pour l'année en cours, payée en juin et en décembre, payée en janvier pour l'année précédente, payée en juillet en janvier. Et parfois le mode de calcul est différent en fonction de la caractéristique du salarié (cadre/non cadre, catégorie de salarié, etc).
Il est désormais possible de définir une période à cheval sur deux années.
Le reste du mode de fonctionnement ne change pas.
Comptabilisation
Il arrive parfois que lors de la comptabilisation un message d'alerte prévient que le débit est différent du crédit :
Dans la majorité des cas, cela est du au fait que la somme des éléments du brut est différent du brut et la cause peut être multiple :
- La rubrique brut a été modifiée après le calcul de paye : une rubrique a été ajoutée ou enlevée. Il convient alors de recalculer les bulletin concernés.
- La rubrique destinatrice du complément de l'indemnité de congés payés (généralement CP_DIF) a été saisie en régularisation. Cette rubrique ne doit pas être saisie même en régularisation
- Une erreur s'est produite dans le calcul de CP_DIF.
Dans tous les cas, vérifiez sur le bulletin que le brut est bien égal à la somme des éléments du brut
Avec la mise à jour, le programme vérifie que la somme des éléments du brut est bien égale au brut. Si ce n'est pas le cas, un autre message d'alerte est affiché :
Il est alors possible dans certains cas exceptionnel de corriger la comptabilisation automatiquement.