Prélèvement automatique des prêts sur salaires
Résolu
Oholabi12345
Messages postés
498
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23537 Date d'inscription Statut Contributeur Dernière intervention - 21 sept. 2021 à 22:57
yg_be Messages postés 23537 Date d'inscription Statut Contributeur Dernière intervention - 21 sept. 2021 à 22:57
A voir également:
- Prélèvement automatique des prêts sur salaires
- Prélèvement bancaire - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Réponse automatique thunderbird - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Photomaton echirolles prelevement - Forum Vos droits sur internet
6 réponses
yg_be
Messages postés
23537
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 581
bonjour,
le point de départ, c'est de structurer correctement les tables.
le point de départ, c'est de structurer correctement les tables.
ok ; je suis partant pour cette date et on fera la paie au mois le mois enfin de prévoir les changements
je m'excuse ; je reviens sur nombre_jour; c'est le nombre de jour effectué par le travailleur dans le mois ; il permet de calculer le salaire de base du travailleur
je m'excuse ; je reviens sur nombre_jour; c'est le nombre de jour effectué par le travailleur dans le mois ; il permet de calculer le salaire de base du travailleur
voici le code de la requete qui affiche les salaires:
SELECT PAIE.NUMERO_BULLETIN, PAIE.Date, PAIE.CODE_EMPLOYE, EMPLOYE.NOM_EMPLOYE, EMPLOYE.TAUX_TRANSPORT, EMPLOYE.NUMERO_CNPS, EMPLOYE.PRENOM_EMPLOYE, EMPLOYE.TAUX_TRANSPORT, EMPLOYE.TITRE, EMPLOYE.ADRESSE, 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.NOMBRE_JOUR, PAIE.SURSALAIRE, [NOMBRE_JOUR]*[TAUX_TRANSPORT] AS TRANSPORT, PAIE.AUTRES_INDEMNITES, PAIE.CONGES, PAIE.[PRIME_D'ANCIENNETE], [NOMBRE_JOUR]*[TAUX_CATEGORIEL] AS [SALAIRE CATEGORIEL], [SALAIRE CATEGORIEL]*0.012 AS ITS, PRET.MONTANT_PRET, PAIE.GRATIFICATION, PRET.NOMBRE_ECHEANCE, [MONTANT_PRET]/[NOMBRE_ECHEANCE] AS MENSUALITE, [SALAIRE CATEGORIEL]+[CONGES]+[PRIME_D'ANCIENNETE]+[SURSALAIRE]+[GRATIFICATION] AS [SALAIRE BRUT], [SALAIRE BRUT]-[ITS] AS [SALAIRE NET], [SALAIRE NET]+[TRANSPORT]-[MENSUALITE] AS [NET A PAYER], EMPLOYE.VILLE, [DATE_DEBUT_REMBOURSEMENT]+[NOMBRE_ECHEANCE]*30 AS [DATE FIN REMBOURSEMENT]
FROM SERVICE INNER JOIN (((CATEGORIE INNER JOIN EMPLOYE ON CATEGORIE.ID_CATEGORIE = EMPLOYE.ID_CATEGORIE) INNER JOIN PAIE ON EMPLOYE.CODE_EMPLOYE = PAIE.CODE_EMPLOYE) INNER JOIN PRET ON EMPLOYE.CODE_EMPLOYE = PRET.CODE_EMPLOYE) ON SERVICE.ID_SERVICE = EMPLOYE.ID_SERVICE;
elle ne permet aussi de saisir le bulletin ; elle n’affiche que des informations
SELECT PAIE.NUMERO_BULLETIN, PAIE.Date, PAIE.CODE_EMPLOYE, EMPLOYE.NOM_EMPLOYE, EMPLOYE.TAUX_TRANSPORT, EMPLOYE.NUMERO_CNPS, EMPLOYE.PRENOM_EMPLOYE, EMPLOYE.TAUX_TRANSPORT, EMPLOYE.TITRE, EMPLOYE.ADRESSE, 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.NOMBRE_JOUR, PAIE.SURSALAIRE, [NOMBRE_JOUR]*[TAUX_TRANSPORT] AS TRANSPORT, PAIE.AUTRES_INDEMNITES, PAIE.CONGES, PAIE.[PRIME_D'ANCIENNETE], [NOMBRE_JOUR]*[TAUX_CATEGORIEL] AS [SALAIRE CATEGORIEL], [SALAIRE CATEGORIEL]*0.012 AS ITS, PRET.MONTANT_PRET, PAIE.GRATIFICATION, PRET.NOMBRE_ECHEANCE, [MONTANT_PRET]/[NOMBRE_ECHEANCE] AS MENSUALITE, [SALAIRE CATEGORIEL]+[CONGES]+[PRIME_D'ANCIENNETE]+[SURSALAIRE]+[GRATIFICATION] AS [SALAIRE BRUT], [SALAIRE BRUT]-[ITS] AS [SALAIRE NET], [SALAIRE NET]+[TRANSPORT]-[MENSUALITE] AS [NET A PAYER], EMPLOYE.VILLE, [DATE_DEBUT_REMBOURSEMENT]+[NOMBRE_ECHEANCE]*30 AS [DATE FIN REMBOURSEMENT]
FROM SERVICE INNER JOIN (((CATEGORIE INNER JOIN EMPLOYE ON CATEGORIE.ID_CATEGORIE = EMPLOYE.ID_CATEGORIE) INNER JOIN PAIE ON EMPLOYE.CODE_EMPLOYE = PAIE.CODE_EMPLOYE) INNER JOIN PRET ON EMPLOYE.CODE_EMPLOYE = PRET.CODE_EMPLOYE) ON SERVICE.ID_SERVICE = EMPLOYE.ID_SERVICE;
elle ne permet aussi de saisir le bulletin ; elle n’affiche que des informations
Je pense que j'ai trouvé la solution à ma requête, en fait j'avais mis dans ma requête les tables PAIE et PRÊT et EMPLOYE dans la même requête croyant pouvoir saisie en même temps la paie et les prêts, mais j'ai créé maintenant deux requêtes séparément et les deux fonctionnent très bien
Ce qui reste à présent, c'est de faire apparaître la ligne de la mensualité prélevée dans le bulletin de paie
Ce qui reste à présent, c'est de faire apparaître la ligne de la mensualité prélevée dans le bulletin de paie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yg_be
Messages postés
23537
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 581
Je n'ai pas été assez précis: c'est la déduction de la retenue pour l'emprunt qui doit se faire dans la quatrième requête plutôt que dans REQ_PAIE_PRET.
Tous les autres calculs peuvent rester dans REQ_PAIE_PRET.
Tous les autres calculs peuvent rester dans REQ_PAIE_PRET.
Je pense que les résultats sont bons maintenant; le seul problème c’est que quand il n'existe pas de prêt pour un employé la valeur du net a payer est null ; je souhaiterais avoir 0 dans le champ retenu pret pour que le net a payer ait une valeur sinon tout marche bien
SELECT REQ_PAIE_PRET.NUMERO_BULLETIN, REQ_PAIE_PRET.CODE_EMPLOYE, REQ_PAIE_PRET.NOM_EMPLOYE, REQ_PAIE_PRET.PRENOM_EMPLOYE, REQ_PAIE_PRET.GRATIFICATION, REQ_PAIE_PRET.CONGES, REQ_PAIE_PRET.NOMBRE_JOUR, REQ_PAIE_PRET.[SALAIRE BRUT], REQ_PAIE_PRET.ITS, REQ_PAIE_PRET.[SALAIRE NET], REQ_PAIE_PRET.[RETENUE PRET], REQ_PAIE_PRET.TRANSPORT, ([SALAIRE NET]+[TRANSPORT]-[RETENUE PRET]) AS [NET A PAYER]
FROM REQ_PAIE_PRET
GROUP BY REQ_PAIE_PRET.NUMERO_BULLETIN, REQ_PAIE_PRET.CODE_EMPLOYE, REQ_PAIE_PRET.NOM_EMPLOYE, REQ_PAIE_PRET.PRENOM_EMPLOYE, REQ_PAIE_PRET.GRATIFICATION, REQ_PAIE_PRET.CONGES, REQ_PAIE_PRET.NOMBRE_JOUR, REQ_PAIE_PRET.[SALAIRE BRUT], REQ_PAIE_PRET.ITS, REQ_PAIE_PRET.[SALAIRE NET], REQ_PAIE_PRET.[RETENUE PRET], REQ_PAIE_PRET.TRANSPORT, ([SALAIRE NET]+[TRANSPORT]-[RETENUE PRET]);
SELECT REQ_PAIE_PRET.NUMERO_BULLETIN, REQ_PAIE_PRET.CODE_EMPLOYE, REQ_PAIE_PRET.NOM_EMPLOYE, REQ_PAIE_PRET.PRENOM_EMPLOYE, REQ_PAIE_PRET.GRATIFICATION, REQ_PAIE_PRET.CONGES, REQ_PAIE_PRET.NOMBRE_JOUR, REQ_PAIE_PRET.[SALAIRE BRUT], REQ_PAIE_PRET.ITS, REQ_PAIE_PRET.[SALAIRE NET], REQ_PAIE_PRET.[RETENUE PRET], REQ_PAIE_PRET.TRANSPORT, ([SALAIRE NET]+[TRANSPORT]-[RETENUE PRET]) AS [NET A PAYER]
FROM REQ_PAIE_PRET
GROUP BY REQ_PAIE_PRET.NUMERO_BULLETIN, REQ_PAIE_PRET.CODE_EMPLOYE, REQ_PAIE_PRET.NOM_EMPLOYE, REQ_PAIE_PRET.PRENOM_EMPLOYE, REQ_PAIE_PRET.GRATIFICATION, REQ_PAIE_PRET.CONGES, REQ_PAIE_PRET.NOMBRE_JOUR, REQ_PAIE_PRET.[SALAIRE BRUT], REQ_PAIE_PRET.ITS, REQ_PAIE_PRET.[SALAIRE NET], REQ_PAIE_PRET.[RETENUE PRET], REQ_PAIE_PRET.TRANSPORT, ([SALAIRE NET]+[TRANSPORT]-[RETENUE PRET]);
Le plus propre est d'adapter la requête REQ_PAIE_PRET. Je suppose que tu as modifié la jointure, comme suggéré en #92 (LEFT JOIN au lieu de INNER JOIN), mais je n'ai pas vu la requête modifiée.
Dans cette requête, il faut utiliser nz() pour renvoyer 0 au lieu de null pour le champ correspondant à la retenue (quand il n'y a pas de prêt).
Dans cette requête, il faut utiliser nz() pour renvoyer 0 au lieu de null pour le champ correspondant à la retenue (quand il n'y a pas de prêt).
voici la requete REQ_PAIE_PRET avec laquelle je n'arrive toujours pas a obtenir les regroupement:
SELECT REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.GRATIFICATION, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.[SALAIRE BRUT], REQ_PAIE.TRANSPORT, REQ_PAIE.CONGES, REQ_PAIE.ITS, ([SALAIRE BRUT]-[ITS]) AS [SALAIRE NET], Sum(Nz([MENSUALITE RETENUE PRET],0)) AS [RETENUE PRET]
FROM REQ_PRET RIGHT JOIN REQ_PAIE ON REQ_PRET.CODE_EMPLOYE = REQ_PAIE.CODE_EMPLOYE
GROUP BY REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.GRATIFICATION, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.[SALAIRE BRUT], REQ_PAIE.TRANSPORT, REQ_PAIE.CONGES, REQ_PAIE.ITS, ([SALAIRE BRUT]-[ITS]);
mais avec la requete SALAIRE obtenue avec la requete REQ_PAIE_PRET j'ai mes résultats
voic les instructions SQL
SELECT REQ_PAIE_PRET.NUMERO_BULLETIN, REQ_PAIE_PRET.CODE_EMPLOYE, REQ_PAIE_PRET.NOM_EMPLOYE, REQ_PAIE_PRET.PRENOM_EMPLOYE, REQ_PAIE_PRET.GRATIFICATION, REQ_PAIE_PRET.CONGES, REQ_PAIE_PRET.NOMBRE_JOUR, REQ_PAIE_PRET.[SALAIRE BRUT], REQ_PAIE_PRET.ITS, REQ_PAIE_PRET.[SALAIRE NET], Nz([RETENUE PRET],0) AS PRET, REQ_PAIE_PRET.TRANSPORT, Nz(([SALAIRE NET]+[TRANSPORT]-Nz([RETENUE PRET],0)),0) AS [NET A PAYER]
FROM REQ_PAIE_PRET
GROUP BY REQ_PAIE_PRET.NUMERO_BULLETIN, REQ_PAIE_PRET.CODE_EMPLOYE, REQ_PAIE_PRET.NOM_EMPLOYE, REQ_PAIE_PRET.PRENOM_EMPLOYE, REQ_PAIE_PRET.GRATIFICATION, REQ_PAIE_PRET.CONGES, REQ_PAIE_PRET.NOMBRE_JOUR, REQ_PAIE_PRET.[SALAIRE BRUT], REQ_PAIE_PRET.ITS, REQ_PAIE_PRET.[SALAIRE NET], Nz([RETENUE PRET],0), REQ_PAIE_PRET.TRANSPORT, Nz(([SALAIRE NET]+[TRANSPORT]-Nz([RETENUE PRET],0)),0);
SELECT REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.GRATIFICATION, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.[SALAIRE BRUT], REQ_PAIE.TRANSPORT, REQ_PAIE.CONGES, REQ_PAIE.ITS, ([SALAIRE BRUT]-[ITS]) AS [SALAIRE NET], Sum(Nz([MENSUALITE RETENUE PRET],0)) AS [RETENUE PRET]
FROM REQ_PRET RIGHT JOIN REQ_PAIE ON REQ_PRET.CODE_EMPLOYE = REQ_PAIE.CODE_EMPLOYE
GROUP BY REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.GRATIFICATION, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.[SALAIRE BRUT], REQ_PAIE.TRANSPORT, REQ_PAIE.CONGES, REQ_PAIE.ITS, ([SALAIRE BRUT]-[ITS]);
mais avec la requete SALAIRE obtenue avec la requete REQ_PAIE_PRET j'ai mes résultats
voic les instructions SQL
SELECT REQ_PAIE_PRET.NUMERO_BULLETIN, REQ_PAIE_PRET.CODE_EMPLOYE, REQ_PAIE_PRET.NOM_EMPLOYE, REQ_PAIE_PRET.PRENOM_EMPLOYE, REQ_PAIE_PRET.GRATIFICATION, REQ_PAIE_PRET.CONGES, REQ_PAIE_PRET.NOMBRE_JOUR, REQ_PAIE_PRET.[SALAIRE BRUT], REQ_PAIE_PRET.ITS, REQ_PAIE_PRET.[SALAIRE NET], Nz([RETENUE PRET],0) AS PRET, REQ_PAIE_PRET.TRANSPORT, Nz(([SALAIRE NET]+[TRANSPORT]-Nz([RETENUE PRET],0)),0) AS [NET A PAYER]
FROM REQ_PAIE_PRET
GROUP BY REQ_PAIE_PRET.NUMERO_BULLETIN, REQ_PAIE_PRET.CODE_EMPLOYE, REQ_PAIE_PRET.NOM_EMPLOYE, REQ_PAIE_PRET.PRENOM_EMPLOYE, REQ_PAIE_PRET.GRATIFICATION, REQ_PAIE_PRET.CONGES, REQ_PAIE_PRET.NOMBRE_JOUR, REQ_PAIE_PRET.[SALAIRE BRUT], REQ_PAIE_PRET.ITS, REQ_PAIE_PRET.[SALAIRE NET], Nz([RETENUE PRET],0), REQ_PAIE_PRET.TRANSPORT, Nz(([SALAIRE NET]+[TRANSPORT]-Nz([RETENUE PRET],0)),0);
REQ_PAIE_PRET me semble correcte, elle donne plusieurs lignes quand il y a plusieurs prêts?
moi j'y ferais
Je pense que tout le GROUP BY est inutile dans la requête SALAIRE, dan laquelle il n'y a aucune fonction d'agrégation (comme sum()).
moi j'y ferais
nz(Sum([MENSUALITE RETENUE PRET])) AS [RETENUE PRET], ce qui permettrait de retirer les nz') de la requête SALAIRE.
Je pense que tout le GROUP BY est inutile dans la requête SALAIRE, dan laquelle il n'y a aucune fonction d'agrégation (comme sum()).
Effectivement la requete; REQ_PAIE_PRET donne ceci et me semble correcte ;elle ne donne plus plusieurs ligne quand il y a plusieurs prêts ; dans ce cas pourquoi avons nous fait la requete SALAIRE ; je ne vois pas son utilité ; essayez de m'expliquer
la voici
SELECT REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.GRATIFICATION, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.[SALAIRE BRUT], REQ_PAIE.TRANSPORT, REQ_PAIE.CONGES, REQ_PAIE.ITS, ([SALAIRE BRUT]-[ITS]) AS [SALAIRE NET], Round(Nz(Sum([MENSUALITE RETENUE PRET]),0),0) AS [RETENUE PRET], Round([SALAIRE BRUT]-[ITS]+[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
GROUP BY REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.GRATIFICATION, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.[SALAIRE BRUT], REQ_PAIE.TRANSPORT, REQ_PAIE.CONGES, REQ_PAIE.ITS, ([SALAIRE BRUT]-[ITS]);
la voici
SELECT REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.GRATIFICATION, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.[SALAIRE BRUT], REQ_PAIE.TRANSPORT, REQ_PAIE.CONGES, REQ_PAIE.ITS, ([SALAIRE BRUT]-[ITS]) AS [SALAIRE NET], Round(Nz(Sum([MENSUALITE RETENUE PRET]),0),0) AS [RETENUE PRET], Round([SALAIRE BRUT]-[ITS]+[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
GROUP BY REQ_PAIE.NUMERO_BULLETIN, REQ_PAIE.Date, REQ_PAIE.NOMBRE_JOUR, REQ_PAIE.CODE_EMPLOYE, REQ_PAIE.NOM_EMPLOYE, REQ_PAIE.GRATIFICATION, REQ_PAIE.PRENOM_EMPLOYE, REQ_PAIE.[SALAIRE BRUT], REQ_PAIE.TRANSPORT, REQ_PAIE.CONGES, REQ_PAIE.ITS, ([SALAIRE BRUT]-[ITS]);
ce sont des prêts sans intérêt?