Calcul gratification annuelle

Résolu
Bonjour,
Je souhaiterais calculer la gratification annuelle ; qui tient compte du salaire du sal de base( txtsalbase) et du temps de travail qui doit être égal à un an de travail ; et elle se calcule chaque année apres un an de travail
gratification=txtsalbase*75%
Comment le programmer en vba access pour que la gratification soit payéé au travailleur chaque annéé après un an de travail

7 réponses

Résumé de la discussion

Le calcul de la gratification annuelle repose sur le salaire de base (txtsalbase) et sur un temps de travail équivalent à un an, avec une gratification égale à txtsalbase × 75% et calculée chaque année après un an. Des réponses abondent sur sa programmation en VBA Access et sur le paiement annuel après chaque année de service, notamment la notion de déclenchement automatique et de proratisation. Plusieurs participants évoquent l'utilisation de requêtes ou de modules, des questions de synchronisation avec les dates de paie et la survenue de la première gratification. D'autres interventions suggèrent de prendre en compte l'embauche et les variations mensuelles, et de clarifier si la date de paie et celle de fin de contrat doivent coïncider.

Bobot (l’IA à votre service)
  1. Contributeur Ambassadeur
    Tu as écrit que la table PAIE était alimentée a partir de la REQ_PAIE.
    Je vois que la table PAIE est une source de REQ_PAIE.

    A quel moment, par quelle opération, la table PAIE est-elle modifiée quand on change ensuite sursalaire , les indemnites et le nombre de jour?
    1
    1. bjr; en ce qui concerne le nombre de jour , il peut arriver qu'on saisisse par erreur une valeur au lieu d'une autre; le sursalaire et les indemnités peuvent varier d'un mois à un autre ; par contre par quelle opération je ne saisi pas la question
      0
    2. Contributeur Ambassadeur
      @Oholabi12345Confirmes-tu que la table PAIE était alimentée a partir de la REQ_PAIE? Cela m'étonne, car je vois que la table PAIE est une source de REQ_PAIE.

      Comment l'utilisateur de la base gère-t-il la paie? Que fait-il pour modifier les paramètres de la paie?
      Comment ces modifications modifient-ils les anciens enregistrements de la table PAIE?
      0
    3. @yg_beEffectivement, table PAIE est une source de REQ_PAIE.

      Pour modifier les paramètres de la paie, je pense qu'il faudra créer une autre requête qui associera les tables PAIE et EMPLOYE et à chaque fois qu'on aura besoin de modifier un paramètre on choisira l'employé dans la requête et on modifiera ses paramètres

      Mais pour modifier les anciens enregistrements de la paie je n'ai aucune idée
      0
    4. Contributeur Ambassadeur
      @Oholabi1234Je pense que tu es parti sur de mauvaises bases, et que ta table PAIE ne sert à rien.

      Dans ces conditions, je ne vois pas comment je peux t'aider à aller plus loin.
      0
    5. @yg_beMais vous ne m'expliquez pas pourquoi la tale paie est unitile, jusque là je n'ai rien compris encore, si oui
      Quelles suggestions vous me faites alors pour continuer mon application, qu'en ait il de la table mouvement et de la table Catégorie
      0
  2. Contributeur Ambassadeur
    bonjour,
    comme souvent, le point de départ, c'est de réfléchir à propos des données.
    as-tu toutes les données pour calculer cela?
    sans doute utile de rajouter un champ avec la dernière date de paiement de cette gratification, pour chaque travailleur.
    0
    1. Bjr mr, par rapport à votre suggestion
      faut il créer une table gratification, avec les champs,
      id_gratf
      Date_gratif
      Code_employe
      Gratif
      Enfin de mieux gérer ce volet
      0
    2. Contributeur Ambassadeur
      @Oholabi1234C'est une option.
      L'autre possibilité, c'est d'ajouter des champs dans des tables existantes.

      Le calcul de cette gratification sera-t-il intégré dans la fiche de paie?
      Ou bien est-ce totalement séparé?
      0
    3. @yg_beElle devra être intégrée dans la fiche de paie chaque
      0
    4. Contributeur Ambassadeur
      @Oholabi1234Je me demande, alors, s'il n'est pas préférable d'ajouter des champs dans des tables existantes.
      Il suffit peut-être d'avoir un champ "montant_gratif" dans la table "mouvement" (si je me souviens du nom).
      0
    5. @yg_bevoici les tables et les relations ; et dans la table PAIE il y a déjà un champ date correspondant à la date de paie ; faut il ajouter une autre date_gratif ; je pense qu'il faut créer une autre table GRATIFICATION et la lier à la table EMPLOYE
      0
  3. Bonsoir,
    Sans aller contre ce que dit Ygbe, Access est-il le bon support pour ce genre de calcul, Excel ne serait-il pas mieux adapté ? Combien de salariés ? Parce que Access , risque d'être un peu lourd si c'est pour un nombre réduit de salariés.
    A moins qu'il s'agisse d'un exercice de formation (scolaire ou professionnelle)
    0
    1. Contributeur Ambassadeur
      peux-tu donner la liste des tables et les champs des tables?
      0
      1. Contributeur Ambassadeur
        Je ne comprends pas à quoi servent les deux tables PAIE et MOUVEMENT.
        J'ai supposé que tu avais renommé PAIE la table MOUVEMENT, et fait des suggestions en fonction de cela.
        0
      2. Bjr, c'est maintenant que je v de voir cette demande, je vous reviens alors
        0
      3. @yg_beLes tables PAIE et mouvement existent toujours, j'avais créé la table mouvement au cas où les données de la table PAIE étaient modifiées les anciennes données soient toujours conserver dans la table mouvement
        0
      4. Contributeur Ambassadeur
        @Oholabi1234A quoi sert la table PAIE? Quelle est la différence entre les deux tables?
        Donne la liste des champs de ces deux tables.
        Comment ces deux tables sont-elles alimentées?
        Comment sont-elles utilisées?
        0
      5. @yg_beLES CHAMPS DE LA PAIE :( numero_bulletin;date;sursalaire;conges;autres_indemnites;nombre_jour)
        cette table sert à saisire les accessoires du salaire et surtout le nombre de jour effectué dans le mois de paie enfin de calculer la paie du mois elle est alimentéé a partir de la REQ_PAIE
        et la table MOUVEMENT( NUMERO_BULLETIN, DateMov, CODE_SOCIETE, NOM_SOCIETE, CODE_EMPLOYE, NOM_EMPLOYE, PRENOM_EMPLOYE, NOMBRE_JOUR, TAUX_CATEGORIEL, SALAIRE_CATEGORIEL, SURSALAIRE, PRIME_ANC, GRATIF, AUTRES_INDEMNITES, CONGES, SALAIRE_BRUT, ITS, TRANSPORT, SALAIRENET, RETENUE_PRET, CN, IGR, NET_A_PAYER)
        la table MOUVEMENT est une table obtenue a partir de la requete
        INSERT INTO Mouvements ( NUMERO_BULLETIN, DateMov, NOMBRE_JOUR, ...
        SELECT REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, ...

        LA Table MOUVEMENT est utilisée pour sauvegarder les données de la paie de sorte à ne pas etre modifiées au cas ou un accessoire du salaire adviendrait à etre changé d'un mois à un autre
        et cette requete est declenchée grace à un bouton
        0
    2. Contributeur Ambassadeur
      J'ai été surpris de découvrir que tu gardais les données des anciens mois dans la table PAIE.
      Ce serait plus propre de vider la table après avoir peuplé la table MOUVEMENTS.

      Suggestions:
      1) modifier REQ_PAIE pour y ajouter la date de fin de contrat.

      2) création de REQ_GRATIF:
      SELECT REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, (REQ_PAIE.SALAIRE_CATEGORIEL+Sum(nz(Mouvements.SALAIRE_CATEGORIEL)))/16 AS GRATIF
      FROM REQ_PAIE LEFT JOIN Mouvements ON (REQ_PAIE.CODE_EMPLOYE = Mouvements.CODE_EMPLOYE) AND (year(REQ_PAIE.DATE_PAIE) = year(Mouvements.Datemov))
      WHERE month(REQ_PAIE.DATE_PAIE) = 12 
      OR ( month(DATE_FIN)=month(DATE_PAIE) AND year(DATE_FIN)=year(DATE_PAIE))
      GROUP BY REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, REQ_PAIE.SALAIRE_CATEGORIEL;
      


      3) modification de REQ_MOUV:
      SELECT REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date_PAIE, REQ_PAIE.CODE_SOCIETE, REQ_PAIE.NOM_SOCIETE, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.TAUX_CATEGORIEL, REQ_GRATIF.GRATIF, REQ_PAIE.SALAIRE_CATEGORIEL, REQ_PAIE.SURSALAIRE, REQ_PAIE.PRIME_ANC, REQ_PAIE.AUTRES_INDEMNITES, REQ_PAIE.CONGES, REQ_PAIE.SALAIRE_BRUT, REQ_PAIE.ITS, REQ_PAIE.TRANSPORT, Round(([SALAIRE_BRUT]-[ITS]-[CN]-[IGR]),0) AS SALAIRENET, Round(Nz(Sum([MENSUALITE_RETENUE_PRET]),0),0) AS RETENUE_PRET, REQ_PAIE.CN, REQ_PAIE.IGR, Round([SALAIRENET]+[TRANSPORT]-Nz(Sum([MENSUALITE_RETENUE_PRET]),0),0) AS NET_A_PAYER
      FROM (REQ_PRET RIGHT JOIN REQ_PAIE ON REQ_PRET.CODE_EMPLOYE = REQ_PAIE.CODE_EMPLOYE) LEFT JOIN REQ_GRATIF ON (REQ_PAIE.DATE_PAIE = REQ_GRATIF.DATE_PAIE) AND (REQ_PAIE.CODE_EMPLOYE = REQ_GRATIF.CODE_EMPLOYE)
      GROUP BY REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date_PAIE, REQ_PAIE.CODE_SOCIETE, REQ_PAIE.NOM_SOCIETE, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.TAUX_CATEGORIEL, REQ_PAIE.GRATIFICATION, REQ_PAIE.SALAIRE_CATEGORIEL, REQ_PAIE.SURSALAIRE, REQ_PAIE.PRIME_ANC, REQ_PAIE.AUTRES_INDEMNITES, REQ_PAIE.CONGES, REQ_PAIE.SALAIRE_BRUT, REQ_PAIE.ITS, REQ_PAIE.TRANSPORT, REQ_PAIE.CN, REQ_PAIE.IGR, REQ_PAIE.GRATIF, ([SALAIRE_BRUT]-[ITS]), REQ_GRATIF.GRATIF;
      


      4) création de AJOUT_MOUV, qui ajoute des enregistrements dans la table MOUVEMENTS
      INSERT INTO Mouvements ( NUMERO_BULLETIN, DateMov, CODE_SOCIETE, NOM_SOCIETE, CODE_EMPLOYE, NOM_EMPLOYE, PRENOM_EMPLOYE, NOMBRE_JOUR, TAUX_CATEGORIEL, GRATIFICATION, SALAIRE_CATEGORIEL, SURSALAIRE, PRIME_ANC, AUTRES_INDEMNITES, CONGES, SALAIRE_BRUT, TRANSPORT, ITS, SALAIRENET, RETENUE_PRET, CN, IGR, NET_A_PAYER )
      SELECT NUMERO_BULLETIN, Date_PAIE, CODE_SOCIETE, NOM_SOCIETE, CODE_EMPLOYE, NOM_EMPLOYE, PRENOM_EMPLOYE, NOMBRE_JOUR, TAUX_CATEGORIEL, GRATIF, SALAIRE_CATEGORIEL, SURSALAIRE, PRIME_ANC, AUTRES_INDEMNITES, CONGES, SALAIRE_BRUT, ITS, TRANSPORT, SALAIRENET, RETENUE_PRET, CN, IGR, NET_A_PAYER
      FROM REQ_MOUV;
      


      Je me demande si le calcul des retenues ne devrait pas tenir compte de la gratification.
      0
      1. merci pour cette proposition ;
        les retenues sont effectuées sur le salaire brut qui contient :
        SALAIRE_BRUT: [SALAIRE_CATEGORIEL]+[CONGES]+[PRIME_ANC]+[SURSALAIRE]+[GRATIF]+[AUTRES_INDEMNITES]
        mais j'espère que le mode d'utilisation pour la paie reste inchangé ; c'est à dire que je saisis toujours la paie en double cliquant la REQ_PAIE et aussi dois je supprimer le formule de calcul de la gratification qui s'y trouve
        0
      2. Contributeur Ambassadeur
        @oholabi12345Pourquoi ne pas utiliser la table PAIE pour saisir la paie, plutôt que REQ_PAIE?
        0
      3. @oholabi12345je pense aussi que pour le calcul de la gratification ; vous avez appliquer la formule de facon genérale sans tenir compte du temps de travail; je m'explique

        - un employé qui a commencé a travailler en octobre cest à dire que [date_entree]=01/10/2021
        et en decembre on decide de calculer sa gratification on aura:

        moyenne([salaire_categoriel] /16 *3 ou 3 représente le temps de travail ( octobre , novembre , decembre)

        - un employé qui commence à travailler en octobre et que son contrat s'arrete à fin novembre
        le calcul de sa gratification donnera:

        moyenne([salaire_categoriel] /16 *2 ou 2 représente le temps de travail (octobre , novembre)

        - un employe qui a fait un an de travail sa gratification sera:
        moyenne([salaire_categoriel] /16 *12 = moyenne([salaire_categoriel]*75%*12/12 ou 12 représente le temps de travail ( janvier à decembre)

        NB: la gratification tient compte du prorota du temps de travail par rapport au 12 mois de l'année
        0
      4. Contributeur Ambassadeur
        @oholabi12345c'est pris en compte dans le calcul. as-tu testé?
        0
      5. @yg_bej'ai fait un test sur l'employé 14 pour l'année 2025 et je constate que la gratification renvoyée est de 3500 au lieu de 40125 voici le lien:

        https://www.cjoint.com/c/KKoqrBaqZev
        0
    3. Contributeur Ambassadeur
      Je me demande si la gratification est correctement prise en compte dans le calcul du salaire brut et des retenues.
      0
      1. oui la gratification est prise en compte dans le calcul du salaire brut:

        select req_paie.numero_bulletin, req_paie.date_paie, req_paie.code_societe, req_paie.nom_societe, req_paie.code_employe, req_paie.nom_employe, req_paie.prenom_employe, req_paie.nombre_jour, req_paie.taux_categoriel, req_gratif.gratif, req_paie.salaire_categoriel, req_paie.sursalaire, req_paie.prime_anc, req_paie.autres_indemnites, req_conges.conges, [salaire_brut]+nz([req_gratif].[gratif],0)+nz([conges],0) as sal_brut, req_paie.its, req_paie.transport, round(([salaire_brut]-[its]-[cn]-[igr]),0) as salairenet, round(nz(sum([mensualite_retenue_pret]),0),0) as retenue_pret, req_paie.cn, req_paie.igr, round([salairenet]+[transport]-nz(sum([mensualite_retenue_pret]),0),0) as net_a_payer
        from req_conges left join ((req_pret right join req_paie on req_pret.code_employe = req_paie.code_employe) left join req_gratif on (req_paie.code_employe = req_gratif.code_employe) and (req_paie.date_paie = req_gratif.date_paie)) on (req_conges.date_paie = req_paie.date_paie) and (req_conges.code_employe = req_paie.code_employe)
        group by req_paie.numero_bulletin, req_paie.date_paie, req_paie.code_societe, req_paie.nom_societe, req_paie.code_employe, req_paie.nom_employe, req_paie.prenom_employe, req_paie.nombre_jour, req_paie.taux_categoriel, req_gratif.gratif, req_paie.salaire_categoriel, req_paie.sursalaire, req_paie.prime_anc, req_paie.autres_indemnites, req_conges.conges, [salaire_brut]+nz([req_gratif].[gratif],0)+nz([conges],0), req_paie.its, req_paie.transport, req_paie.cn, req_paie.igr, req_paie.gratification, req_paie.gratif, ([salaire_brut]-[its]);
        0
      2. Contributeur Ambassadeur
        @oholabi12345et les retenues sont calculées en tenant compte de la gratification?
        0
      3. @yg_beoui parce que dans le salaire brut , il y a la gratification en effet;
        salaire brut: salaire categoriel+prime_ancienneté+sursalaire+conge +gratification+autre_indemnités
        toutes les retenues sont effectuées sur le salaire brut
        0
      4. Contributeur Ambassadeur
        @oholabi12345as-tu testé que les retenues sont calculées en tenant compte de la gratification?

        dans quelle requête se fait le calcul que tu montres?
        0
      5. @yg_beoui les retenues sont effectuées en tenant compte de la gratification ; en effet les retenues sont faites sur le salaire brut or salaire brut=salaire categoriel +conges +gratification + prime_ancienete + sursalaire+ autres primes
        et jai repris toutes les requetes a savoir:
        REQ_PAIE
        SELECT PAIE.NUMERO_BULLETIN, PAIE.Date, EMPLOYE.CODE_SOCIETE, SOCIETE.NOM_SOCIETE, PAIE.NOMBRE_JOUR, EMPLOYE.DATE_FIN, PAIE.CODE_EMPLOYE, EMPLOYE.NOM_EMPLOYE, EMPLOYE.PRENOM_EMPLOYE, EMPLOYE.NUMERO_CNPS, EMPLOYE.SITUATION_MATRIMONIALE, EMPLOYE.NBRE_ENFANTS, EMPLOYE.TITRE, EMPLOYE.ADRESSE, EMPLOYE.DATE_ENTREE, EMPLOYE.EMPLOI_OCCUPE, EMPLOYE.ID_SERVICE, SERVICE.DESIGNATION_SRVICE, EMPLOYE.ETABLISSEMENT_BANCAIRE, EMPLOYE.NUMERO_COMPTE_BANCAIRE, EMPLOYE.ID_CATEGORIE, CATEGORIE.LIBELLE_CATEGORIE, CATEGORIE.TAUX_CATEGORIEL, PAIE.SURSALAIRE, EMPLOYE.TAUX_TRANSPORT, PAIE.AUTRES_INDEMNITES, IIf(DatePart("m",[DATE_PAIE])=DatePart("m",[Date_Gratification]),[SALAIRE_CATEGORIEL]*[ANCIENNETE]*0.75/12,IIf(DatePart("m",[DATE_PAIE])=DatePart("m",[Date_fin]),[SALAIRE_CATEGORIEL]*[ANCIENNETE]*0.75,IIf([DATE]=[Date_Gratification],[SALAIRE_CATEGORIEL]*0.75))) AS GRATIFICATION, [NOMBRE_JOUR]*[TAUX_CATEGORIEL] AS SALAIRE_CATEGORIEL, EMPLOYE.VILLE, IIf([SITUATION_MATRIMONIALE]="CELIBATAIRE",[NBRE_ENFANTS]*0.5+1,[NBRE_ENFANTS]*0.5+2) AS NBRE_PART, [TAUX_TRANSPORT]*[NOMBRE_JOUR] AS TRANSPORT, ([DATE]-[DATE_ENTREE])/30 AS ANCIENNETE, IIf([ANCIENNETE]>=2,[SALAIRE_CATEGORIEL]*[ANCIENNETE]/100,0) AS PRIME_ANC, DateSerial(Year([DATE]),Month([DATE]),1) AS DATE_PAIE, ([date_gratification]-[Date_paie])/360 AS Duree, DateSerial(Year([date_paie]),12,31) AS Date_Gratification, IIf(Month([DATE_PAIE])=12,10000) AS GR
        FROM SOCIETE INNER JOIN (SERVICE INNER JOIN ((CATEGORIE INNER JOIN EMPLOYE ON CATEGORIE.ID_CATEGORIE = EMPLOYE.ID_CATEGORIE) INNER JOIN PAIE ON EMPLOYE.CODE_EMPLOYE = PAIE.CODE_EMPLOYE) ON SERVICE.ID_SERVICE = EMPLOYE.ID_SERVICE) ON SOCIETE.CODE_SOCIETE = EMPLOYE.CODE_SOCIETE;

        REQ_MOUV
        SELECT [REQ_PAIE 1].NUMERO_BULLETIN, [REQ_PAIE 1].Date, [REQ_PAIE 1].CODE_SOCIETE, [REQ_PAIE 1].NOM_SOCIETE, [REQ_PAIE 1].CODE_EMPLOYE, [REQ_PAIE 1].NOM_EMPLOYE, [REQ_PAIE 1].PRENOM_EMPLOYE, [REQ_PAIE 1].NUMERO_CNPS, [REQ_PAIE 1].SITUATION_MATRIMONIALE, [REQ_PAIE 1].NBRE_ENFANTS, [REQ_PAIE 1].TITRE, [REQ_PAIE 1].ADRESSE, [REQ_PAIE 1].DATE_ENTREE, [REQ_PAIE 1].EMPLOI_OCCUPE, [REQ_PAIE 1].ID_SERVICE, [REQ_PAIE 1].DESIGNATION_SRVICE, [REQ_PAIE 1].ETABLISSEMENT_BANCAIRE, [REQ_PAIE 1].NUMERO_COMPTE_BANCAIRE, [REQ_PAIE 1].ID_CATEGORIE, [REQ_PAIE 1].LIBELLE_CATEGORIE, [REQ_PAIE 1].TAUX_CATEGORIEL, [REQ_PAIE 1].SURSALAIRE, [REQ_PAIE 1].NOMBRE_JOUR, [TAUX_CATEGORIEL]*[NOMBRE_JOUR] AS SALAIRE_CATEGORIEL, REQ_CONGES.CONGES, [REQ_PAIE 1].PRIME_ANC, [REQ_PAIE 1].AUTRES_INDEMNITES, REQ_GRATIF.GRATIF, [SALAIRE_CATEGORIEL]+[CONGES]+[GRATIF]+[PRIME_ANC]+[SURSALAIRE]+Nz([AUTRES_INDEMNITES],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, 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))))))) AS IGR, Nz(0.85*(0.8*Round([SALAIRE_BRUT]/1000)*1000-([ITS]+[CN]))/[NBRE_PART],0) AS IMPOTREVENU, [SALAIRE_BRUT]-[its]-[cn]-[igr] AS SALAIRE_NET, REQ_PRET.MENSUALITE_RETENUE_PRET, [TAUX_TRANSPORT]*[NOMBRE_JOUR] AS TRANSPORT, [SALAIRE_NET]+[TRANSPORT]-Nz([MENSUALITE_RETENUE_PRET],0) AS NET_A_PAYER
        FROM (([REQ_PAIE 1] LEFT JOIN REQ_GRATIF ON ([REQ_PAIE 1].DATE_PAIE = REQ_GRATIF.DATE_PAIE) AND ([REQ_PAIE 1].CODE_EMPLOYE = REQ_GRATIF.CODE_EMPLOYE)) LEFT JOIN REQ_CONGES ON ([REQ_PAIE 1].DATE_PAIE = REQ_CONGES.DATE_PAIE) AND ([REQ_PAIE 1].CODE_EMPLOYE = REQ_CONGES.CODE_EMPLOYE)) LEFT JOIN REQ_PRET ON [REQ_PAIE 1].CODE_EMPLOYE = REQ_PRET.CODE_EMPLOYE;

        REQ_CONGES
        SELECT REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, Format(Nz(([REQ_PAIE].[SALAIRE_BRUT]+Sum(Nz([Mouvements].[SALAIRE_BRUT])))*2.2*7/6/30,0),0) AS CONGES
        FROM REQ_PAIE LEFT JOIN Mouvements ON REQ_PAIE.CODE_EMPLOYE = Mouvements.CODE_EMPLOYE
        WHERE (((Month(REQ_PAIE.DATE_PAIE))=Month([date_entree])) And ((Year(REQ_PAIE.DATE_PAIE))=Year([date_entree])+1)) Or (((Month([DATE_FIN]))=Month([DATE_PAIE])) And ((Year([DATE_FIN]))=Year([DATE_PAIE])))
        GROUP BY REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.DATE_PAIE, REQ_PAIE.SALAIRE_BRUT, REQ_PAIE.DATE_ENTREE;
        0