je dois créer une prime d’ancienneté sur une population ayant plus ou = 20 ans d’ancienneté.
cette prime doit apparaître sur une ligne différente du salaire de base, et doit correspondre a 2% du salaire mensuel.
Malgré plusieurs tentatives je n’y arrive pas du tout 😑
Begin ForceBaseS = 0 Exec("Lprime_D01")
if emp.anciennete >= 240 then tauxs = 2 If ForceBaseS <> 0 Then BaseS = ForceBaseS TauxS = 100 end
voici un exemple de saisie mais cela ne déclenche rien
je ne suis pas du tout à l’aise avec les fonctions calculs j’ai beaucoup de mal à comprendre le fonctionnement des écritures.
Merci beaucoup pour votre aide !!
Meilleure réponse par Florent RABIN
Bonjour,
Votre salarié a bien sa classification de renseignée en A019 dans sa fiche salarié en car si c’ets le cas sur un dossier test ca se déclenche bien donc pas de raison.
Ok j’ai vu pas de FC “INIT-D01” existante qui aurait pu être utilisée pour inhiber le déclenchement dans le dossier.
Lorsque vous avez créé le libellé de Prime D01, vous avez bienfait le choix CCN de A019? Logiquement si vous avez des salariés en A019 et d’autres sans CCN attribuées dans leur fiche par exemple, silae propose les deux choix pour créer un libellé et forcer la D01. Il faut bien choisir la CCN si vous voulez que ca impact vos salariés.
Dernière question, c’est une ligne supplémentaire de prime ancienneté que vous voulez mettre ou elle vient écraser la prime d’ancienneté qui est conventionnelle A019? Ou bien c’est pour des salariés sans CCN?
je vois que la prime D01 existe mais ne s’applique pas au dossier.
je reprends le sujet je ne sais donc pas si c’est une volonté du client
je suis allé dans la fiche société mais je n’ai pas trouvé de coche pour activer ou annuler le déclenchement de cette prime juste une coche pour le choix de la base de calcul
Vous pouvez peut-être voir dans les fonctions Calculs s’il en existe une qui s’appelle Init-D01. Ca voudrait dire que la prime d’ancienneté a été désactivée manuellement.
Vous pouvez peut-être voir dans les fonctions Calculs s’il en existe une qui s’appelle Init-D01. Ca voudrait dire que la prime d’ancienneté a été désactivée manuellement.
Bonjour
je vous répond ici, j’ai bien essayé ce code
Begin
ForceTauxS = 0 Include("INIT-D01")
BB = Bul.SalaireDeBase
TauxS = 0 If Emp.anciennete >= 0 Then TauxS = 0 If Emp.anciennete >= 240 Then TauxS = 2
If ForceTauxS <> 0 Then TauxS = ForceTauxS BaseS = BB If Tauxs > 0 and BaseS <> 0 Then Exec ("GenereLprime") End
dans prime comme ceci.
j’a également vérifier dans mes fonction calcul et je n’ai pas de init-d01
et pourtant lorsque je relance mes paies rien ne se déclenche.
y a t il une manipulation supplémentaire à faire ?
Votre salarié a bien sa classification de renseignée en A019 dans sa fiche salarié en car si c’ets le cas sur un dossier test ca se déclenche bien donc pas de raison.
Ok j’ai vu pas de FC “INIT-D01” existante qui aurait pu être utilisée pour inhiber le déclenchement dans le dossier.
Lorsque vous avez créé le libellé de Prime D01, vous avez bienfait le choix CCN de A019? Logiquement si vous avez des salariés en A019 et d’autres sans CCN attribuées dans leur fiche par exemple, silae propose les deux choix pour créer un libellé et forcer la D01. Il faut bien choisir la CCN si vous voulez que ca impact vos salariés.
Dernière question, c’est une ligne supplémentaire de prime ancienneté que vous voulez mettre ou elle vient écraser la prime d’ancienneté qui est conventionnelle A019? Ou bien c’est pour des salariés sans CCN?
Oui la C069 ok je comprends mieux, mais dans vos copies ecran il y avait indiqué la A019, donc cela portait à confusion.
Alors ce qu eje ferai selon ce que vous voulez faire.
Si c’est juste rajouter une prime d’ancienneté supplémentaire en plus de la garantie ancienneté qui existe deja conventionnellement, il suffit de faire une fonction calcul INIIT-PCCN et mettre ceci dedans:
BaseAnc = Bul.SalaireDeBase If Emp.anciennete >= 240 Then TauxAnc = 2 else TauxAnc = 0 If TauxAnc <> 0 then Exec("Lprime_D01.1") methodecalcul = 1 BaseS = BaseAnc Tauxs = TauxAnc Liblong = "Prime Ancienneté" x = Bases * Tauxs /100 Call stockevar("PrimeAnc",x) If Tauxs > 0 and BaseS <> 0 Then Exec ("GenereLprime") endif
Libre à vous de modifier edes choses si besoin (pas le libellé, il faut D01.1 déclenché car si vous mettez D01 vous allez avoir deux fois la même prime avec même bases et taux)
Ca donne ceci:
Deuxième option vous voulez que la garantie ancienneté n’apparaisse pas, qu’il n’y est que la Prime (ca me semble pas la bonne solution car on viendrait à l’encontre du minimum conventionnel donc bien alerter le client)
Vous pouvez garder le paramétrage ci dessus et ce coup ci mettre la D01 au lieu de D01.1 et ensuite vous créez une fonction calcul INIT-D01 et mettez return dedans. Ca va supprimer la garantie et laissez que votre prime en D01
j’ai bien relu tous les postes, mais je ne trouve pas la solution. j’ai une entreprise qui applique une prime d’ancienneté en plus de la garantie d’ancienneté.
Voici le script que j’ai effectuer dans ma fonction mais cela ne fonctionne pas, qui pourrais m’aider ?
Begin
// Calcul de l'ancienneté en années Anciennete = DateDiff("yyyy", Bul.dateEmbauche, Bul.datePaie)
// Vérification que c'est le mois anniversaire du contrat If Month(Bul.datePaie) = Month(Bul.dateEmbauche) Then
// Détermination du montant de la prime via calcul Mprime = 0 If Anciennete >= 5 AND Anciennete < 10 Then Mprime = 300 If Anciennete >= 10 AND Anciennete < 15 Then Mprime = 600 If Anciennete >= 15 AND Anciennete < 20 Then Mprime = 900 If Anciennete >= 20 AND Anciennete < 25 Then Mprime = 1200 If Anciennete >= 25 Then Mprime = 1500 // englobe 25, 30, 35, 40 ans
// Vérification que la prime est non nulle If Mprime <> 0 Then Exec("Lprime_D02.1") methodeCalcul = 1 // Base x Taux Bases = 1 // Base fictive = 1, on calcule tout dans Tauxs Tauxs = Mprime // Le montant réel devient le taux multiplié par la base Liblong = "Prime d'ancienneté calculée pour " + Anciennete + " années" Memo = "Prime calculée le mois anniversaire du contrat : " + Mprime + "€" Call Rem(Memo) Exec("GenereLprime") Endif
j’ai bien relu tous les postes, mais je ne trouve pas la solution. j’ai une entreprise qui applique une prime d’ancienneté en plus de la garantie d’ancienneté.
Voici le script que j’ai effectuer dans ma fonction mais cela ne fonctionne pas, qui pourrais m’aider ?
Begin
// Calcul de l'ancienneté en années Anciennete = DateDiff("yyyy", Bul.dateEmbauche, Bul.datePaie)
// Vérification que c'est le mois anniversaire du contrat If Month(Bul.datePaie) = Month(Bul.dateEmbauche) Then
// Détermination du montant de la prime via calcul Mprime = 0 If Anciennete >= 5 AND Anciennete < 10 Then Mprime = 300 If Anciennete >= 10 AND Anciennete < 15 Then Mprime = 600 If Anciennete >= 15 AND Anciennete < 20 Then Mprime = 900 If Anciennete >= 20 AND Anciennete < 25 Then Mprime = 1200 If Anciennete >= 25 Then Mprime = 1500 // englobe 25, 30, 35, 40 ans
// Vérification que la prime est non nulle If Mprime <> 0 Then Exec("Lprime_D02.1") methodeCalcul = 1 // Base x Taux Bases = 1 // Base fictive = 1, on calcule tout dans Tauxs Tauxs = Mprime // Le montant réel devient le taux multiplié par la base Liblong = "Prime d'ancienneté calculée pour " + Anciennete + " années" Memo = "Prime calculée le mois anniversaire du contrat : " + Mprime + "€" Call Rem(Memo) Exec("GenereLprime") Endif
Endif
End
EN CODE FONCTION / INIT-PCCN
Bonjour,
Essayez plutot cela dans votre fonction calcul INIT-PCCN:
// Calcul de l'ancienneté en années Anciennete = DiffYears(EMP.DTDEBANC, Bul.date)
// Vérification que c'est le mois anniversaire du contrat If DateMonth(Bul.date) = DateMonth(EMP.DTDEBANC) Then
// Détermination du montant de la prime via calcul Mprime = 0 If Anciennete >= 5 AND Anciennete < 10 Then Mprime = 300 If Anciennete >= 10 AND Anciennete < 15 Then Mprime = 600 If Anciennete >= 15 AND Anciennete < 20 Then Mprime = 900 If Anciennete >= 20 AND Anciennete < 25 Then Mprime = 1200 If Anciennete >= 25 Then Mprime = 1500 // englobe 25, 30, 35, 40 ans
// Vérification que la prime est non nulle If Mprime <> 0 Then Exec("Lprime_D01.1") methodeCalcul = 3 // Base x Taux Bases = 1 // Base fictive = 1, on calcule tout dans Tauxs Tauxs = Mprime // Le montant réel devient le taux multiplié par la base Liblong = "Prime d'ancienneté calculée pour " + Anciennete + " années" Memo = "Prime calculée le mois anniversaire du contrat : " + Mprime + "€" Call Rem(Memo) Exec("GenereLprime") Endif
Il faut retirer la première et dernière ligne, pas besoin de BEGIN et END dans une fonction calcul INIT-PCCN, j’avais pas vu que vous les aviez rajouté.
je viens de faire le nécessaire, toujours rien dans mon bulletin de paie. Je me pose la question suivante:
Ma prime doit se déclencher à la date d’anniversaire de ancienneté et non à la date d’entrée dans l’entreprise.
Faut-il modifier la ligne 5 et 6 et 23 du memo ?
D’avance merci.
Essayer de remplacer la variable emp.dtdebanc par SAL.DATEANCIENNETE2 pour voir si ca prend la bonne date.
Vous pouvez vérifier grâce à un print la date renvoyé par les variables. Mettez avant la ligne 5 dans l’init les deux lignes que je vous mets ci dessous, puis calculer le bulletin de paie et vous allez voir apparaître en haut les variabele avec leur valeur pour checker:
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.
Analyse virus du fichier
Désolés, nous vérifions toujours le contenu de ce fichier pour nous assurer qu'il peut être téléchargé en toute sécurité. Veuillez réessayer dans quelques minutes.