Closed Roddy01 closed 7 years ago
Quel est le congé maximal dont tu parles ?
il doit certainement parler de conges_solde_user.su_nb_an
Salut @Roddy01 on va essayer d'avancer par étape. qu'as tu réussi à faire jusqu’à maintenant? étape 1 : créer un fichier et exécuter une requête SQL quelconque.
Bonjour les gars!
Dsl pour ce mail retardé car pb de coupure connexion :-)
Comme je vous ai dis la dernière fois, je pense utiliser cron pour la tâche planifiée de l'envoi de mail. C'est-a-dire afin d'envoyer le mail tout le 1er jour de chaque moi, je pense creer un script php et de l'exécuter avec cron.
Jusk a maintenant, je pense creer un fichier nommé dépassement.php et de faire une requête qui va se communiquer avec la BDD db_conges de Libertempo. Et par la suite, l'intégrer dans cron
Mais comment faire? pouvez-m'aider? Est ce que cette méthode ça ira? ou faudra t-il faire autre méthode car selon Prytoegrian, utiliser cron n'est pas dans le cadre du déco de l'appi
Dans l'attente de votre retour
Pour votre info : 1- Quel est le congé maximal dont tu parles ? ==> c'est conges_solde_user.su_nb_an
2- Il faudra faire aussi une cloture automatik d'exercice tous les 28ième du mois!! Comment faire svp?
Rod
ok, j'ai bien compris ton besoin. C'est faisable mais tu va devoir avancer par étape si tu veux t'en sortir.
je pense creer un fichier nommé dépassement.php et de faire une requête qui va se communiquer avec la BDD db_conges de Libertempo. Et par la suite, l'intégrer dans cron
très bien! donc, pour commencer, créé le fichier depassement.php et essaye d’exécuter une requête te retournant tout les utilisateurs avec u_is_resp=Y
. inspire toi de ça par exemple.
Pour t'aider dans le débogage de ton code, tu peux utiliser kint :
ENV_PROD
par ENV_DEV
.d($lavariablequetuveux);
pour avoir le contenu de la variable lorsque tu exécute la page dans ton navigateur...Bonjour wouldsmina,
Concernant la requête :
function gettousutilisateurs($login) { if (empty($login)) { return []; } $sql = \includes\SQL::singleton(); $req = 'SELECT * FROM conges_users WHERE u_login =' . $login; $tousutilisateurs = $sql->query($req)->fetch_array();
$tousutilisateurs['u_login'] = $login;
return $tousutilisateurs;
}
Est ce que c'est correct?
Remarques :
1- Où se trouve u_is_resp=Y ? 2- Dans la version libertempo 1.8.1, je n'arrive pas à trouver le fichier cfg/env.php dans ce répertoire cfg
Pour correction car je sais où est u_is_resp :-)
function gettousutilisateurs($login) {
if (empty($login)) { return []; } $sql = \includes\SQL::singleton(); $req = 'SELECT * FROM conges_users WHERE u_is_resp = Y;
$tousutilisateurs = $sql->query($req)->fetch_array();
$tousutilisateurs['u_login'] = $login;
return $tousutilisateurs;
}
$tousutilisateurs['u_login'] = $login;
ne sert à rien. Tu as ton résultat dans $tousutilisateurs
.
Dans la version libertempo 1.8.1, je n'arrive pas à trouver le fichier cfg/env.php
Autant pour moi, dans la 1.8.1, cette constante ce trouve dans define.php...
Maintenant que tu as tout les responsables, il faut que tu créer une fonction qui va te retourner tout les employés d'un responsable mais tu as de la chance, cette fonction existe dans la 1.9.
l'étape suivante sera d'identifier les employés avec conges_solde_user.su_nb_an < conges_solde_user.su_solde
...
Salut!
La requête serait :
//retourner tous les employés d'un responsable avec conges_solde_user.su_nb_an < conges_solde_user.su_solde... function getUsersRespDirect($resp) { $users = []; $sql = \includes\SQL::singleton(); $req = 'SELECT U.u_login FROM conges_solde_user S INNER JOIN conges_users U ON(S.su_login=U.u_login) WHERE S.su_nb_an < S.su_solde AND u_resp_login ="'. $resp . '"' ; $res = $sql->query($req); while ($data = $res->fetch_array()) { $users[] = $data['u_login']; } return $users; }
Dans l'attente de ton retour
Rod
Ok, tu saute une étape mais c'est pas grave...
Avec cette requête, tu n'as que les responsables direct. Si tu veux aussi les responsables de groupe, tu devras chercher dans la table conges_groupe. regarde ce qui est fait ici...
Comment devrais-je faire ou procéder pour la requête car il n'existe de relation de entre la table conges_groupe et conges_users afin d'obtenir les utilisateurs ou employés appartenant à un responsable?
Le 6 février 2017 à 18:53, wouldsmina notifications@github.com a écrit :
Ok, tu saute une étape mais c'est pas grave...
Avec cette requête, tu n'as que les responsables direct. Si tu veux aussi les responsables de groupe, tu devras chercher dans la table conges_groupe. regarde ce qui est fait ici https://github.com/wouldsmina/Libertempo/blob/topic/heure/App/ProtoControllers/Responsable.php#L104 ...
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/wouldsmina/Libertempo/issues/311#issuecomment-277724212, or mute the thread https://github.com/notifications/unsubscribe-auth/AYKmaV35-r58UFKtLN6drNPS8U-xXIaIks5rZ0IHgaJpZM4L1LjV .
Pourrais-tu me montrer cette requête stp? Et quelle est l'étape suivante?
Merci d'avance
Rod
Le 6 février 2017 à 19:11, Randrianarison Roddy < roddyrandrianarison@gmail.com> a écrit :
Comment devrais-je faire ou procéder pour la requête car il n'existe de relation de entre la table conges_groupe et conges_users afin d'obtenir les utilisateurs ou employés appartenant à un responsable?
Le 6 février 2017 à 18:53, wouldsmina notifications@github.com a écrit :
Ok, tu saute une étape mais c'est pas grave...
Avec cette requête, tu n'as que les responsables direct. Si tu veux aussi les responsables de groupe, tu devras chercher dans la table conges_groupe. regarde ce qui est fait ici https://github.com/wouldsmina/Libertempo/blob/topic/heure/App/ProtoControllers/Responsable.php#L104 ...
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/wouldsmina/Libertempo/issues/311#issuecomment-277724212, or mute the thread https://github.com/notifications/unsubscribe-auth/AYKmaV35-r58UFKtLN6drNPS8U-xXIaIks5rZ0IHgaJpZM4L1LjV .
cette fonction récupère les groupes d'un employé Celle-ci te permet d'avoir les responsables des groupes.
l'étape suivante, c'est de récupérer l'adresse mail du responsable, et enfin construire le mail et l'envoyer (pour cela, il te faudra quelques infos en plus, comme les noms et les prénoms des employés...).
$query1 = "SELECT u_email, u_nom, u_prenom FROM conges_user WHERE u_is_rep = Y OR u_is_hr = Y"; $query2 = "SELECT u_email, u_nom, u_prenom FROM conges_user";
$stmt1 = \includes\SQL::query($query1); $stmt2 = \includes\SQL::query($query2);
while($res2 = $stmt2->fetch_object() AND $res2 = $stmt2->fetch_object() ) {
$object = 'Dépassement de congé.';
$sender_name = $res2->u_prenom . ' ' . $res2->u_nom;
$sender_addr = $res2->u_email;
$dest_name = $res1->u_prenom . ' ' . $res1->u_nom;
$dest_addr = $res1->u_email;
$contenu = "Bonjour \r\n";
$contenu .= "$sender_name, vous avez un depassement de congé de " .
$res->su_reliquat . ".\r\n"; $contenu .= "Vous devez partir en congé ou vous serez renvoyé immédiatement.\r\n\r\n\r\n"; $contenu .= "Les RH.";
mail_depassement($object, $contenu, $sender_name, $sender_addr,
$dest_name, $dest_addr); ==> en utilisant php mailer }
Comment vois tu ce type de programme?
Pourrais-tu stp m'éclaicir sur l'algorithme car tu me demandes de créer plusieurs fonctions et où est ce que je vais les appeler?
une vue globale de l'algo serait génial!!
Dans l'attente
Rod
Une fois que tu aura toutes les fonctions qui vont bien, tu n'aura plus qu'a les appeler directement depuis le même fichier. Pour ce qui est de ta dernière fonction, je suis pas sur pour le while...
Il faut que tu test tes fonction pour voir si elles retournent bien ce que tu attends. C'est pour ça que je t'ai expliqué comment utiliser kint...
j'essaie de tester le retour de mes fonctions :
1er test : function gettousutilisateurs($login)
// retourner tous les responsables function gettousutilisateurs($login) { if (empty($login)) { return []; } $sql = \includes\SQL::singleton(); $req = "SELECT * FROM conges_users WHERE u_is_resp = Y"; $tousutilisateurs = $sql->query($req)->fetch_array();
return $tousutilisateurs; }
d($tousutilisateurs);
Remarques :
1- Est ce que je dois faire d($tousutilisateurs) pour voir le retour cette fonction? 2- En tt cas j'ai une erreur du genre,
login : uri : /libertempo/custom/depassemet_conges_version2.php dump : C:\wamp\www\Libertempo\custom/../dump/sql_1486456027.dump
file : C:\wamp\www\Libertempo\includes\SQL.php line : 90 fx : $SQL->query error : Unknown column 'Y' in 'where clause' sql : SELECT * FROM conges_users WHERE u_is_resp = Y
Dans l'attente,
Rod
Mon problème avec le While c que, je dois reccupérer la mail du responsable autant les infos des users donc selon moi je devrait faire deux requête pour avoir le mail du resp d'une part et les infos des users d'autre part!
As tu une idée?
Merci
Rod
function gettousutilisateurs($login) {
if (empty($login)) {
return [];
}
$sql = \includes\SQL::singleton(); $req = "SELECT * FROM conges_users WHERE u_is_resp = Y";
$tousutilisateurs = $sql->query($req)->fetch_array();
return $tousutilisateurs;
}
$login ne te sert a rien, retire le. le nom de ta fonction n'est pas clair (si tu reviens sur ton code dans 6 mois tu comprendra plus rien)...
1- Est ce que je dois faire
d($tousutilisateurs);
pour voir le retour cette fonction?
Dans la fonction, avant le return
, oui. tu peux aussi faire d(gettousutilisateurs())
au début de ton fichier.
En tt cas j'ai une erreur du genre,
Unknown column 'Y' in 'where clause' ! Il manque les quotes...
ça marche pour la 1ère.
2ième fonction : function getUsersRespDirect()
/retourner tous les employés d'un responsable avec conges_solde_user.su_nb_an < conges_solde_user.su_solde...
cette fonction ne retourne rien :-(
Pourrais tu m'aider?
Dans l'attente
Rod
2017-02-07 12:30 GMT+03:00 wouldsmina notifications@github.com:
function gettousutilisateurs($login) { if (empty($login)) { return []; } $sql = \includes\SQL::singleton(); $req = "SELECT * FROM conges_users WHERE u_is_resp = Y"; $tousutilisateurs = $sql->query($req)->fetch_array();
return $tousutilisateurs;
}
$login ne te sert a rien, retire le. le nom de ta fonction n'est pas clair (si tu reviens sur ton code dans 6 mois tu comprendra plus rien)...
1- Est ce que je dois faire d($tousutilisateurs); pour voir le retour cette fonction?
Dans la fonction, avant le return, oui. tu peux aussi faire d(gettousutilisateurs()) au début de ton fichier.
En tt cas j'ai une erreur du genre,
Unknown column 'Y' in 'where clause' ! Il manque les quotes...
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/wouldsmina/Libertempo/issues/311#issuecomment-277945627, or mute the thread https://github.com/notifications/unsubscribe-auth/AYKmadPBEToUpsELlZBYbFm4WesclqmTks5raDmtgaJpZM4L1LjV .
Tu veux bien mettre tes codes dans : ```php || js {monCode} ```
pour les prochains échanges ? C'est très difficile à lire sans ça.
Dsl! pourrais tu me donner un lien stp car je n'arrive pas à me connecter directement dans github!!
j'ai résolu le pb d'avant car la condition dans ma requête n'était pas présent!!
Mais à présent pour les 2 fonctions :
// Retourner les groupes d'un employés
function getGroupesId()
{
$ids = [];
$sql = \includes\SQL::singleton();
$req = 'SELECT gu_gid AS id
FROM conges_groupe_users
WHERE gu_login ="'.\includes\SQL::quote($user).'"';
$res = $sql->query($req);
while ($data = $res->fetch_array()) {
$ids[] = (int) $data['id'];
}
return $ids;
}
d(getGroupesId());
//Retourner les responsables d'une liste de groupe
function getListResponsableByGroupeIds(array $groupeIds)
{
$sql = \includes\SQL::singleton();
$req = 'SELECT gr_login,gr_gid
FROM conges_groupe_resp
WHERE gr_gid IN (\'' . implode(',', $groupeIds) . '\')';
$query = $sql->query($req);
while ($data = $query->fetch_array()) {
$respLogin[$data['gr_gid']] = $data['gr_login'];
}
return $respLogin;
}
comment devrais-je appeler leurs valeurs de retours et c quoi les paramètres à mettre dans les fonctions? ou devrais-je ne pas mettre de paramètre?
Dns l'attente
Rod
getGroupesId()
: il manque $user en paramètre...
getListResponsableByGroupeIds(array $groupeIds)
$groupeIds correspond au résultat de getGroupesId()
comment je dois appeler la fonction PHP getGroupesId($users) et getListResponsableByGroupeIds(array $groupeIds
avec kint pour avoir les valeurs de retour des fonctions?
Ex : d(getGroupesId(?))=> c'est quoi le paramètre à mettre? même cas pour getListResponsableByGroupeId
2017-02-07 13:31 GMT+03:00 wouldsmina notifications@github.com:
getGroupesId() : il manque $user en paramètre...
getListResponsableByGroupeIds(array $groupeIds) $groupeIds correspond au résultat de getGroupesId()
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/wouldsmina/Libertempo/issues/311#issuecomment-277959882, or mute the thread https://github.com/notifications/unsubscribe-auth/AYKmaXBpVVNCEIBrc1Ns82Cg4BZQl-x7ks5raEgHgaJpZM4L1LjV .
Il faut vraiment que tu fasse un effort de rédaction...
getGroupesId($users)
: $users correspond à ce que t'as retourné la fonction getUsersRespDirect()
(le nom de cette fonction n'est pas clair non plus!). Vu que getUsersRespDirect()
te retourne un tableau, tu dois faire une boucle pour appeler getGroupesId($users)
et getListResponsableByGroupeIds
Wouldsmima!
si je souhaite clôturer automatiquement la clôture d'exercice de Libertempo dans la rubrique RH, pourrais-tu me donner une fonction qui va exécuter cette clôture sans passer par validation manuelle.
J'ai déjà regardé les fonctions dans le répertoire hr/ mais en voyant les fonctiond cloture globale et cloture par personne, il existe plusieurs appels de fonction dans ces fonctions donc c un peu difficile pour moi de l'adapter à mes besoins.
Donc si je résume, pourrais tu me donner directement une fonction qui va cloturer l'exercice sans passer par ces variables de SESSIONS, ces appels de fonctions à l'intérieur de cloture_globale et clôture_par_personnes?
Merci d'avance
Rod
Le 7 février 2017 à 13:49, wouldsmina notifications@github.com a écrit :
getGroupesId($users) : $users correspond à ce que t'as retourné la fonction getUsersRespDirect() (le nom de cette fonction n'est pas clair non plus!). Vu que getUsersRespDirect() te retourne un tableau, tu dois faire une boucle pour appeler getGroupesId($users) et getListResponsableByGroupeIds
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/wouldsmina/Libertempo/issues/311#issuecomment-277963821, or mute the thread https://github.com/notifications/unsubscribe-auth/AYKmaXpMmty4p5dec3miVzYWznvjIoBXks5raEw_gaJpZM4L1LjV .
Tu es arrivé à finir l'envoi de mail en cas de solde trop élevé?
oui mais sans les fonctions saul pour celui du mail
ok. En ce qui concerne la clôture d'exercice, je maîtrise un peu moins. Je regarde comment ça marche dés que j'ai un peu de temps...
Bjr,
As tu des infos sur la fonctionnalité de cette clôture?
Merci d'avance
Rod
Salut @Roddy01, J'ai réfléchi à ton besoin hier soir. Finalement tu n'as pas forcément besoin d’exécuter un changement d'exercice. Ce que tu veux (dit moi si je me trompe), c'est incrémenter le solde des employés de 2,5 jours par mois. Si c'est bien cela, c'est très simple, tu as une seul requête à faire...
Salut,
C'est exactement ce que je souhaite à faire!
Pourrais tu me monter cette requête stp? un exemple
Rod
UPDATE conges_solde_user SET su_solde = su_solde+2.5
La tu ajoute 2,5 a tout le monde.
Après, a toi de voir si tu as d'autres critères pour incrémenter le solde. Par exemple, ne prendre en compte que les utilisateurs activé conges_users.u_is_active = Y
...
@Roddy01 on peut clore le sujet? tu es arrivé à tes fins?
[Bug] Pour nous aider à corriger le bug dans les meilleures conditions, merci de prendre le temps de détailler ces quelques points
Système et application
Bonjour,
Dans le cadre de l'utilisation de Libertempo dans mon projet local actuellement , je souhaiterai envoyé un mail automatique à chaque utilisateur pour tout dépassement de congé actuel qui sera supérieur au congé maximal. En effet, un mail automatique sera à envoyer et à planifier tout le premier jour du mois pour chaque mois à chaque utilisateur. Le responsable ainsi que la RH sera mis en copie de ce mail d'envoi. La tâche d'envoi de mail est donc une automatisation à faire tout le 1er jour du mois précédent.
Si possible, la clôture d'exercice se fermera aussi automatiquement tous les 28ième jour du mois,
Comment faire cela côté codes sources et pouvez-vous me les montrer s'il-vous-plaît car ça fait plusieurs jours que je me suis focaliser sur ça mais en vain!!!! :-(
Rod