Rubrique « Indemnité de rupture conventionnelle » (code 9939) (RUB_GAIN=0 : retenue, info ou technique selon usage). Inactive à ce jour. Une seule variante de formule définie.
Explication
Cette règle calcule le traitement social et fiscal d'une indemnité de rupture conventionnelle versée au salarié : elle détermine quelle part est exonérée de cotisations et de CSG, et quelle part reste soumise. Elle ne s'affiche pas sur le bulletin mais alimente d'autres rubriques liées.
Le traitement se fait en plusieurs cas. Premier cas, si un montant a été forcé manuellement pour un salarié ayant moins d'un an d'ancienneté, ce montant est repris directement comme montant exonéré et comme base du forfait social, et le calcul s'arrête là.
Deuxième cas, si le salarié est en droit de partir à la retraite, l'indemnité négociée est intégralement considérée comme du brut soumis à cotisations.
Dans tous les autres cas, la règle effectue d'abord trois contrôles bloquants : le motif de fin de contrat doit bien être « Rupture conventionnelle », l'indemnité conventionnelle doit être renseignée, et l'indemnité négociée ne peut pas être inférieure à l'indemnité conventionnelle. Si l'une de ces conditions n'est pas respectée, un message d'erreur est affiché et le calcul est interrompu.
Si les contrôles passent, la règle calcule la limite d'exonération en retenant le montant le plus avantageux entre l'indemnité conventionnelle, le double de la rémunération brute de l'année précédente, et la moitié de l'indemnité négociée, le tout plafonné à deux plafonds annuels de la sécurité sociale. Si l'ancienneté est inférieure à un an, la référence à l'indemnité conventionnelle est mise à zéro.
À partir de cette limite, la part qui dépasse devient le brut soumis à cotisations salariales. Pour la CSG, seul ce qui excède l'indemnité conventionnelle est soumis, dans la limite du plafond calculé. Le montant exonéré de CSG correspond au plus petit entre l'indemnité négociée, l'indemnité conventionnelle et six plafonds annuels.
// Ne sédite pas sur le bulletin.
// Déclenche la rurique de cotisation ????
// Déclenche la rubrique 82405
//Rubriques liées par compteurs : 9948 - 77005 - 80105- 80100-72800
si montant_forcée_moins1an <> 0 alors
Montant_exonérée = montant_forcée_moins1an
XBase_Forfait_Social = montant_forcée_moins1an
quitter
finsi
si droit_retraite_Oui <> '' alors
Montant_brut = Ind_RUPTURE_NEGOCIEE
quitter
sinon
// TESTS DE VALIDITE PREALABLES
si motif_fin_contrat <> 'RUPTURE CONVENTIONNELLE' alors
Message = ProvoquerErreur('Le motif de fin contrat doit être RUPTURE CONVENTIONNELLE')
Sortie = Interrompre
finsi
si Indemnité_conventionnelle < 0 alors
Message = ProvoquerErreur('Indemnitée conventionnelle doit être renseignée')
Sortie = Interrompre
finsi
si Ind_RUPTURE_NEGOCIEE < Indemnité_conventionnelle alors
Message = ProvoquerErreur('Indemnité négociée ne peut être inférieure à Indemnitée conventionnelle')
Sortie = Interrompre
finsi
Limite_salaire = brut_ursaff_nmoins1 * 2
Limite_plafond = plafond_sécurité * 12 * 2
Lim_demi_indemnite = Ind_RUPTURE_NEGOCIEE/2
Limite_indemnité_convention = Indemnité_conventionnelle
Limite_plafond_Fiscal = plafond_sécurité * 12 * 6
si ancienneté < 1 alors
Limite_indemnité_convention = 0
finsi
// ex brut dans la limite de 2 plafonds (montant le plus eleve : Indemn conv, 2 fois la rem année préced, 1/2 indemnité)
Limite_Brut = min(max(Limite_salaire; Lim_demi_indemnite );Limite_plafond)
// ASSUJETISSEMENT COTISATIONS SALARIALES
Montant_brut = max(Ind_RUPTURE_NEGOCIEE - Limite_Brut;0)
// ASSJETISSEMENT CSG
Montant_non_exonérée_CSG = max(Ind_RUPTURE_NEGOCIEE-Indemnité_conventionnelle;0)
si Montant_non_exonérée_CSG > Limite_Brut alors
Montant_non_exonérée_CSG = Limite_Brut
finsi
// MONTANT MONTANT EXONERE DE CSG
Montant_exonérée = min (Ind_RUPTURE_NEGOCIEE;Indemnité_conventionnelle;Limite_plafond)
// MONTANT IMPOSABLE
Narration structurée
Arbre des cas et actions extrait du code par le parseur CEGI.
Résumé : Formule contenant 2 branche(s) conditionnelle(s).
Si (`montant_forcée_moins1an` différent de 0)
Alors :
Affecter à `Montant_exonérée` la valeur de `montant_forcée_moins1an`
Affecter à `XBase_Forfait_Social` la valeur de `montant_forcée_moins1an`
Sortir de la formule sans calcul
Si (`droit_retraite_Oui` différent de « »)
Alors :
Affecter à `Montant_brut` la valeur de `Ind_RUPTURE_NEGOCIEE`
Sortir de la formule sans calcul
Sinon :
Si (`motif_fin_contrat` différent de « RUPTURE CONVENTIONNELLE »)
Alors :
Affecter à `Message` la valeur de déclencher une erreur(« Le motif de fin contrat doit être RUPTURE CONVENTIONNELLE »)
Affecter à `Sortie` la valeur de `Interrompre`
Si (`Indemnité_conventionnelle` inférieur à 0)
Alors :
Affecter à `Message` la valeur de déclencher une erreur(« Indemnitée conventionnelle doit être renseignée »)
Affecter à `Sortie` la valeur de `Interrompre`
Si (`Ind_RUPTURE_NEGOCIEE` inférieur à `Indemnité_conventionnelle`)
Alors :
Affecter à `Message` la valeur de déclencher une erreur(« Indemnité négociée ne peut être inférieure à Indemnitée conventionnelle »)
Affecter à `Sortie` la valeur de `Interrompre`
Affecter à `Limite_salaire` la valeur de (`brut_ursaff_nmoins1` multiplié par 2)
Affecter à `Limite_plafond` la valeur de ((`plafond_sécurité` multiplié par 12) multiplié par 2)
Affecter à `Lim_demi_indemnite` la valeur de (`Ind_RUPTURE_NEGOCIEE` divisé par 2)
Affecter à `Limite_indemnité_convention` la valeur de `Indemnité_conventionnelle`
Affecter à `Limite_plafond_Fiscal` la valeur de ((`plafond_sécurité` multiplié par 12) multiplié par 6)
Si (`ancienneté` inférieur à 1)
Alors :
Affecter à `Limite_indemnité_convention` la valeur de 0
Affecter à `Limite_Brut` la valeur de prendre le minimum(prendre le maximum(`Limite_salaire`, `Lim_demi_indemnite`), `Limite_plafond`)
Affecter à `Montant_brut` la valeur de prendre le maximum((`Ind_RUPTURE_NEGOCIEE` moins `Limite_Brut`), 0)
Affecter à `Montant_non_exonérée_CSG` la valeur de prendre le maximum((`Ind_RUPTURE_NEGOCIEE` moins `Indemnité_conventionnelle`), 0)
Si (`Montant_non_exonérée_CSG` supérieur à `Limite_Brut`)
Alors :
Affecter à `Montant_non_exonérée_CSG` la valeur de `Limite_Brut`
Affecter à `Montant_exonérée` la valeur de prendre le minimum(`Ind_RUPTURE_NEGOCIEE`, `Indemnité_conventionnelle`, `Limite_plafond`)