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
Bonjour,

J'ai une base de donnée qui gère la paie et je souhaiterais que le prélèvement des échéances de remboursement des prêts octroyés au travailleurs se fassent automatiquement chaque mois jusqu'à l’apurement de la dette .
est il possible de le faire ?

Si oui jai vraiment besoin d'aide
merci d'avance

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.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci deja, est ce que je peux publier les relations entre les tables
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
pourquoi pas? quelle st ta question?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention  
 
Voici les relation entre les tables en question
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
quand les enregistrements sont-ils créés dans la table ENREGISTREMENT?
ce sont des prêts sans intérêt?
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention  
 
il est également utile d'expliquer chacun des champs, cela aide à vérifier que la logique est correcte.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581
 
il est utile d'avoir un document qui décrive chacun des champs.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ok ;cest bien noté ; aussi je constate que quand un employé a plusieurs prêts et que le bulletin est crée ma requete affiche plusieurs bulletins de paie avec le même numéro ; je pense ce n’est pas normal
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
je pense que cela indique qu'il faut améliorer la requête.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention  
 
avez vous regardé les relations ; est ce qu'elles sont logiques ?
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
quelles relations dans quelle requête? je n'ai pas vu de requête adaptée à la nouvelle structure des tables (PERIODICITE, etc...).
ni n'ai vu de requête tenant compte des dates des prélèvements.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
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
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581
 
qu'as-tu essayé pour faire apparaître la ligne de la mensualité prélevée dans le bulletin de paie?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je pense qu'il faut combiner les deux requêtes, enfin de voir la ligne mensualité dans le bulletin ainsi que le net à payer
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
combiner quelles requêtes?
qu'as-tu essayé?
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention  
 
Il s'agit des requêtes de PAIE et de PRET crée en <64> j'ai essaye mais quand l'employe à deux lignes de bulletins et plusieurs prets ; toutes ces lignes de bulletin et des prets apparaissent dans cette nouvelle requete
je suis planté
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
montre les codes source des trois requetés.
je suppose que tu n'as pas utilisé les dates dans les jointures.
0

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.
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
Ça marche très bien, voir la requête e' #104#sauf que quand, le retenue de prêt n'existe pas, le net a payer est aussi null, comment fair apparaitre 0 dans c'est deux champs quand un prêt n'existe pas
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1
 
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]);
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581
 
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).
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention  
 
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);
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
REQ_PAIE_PRET me semble correcte, elle donne plusieurs lignes quand il y a plusieurs prêts?
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()).
0
Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   1 > yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention  
 
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]);
0
yg_be Messages postés 23537 Date d'inscription   Statut Contributeur Dernière intervention   1 581 > Oholabi12345 Messages postés 498 Date d'inscription   Statut Membre Dernière intervention  
 
L'explication est en #97: je pensais que tes connaissances ne te permettraient pas d'arriver à tout faire dans REQ_PAIE_PRET, que ce serait plus accessible en deux requêtes.
0