Skip to main content

Bonjour,

je viens chercher de l’aide auprès de vous concernant la valorisation de l’expérience professionnelle dans la CCN S006.

J’ai consulté plusieurs conversations sur le sujet mais je ne trouve pas de réponse à ma question.

Je souhaiterais indiquer une ancienneté de 10.5 mois pour une salariée. Cependant, quand j’indique 125 mois, alors Silaé calcule 10 ans et si j’indique 130 mois, je passe directement à 11 ans.

Savez-vous s’il est possible de mentionner les ½ années dans l’expérience ?

 

Merci d’avance,

Bonjour,

 

Je rajoute une demande à ma question d’hier.

Est-il possible de me transmettre une capture d’écran de la fonction calcul D01 que vous avez dans votre dossier CCN S006, svp ?

Merci à tous.

Bonne journée


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.CCNDate 2] 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.CcnDouble 2]
    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


Commenter