Correction et mise à jour du gestionnaire de rubrique

Nouvelles rubriques

MALADIE_AM : Cotisation majoration maladie Alsace Moselle.

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é
FORMATION_TH : Formation professionnelle continue travailleur handicapé
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

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 
si (CONSTANTE(CONTRAT.PAS_RESIDENTETRANGER)=1)
alors ([BC_BRUT_URSAFF.MONTANT])
sinon (0)

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

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

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 :

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)

 


Revision #32
Created 21 May 2024 16:40:03 by Valéry HUMEZ
Updated 12 June 2024 09:13:10 by Valéry HUMEZ