Bonjour,
Voici le paramétrage du libellé de base de la D01 de la S006 :
Begin
NewTraitement = True
ListAbsNonProrata = ""
// BSZ - #72641 - Gestion automatique de l'ETP
DebutContrat = Emp.DtDebContrat
DateDeb = DebutContrat
MoisBascule = DateMonth(DebutContrat)
// Détermination du mois à récupérer
If bul.mois < MoisBascule Then
DateDeb = date(01,MoisBascule,bul.annee-1))
else
DateDeb = date(01,MoisBascule,bul.annee))
Endif
DateFin = DateAddDays(DateAddMonths(DateDeb,1),-1)
// Récupération des heures contrat à chaque mois anniversaire contrat et calcul du coeffficient de présence
Call CumP_FixePeriode2(DateDeb,DateFin,True)
CoefCnt = CumP_NbhMNContrat() / Mtpart.DUREELEGALETRAVM
PtsValAncProf = 0
// Détermination de l'ETP d'après le coefficient de présence
// Application de l'ETP >= 50%
If CoefCnt >= MtPart.Seuil_1_Pct_ETP Then
PtsValAncProf = 1
Else
// Application de l'ETP < 50%
If CoefCnt >= MtPart.Seuil_2_Pct_ETP Then
PtsValAncProf = 0.50
Else
// Application de l'ETP < 23%
PtsValAncProf = 0.25
Endif
Endif
Include("INIT-D01")
DateClassif = Date(1,1,2024)
If Bul.PeriodeTaux >= DateClassif and AvenantApplicable(DateClassif ) = True then
// Valorisation de l'expérience professionnelle à/c du 01/01/24 (= Ancienneté acquise au sein de la branche pro (ValAncProf) + acquisition de compétences dans l'emploi repère (ValCompEmpR))
// ***Valeur du point***
Pt1 = Ccn.PT1
If Mtpart.POINT <> 0 then Pt1 = Mtpart.POINT
Memo = "Valeur du point annuel : " + Pt1 + " €"
Call Rem(Memo)
Memo = "------------"
Call Rem(Memo)
// ***Valorisation de l'ancienneté acquise au sein de la branche professionnelle (ValAncProf)***
ValAncProf = 0
// ETP du salarié
Select case Emp.CcnInt(9]
Case "1":
// Application de l'ETP>= 50%
PtsValAncProf = 1
Case "2":
// Application de l'ETP< 50%
PtsValAncProf = 0.50
Case "3":
// Application de l'ETP< 23%
PtsValAncProf = 0.25
Default:
// Pas d'ETP choisi par défaut on fait rien si pas d'ETP généré automatiquement
If PtsValAncProf = 0 Then
PtsValAncProf = 0
Print "/!\ Le calcul automatique de l'ETP n'a pu se faire et pas de choix de l'ETP du salarié dans le questionnaire CCN salarié"
Print "donc pas de calcul possible de valorisation de l'expérience professionnelle"
Endif
EndSelect
//Ni #73180 12022024 - Permet d'ajuster l'ancienneté a prendre en compte
AjustAncCCN = 0
If Emp.CCNDateo2] <> "01/01/0001 00:00:00" and Emp.CCNDoublee7] <> 0 then
If Bul.periode >= Emp.CCNDate2] then
AncADateDefini = CalculeAncienneteA(Emp.CCNDatee2])
NbMoisAncDefini = Emp.CCNDoublea7]
If NbMoisAncDefini < AncADateDefini then
AjustAncCCN = AncADateDefini - NbMoisAncDefini
AjustAncCCN = -AjustAncCCN
Else
AjustAncCCN = NbMoisAncDefini - AncADateDefini
Endif
Endif
Endif
// Calcul
If AjustAncCCN <> 0 then
AncProf = Emp.Anciennete + AjustAncCCN
Memo = "Ancienneté dans la convention collective initialisée via le questionnaire CCN salarié"
Call Rem(Memo)
Memo = "Ancienneté : " + NbMoisAncDefini + " mois applicable au salarié en date du " + DateToString(Emp.CCNDate>2],"dd/MM/yyyy")
Call Rem(Memo)
Memo = "------------"
Call Rem(Memo)
Else
AncProf = Emp.Anciennete + Sal.NbMAncienneteProfAvEmb
Endif
AncProfAn = Trunc(AncProf/12)
Memo1 = "Ancienneté acquise au sein de la branche professionnelle : " + AncProfAn + " an(s)"
If AncProf >= 12 then
Call Rem(Memo1)
RemAncProf = PtsValAncProf * AncProfAn * Pt1
Memo = "Valorisation annuelle liée à l'ancienneté dans la branche professionnelle : " + PtsValAncProf + " (pts) * " + AncProfAn + " an(s) * " + Pt1 + " € (VdP) = " + Round(RemAncProf,2) + " €"
Call Rem(Memo)
ValAncProf = RemAncProf / 12
Memo = "Soit une valorisation mensuelle : " + Round(RemAncProf,2) + " € / 12 = " + Round(ValAncProf,2) + " €"
Call Rem(Memo)
Memo = "------------"
Call Rem(Memo)
Endif
// ***Points de valorisation de compétences acquises dans l’emploi repère (ValCompEmpR)***
ValCompEmpR = 0
JrCompEmpRFP = Emp.CcnDoublea4]
PtsCompEmpREAE = Emp.CcnDouble 5]
// Pts Max
Select case Emp.CcnInta9]
Case "3":
// Application de l'ETP< 23%
MaxJrCompEmpRFP = 2.5
MaxPtsCompEmpREAE = 2
Case "2":
// Application de l'ETP< 50%
MaxJrCompEmpRFP = 5
MaxPtsCompEmpREAE = 4
Case "1":
// Application de l'ETP>= 50%
MaxJrCompEmpRFP = 10
MaxPtsCompEmpREAE = 8
Default:
// Pas d'ETP choisi par défaut on ne fait rien
MaxJrCompEmpRFP = 0
MaxPtsCompEmpREAE = 0
EndSelect
// Vérif. Pts Max
If JrCompEmpRFP > MaxJrCompEmpRFP then JrCompEmpRFP = MaxJrCompEmpRFP
RemCompEmpRFP = 0
If JrCompEmpRFP > 0 then
RemCompEmpRFP = JrCompEmpRFP * 0.7 * Pt1
Memo = "Valorisation liée aux journées de formation suivies : " + JrCompEmpRFP + " (jrs FP) * 0.7 * " + Pt1 + " € (VdP) = " + Round(RemCompEmpRFP,2) + " €"
Call Rem(Memo)
Endif
// Désactivation de la vérif. des pts max en raison du "capital" de pts non attribués en cours d'acquisition mais délivrable au terme des 72 mois.
// If PtsCompEmpREAE > MaxPtsCompEmpREAE then PtsCompEmpREAE = MaxPtsCompEmpREAE
RemCompEmpREAE = 0
If PtsCompEmpREAE > 0 then
RemCompEmpREAE = PtsCompEmpREAE * Pt1
Memo = "Valorisation liée à l'entretien annuel d'évaluation : " + PtsCompEmpREAE + " (pts) * " + Pt1 + " € (VdP) = " + Round(RemCompEmpREAE,2) + " €"
Call Rem(Memo)
Endif
If RemCompEmpRFP > 0 or RemCompEmpREAE > 0 then
RemCompEmpR = RemCompEmpRFP + RemCompEmpREAE
Memo = "Valorisation annuelle liée à l’acquisition de compétences dans l’emploi repère : " + Round(RemCompEmpRFP,2) + " € (Val FP) + " + Round(RemCompEmpREAE,2) + "€ (Val EAE) = " + Round(RemCompEmpR,2) + " €"
Call Rem(Memo)
ValCompEmpR = RemCompEmpR / 12
Memo = "Soit une valorisation mensuelle : " + Round(RemCompEmpR,2) + " € / 12 = " + Round(ValCompEmpR,2) + " €"
Call Rem(Memo)
Memo = "------------"
Call Rem(Memo)
Endif
// Valorisation finale de l'expérience professionnelle (ValXPPro)
ValXPPro = ValAncProf + ValCompEmpR
Memo = "Valorisation finale mensuelle de l'expérience professionnelle : " + Round(ValAncProf,2) + " € (ValAncProf) + " + Round(ValCompEmpR,2) + " € (ValCompEmpR) = " + Round(ValXPPro,2) + " €"
Call Rem(Memo)
// Affecte le taux horaire des absences
Call AffecteLibellePrimeEnCours_InclusCalcMajorationTxHAbs(True)
If ValXPPro > 0 then
MethodeCalcul = 2
Bases = ValXPPro
Tauxs = 0.0
Liblong = "Valorisation expérience professionnelle"
Call Stockevar("ValXPPro",Bases)
Marque1 = "ValPro"
Exec("GenereLprime")
Endif
Else
// RIS applicable avant 01/01/24
// #14762
//If BUL.S41.G01.00.013 = "10" then
// BB = bul.salairedebase + Bul.MtAbsences
//Else
// Tx = Bul.tauxhoraire
// BB = Tx * Bul.NbhmN
// If ETA.CcnBoolo2] = false then
// ii = 0
// Do
// ii = ii + 1
// If ii > HMnombre() Then Exit
// BB = BB + ( Tx * HMCoeffv(ii) * HMnbh(ii) )
// Loop
// Endif
//Endif
If Ste.BaseCalculAnciennete = 1 Then
BB = Bul.SalaireDeBase
Else
BB = Bul.SalMinConvH * Bul.NbHMNContrat
If Bul.S41.G01.00.013 <> "10" then
Memo = "Base : " + Round(Bul.SalMinConvh,4) + " (taux horaire SMC) * " + Bul.NbHMNContrat + " h contrat = " + Round(BB,2)
Call Rem(Memo)
Endif
Endif
If Bul.S41.G01.00.013 = "10" then
// Forfaits jours
x = MtPart.FORFJOURCOMPLET - 1
If Bul.FJNbJAnContientJS = True then
FJ = Bul.FJNbJAn - 1
Else
FJ = Bul.FJNbJAn
Endif
If BB = 0 then
If Ste.BaseCalculAnciennete = 1 then
BB = Bul.SalaireDeBase
Else
If FJ < x then
SMC = Bul.SalMinConvH * 151.67
BB = Round((SMC * FJ / x),2)
Memo = "Base proratisée : " + Round(SMC,2) + " * " + FJ + " / " + x + " = " + Round(BB,2)
Call Rem(Memo)
Else
BB = Bul.SalMinConvM
Endif
Endif
Endif
Endif
If NewTraitement = False Then
// Prorata d'absence pour les absences non rémunérées
xx = NbJCalendairesAbsences(Bul.Periode,Bul.Date,"10+13+14+64+05+06+01+14+52+33+32+63+65+22+23+38+72+70+71+18+52+54+89+69+16+98+17+99+21+62+88+86+87+80+81")
xx1 = NbJCalendairesAbsences(Bul.Periode,Bul.Date,"04+08+09+11")
NbjMaintenue1 = NbjCalendairesMaintiens(Bul.Periode,Bul.Date,"04+08+09+11",1)
xx1 = xx1 - NbjMaintenue1
CumNbJAbs = xx + xx1
If CumNbJAbs > 0 then
// Affecte le taux horaire des absences
Call AffecteLibellePrimeEnCours_InclusCalcMajorationTxHAbs(True)
Endif
Else
NbJrsAbsHorsCP = Bul.NbjCalendairesAbsencesHorsCp
// #63049 : réintégration des absences sans retenues
// #68825 : Prise en compte des absences antérieures au mois courant (non comptabilisées dans Bul.NbjCalendairesAbsencesHorsCp)
NbJrsAbsHorsCP_SansRetenues = 0
NbJrsAbsHorsCP_Anterieures = 0
NbAbs = Absences_Nombre()
ii = 0
Do
ii = ii + 1
If ii > NbAbs Then Exit
CodeAbsence = Absences_CodeAbsence(ii)
Dadsu = Absences_CodeDadsu(ii)
NbJii = DiffDays(Absences_DtDeb(ii), Absences_DtFin(ii))
Select Case CodeAbsence
Case "260", "301", "310", "320", "330", "335", "340", "341", "350", "360", "361", "362", "410", "412", "414", "415", "416", "420", "510", "530", "631" :
// Absences sans retenues
NbJrsAbsHorsCP_SansRetenues = NbJrsAbsHorsCP_SansRetenues + NbJii
If Absences_DtFin(ii) < Bul.Periode Then
// #68825 : Prise en compte des absences hors CP antérieures au mois courant sans retenues
NbJrsAbsHorsCP_Anterieures = NbJrsAbsHorsCP_Anterieures + NbJii
EndIf
Case "300":
// #68825 : Abs CP
Default:
// #68825 : Prise en compte des absences hors CP antérieures au mois courant avec retenues
If Absences_DtFin(ii) < Bul.Periode Then
NbJrsAbsHorsCP_Anterieures = NbJrsAbsHorsCP_Anterieures + NbJii
EndIf
EndSelect
Loop
NbJrsAbsHorsCP = NbJrsAbsHorsCP + NbJrsAbsHorsCP_Anterieures - NbJrsAbsHorsCP_SansRetenues
If NbJrsAbsHorsCP <> 0 Then
Call Rem("Assiette : " + BB)
Call Rem("Nombre jours de la période : " + Bul.NbjMois)
VJ = BB / Bul.NbjMois
VJ = Round(VJ,2)
Call Rem("Valeur journalière : " + VJ + " = " + BB + " / " + Bul.NbjMois)
Call Rem("---")
Call Rem("Nombre jours d'absence : " + NbJrsAbsHorsCP)
MtAbs = VJ * NbJrsAbsHorsCP
MtAbs = Round(MtAbs,2)
Call Rem("Montant des absences : " + MtAbs + " = " + VJ + " * " + NbJrsAbsHorsCP)
Call Rem("---")
ii = 0
OptionDetail = 2
Nb = DetailMaintiensSelonDetail_Nombre(OptionDetail)
MtMaintien = 0
Do
ii = ii + 1
If ii > Nb Then Exit
If DetailMaintiensSelonDetail_CodeDadsu(OptionDetail,ii) <> ListAbsNonProrata Then
TxMaintien = DetailMaintiensSelonDetail_Taux(OptionDetail,ii)
NbJMaintien = DetailMaintiensSelonDetail_NbJours(OptionDetail,ii)
MtMaintienEnCours = VJ * NbJMaintien * TxMaintien / 100
MtMaintienEnCours = Round(MtMaintienEnCours,2)
Call Rem(NbJMaintien + " jours maintenu à " + TxMaintien + "%")
Call Rem("Montant maintenu à réintégrer : " + MtMaintienEnCours + " = " + NbJMaintien + " * " + VJ + " * " + TxMaintien + " / 100")
MtMaintien = MtMaintien + MtMaintienEnCours
Call Rem("---")
EndIf
Loop
BBOri = BB
BB = BB - MtAbs + MtMaintien
If Round(BB,0) = 0 Then BB = 0
Call Rem("Assiette proratisé : " + BB + " = " + BBOri + " - " + MtAbs + " + " + MtMaintien)
EndIf
EndIf
Tauxs = Emp.CcnDouble2]
If Tauxs = 0 and EMP.ANCIENNETE0101 > 12 then print "Attention, vérifiez si ce salarié peut bénéficier de la RIS"
// Complément de rémunération Fct détaché.
CompRem = StockVar("SDBCompRem")
If CompRem <> 0 Then BB = CompRem
If Tauxs <> 0 and BB <> 0 then
Bases = BB
x = Bases * Tauxs / 100
Call Stockevar("PANC",x)
Exec("GenereLprime")
Endif
Endif
End
Bonjour Virginie,
J’ai le même problème sur mon dossier, la valorisation de l’expérience ne se calcule pas seule depuis la modification de la CCN, alors que le montant devrait se modifier à chaque augmentation de l’ancienneté des salariées (si j’ai bien compris).
N’ayant pas de réponse de SILAE, j’ai créé une ligne de “Valorisation Expérience Prof” (B15.4) et en recherchant une solution je suis tombée sur votre commentaire.
Pouvez vous me préciser s’il faut copier et coller votre formule dans “paramétrage - Fonction Calcul”, ainsi que le code la fonction.
Merci par avance de votre aide,
Aline