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

https://www.urssaf.fr/portail/home/employeur/calculer-les-cotisations/les-taux-de-cotisations/la-cotisation-maladie---maternit/cas-particuliers.html

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 :

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 -> 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 :

    image-1716370668823.png

    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]
      Après
      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)