Calculer l'indemnité de congé d'un employé

Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   -  
 yg_be -
Bonjour, Bonjour,
Je souhaiterais calculer le congé d'un travailleur , en effet le congé est acquis après 12 mois de présence ; un travailleur est pointé chaque mois selon le nombre de jour effectués dans un mois donné et reçoit sa paie à la fin du mois , et à la fin du mois anniversaire de son entrée dans l'entreprise il reçoit et sa paie mensuelle et son indemnités de congé qui sera calculé en tenant compte de son salaire catégoriel, son sursalaire les autre indemnités sa prime d'ancienneté ; aussi le congé pourrait lui être versé quand son contrat de travail prend fin au prorata du temps de présence
Jai deja cette requete et je souhaite que la gratification soit payée un mois avant la date anniversaire du mois d'entrée du travailleur ; celle ci fonctionne mais au mois anniversaire


1 SELECT REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, Round((Nz(([REQ_PAIE].
2 [SALAIRE_CATEGORIEL]+[REQ_PAIE].[SURSALAIRE]+[REQ_PAIE].[AUTRES_INDEMNITES]+[REQ_PAIE].
3 [PRIME_ANC]+Nz([TotSalPrec]))))*2.2*7/6/30) AS CONGES
4 FROM REQ_PAIE LEFT JOIN REQ_PREP_CONG ON (REQ_PAIE.CODE_EMPLOYE =
5 REQ_PREP_CONG.CODE_EMPLOYE) AND (REQ_PAIE.DATE_PAIE = REQ_PREP_CONG.DATE_PAIE)
6 WHERE (((Month([REQ_PAIE].[DATE_PAIE]))=Month([REQ_PAIE].[date_entree]) And (Month([REQ_PAIE].
7 [DATE_PAIE]))>Year([REQ_PAIE].[date_entree]))) OR (((Month([DATE_FIN]))=Month([DATE_PAIE])) AND
8 ((Year([DATE_FIN]))=Year([DATE_PAIE])) AND ((REQ_PAIE.DATE_FIN)>[DATE_PAIE]));




Configuration: Windows / Chrome 96.0.4664.110

11 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
"un mois avant": ne suffit-il pas, alors, de soustraire un au mois?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
oui jai fait ceci mais ca ne donne toujours rien

SELECT REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, Round((Nz(([REQ_PAIE].[SALAIRE_CATEGORIEL]+[REQ_PAIE].[SURSALAIRE]+[REQ_PAIE].[AUTRES_INDEMNITES]+[REQ_PAIE].[PRIME_ANC]+Nz([TotSalPrec]))))*2.2*7/6/30) AS CONGES

FROM REQ_PAIE 
LEFT JOIN REQ_PREP_CONG ON (REQ_PAIE.DATE_PAIE = REQ_PREP_CONG.DATE_PAIE) 
AND (REQ_PAIE.CODE_EMPLOYE = REQ_PREP_CONG.CODE_EMPLOYE)

WHERE (((Month([REQ_PAIE].[DATE_PAIE]))=Month([REQ_PAIE].[date_entree])-1 
And (Month([REQ_PAIE].[DATE_PAIE]))>Year([REQ_PAIE].[date_entree]))) 
OR (((Month([DATE_FIN]))=Month([DATE_PAIE])) 
AND ((Year([DATE_FIN]))=Year([DATE_PAIE])) 
AND ((REQ_PAIE.DATE_FIN)>[DATE_PAIE]));


Edit: Correction des balises de code..
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
voici le lien de la base en question

https://www.cjoint.com/c/KLsxrex6nxp
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Pour soustraire un au mois, il faut plutôt faire:
Month(dateserial(2020,month([REQ_PAIE].[date_entree])-1 ,1))
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour Mr; j'ai effectué la modification et je n'ai toujours pas le montant du congé dans la table MOUVEMENT ; ca apparait toujours dans le mois anniversaire et voici le code de la requete:

SELECT REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, Round((Nz(([REQ_PAIE].[SALAIRE_CATEGORIEL]+[REQ_PAIE].[SURSALAIRE]+[REQ_PAIE].[AUTRES_INDEMNITES]+[REQ_PAIE].[PRIME_ANC]+Nz([TotSalPrec]))))*2.2*7/6/30) AS CONGES
FROM REQ_PAIE LEFT JOIN REQ_PREP_CONG ON (REQ_PAIE.CODE_EMPLOYE = REQ_PREP_CONG.CODE_EMPLOYE) AND (REQ_PAIE.DATE_PAIE = REQ_PREP_CONG.DATE_PAIE)
WHERE (((Month([REQ_PAIE].[DATE_PAIE]))=Month(DateSerial(2020,Month([REQ_PAIE].[date_entree])-1,1)))) OR (((Month([DATE_FIN]))=Month([DATE_PAIE])) AND ((Year([DATE_FIN]))=Year([DATE_PAIE])) AND ((REQ_PAIE.DATE_FIN)>[DATE_PAIE]));
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
c'est le code de quelle requête?
la requête donne-t-elle le bon résultat?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
REQ_DEF_CONGES ne donne pas le bon résultat?
que reçois-tu?
qu'attends-tu?
1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
tu as écrit ceci: " je souhaite que la gratification soit payée un mois avant la date anniversaire du mois d'entrée du travailleur "

est-ce correct?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
non pour la gratification c'est fin décembre ou en fin de contrat
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
pourquoi alors as-tu écrit cela?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
En voulant écrire congé, j'ai écris gratification, et vous savez comment moi que nous avons fini avec la gratification
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Donc, tu souhaites que l'indemnité de congés soit payée un mois avant la date anniversaire du mois d'entrée du travailleur, c'est bien cela?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
je recommence:
je teste ainsi:
1) j'ouvre la base partagée en #4
2) je remplace la source SQL de REQ_DEF_CONGE par la source partagée en #6
3) j'exécute la requête ainsi modifiée

je ne reçois rien, comme toi.

et cela me semble normal.

qu'attends-tu d'autre? pourquoi?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
le fichier ci
https://www.cjoint.com/c/KLtvRqLHYQH
envoyé ce jour en #14# contient bien un employé dans la table EMPLOYE engagé le 01 juillet 2021
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
en effet, et il me semble tout à fait normal que REQ_DEF_CONGE n'affiche rien.

qu'attends-tu d'autre? pourquoi?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ce que j'attends c'est que le congé se fasse un mois avant la date anniversaire de l'entrée du travailleur
Jusque là je ne comprends pas le
Pourquoi ?
La même question revient, j'explique et vous revenez sur la même question
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Tu expliques, au lieu de donner des faits, basés sur les données dans le fichier.
Quel mois, donc, précisément?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
voici des faits: un employé embauché le 01 juillet 2021 comme dans la base publiée plus haut ; je souhaiterais que son congé se fasse à fin juin de l'année suivante
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Je n'obtenais pas le résultat décrit en #44, et ne comprenais pas pourquoi tu y écrivais "les réponses attendues sont bonnes".

J'obtiens le résultat décrit en #50.

Je ne sais pas ce que tu as changé dans ton fichier entre les versions #14 et #44, ni pourquoi tu penses que la version #44 est meilleure que la #14.
Je constate, cependant, que la requête REQ_DEF_CONGE s'est dégradée.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
Est ce que je dois reconsidérer la requête REQ_DEF_CONGE du #14 pour la suite ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Celle du #14 me semble plus logique que celle du #44.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
J'avais modifié cette requête, parceque cette requête ne prend pas en compte la dernière gratification qui a été faite en décembre, c'est la différence des deux versions
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Le resultat affiché par REQ_DEF_CONGE apres avoir appliqué le REQ_AJOUT_MOUV donne une valeur correcte du congé qui 'appuie sur cette formule :
Round((Nz(([REQ_PAIE].[SALAIRE_CATEGORIEL]+[REQ_PAIE].[SURSALAIRE]+[REQ_PAIE].[AUTRES_INDEMNITES]+[REQ_PAIE].[PRIME_ANC]+[MOUVEMENTS].[GRATIF]+Nz([TotSalPrec])))))*2.2*7/6/30 AS CONGES
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Je suis content de lire que ton travail progresse bien.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Je pense que tu n'as pas tenu compte de ceci:
faire une nouvelle requête (appelons-là REQ_CONGE), qui à partir de REQ_MOUV et REQ_PREP_CONGE, reprend toutes les infos de REQ_MOUV, ajoute l'indemnité de congé au salaire brut, et calcule les retenues.
C'était le point 6 du message publié le 1 déc. 2021 à 19:01 dans la discussion https://forums.commentcamarche.net/forum/affich-37429835-calcul-de-l-indemnites-de-conges

Pour t'aider à corriger cela, je t'invite à faire une liste de toutes les requêtes, avec, pour chaque requête, ses sources (tables et/ou requêtes). Cette liste t'aidera à identifier des erreurs et à les corriger.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
bjr; voici la requete REQ_CONGE

SELECT REQ_MOUV.NUMERO_BULLETIN, REQ_MOUV.Date, REQ_MOUV.CODE_SOCIETE, REQ_MOUV.NOM_SOCIETE, REQ_MOUV.CODE_EMPLOYE, REQ_MOUV.NOM_EMPLOYE, REQ_MOUV.PRENOM_EMPLOYE, REQ_MOUV.NUMERO_CNPS, REQ_MOUV.TAUX_TRANSPORT, REQ_MOUV.SITUATION_MATRIMONIALE, REQ_MOUV.NBRE_ENFANTS, REQ_MOUV.TITRE, REQ_MOUV.ADRESSE, REQ_MOUV.DATE_ENTREE, REQ_MOUV.EMPLOI_OCCUPE, REQ_MOUV.ID_SERVICE, REQ_MOUV.DESIGNATION_SRVICE, REQ_MOUV.ETABLISSEMENT_BANCAIRE, REQ_MOUV.NUMERO_COMPTE_BANCAIRE, REQ_MOUV.ID_CATEGORIE, REQ_MOUV.LIBELLE_CATEGORIE, REQ_MOUV.TAUX_CATEGORIEL, REQ_MOUV.SURSALAIRE, REQ_MOUV.NOMBRE_JOUR, REQ_MOUV.SALAIRE_CATEGORIEL, REQ_MOUV.PRIME_ANC, REQ_MOUV.AUTRES_INDEMNITES, REQ_PREP_CONGE.CONGES, REQ_MOUV.GRATIF, Nz([SAL_BRUT]+[CONGES],0) AS SALAIRE_BRUT, [SALAIRE_BRUT]*0.012 AS ITS, IIf(Round([SALAIRE_BRUT]/1000,0)*1000*8/10<=50000,0,IIf(Round([SALAIRE_BRUT]/1000,0)*1000*8/10<=130000,((Round([SALAIRE_BRUT]/1000,0)*1000)*8/10-50000)*15/1000,IIf(Round([SALAIRE_BRUT]/1000,0)*1000*8/10<=200000,((((Round([SALAIRE_BRUT]/1000,0)*1000)*8/10-130000)*5/100)+1200),((((Round([SALAIRE_BRUT]/1000,0)*1000)*8/10-200000)*1/10)+4700)))) AS CN, IIf([SITUATION_MATRIMONIALE]="CELIBATAIRE",[NBRE_ENFANTS]*0.5+1,[NBRE_ENFANTS]*0.5+2) AS NBRE_PART, Format(IIf([IMPOTREVENU]<=25000,0,IIf([IMPOTREVENU]<=45583,0.85/11*(0.8*Round([SALAIRE_BRUT]/1000)*1000-[ITS]+[CN])-[NBRE_PART]*2281,IIf([IMPOTREVENU]<=(979000/12),0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))*15/115-[NBRE_PART]*48913/12,IIf([IMPOTREVENU]<=(1519000/12),0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))*1/6-[NBRE_PART]*84375/12,IIf([IMPOTREVENU]<=(2644000/12),0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))*25/125-[NBRE_PART]*11250,IIf([IMPOTREVENU]<=4669000/12,0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))*35/135-[NBRE_PART]*291667/12,IIf([IMPOTREVENU]<=10106000/12,0.85*(0.8*Round([SALAIRE_BRUT]/1000,0)*1000-([ITS]+[CN]))*45/145-[NBRE_PART]*530172/12,0.85*(0.8*Round([SALAIRE_BRUT]/1000,0)*1000-([ITS]+[CN]))*60/160-[NBRE_PART]*1183594/12))))))),0) AS IGR, REQ_MOUV.DATE_FIN, Round(Nz(0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))/[NBRE_PART],0),0) AS IMPOTREVENU, Round([SALAIRE_BRUT]-[its]-[cn]-[igr],0) AS SALAIRE_NET, REQ_MOUV.MENSUALITE_RETENUE_PRET, [TAUX_TRANSPORT]*[NOMBRE_JOUR] AS TRANSPORT, [salaire_net]+[transport]-[MENSUALITE_RETENUE_PRET] AS [NET A PAYER]
FROM REQ_MOUV LEFT JOIN REQ_PREP_CONGE ON (REQ_MOUV.CODE_EMPLOYE = REQ_PREP_CONGE.CODE_EMPLOYE) AND (REQ_MOUV.Date = REQ_PREP_CONGE.Date);


Pour la liste des requetes et leur source je l'ai établie mais je n'ai pas encore fait la remarque ; est ce que vous pourriez me donner des pistes pour attirer mon attention
merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Il est intéressant de classer la liste des requêtes de la façon suivante:

- mettre à la fin les requêtes qui ne sont pas utilisées (pas une source d'une autre requêtes)
- s'assurer que chaque requête précède celles qui l'utilisent comme source
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Comment faire ce classement,?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
je peux te montrer si tu partages ta liste.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
voici le lien de la liste des requetes:
https://www.cjoint.com/c/KLBs6eIlNOC
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Tu as un autre soucis, tu as négligé ceci:
https://forums.commentcamarche.net/forum/affich-37370773-mise-a-jour-des-parametres-de-la-paie-sans-modifier-les-salaires-anterieures#11

pour la table mouvement:
comme il s'agit d'un salaire mensuel, je mettrais toujours dans la colonne DateMouvement la date de premier jour du mois.
et je mettrais un index unique sur (DateMouvement, Code_Employe), pour empêcher un accident où on aurait deux fois les infos avec le même employé et le même mois.

Comme je te l'ai rappelé le 15 déc. 2021 à 15:52: le champs DATE_PAIE est bien calculé dans REQ_PAIE, mais est ensuite négligé par les autres requêtes, et on retrouve finalement une date incorrecte dans DateMov de la table Mouvements.

A cause de cela, plusieurs requêtes donnent un résultat incorrect.

Est-ce utile, dans la table Mouvements, d'avoir aussi la date comme est encodée dans la table PAIE?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
je viens de corriger de sorte que datemov de la table MOUVEMENT ; prend la valeur de DATE_PAIE ; c'est a dire le 1er du mois encodé dans la table PAIE

effectivement dans la table MOUVEMENT ; il a 2 clés primaires à savoir la datemov et le code employé pour empêcher les répétions des mêmes infos

dans les autres requetes ; j'ai pris en compte DATE_PAIE; mais ca ne change rien au niveau des resultats des requetes

voici la requete congé :
SELECT REQ_MOUV.NUMERO_BULLETIN, REQ_MOUV.DATE_PAIE, REQ_MOUV.CODE_SOCIETE, REQ_MOUV.NOM_SOCIETE, REQ_MOUV.CODE_EMPLOYE, REQ_MOUV.NOM_EMPLOYE, REQ_MOUV.PRENOM_EMPLOYE, REQ_MOUV.NUMERO_CNPS, REQ_MOUV.TAUX_TRANSPORT, REQ_MOUV.SITUATION_MATRIMONIALE, REQ_MOUV.NBRE_ENFANTS, REQ_MOUV.TITRE, REQ_MOUV.ADRESSE, REQ_MOUV.DATE_ENTREE, REQ_MOUV.EMPLOI_OCCUPE, REQ_MOUV.ID_SERVICE, REQ_MOUV.DESIGNATION_SRVICE, REQ_MOUV.ETABLISSEMENT_BANCAIRE, REQ_MOUV.NUMERO_COMPTE_BANCAIRE, REQ_MOUV.ID_CATEGORIE, REQ_MOUV.LIBELLE_CATEGORIE, REQ_MOUV.TAUX_CATEGORIEL, REQ_MOUV.SURSALAIRE, REQ_MOUV.NOMBRE_JOUR, REQ_MOUV.SALAIRE_CATEGORIEL, REQ_MOUV.PRIME_ANC, REQ_MOUV.AUTRES_INDEMNITES, REQ_PREP_CONGE.CONGES, REQ_MOUV.GRATIF, Nz([SAL_BRUT]+[CONGES],0) AS SALAIRE_BRUT, [SALAIRE_BRUT]*0.012 AS ITS, IIf(Round([SALAIRE_BRUT]/1000,0)*1000*8/10<=50000,0,IIf(Round([SALAIRE_BRUT]/1000,0)*1000*8/10<=130000,((Round([SALAIRE_BRUT]/1000,0)*1000)*8/10-50000)*15/1000,IIf(Round([SALAIRE_BRUT]/1000,0)*1000*8/10<=200000,((((Round([SALAIRE_BRUT]/1000,0)*1000)*8/10-130000)*5/100)+1200),((((Round([SALAIRE_BRUT]/1000,0)*1000)*8/10-200000)*1/10)+4700)))) AS CN, IIf([SITUATION_MATRIMONIALE]="CELIBATAIRE",[NBRE_ENFANTS]*0.5+1,[NBRE_ENFANTS]*0.5+2) AS NBRE_PART, Format(IIf([IMPOTREVENU]<=25000,0,IIf([IMPOTREVENU]<=45583,0.85/11*(0.8*Round([SALAIRE_BRUT]/1000)*1000-[ITS]+[CN])-[NBRE_PART]*2281,IIf([IMPOTREVENU]<=(979000/12),0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))*15/115-[NBRE_PART]*48913/12,IIf([IMPOTREVENU]<=(1519000/12),0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))*1/6-[NBRE_PART]*84375/12,IIf([IMPOTREVENU]<=(2644000/12),0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))*25/125-[NBRE_PART]*11250,IIf([IMPOTREVENU]<=4669000/12,0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))*35/135-[NBRE_PART]*291667/12,IIf([IMPOTREVENU]<=10106000/12,0.85*(0.8*Round([SALAIRE_BRUT]/1000,0)*1000-([ITS]+[CN]))*45/145-[NBRE_PART]*530172/12,0.85*(0.8*Round([SALAIRE_BRUT]/1000,0)*1000-([ITS]+[CN]))*60/160-[NBRE_PART]*1183594/12))))))),0) AS IGR, REQ_MOUV.DATE_FIN, Round(Nz(0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))/[NBRE_PART],0),0) AS IMPOTREVENU, Round([SALAIRE_BRUT]-[its]-[cn]-[igr],0) AS SALAIRE_NET, REQ_MOUV.MENSUALITE_RETENUE_PRET, [TAUX_TRANSPORT]*[NOMBRE_JOUR] AS TRANSPORT, [salaire_net]+[transport]-[MENSUALITE_RETENUE_PRET] AS [NET A PAYER]
FROM REQ_MOUV LEFT JOIN REQ_PREP_CONGE ON (REQ_MOUV.DATE_PAIE = REQ_PREP_CONGE.DATE_PAIE) AND (REQ_MOUV.CODE_EMPLOYE = REQ_PREP_CONGE.CODE_EMPLOYE);
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Il n'y a qu'une clé primaire, composée de deux champs.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je dois choisis index unique dans les propriétés de la table MOUVEMENT ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
La clé primaire est correcte, ta phrase ne l'était pas.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
teste tes requêtes dans l'ordre où elles sont classée comme suggéré en #64.
quelle est la première qui donne un résultat incorrect?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
En lisant la liste partagée en #96, je me demande si l'indemnité de congé est correcte.
As-tu testé le calcul de l'indemnité de congé si la gratification est payée le même mois?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
le congé dans la requête REQ_DEF_CONGE est correcte et elle est affichée dans la requête REQ_CONGE_DEFINITIF dans le mois de décembre mais dans la table MOUVEMENTS le congé est 0 après avoir fait le INSERT
voici la requête REQ_AJOUT_MOUV

INSERT INTO Mouvements ( NUMERO_BULLETIN, DateMov, CODE_SOCIETE, NOM_SOCIETE, CODE_EMPLOYE, NOM_EMPLOYE, PRENOM_EMPLOYE, DATE_ENTREE, TAUX_CATEGORIEL, SURSALAIRE, NOMBRE_JOUR, SALAIRE_CATEGORIEL, PRIME_ANC, AUTRES_INDEMNITES, CONGES, GRATIF, SALAIRE_BRUT, ITS, CN, IGR, SALAIRE_NET, MENSUALITE_RETENUE_PRET, TRANSPORT, NET_A_PAYER, DATE_FIN_CONTRAT )
SELECT REQ_CONGE_DEFINITIF.NUMERO_BULLETIN, REQ_CONGE_DEFINITIF.DATE_PAIE, REQ_CONGE_DEFINITIF.CODE_SOCIETE, REQ_CONGE_DEFINITIF.NOM_SOCIETE, REQ_CONGE_DEFINITIF.CODE_EMPLOYE, REQ_CONGE_DEFINITIF.NOM_EMPLOYE, REQ_CONGE_DEFINITIF.PRENOM_EMPLOYE, REQ_CONGE_DEFINITIF.DATE_ENTREE, REQ_CONGE_DEFINITIF.TAUX_CATEGORIEL, REQ_CONGE_DEFINITIF.SURSALAIRE, REQ_CONGE_DEFINITIF.NOMBRE_JOUR, REQ_CONGE_DEFINITIF.SALAIRE_CATEGORIEL, REQ_CONGE_DEFINITIF.PRIME_ANC, REQ_CONGE_DEFINITIF.AUTRES_INDEMNITES, REQ_CONGE_DEFINITIF.CONGES, REQ_CONGE_DEFINITIF.GRATIF, REQ_CONGE_DEFINITIF.SALAIRE_BRUT, REQ_CONGE_DEFINITIF.ITS, REQ_CONGE_DEFINITIF.CN, REQ_CONGE_DEFINITIF.IGR, REQ_CONGE_DEFINITIF.SALAIRE_NET, REQ_CONGE_DEFINITIF.MENSUALITE_RETENUE_PRET, REQ_CONGE_DEFINITIF.TRANSPORT, REQ_CONGE_DEFINITIF.[NET A PAYER], REQ_CONGE_DEFINITIF.DATE_FIN
FROM REQ_CONGE_DEFINITIF;
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
1) je suis surpris que la requête REQ_DEF_CONGE calcule correctement l'indemnité de congé en tenant compte de la gratification payée le même mois.

2) si le résultat de REQ_CONGE_DEFINITIF est correct et la table MOUVEMENTS ne contient pas les informations correctes après avoir utilisé REQ_AJOUT_MOUV, je pense à ces trois sources d'erreurs:
a) le tableau partagé en #96 n'est pas correct, ne correspond pas à la réalité
b) tu ne respectes pas les règles d'utilisation de la base de données
c) tu ignores des avertissements reçus, ou tu as modifié des options pour éviter de recevoir ces avertissements.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
la première remarque a été corrigée ( la gratification payée le même mois a été retirée)

maintenant la table MOUVEMENT contient un montant qui est diffèrent de 0 et qui ne tient pas compte de la gratification payée ; en fait il reste à intégrer dans le calcul du congé la dernière gratification payée pour le travailleur
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Pourquoi retirer la gratification payée le même mois?

C'est quoi "la dernière gratification payée pour le travailleur"?
Peux-tu donner un exemple?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je le retire parce que la gratification et le congé ne sont forcément payés le même mais
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Je pensais que tu voulais travailler sur ceci, que tu as écrit en #103.
"en fait il reste à intégrer dans le calcul du congé la dernière gratification payée pour le travailleur"

J'essaie donc de te faire découvrir ce que tu dois corriger pour cela.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok c'est bien noté, quand c'est très long , j'oublie un peu les échanges, on reprend alors, qu'est-ce que je dois faire maintenant
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
relire le #117.
bien sûr, toujours avoir sous les yeux la liste des requêtes.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
au vu du #117 je pense que les REQ_MOUV et REQ_PAIE et REQ_PREP_CONG servirons désormais à calculer la REQ_DEF_CONGE et permettront de d'obtenir la gratification payée le même mois de congé ainsi pour la fin de contrat dans le calcul de l'indemnité de congé

mais pour le cas ou la gratification n'est pas calculée le même mois de congé alors pour le moment rien ne s'affiche dans le calcul du congé car la REQ_MOUV affiche seulement le cas ou la gratification est pour le même mois
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Je pense que REQ_DEF_CONGE peut calculer l'indemnité de congé en utilisant uniquement REQ_MOUV et REQ_PREP_CONG, je ne vois pas l'utilité d'utiliser REQ_PAIE.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
oui effectivement ; voici la requête REQ_DEF_CONGE

SELECT REQ_MOUV.CODE_EMPLOYE, REQ_MOUV.DATE_PAIE, Nz(Round((Nz(([SALAIRE_CATEGORIEL]+[SURSALAIRE]+[AUTRES_INDEMNITES]+Nz([REQ_MOUV].[GRATIF],0)+[PRIME_ANC]+Nz([TotSalPrec]))))*2.2*7/6/30)) AS CONGES
FROM REQ_MOUV LEFT JOIN REQ_PREP_CONG ON (REQ_MOUV.DATE_PAIE = REQ_PREP_CONG.DATE_PAIE) AND (REQ_MOUV.CODE_EMPLOYE = REQ_PREP_CONG.CODE_EMPLOYE)
WHERE (((Month([REQ_MOUV].[DATE_PAIE]))=Month(DateSerial(2020,Month([REQ_MOUV].[date_entree])-1,1)))) OR (((Month([REQ_MOUV].[DATE_FIN]))=Month([REQ_PREP_CONG].[DATE_PAIE])) AND ((Year([REQ_MOUV].[DATE_FIN]))=Year([REQ_PREP_CONG].[DATE_PAIE])) AND ((REQ_MOUV.DATE_FIN)=[REQ_PREP_CONG].[DATE_PAIE]))
GROUP BY REQ_MOUV.CODE_EMPLOYE, REQ_MOUV.DATE_PAIE, Nz(Round((Nz(([SALAIRE_CATEGORIEL]+[SURSALAIRE]+[AUTRES_INDEMNITES]+Nz([REQ_MOUV].[GRATIF],0)+[PRIME_ANC]+Nz([TotSalPrec]))))*2.2*7/6/30));
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
Pour t'aider à comprendre ce que fait le WHERE de la requête REQ_PREP_CONGE que tu as écrite, je t'invite à créer une nouvelle requête, ayant le même WHERE:
SELECT REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, DateMov,
(Nz([SALAIRE_BRUT]))-([mouvements].[conges]) AS SalPrec
FROM REQ_PAIE LEFT JOIN Mouvements 
ON REQ_PAIE.CODE_EMPLOYE = Mouvements.CODE_EMPLOYE

WHERE (((REQ_PAIE.CODE_EMPLOYE)=Mouvements.CODE_EMPLOYE) 
And ((Month([DateMov]))<=Month([DATE_PAIE])))

order by REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, DateMov

Cette nouvelle requête devrait te montrer quels salaires sont utilisés à partir de la table MOUVEMENTS.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
Les deux mois concernés sont les mois de janvier et de février
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Ces mois de janvier et février sont manquants?

Tu calcules la paie de quel mois?
Quelle est la date d'entrée du travailleur?
Quelles sont les dates des salaires précédents dans la table MOUVEMENTS?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ceci sera peut-être plus clair pour comprendre l'effet du WHERE:
SELECT REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, Mouvements.DateMov, 
(Nz([SALAIRE_BRUT]))-([mouvements].[conges]) AS TotSalPrec, 
Month([DateMov]) as moismouv, Month([DATE_PAIE]) as moispaie
FROM REQ_PAIE LEFT JOIN Mouvements 
ON REQ_PAIE.CODE_EMPLOYE = Mouvements.CODE_EMPLOYE
WHERE (((REQ_PAIE.CODE_EMPLOYE)=[Mouvements].[CODE_EMPLOYE])
 AND ((Month([DateMov]))<=Month([DATE_PAIE])))
ORDER BY REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, Mouvements.DateMov;
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Le travailleur est entré le 1er mars 2021
J'ai calculé les salaires de mars 2021 à février 2022
et c'est au mois de février 2022 que le travailleur devrait recevoir son indemnités de congé
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Quel est le mois du salaire brut qui n'a pas été pris en compte dans le calcul?
0
yg_be
 
Je ne peux plus répondre à cette discussion...
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
Pourquoi une telle décision, vous avez envoyé un bout de requête, sans le select, j'ai seulement complété cette requête, donc je souhaiterais savoir à quel niveau elle devait intervenir
C'est tout , si la la complexité du projet je comprends, ça peut arriver
0
yg_be > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
Tout simplement, comme c'était arrivé il y a peu avec la discussion précédente, le site ne me permet plus de répondre.
0