liste_liberations.inc.php 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955
  1. <?PHP
  2. // ------------------------------
  3. // Caractéristiques du module
  4. // ------------------------------
  5. unset($module);
  6. $module = array(
  7. "titre" => "Gestion des libérations",
  8. "urldest" => $SCRIPT_NAME . "?page=liste_liberations",
  9. "recherche" => array("engin" => true),
  10. "jeton" => $jeton,
  11. "opradmin" => "Ajouter une libération",
  12. "fenetre" => array(
  13. "nom" => "liste_liberations",
  14. "titre" => "titre",
  15. "largeur" => "1200",
  16. "hauteur" => "500",
  17. "champs" => array("lnoemployeur", "lnom", "lcontact", "ltitre", "ladresse1", "ladresse2", "lville", "lcodepostal", "ltelephone", "ltelecopieur", "lemail")
  18. ),
  19. "msgajoutbouton" => "Ajout de la libération",
  20. "msgmodifbouton" => "Modification de la libération",
  21. "actionmodifbouton" => "Modifier la libération",
  22. "nombre_a_afficher" => array(
  23. 0 => array("refid" => 15, "valeur" => 15),
  24. 1 => array("refid" => 30, "valeur" => 30),
  25. 2 => array("refid" => 45, "valeur" => 45),
  26. 3 => array("refid" => 60, "valeur" => 60),
  27. 4 => array("refid" => 120, "valeur" => 120),
  28. 5 => array("refid" => 240, "valeur" => 240)
  29. ),
  30. "colonneaction" => true,
  31. "lientri" => true,
  32. "entete" => array(
  33. 1 => array("Demandée par" => "concat(employes.nomfamille,employes.prenom)", "largeur" => "100px"), //130
  34. 2 => array("Employé" => "concat(employes.nomfamille, employes.prenom)", "largeur" => "150px"), //130
  35. 3 => array("Type" => "liberations.typeoperation", "largeur" => "60px"), //78px
  36. 4 => array("Date" => "ligneliberations.dateliberation", "largeur" => "75px"), //141px
  37. 5 => array("Article" => "articles.noarticle", "largeur" => "60px"), //65px
  38. 6 => array("Commentaire" => "ligneliberations.commentaire", "largeur" => "214px"),
  39. 7 => array("Durée" => "duree.duree", "largeur" => "56px"), //61px
  40. 8 => array("Lieu" => "ligneliberations.lieu", "largeur" => "89px"),
  41. 9 => array("Assumée par" => "ligneliberations.quipaye", "largeur" => "75px"), //105px
  42. 10 => array("Paiement" => "ligneliberations.paiement", "largeur" => "84px", "droit" => array("gestion_site" => "Oui")),
  43. 11 => array("En date du" => "ligneliberations.datepaiement", "largeur" => "88px", "droit" => array("gestion_site" => "Oui")), //95px
  44. 12 => array("<img alt=\"Pdf\" src=\"images/pdficon_small.gif\">" => "-1", "largeur" => "22px"),
  45. 13 => array("<img alt=\"Pdf\" src=\"images/icones/icones_20.png\">" => "-1", "largeur" => "22px")
  46. ),
  47. "msg" => array(
  48. "maj_ok" => "Création de la libération effectuée avec succès.",
  49. "maj_echec" => "L'opération de création de la libération a échouée.",
  50. "modif_ok" => "Modification de la libération effectuée avec succès.",
  51. "modif_echec" => "L'opération de modification de la libération a échouée.",
  52. "typeopr" => "Le type d'opération n'a pas été sélectionné.",
  53. "datecreation" => "La date de création n'a pas été inscrite ou est invalide.",
  54. "choixemp" => "L'employé n'a pas été sélectionné.",
  55. "dateliberation" => "Le format de la date de libération est invalide.",
  56. "numeroart" => "Le numéro d'article est inconnu.",
  57. "dateoccupee" => "La date de libération est déjà prise pour le même article pour ce membre.",
  58. "annulationimpossible" => "Il n'y a aucune demande de libération à annuler pour ce membre.",
  59. "dureevide" => "La durée est inconnue.",
  60. "commentairevide" => "Le commentaire est vide.",
  61. "lieuvide" => "Le lieu est vide.",
  62. "quipaye" => "L'organisme payeur n'a pas été choisit.",
  63. "rech_ok" => "La recherche a réussie.",
  64. "rech_echec" => "La recherche a été infructueuse ou a échouée.",
  65. "employeur_invalide" => "Employeur introuvable ou inconnu.",
  66. "annulationDemandee" => "Annulation de la demande déjà effectuée"
  67. )
  68. );
  69. // ------------------
  70. // Requête sur le tri
  71. // ------------------
  72. $rtri = antiInjection($module["entete"][$tri][key($module["entete"][$tri])] . " " . $dir);
  73. // -----------------------
  74. // Opération de sauvegarde
  75. // -----------------------
  76. //Conversion de la variable actionmultiple en action pour éviter le conflit.
  77. if (!empty($actionmultiple) && $actionmultiple != "-1") {
  78. $action = $actionmultiple;
  79. }
  80. if (isset($action)) {
  81. $msg = "";
  82. //Cueillette de données du module
  83. $action = stripslashes(antiInjection($action));
  84. //$noliberation = stripslashes(antiInjection($noliberation));
  85. switch ($action) {
  86. case "Accepter et imprimer":
  87. case "Accepter et envoyer par courriel":
  88. case "Modifier":
  89. case "Modifier et imprimer":
  90. unset($opereussie);
  91. unset($erreurid);
  92. unset($modemodif);
  93. $modemodif = false;
  94. $opereussie = true;
  95. if ($action == "Modifier" || $action == "Modifier et imprimer") {
  96. $modemodif = true;
  97. }
  98. if ($ltypeopr != "" && $ldatecreation != "" && $lreference != "") {
  99. // Validation du type d'opération
  100. $rltypeopr2 = antiInjection($ltypeopr);
  101. if ($rltypeopr2 != "1" && $rltypeopr2 != "2") {
  102. $opereussie = false;
  103. $erreurid = "typeopr";
  104. break;
  105. }
  106. // Validation de la date de création
  107. $rldatecreation = antiInjection($ldatecreation);
  108. if (strtotime($rldatecreation) == false) {
  109. $opereussie = false;
  110. $erreurid = "datecreation";
  111. break;
  112. }
  113. // La référence est le numéro de l'employé dans la bd
  114. $rlreference = antiInjection($lreference);
  115. unset($sqlparam, $result);
  116. $sqlparam["table"][] = "employes";
  117. $sqlparam["champs"][] = "CONCAT(nomfamille,\", \",prenom) as nomemploye";
  118. $sqlparam["where"][] = sprintf("refemploye = %d", $rlreference);
  119. $result = executerRequeteSql($sqlparam);
  120. if (!(isset($result) && is_array($result) && count($result) > 0)) {
  121. $msg = sprintf("L'employé «%s» n'est pas un membre connu.", $nomemploye);
  122. $opereussie = false;
  123. $erreurid = "choixemp";
  124. }
  125. // Conditions de base remplies
  126. // Le type d'opération
  127. // L'employé
  128. // La date de création du document
  129. // Toujours pas d'erreur, nous continuons.
  130. if ($opereussie) {
  131. //Lecture du numéro d'employé
  132. $nomemploye = $result[0]["nomemploye"];
  133. // Les différents tableaux de données
  134. $rdatelib = $datelib;
  135. $rlarticle = $larticle;
  136. $rcommentaire = $commentaire;
  137. $rlduree = $lduree;
  138. $rlieu = $lieu;
  139. $rlassumerpar = $lassumerpar;
  140. if ($action == "Modifier" || $action == "Modifier et imprimer") {
  141. $rlpaiement = $lpaiement;
  142. $rldatepaiement = $datepaiement;
  143. $rligneliberation = $ligneliberation;
  144. }
  145. //Calcul du nombre de ligne ;à insérer
  146. $nombreligne = sizeof($rdatelib);
  147. $nombreligne2 = $nombreligne;
  148. // Tableau des requêtes SQL à effectuer
  149. $tableausql = array();
  150. //Ajout du détail de la libération pour chaque ligne
  151. for ($x = 0; $x < $nombreligne; $x++) {
  152. // Validation sur la date
  153. $rdatelib2 = antiInjection($rdatelib[$x]);
  154. if (strtotime($rdatelib2) == false) {
  155. $opereussie = false;
  156. $erreurid = "dateliberation";
  157. break;
  158. }
  159. // Validation sur l'article
  160. $rlarticle2 = antiInjection($rlarticle[$x]);
  161. unset($sqlparam, $result1);
  162. $sqlparam["table"][] = "articles";
  163. $sqlparam["champs"][] = "refarticle";
  164. $sqlparam["where"][] = sprintf("refarticle='%s'", $rlarticle2);
  165. $result1 = executerRequeteSql($sqlparam);
  166. if (isset($result1) && is_array($result1) && sizeof($result1) > 0) {
  167. $refarticle = $result1[0]["refarticle"];
  168. } else {
  169. $opereussie = false;
  170. $erreurid = "numeroart";
  171. break;
  172. }
  173. //Validation sur le commentaire
  174. $rcommentaire2 = antiInjection($rcommentaire[$x]);
  175. if (empty($rcommentaire2)) {
  176. $opereussie = false;
  177. $erreurid = "commentairevide";
  178. break;
  179. }
  180. // Validation sur la durée
  181. $rlduree2 = antiInjection($rlduree[$x]);
  182. unset($sqlparam, $result2);
  183. $sqlparam["table"][] = "duree";
  184. $sqlparam["champs"][] = "refduree";
  185. $sqlparam["champs"][] = "duree";
  186. $sqlparam["where"][] = sprintf("refduree=%d", $rlduree2);
  187. $result2 = executerRequeteSql($sqlparam);
  188. if (isset($result2) && is_array($result2) && sizeof($result2) > 0) {
  189. $refduree = $result2[0]["refduree"];
  190. } else {
  191. $opereussie = false;
  192. $erreurid = "dureevide";
  193. break;
  194. }
  195. // Validation sur le lieu
  196. $rlieu2 = antiInjection($rlieu[$x]);
  197. if (empty($rlieu2)) {
  198. $opereussie = false;
  199. $erreurid = "lieuvide";
  200. break;
  201. }
  202. // Validation sur le payeur
  203. $rlassumerpar2 = antiInjection($rlassumerpar[$x]);
  204. if ($rlassumerpar2 != "Syndicat" && $rlassumerpar2 != "Employeur") {
  205. $opereussie = false;
  206. $erreurid = "quipaye";
  207. break;
  208. }
  209. //Validation sur le paiement
  210. if ($modemodif) {
  211. $rlpaiement2 = antiInjection($rlpaiement[$x]);
  212. $rldatepaiement2 = antiInjection($rldatepaiement[$x]);
  213. }
  214. // Date déjà demandée pour le même employé selon l'article
  215. unset($sqlparam, $result3);
  216. $sqlparam["table"][] = "liberations";
  217. $sqlparam["table"][] = "ligneliberations";
  218. $sqlparam["table"][] = "articles";
  219. $sqlparam["table"][] = "duree";
  220. $sqlparam["join"][] = "ligneliberations.refliberation = liberations.refliberation";
  221. $sqlparam["join"][] = "articles.refarticle=ligneliberations.refarticle";
  222. $sqlparam["join"][] = "duree.refduree=ligneliberations.duree";
  223. $sqlparam["champs"][] = "liberations.refemploye";
  224. $sqlparam["champs"][] = "articles.refarticle";
  225. $sqlparam["champs"][] = "unix_timestamp(ligneliberations.dateliberation) as dateliberation";
  226. $sqlparam["champs"][] = "SUM(If(liberations.typeoperation=1,duree.dureeNombre,0-dureeNombre)) AS calculduree";
  227. $sqlparam["groupe"][] = "liberations.refemploye";
  228. $sqlparam["groupe"][] = "ligneliberations.dateliberation";
  229. $sqlparam["groupe"][] = "articles.refarticle";
  230. $sqlparam["where"][] = sprintf("ligneliberations.refarticle=%d", $rlarticle2);
  231. $sqlparam["where"][] = "DATE_FORMAT(ligneliberations.dateliberation,'%Y-%m-%d')='$rdatelib2'";
  232. $sqlparam["where"][] = "liberations.refemploye=$rlreference";
  233. if ($modemodif) {
  234. $sqlparam["where"][] = sprintf("ligneliberations.refligneliberation<>%d", $rligneliberation[$x]);
  235. }
  236. $result3 = executerRequeteSql($sqlparam);
  237. if (isset($result3) && is_array($result3) && sizeof($result3) > 0) {
  238. if ($result3[0]["calculduree"] > 0 && $ltypeopr == 1) {
  239. $opereussie = false;
  240. $erreurid = "dateoccupee";
  241. $x = $nombreligne + 1;
  242. break;
  243. } elseif ($result3[0]["calculduree"] == 0 && $ltypeopr == 2) {
  244. $opereussie = false;
  245. $erreurid = "annulationimpossible";
  246. $x = $nombreligne + 1;
  247. break;
  248. }
  249. }
  250. if ($opereussie) {
  251. unset($sqlparam);
  252. if (!$modemodif) {
  253. $sqlparam["type"] = "INSERT";
  254. $sqlparam["champs"]["paiement"] = 0;
  255. } else {
  256. $sqlparam["type"] = "UPDATE";
  257. $sqlparam["where"][] = "ligneliberations.refligneliberation = " . sprintf("%d", $rligneliberation[$x]);
  258. $sqlparam["champs"]["paiement"] = sprintf("%d", $rlpaiement2);
  259. if ($rlpaiement2 == 2 && !empty($rldatepaiement2)) {
  260. $sqlparam["champs"]["datepaiement "] = sprintf("'%s'", $rldatepaiement2);
  261. }
  262. }
  263. $sqlparam["table"][] = "ligneliberations";
  264. $sqlparam["champs"]["dateliberation"] = sprintf("'%s'", "$rdatelib2 12:00:00");
  265. $sqlparam["champs"]["refarticle "] = sprintf("%d", $refarticle);
  266. $sqlparam["champs"]["commentaire "] = sprintf("'%s'", $rcommentaire2);
  267. $sqlparam["champs"]["duree "] = sprintf("%d", $refduree);
  268. $sqlparam["champs"]["lieu"] = sprintf("'%s'", $rlieu2);
  269. $sqlparam["champs"]["quipaye"] = sprintf("'%s'", $rlassumerpar2);
  270. $tableausql[] = $sqlparam;
  271. }
  272. }
  273. unset($cpt_opr);
  274. $cpt_opr = 0;
  275. if ($opereussie) {
  276. unset($sqlparam2);
  277. if (!$modemodif) {
  278. // Création de la libération
  279. unset($sqlparam);
  280. $sqlparam["type"] = "INSERT";
  281. $sqlparam["table"][] = "liberations";
  282. $sqlparam["champs"]["refemploye"] = sprintf("%d", $rlreference);
  283. $sqlparam["champs"]["datedemande"] = sprintf("'%s'", $rldatecreation . " 00:00");
  284. $sqlparam["champs"]["typeoperation"] = sprintf("%d", $rltypeopr2);
  285. $result = executerRequeteSql($sqlparam);
  286. $valeurnolib = $result;
  287. $sqlparam2 = $sqlparam;
  288. } else {
  289. $valeurnolib = antiInjection($liberation);
  290. }
  291. //Ajout du détail de la libération pour chaque ligne
  292. $nombreligne2 = sizeof($rdatelib);
  293. for ($x = 0; $x < $nombreligne2; $x++) {
  294. $tableausql[$x]["champs"]["refliberation"] = sprintf('%d', $valeurnolib);
  295. $result = executerRequeteSql($tableausql[$x]);
  296. if (isset($result)) {
  297. $cpt_opr++;
  298. }
  299. }
  300. // Suivi de création (auteur, date, commande sql)
  301. unset($sqlparam);
  302. if (!$modemodif) {
  303. $sqlparam["type"] = "INSERT";
  304. $sqlparam["champs"]["refliberation"] = sprintf("%d", $valeurnolib);
  305. $sqlparam["champs"]["utilisateur"] = sprintf("'%s'", $_SESSION['nomreel']);
  306. } else {
  307. $sqlparam["type"] = "UPDATE";
  308. $sqlparam["where"][] = "refliberation = " . sprintf("%d", $valeurnolib);
  309. }
  310. $sqlparam["champs"]["date"] = "'" . date("Y-m-d H:i:s") . "'"; //sprintf("'%s'", $rldatecreation . " 00:00");
  311. $sqlparam["table"][] = "suivilib";
  312. $result = executerRequeteSql($sqlparam);
  313. }
  314. }
  315. } else {
  316. $opereussie = false;
  317. if ($ltypeopr == "") {
  318. $erreurid = "typeopr";
  319. } elseif ($ldatecreation == "") {
  320. $erreurid = "datecreation";
  321. } elseif ($lreference == "") {
  322. $erreurid = "choixemp";
  323. }
  324. }
  325. unset($lreference);
  326. break;
  327. case "Copier la demande de libération":
  328. unset($opereussie);
  329. unset($erreurid);
  330. unset($modemodif);
  331. $modemodif = false;
  332. $opereussie = true;
  333. if ($ltypeopr != "" && $noliberation != "") {
  334. if (isLiberationCanceledCompletely($noliberation)) {
  335. unset($sqlparam, $result);
  336. $sqlparam["mode"] = "direct";
  337. $sqlparam["type"] = "INSERT";
  338. $sqla = "insert into liberations (refemploye, datedemande, typeoperation, archive) ";
  339. $sqlb = "SELECT refemploye, datedemande, typeoperation, 0 ";
  340. $sqlc = "from liberations ";
  341. $sqld = sprintf("where refliberation = %d", $noliberation);
  342. $sqlparam["sql"] = "$sqla $sqlb $sqlc $sqld";
  343. $result = executerRequeteSql($sqlparam);
  344. unset($sqlparam);
  345. $sqlparam["type"] = "INSERT";
  346. $sqlparam["mode"] = "direct";
  347. $sqle = "insert into ligneliberations (refliberation, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, archive) ";
  348. $sqlf = sprintf("SELECT %d, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, archive ", $result);
  349. $sqlg = "FROM ligneliberations ";
  350. $sqlh = sprintf("where refliberation = %d", $noliberation);
  351. $sqlparam["sql"] = "$sqle $sqlf $sqlg $sqlh";
  352. $result2 = executerRequeteSql($sqlparam);
  353. // Suivi de création (auteur, date, commande sql)
  354. unset($sqlparam, $result3);
  355. $sqlparam["type"] = "INSERT";
  356. $sqlparam["table"][] = "suivilib";
  357. $sqlparam["champs"]["refliberation"] = sprintf("%d", $result);
  358. $sqlparam["champs"]["utilisateur"] = sprintf("'%s'", $_SESSION['nomreel']);
  359. $sqlparam["champs"]["date"] = "'" . date("Y-m-d H:i:s") . "'";
  360. $result3 = executerRequeteSql($sqlparam);
  361. $module["msg"]["maj_ok"] = "Copie de la demande de libération réussie";
  362. $cpt_opr = 1;
  363. $nombreligne = 1;
  364. $opereussie = true;
  365. }
  366. }
  367. break;
  368. /* case "Annuler toutes les libérations":
  369. print $noliberation;
  370. break;
  371. unset($opereussie);
  372. unset($erreurid);
  373. unset($modemodif);
  374. $modemodif = false;
  375. $opereussie = true;
  376. if ($ltypeopr != "" && $noliberation != "") {
  377. if (!checkIfLiberationIsCanceledCompletely($noliberation)) {
  378. unset($sqlparam, $result);
  379. $sqlparam["type"] = "INSERT";
  380. $sqlparam["mode"] = "direct";
  381. $sqla = "insert into liberations (refemploye, datedemande, typeoperation, archive) ";
  382. $sqlb = "SELECT refemploye, datedemande, 2, 0 ";
  383. $sqlc = "from liberations ";
  384. $sqld = sprintf("where refliberation = %d", $noliberation);
  385. $sqlparam["sql"] = "$sqla $sqlb $sqlc $sqld";
  386. $result = executerRequeteSql($sqlparam);
  387. unset($sqlparam);
  388. $sqlparam["type"] = "INSERT";
  389. $sqlparam["mode"] = "direct";
  390. $sqle = "insert into ligneliberations (refliberation, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, archive) ";
  391. $sqlf = sprintf("SELECT %d, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, %d, archive ", $result, $noliberation);
  392. $sqlg = "FROM ligneliberations ";
  393. $sqlh = sprintf("where refliberation = %d", $noliberation);
  394. $sqlparam["sql"] = "$sqle $sqlf $sqlg $sqlh";
  395. $result2 = executerRequeteSql($sqlparam);
  396. // Suivi de création (auteur, date, commande sql)
  397. unset($sqlparam);
  398. $sqlparam["type"] = "INSERT";
  399. $sqlparam["table"][] = "suivilib";
  400. $sqlparam["champs"]["refliberation"] = sprintf("%d", $result);
  401. $sqlparam["champs"]["utilisateur"] = sprintf("'%s'", $_SESSION['nomreel']);
  402. $sqlparam["champs"]["date"] = "'" . date("Y-m-d H:i:s") . "'";
  403. $result3 = executerRequeteSql($sqlparam);
  404. $module["msg"]["maj_ok"] = "Annulation de la demande de libération réussie";
  405. $cpt_opr = 1;
  406. $nombreligne = 1;
  407. $opereussie = true;
  408. } else {
  409. //Pour simuler une erreur, requis plus bas
  410. $cpt_opr = 1;
  411. $nombreligne = 2;
  412. $erreurid = "annulationDemandee";
  413. $opereussie = true;
  414. }
  415. }
  416. break; */
  417. case "Annuler ces libérations":
  418. if (empty($actionmulti)) {
  419. break;
  420. }
  421. $taille = sizeof($actionmulti);
  422. //var_export($actionmulti);
  423. unset($opereussie);
  424. unset($erreurid);
  425. unset($modemodif);
  426. $modemodif = false;
  427. $opereussie = true;
  428. //printf ("rep: %b", checkIfLiberationIsCanceledCompletely($noliberation));
  429. if ($ltypeopr != "" && $noliberation != "") {
  430. $varresult = isLiberationCanceledCompletely($noliberation);
  431. if (!is_null($varresult) && !$varresult) {
  432. //Construit la clause where avec le numéro des lignes de détail à annuler.
  433. $valueWhere = "";
  434. foreach ($actionmulti as $clef) {
  435. $valueWhere .= $clef . ", ";
  436. }
  437. $valueWhere = substr(trim($valueWhere), 0, -1);
  438. $cpt_opr = 1;
  439. $nombreligne = 1;
  440. unset($sqlparam, $result);
  441. $sqlparam["type"] = "INSERT";
  442. $sqlparam["mode"] = "direct";
  443. $sqla = "insert into liberations (refemploye, datedemande, typeoperation, demandeOriginale, archive) ";
  444. $sqlb = sprintf("SELECT refemploye, datedemande, 2, %d, 0 ", $noliberation);
  445. $sqlc = "from liberations ";
  446. $sqld = sprintf("where refliberation = %d", $noliberation);
  447. $sqlparam["sql"] = "$sqla $sqlb $sqlc $sqld";
  448. $result = executerRequeteSql($sqlparam);
  449. unset($sqlparam);
  450. $sqlparam["type"] = "INSERT";
  451. $sqlparam["mode"] = "direct";
  452. $sqle = "insert into ligneliberations (refliberation, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, demandeOriginale, archive) ";
  453. $sqlf = sprintf("SELECT %d, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, refligneliberation, archive ", $result);
  454. $sqlg = "FROM ligneliberations ";
  455. $sqlh = sprintf("where refligneliberation in (%s)", $valueWhere);
  456. $sqlparam["sql"] = "$sqle $sqlf $sqlg $sqlh";
  457. $result2 = executerRequeteSql($sqlparam);
  458. // Suivi de création (auteur, date, commande sql)
  459. unset($sqlparam);
  460. $sqlparam["type"] = "INSERT";
  461. $sqlparam["table"][] = "suivilib";
  462. $sqlparam["champs"]["refliberation"] = sprintf("%d", $result);
  463. $sqlparam["champs"]["utilisateur"] = sprintf("'%s'", $_SESSION['nomreel']);
  464. $sqlparam["champs"]["date"] = "'" . date("Y-m-d H:i:s") . "'";
  465. $result3 = executerRequeteSql($sqlparam);
  466. $module["msg"]["maj_ok"] = "Annulation de la demande de libération réussie";
  467. $cpt_opr = 1;
  468. $nombreligne = 1;
  469. $opereussie = true;
  470. } else {
  471. //Pour simuler une erreur, requis plus bas
  472. $cpt_opr = 1;
  473. $nombreligne = 2;
  474. $erreurid = "annulationDemandee";
  475. $opereussie = true;
  476. }
  477. }
  478. break;
  479. }
  480. }
  481. if (isset($opereussie)) {
  482. if ($cpt_opr == $nombreligne) {
  483. $module["resultatSQL"] = true;
  484. if (!$modemodif) {
  485. $module["message"] = $module["msg"]["maj_ok"];
  486. } else {
  487. $module["message"] = $module["msg"]["modif_ok"];
  488. }
  489. } else {
  490. $module["resultatSQL"] = false;
  491. $module["message"] = $module["msg"][$erreurid];
  492. }
  493. }
  494. unset($periode);
  495. unset($datedebut, $datefin);
  496. $datedebut = getPeriodeCourante("début");
  497. $datefin = getPeriodeCourante("fin");
  498. $sqla = "(DATE_FORMAT(ligneliberations.dateliberation,\"%Y-%m-%d\") Between ";
  499. $sqlb = sprintf("\"%s\" And \"%s\") ", $datedebut, $datefin);
  500. $periode = "$sqla$sqlb";
  501. unset($sqlparam);
  502. $sqlparam["compte"] = "liberations.refliberation";
  503. $sqlparam["table"][] = "liberations";
  504. $sqlparam["table"][] = "ligneliberations";
  505. $sqlparam["table"][] = "employes";
  506. $sqlparam["table"][] = "articles";
  507. $sqlparam["table"][] = "duree";
  508. $sqlparam["table"][] = "suivilib";
  509. $sqlparam["join"][] = "ligneliberations.refliberation=liberations.refliberation";
  510. $sqlparam["join"][] = "liberations.refemploye=employes.refemploye";
  511. $sqlparam["join"][] = "ligneliberations.refarticle=articles.refarticle";
  512. $sqlparam["join"][] = "ligneliberations.duree=duree.refduree";
  513. $sqlparam["join"][] = array(0 => "left", 1 => "suivilib.refliberation=liberations.refliberation");
  514. $sqlparam["champs"][] = "employes.refemploye";
  515. $sqlparam["champs"][] = "concat(employes.nomfamille,\" \",employes.prenom) as nomemploye";
  516. $sqlparam["champs"][] = "liberations.typeoperation";
  517. $sqlparam["champs"][] = "unix_timestamp(ligneliberations.dateliberation) as dateliberation";
  518. $sqlparam["champs"][] = "articles.noarticle";
  519. $sqlparam["champs"][] = "ligneliberations.commentaire";
  520. $sqlparam["champs"][] = "duree.duree";
  521. $sqlparam["champs"][] = "ligneliberations.paiement";
  522. $sqlparam["champs"][] = "ligneliberations.quipaye";
  523. $sqlparam["champs"][] = "IF(ISNULL(ligneliberations.datepaiement),'',UNIX_TIMESTAMP(ligneliberations.datepaiement)) as datepaiement";
  524. $sqlparam["champs"][] = "ligneliberations.lieu";
  525. $sqlparam["champs"][] = "suivilib.utilisateur";
  526. $sqlparam["champs"][] = "liberations.refliberation";
  527. if (isset($ListeEmployeurs) && $ListeEmployeurs != "-1") {
  528. $sqlparam["where"][] = sprintf("employes.refemployeur=%d", $ListeEmployeurs);
  529. }
  530. if (isset($ListeEmployes) && $ListeEmployes != -1) {
  531. $sqlparam["where"][] = sprintf("employes.refemploye= %d", $ListeEmployes);
  532. }
  533. $sqlparam["limite"] = ($nombreaffiche * ($nopage - 1)) . "," . $nombreaffiche + 1;
  534. $sqlparam["ordre"][] = $rtri;
  535. if (isset($lreference) && !empty($lreference)) {
  536. $sqlparam["where"][] = "employes.refemploye=" . antiInjection($lreference);
  537. $module["recherche"]["lreference"] = $lreference;
  538. $module["recherchetri"] = $rtri;
  539. } elseif (isset($zonerecherche) && !empty($zonerecherche)) {
  540. $sqlparam["where"][] = "CONCAT(' ',employes.nomfamille, ' ',employes.prenom, articles.noarticle, duree.duree, ligneliberations.commentaire, ligneliberations.lieu, ligneliberations.datepaiement) like '%" . antiInjection($zonerecherche) . "%'";
  541. $module["recherche"]["zonerecherche"] = $zonerecherche;
  542. $module["recherchetri"] = $rtri;
  543. }
  544. //Si l'utilisateur fait partie d'un syndicat local
  545. if ($_SESSION['gestion_site'] < 'Oui') {
  546. $sqlparam["where"][] = sprintf("employes.refemployeur=%d", $_SESSION['employeur']);
  547. }
  548. // Selon la période en cours
  549. $sqlparam["where"][] = $periode;
  550. if (isset($ListeEmployeurs) && $ListeEmployeurs != "-1") {
  551. $module["listeEmployeurs"] = $ListeEmployeurs;
  552. } else {
  553. $module["listeEmployeurs"] = null;
  554. }
  555. if (isset($ListeEmployes) && $ListeEmployes != -1) {
  556. $module["listeEmployes"] = $ListeEmployes;
  557. } else {
  558. $module["listeEmployes"] = null;
  559. }
  560. $result = executerRequeteSql($sqlparam);
  561. if (isset($result) && is_array($result) && count($result) > 0) {
  562. $module["compte"] = $result[0]["compte"];
  563. } else {
  564. $module["compte"] = 0;
  565. }
  566. $i = 1;
  567. print preparerModule($module);
  568. //Liste principale;
  569. if (isset($result) && is_array($result)) {
  570. if (count($result) > 0) {
  571. $i = ($nopage - 1) * $nombreaffiche + 1;
  572. foreach ($result as $clef => $champs) {
  573. if ($i > ($nopage * $nombreaffiche)) {
  574. continue;
  575. }
  576. $type = ($champs["typeoperation"] == 1) ? "Demande" : "Annulation";
  577. $lieu = $champs["lieu"];
  578. $quipaye = $champs["quipaye"];
  579. if ($quipaye == "0") {
  580. $quipaye = "Indéterminé";
  581. }
  582. $datepaiement = ($champs["datepaiement"] == '0') ? "Non-assign&eacute;" : date("Y-m-d", $champs["datepaiement"]);
  583. $couleur = ($champs["typeoperation"] == 1) ? "" : "color:#ff0000;";
  584. $style = 'border:1px solid #cfcfcf; overflow:hidden; white-space:nowrap;';
  585. print "<tr style='$couleur' $couleur>\n";
  586. print "<td style='$style'>$i</td>\n";
  587. print "<td style='$style'>" . ecrireTexteLimite($champs["utilisateur"], 100) . "</td>\n";
  588. print "<td style='$style'>" . ecrireTexteLimite($champs["nomemploye"], 150) . "</td>\n";
  589. print "<td style='$style' title=\"$type\">$type</td>\n";
  590. print "<td style='$style' title=\"" . date("Y-m-d", $champs["dateliberation"]) . "\">" . date("Y-m-d", $champs["dateliberation"]) . "</td>\n";
  591. print "<td style='$style' title=\"" . $champs["noarticle"] . "\">" . $champs["noarticle"] . "</td>\n";
  592. print "<td style='$style' title=\"" . $champs["commentaire"] . "\"><div style='overflow:hidden; white-space:nowrap; width:202px;'>" . htmlentities($champs["commentaire"], ENT_SUBSTITUTE, "UTF-8") . "</div></td>\n";
  593. print "<td style='$style' title=\"" . $champs["duree"] . "\">" . $champs["duree"] . "</td>\n";
  594. print "<td style='$style'>" . ecrireTexteLimite($lieu, 79) . "</td>\n";
  595. print "<td style='$style' title=\"$quipaye\">$quipaye</td>\n";
  596. //TODO à corriger
  597. if ($_SESSION["gestion_site"] >= "Oui") {
  598. if ($champs["paiement"] == "0") {
  599. print "<td style='$style' title=\"Non-assign&eacute;\">Non-assign&eacute;</td>\n";
  600. print "<td style='$style' title=\"Non-assign&eacute;\">Non-assign&eacute;</td>\n";
  601. } elseif ($champs["paiement"] == "1") {
  602. print "<td style='$style' title=\"Non\">Non</td>\n";
  603. print "<td style='$style' title=\"&Agrave; venir\">&Agrave; venir</td>\n";
  604. } else {
  605. print "<td style='$style' title=\"Oui\">Oui</td>\n";
  606. print "<td style='$style' title=\"$datepaiement\">$datepaiement</td>\n";
  607. }
  608. }
  609. print "<td style='$style'><a href='#' onclick='ouvrefenetre(\"creation_liberation.php?lib=" . $champs["refliberation"] . "&sortie=ecran\");'><img alt=\"pdf\" src=\"images/pdficon_small.gif\"></a></td>\n";
  610. if ($_SESSION['gestion_site'] >= "Oui") {
  611. print "<td style='$style'>\n";
  612. //if (!checkIfLiberationIsCanceled($champs["refliberation"] )) {
  613. print "<INPUT class='modifier' title='Modifier' id='Modifier' TYPE='button' VALUE='Modifier' onclick=\"modifieLiberation(" . $champs["refemploye"] . "," . $champs["refliberation"] . ",'" . $GLOBALS["jeton"] . "');\">\n";
  614. //}
  615. print "</td>\n";
  616. } else {
  617. print "<td style='$style'>&nbsp;</td>\n";
  618. }
  619. print "</tr>\n";
  620. $i++;
  621. }
  622. } else {
  623. print "<tr><td colspan='12' style='text-align:center;'><h1>Aucune donnée pour la période sélectionnée.</h1></td></tr>";
  624. }
  625. }
  626. print"</table>";
  627. // Pagination
  628. print "<table style='width:1200px; margin:auto;'>";
  629. print "<tr><td style='vertical-align:bottom;'>";
  630. print $seqpage;
  631. print "</td>";
  632. print "<td style='width:320px; text-align:right;'>";
  633. //Haut de page
  634. if ($nombreaffiche > 15) {
  635. print "<a href='#hautpage' title='Aller en haut de la page'>Haut de page</a>";
  636. print "<a name='baspage'>";
  637. }
  638. print "</td></tr>";
  639. print "</table>";
  640. print "<span id='simon'></span>";
  641. print fenetreModaleDebut($module["fenetre"], $SCRIPT_NAME, $jeton);
  642. unset($titretemp);
  643. if (isset($module["actionajoutbouton"])) {
  644. $titretemp = $module["actionajoutbouton"];
  645. }
  646. $titretemp = 'Formulaire de détail';
  647. print fenetreModaleFin($titretemp);
  648. unset($cpt, $vide);
  649. $vide = true;
  650. ?>
  651. <script type="text/javascript" src='js/liberations.js'></script>
  652. <script type="text/javascript">
  653. //Ajoute la date du jour dans la case Date
  654. function metsDate(id) {
  655. if (verifieinfo()) {
  656. $("#" + id).val("<?php print date("Y-m-d"); ?>");
  657. $("#" + id).focus();
  658. }
  659. }
  660. //Vérifie si la date est déjà prise.
  661. function verifieDate(idm, id2) {
  662. //Vérification de la date si déjà prise pour la même employée.
  663. if (reponseBoolDate) {
  664. var typeopr;
  665. var notype;
  666. if ($("#opr1").prop('checked') || $("#opr").val() === "1") {
  667. typeopr = "demande";
  668. notype = 1;
  669. } else if ($("#opr2").prop('checked') || $("#opr").val() === "2") {
  670. typeopr = "annulation";
  671. notype = 2;
  672. }
  673. if ($("#lreference").val() !== "" && $("#" + idm).val() !== "") {
  674. var resultat = $.ajax({
  675. url: "obtdatelib.php",
  676. global: false,
  677. type: "POST",
  678. data: {
  679. prm1: escape($("#lreference").val()), // no de employe
  680. prm2: escape($("#" + idm).val()), // date de libération
  681. prm3: escape($("#" + id2).val()), // no article
  682. prm4: escape(notype) //1=demande, 2 = annulation
  683. },
  684. dataType: "html",
  685. async: false,
  686. error: function () {
  687. $("#" + id2).datepicker("hide");
  688. },
  689. success: function () {
  690. $("#" + id2).datepicker("hide");
  691. }
  692. }).responseText;
  693. if (resultat === "accepte") {
  694. if (nombre > 1) {
  695. for (x = 0; x < nombre; x++) {
  696. var nombrev = parseInt(idm.substring(2));
  697. if (x !== nombrev) {
  698. if ($("#" + idm).val() === $("#id" + x).val()) {
  699. resultat = "occupedate_" + typeopr;
  700. }
  701. }
  702. }
  703. }
  704. }
  705. if (resultat.indexOf("occupedatearticle") > -1) {
  706. var tablovide = resultat.split("_");
  707. var typeoprtemp = tablovide[1];
  708. jChoice("Cette date de libération (" + $("#" + idm).val() + ") avec l'article " + $("#" + id2 + " option:selected").text() + " pour ce membre (" + $("#zonerecherche2").val() + ") a déjà été demandée auparavant dans une " + typeoprtemp + "!\nVoulez-vous consulter le générateur de rapport?",
  709. function (r) {
  710. if (r) {
  711. window.location.href = "index2.php?page=generateur_rapports&jeton=<?php print $jeton; ?>";
  712. } else {
  713. $("#" + id2).val(0);
  714. $("#" + idm).val("");
  715. $("#" + idm).focus();
  716. }
  717. });
  718. reponseBoolDate = false;
  719. } else if (resultat.indexOf('occupedate') > -1 && resultat.indexOf('article') === -1 && (resultat.indexOf("_demande") > -1 || resultat.indexOf("_annulation") > -1)) {
  720. var typeoprtemp = "";
  721. var tablovide = resultat.split("_");
  722. typeoprtemp = tablovide[1];
  723. jChoice("Cette date de libération (" + $("#" + idm).val() + ") pour ce membre (" + $("#zonerecherche2").val() + ") a déjà été demandée auparavant dans une " + typeoprtemp + "!\nVoulez-vous consulter le générateur de rapport?",
  724. function (r) {
  725. if (r) {
  726. window.location.href = "index2.php?page=generateur_rapports&jeton=<?php print $jeton; ?>";
  727. } else {
  728. $("#" + idm).val("");
  729. $("#" + idm).focus();
  730. }
  731. });
  732. reponseBoolDate = false;
  733. } else if (resultat.indexOf('refus_annulation') > -1) {
  734. jAlert("Il n'y a pas de demande de libérations à annuler pour ce membre (" + $("#zonerecherche2").val() + ") à cette date!");
  735. $("#" + idm).val("");
  736. $("#" + idm).focus();
  737. reponseBoolDate = false;
  738. }
  739. }
  740. reponseBoolDate = false;
  741. }
  742. }
  743. // Ajoute une ligne à la table
  744. function addRow(id) {
  745. var thisnombre = nombre;
  746. var v1 = verifieinfo();
  747. var v2 = verifieLigne(thisnombre);
  748. if (v1 && v2) {
  749. var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
  750. var col1 = "<input name=\"datelib[]\" style='min-width:80px;' value=\"\" id=\"id" + thisnombre + "\" onfocus=\"verifieinfo();\" onblur=\"verifieDate('id" + thisnombre + "','lart" + thisnombre + "');\" >";
  751. var col1b = "<img alt=\"Calendrier\" src=\"images/calendar.gif\" class=\"calendrier\" id=\"butdate" + thisnombre + "\" onclick =\"calendrier('id" + thisnombre + "');\">";
  752. var col3 = "<input class='boite_commentaire' name=\"commentaire[]\" id=\"com" + thisnombre + "\" value=\"\">";
  753. var col5 = "<input name=\"lieu[]\" id=\"lie" + thisnombre + "\" value=\"\">";
  754. var col6 = "<select NAME=\"lassumerpar[]\" id=\"las" + thisnombre + "\"><option>--------</option><option>Syndicat</option><option>Employeur</option></select>";
  755. var row = document.createElement("TR");
  756. row.id = "ligne" + thisnombre + "";
  757. var td1 = document.createElement("TD");
  758. td1.className = "liberationsdetail";
  759. td1.innerHTML = col1 + col1b; //+col1c;
  760. var td2 = document.createElement("TD");
  761. td2.className = "liberationsdetail";
  762. var obj2 = document.getElementById("lart0").cloneNode(true);
  763. obj2.id = "lart" + thisnombre + "";
  764. td2.appendChild(obj2);
  765. var td3 = document.createElement("TD");
  766. td3.className = "liberationsdetail";
  767. td3.innerHTML = col3;
  768. var td4 = document.createElement("TD");
  769. td4.className = "liberationsdetail";
  770. var obj4 = document.getElementById("ldur0").cloneNode(true);
  771. obj4.id = "ldur" + thisnombre + "";
  772. td4.appendChild(obj4);
  773. var td5 = document.createElement("TD");
  774. td5.className = "liberationsdetail";
  775. td5.innerHTML = col5;
  776. var td6 = document.createElement("TD");
  777. td6.className = "liberationsdetail";
  778. td6.innerHTML = col6;
  779. var td7 = document.createElement("TD");
  780. td7.className = "liberationsdetail";
  781. var obj7 = document.getElementById("0").cloneNode(true);
  782. obj7.id = nombre;
  783. td7.appendChild(obj7);
  784. var td8 = document.createElement("TD");
  785. td8.className = "liberationsdetail";
  786. var obj8 = document.getElementById("copie0").cloneNode(true);
  787. obj8.id = nombre;
  788. td8.appendChild(obj8);
  789. row.appendChild(td1);
  790. row.appendChild(td2);
  791. row.appendChild(td3);
  792. row.appendChild(td4);
  793. row.appendChild(td5);
  794. row.appendChild(td6);
  795. <?php
  796. if ($_SESSION["gestion_site"] == "Oui") {
  797. ?>
  798. if (mode_ajout === 0) {
  799. var col9 = "<select NAME=\"lpaiement[]\" id=\"lpa" + thisnombre + "\" onchange=\"creeDatePaiement('lpa'+nombre,'datepaiement" + thisnombre + "');\">";
  800. var col9a = "<option value=\"0\">--------</option><option value=\"1\">Non</option><option value=\"2\">Oui</option>";
  801. var col10 = "<input name=\"datepaiement[]\" id=\"datepaiement" + thisnombre + "\" size=\"10\" maxlength=\"10\" type=\"text\" readonly=\"readonly\" value=\"\">";
  802. var td9 = document.createElement("TD");
  803. td9.className = "liberationsdetail";
  804. td9.innerHTML = col9 + col9a;
  805. var td10 = document.createElement("TD");
  806. td10.innerHTML = col10;
  807. td10.className = "liberationsdetail";
  808. row.appendChild(td9);
  809. row.appendChild(td10);
  810. }
  811. <?php
  812. }
  813. ?>
  814. row.appendChild(td7);
  815. row.appendChild(td8);
  816. tbody.appendChild(row);
  817. $(document).ready(function () {
  818. $("#id" + thisnombre).datepicker({
  819. autoSize: true,
  820. onSelect: function () {
  821. reponseBoolDate = true;
  822. verifieDate('id' + thisnombre, 'lart' + thisnombre);
  823. }
  824. });
  825. $("#id" + thisnombre).datepicker("hide");
  826. nombre++;
  827. });
  828. }
  829. }
  830. function voirsolde() {
  831. var idemp = $("#zonerecherche2").val();
  832. var idlref = $('#lreference').val();
  833. if (idemp === '' || idemp === "Recherche" || idlref === '') {
  834. $("#zonerecherche2").focus();
  835. jAlert("Veuillez choisir l'employé parmi les membres");
  836. return false;
  837. } else {
  838. var reponseVerif = $.trim($.ajax({
  839. url: "obtsolde.php",
  840. global: false,
  841. type: "GET",
  842. data: {
  843. prm1: idlref,
  844. jeton: "<?php print $GLOBALS["jeton"]; ?>"
  845. },
  846. dataType: "html",
  847. async: false
  848. }).responseText);
  849. $("#voirsolde").html(reponseVerif).slideDown();
  850. }
  851. }
  852. $(document).ready(function () {
  853. //Charger le formulaire Ajax avant tout le monde
  854. $("#fenetremodale").load("obtformlib.php?prm1=-1");
  855. // Sur le clic du bouton d'ajout d'une libération,
  856. // réinitialisation de tous les champs du formulaire.
  857. $("#action_ajout").click(function () {
  858. mode_ajout = 1;
  859. $("#fenetremodale").load("obtformlib.php", {prm1: -1, jeton: "<?php print $GLOBALS["jeton"]; ?>"});
  860. //recommencer();
  861. });
  862. $("#frmModif").validate();
  863. $("voirsolde").blur(function () {
  864. $("#voirsolde").slideUp();
  865. });
  866. });</script>
  867. <?PHP
  868. if (isset($action2) && $action2 == "Afficher") {
  869. ?>
  870. <script type="text/javascript">
  871. $(document).ready(function () {
  872. changetitre(2);
  873. overlay();
  874. });
  875. </script>
  876. <?php
  877. }