# Correction et mise à jour du gestionnaire de rubrique

### Nouvelles rubriques

##### <span style="text-decoration: underline;">MALADIE\_AM : </span>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

<span style="color: #008000;"><span style="color: #000000;">[https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-taux-de-cotisations/la-cotisation-maladie---maternit/cas-particuliers.html](https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-taux-de-cotisations/la-cotisation-maladie---maternit/cas-particuliers.html)</span></span>

##### <span style="text-decoration: underline;">PREV\_TH :</span> Prévoyance travailleur handicapé

- Base de cotisation BC\_SALDIR

##### <span style="text-decoration: underline;">FORMATION\_TH</span> : Formation professionnelle continue travailleur handicapé

- Base de cotisation BC\_SALDIR

##### <span style="text-decoration: underline;">ACCIDENT\_TH :</span> Accident du travail travailleur handicapé

Ajout de accident\_TH  : Base de cotisation BC\_CPLDDTE  CTP 999  et CTP1  122

##### <span style="text-decoration: underline;">V\_PLAFPREV</span> : Nombre de plafond prévoyance à appliquer<span style="text-decoration: underline;">  
</span>

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 :

[![image-1716382351642.png](https://wikiapp.heberg-eig.fr/uploads/images/gallery/2024-05/scaled-1680-/image-1716382351642.png)](https://wikiapp.heberg-eig.fr/uploads/images/gallery/2024-05/image-1716382351642.png)

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 -&gt; 3
- NB\_TRC\_C -&gt; 4
- NB\_TRB\_NC -&gt; 2
- NB\_TRC\_NC -&gt; 4

<span style="text-decoration: underline;">A quoi ça sert ?</span>

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)
```

<p class="callout warning">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</p>


#### <span style="color: #008000;"><span style="color: #000000;">Non résident actif</span></span><span style="text-decoration: underline;"><span style="color: #008000;"><span style="color: #000000; text-decoration: underline;">  
</span></span></span>

<span style="color: #008000;"><span style="color: #000000;">Pour l'assurance maladie, la cotisation suivante a été créée.  
</span></span>

##### <span style="color: #008000;"><span style="color: #000000;"><span style="text-decoration: underline;">MALADIE\_NRA</span> : Cotisation maladie non résidents actif </span></span>

- 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 1<sup>er</sup> 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.

<p class="callout info">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</p>

<span style="color: #008000;"><span style="color: #000000;"><span style="text-decoration: underline;">Pour la retenue à la source, plusieurs éléments ont été créés</span>.</span></span><span style="text-decoration: underline;"><span style="color: #008000;"><span style="color: #000000; text-decoration: underline;">  
</span></span></span>

<span style="color: #008000;"><span style="color: #000000;">Une liste de constante : RETSOURCE : Permet de renseigner les valeurs du barème MENSUEL pour le taux d'imposition  
</span></span>

- <span style="color: #008000;"><span style="color: #000000;">1 : Montant mensuel maximum pour la fraction à 0%  : 1402€</span></span>
- <span style="color: #008000;"><span style="color: #000000;">2 : Montant mensuel maximum pour la fraction à 12% : 4066€</span></span>
- <span style="color: #008000;"><span style="color: #000000;">3 : Montant journalier maximum pour la fraction à 0%  : 54€</span></span>
- <span style="color: #008000;"><span style="color: #000000;">4 : </span></span><span style="color: #008000;"><span style="color: #000000;">Montant journalier maximum pour la fraction à 12%  : 156€</span></span>
- <span style="color: #008000;"><span style="color: #000000;">5 : Pourcentage d'abattement du net imposable : 10%</span></span>

<span style="color: #008000;"><span style="color: #000000;">Pour rappel , le barème est le suivant en 2024 :</span></span>

[![image-1716370668823.png](https://wikiapp.heberg-eig.fr/uploads/images/gallery/2024-05/scaled-1680-/image-1716370668823.png)](https://wikiapp.heberg-eig.fr/uploads/images/gallery/2024-05/image-1716370668823.png)

##### <span style="text-decoration: underline;">RET\_JRSTRAV :</span> 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])
```

##### <span style="color: #008000;"><span style="color: #000000;"><span style="text-decoration: underline;">RET\_SOURCE</span> : Retenue cotisation retenue à la source à ajouter dans le gestionnaire de régime</span></span>

<p class="callout info"><span style="color: #008000;"><span style="color: #000000;">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.</span></span></p>

##### <span style="color: #008000;"><span style="color: #000000;"><span style="text-decoration: underline;">BC\_RET\_SOURCE</span> : Base de cotisation de la retenue à la source  
</span></span>

```
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)
```

##### <span style="text-decoration: underline;">Base de CSG-CRDS</span>

<p class="callout warning">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.</p>

<span style="color: #008000;"><span style="color: #000000;">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</span></span>


### Correctifs

##### <span style="text-decoration: underline;">V\_NEWAGCP.HREMU :</span> 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]
```

<div id="bkmrk-apr%C3%A8s"><div>Après</div></div><div id="bkmrk--2"></div>

```
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]
```

##### <span style="text-decoration: underline;">APPRENTI.ABTBRANCHE :</span> 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é&gt;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
                   )
         )
```

##### <span style="text-decoration: underline;">JRSNONTRAV :</span> 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)

```