Bonjour,
En Janvier 2025, nous avions rajouté un élément dans la prime d’ancienneté et celle-ci se calculait très bien.
Aujourd’hui ce paramétrage spécifique ne fonctionne plus cad que les absences ne se déduisent plus. c’est assez agaçant quand cela impact un groupe de 10 dossier représentant plus de 500 paies
voici le code qui fonctionnait encore très bien sur les paies de janvier 2025, un ticket a été fait mais vu le temps de réponse moyennant 3 semaines en général j’aimerai si possible trouver une solution rapidement.
Si quelqu’un arrive à comprendre pourquoi mes absences ne déduisent plus ma prime d’ancienneté
begin
//CB - 05/02/2024 - Léna Djilali : #1181949 (prestation) traitement différent par établissement + archivage Init-D01.
//SBL le 07/01/2025 #1621097 Léna Djilali copie dossier 18350
// JPB le 03.03.2017 Ajout de cette variable BANCSAISIE pour pouvoir mettre une saisie dans l'include ou on peut la forcer a -1 pour supprime la D01
BANCSAISIE = 0.0
ForceTauxS = 0
//Bul.SalaireDeBase = Bul.SalaireDeBaseHeuresNormales
If BUL.S41.G01.00.013 <> 10 Then
// pas en forfait jour et Absence complete pas de prime d'anciennete
If BUL.NBHM = 0 Then Return
Endif
//cti 130320 : prise en compte des absences antérieures, quand la Panc n'était pas due, passées sur le mois courant.
HeuresARajouter = 0
MoisAnc = Emp.anciennete + Emp.CcnInt[1]
If MoisAnc >= 36 Then
//print " Prime Anc due : Recherche des absenses du mois concernant une période antérieure sans prime d'Anc."
ii = 0
Do
ii = ii + 1
If ii > Absences_Nombre() Then Exit
MoisDtDebAbs = DateMonth(Absences_DtDeb(ii))
MoisDtFinAbs = DateMonth(Absences_DtFin(ii))
If MoisDtDebAbs < Bul.Mois And MoisDtFinAbs < Bul.Mois Then
// Absence sur un mois antérieur
MoisAncAbs = MoisAnc - (Bul.mois - MoisDtDebAbs)
If MoisAncAbs < 36 Then
//print " Prime Anc non due : les heures d'absence doivent être rajoutées."
NbjCal = DiffDays(Absences_DtDeb(ii),Absences_DtFin(ii))
MoisComplet = False
Select Case MoisDtDebAbs
Case 1,3,5,7,8,9,10,12:
If NbjCal = 31 Then MoisComplet = True
Case 2:
yy = Bul.Annee/4 - Trunc(Bul.Annee/4)
If yy = 0 Then
If NbjCal = 29 Then MoisComplet = True
Else
If NbjCal = 28 Then MoisComplet = True
EndIf
Default:
If NbjCal = 30 Then MoisComplet = True
EndSelect
If MoisComplet = True Then xx = Bul.NbHMnContrat Else xx = NbHTTheoriques(Absences_DtDeb(ii),Absences_DtFin(ii))
HeuresARajouter = HeuresARajouter + xx
//print ii + " HeuresARajouter : " + xx
EndIf
EndIf
Loop
EndIf
if eta.ccnbool[1] = false then
If Ste.BaseCalculAnciennete = 1 Then
TX = Bul.tauxhoraire
Methode = "salaire de base"
Else
TX = Bul.SalminConvh
Methode = "minimum conventionnel"
EndIf
If BUL.S41.G01.00.013 <> "10" Then
// TotHres = Bul.NbhmN + HeuresARajouter
BB = TX * bul.nbhmn
Select case eta.nominterne
case "JOUY","ERAGNY","CERGY":
ii = 0
Do
ii = ii + 1
If ii > HMnombre() Then Exit
// BB = BB + ( TX * HMCoeffv(ii) * HMnbh(ii) )
BB = BB + (Tx * HMCoeffv(ii) * (HMnbh(ii) - HMnbhchs(ii)))
Loop
BB = Round (BB , 2)
BB1 = Round ( TX * 151.67 , 2 )
EndSelect
Else
//Forfaits jours
BB = bul.salairedebase + BUL.MTABSENCES
EndIf
// -------------------------------------------------------
memo = "Prime anciennete sur " + Methode
call rem( Memo )
memo = "Base de référence (151.67) " + Methode + " : " + BB1
call rem( Memo )
memo = "Base pondérée par les heures travaillées : " + BB
call rem( Memo )
// -------------------------------------------------------
else
If Ste.BaseCalculAnciennete = 1 Then
// BB = Bul.salairedebase
BB = Bul.tauxhoraire*bul.nbhmncontrat
Else
// BB = Bul.SalminConv
BB = Bul.SalminConvH*bul.nbhmncontrat
EndIf
endif
If BUL.S41.G01.00.013 = 10 then
BB = Bul.salairedebase + BUL.MTABSENCES
Endif
//BB = BB + BUL.MTABSENCES
Mois = 0
If Emp.CcnInt[1] <> 0 then Mois = Emp.CcnInt[1]
memo = "Ancienneté en mois acquise dans un autre cabinet : " + Emp.CcnInt[1]
call rem( Memo )
memo = "Ancienneté en mois acquise dans ce cabinet : " + Emp.anciennete
call rem( Memo )
Mois = Mois + Emp.anciennete
memo = "Ancienneté totale prise en compte pour le calcul de la prime : " + Mois
call rem( Memo )
tauxs = 0
if Mois >= 36 then tauxs = 4
if Mois >= 72 then tauxs = 7
if Mois >= 108 then tauxs = 10
if Mois >= 144 then tauxs = 13
if Mois >= 180 then tauxs = 16
if Mois >= 216 then tauxs = 18
if Mois >= 240 then tauxs = 20
If BANCSAISIE <> 0 Then
BB = BANCSAISIE
If BB = -1 Then Tauxs = 0
EndIf
If ForceTauxS <> 0 Then TauxS = ForceTauxS
If Tauxs > 0 And BB <> 0 Then
Bases = BB
Exec ("GenereLprime")
x = Bases * tauxs / 100
call stockevar("PANC", x )
EndIF
end