Prélèvement automatique des prêts sur salaires
Résoluyg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
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
- Prélèvement automatique des prêts sur salaires
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Réponse automatique thunderbird - Guide
- Sarl et cie s.c.a prélèvement - Accueil - Guide arnaque
- Topsec vitry-sur-seine prélèvement - Forum Consommation & Internet
6 réponses
La problématique porte sur la mise en place d'un prélèvement automatique mensuel des échéances de remboursement des prêts directement sur les paies, jusqu'à l'apurement total, via une base de données paie. Des ajustements préconisés incluent la correction de la requête de paie et prêt, l'ajout des dates de début et fin de remboursement, et des jointures plus précises pour éviter les doublons. En cas de prêt multiple ou de plusieurs paies, la logique nécessite le regroupement correct des champs et l'explication du modèle pour vérifier que les mensualités ne sont pas imputées deux fois. D'autre part, le concept de DATEREMBOURSEMENT et son rôle, ainsi que la précision sur le décompte mensuel, doivent être clarifiés pour éviter des interprétations erronées.
le point de départ, c'est de structurer correctement les tables.
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
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
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 questionTous les autres calculs peuvent rester dans REQ_PAIE_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]);
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).
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);
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()).
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?