liste_liberations.inc.php 57 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264
  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. if (isset($action)) {
  77. $msg = "";
  78. //Cueillette de données du module
  79. $action = stripslashes(antiInjection($action));
  80. //$noliberation = stripslashes(antiInjection($noliberation));
  81. switch ($action) {
  82. case "Accepter et imprimer":
  83. case "Accepter et envoyer par courriel":
  84. case "Modifier":
  85. case "Modifier et imprimer":
  86. unset($opereussie);
  87. unset($erreurid);
  88. unset($modemodif);
  89. $modemodif = false;
  90. $opereussie = true;
  91. if ($action == "Modifier" || $action == "Modifier et imprimer") {
  92. $modemodif = true;
  93. }
  94. if ($ltypeopr != "" && $ldatecreation != "" && $lreference != "") {
  95. // Validation du type d'opération
  96. $rltypeopr2 = antiInjection($ltypeopr);
  97. if ($rltypeopr2 != "1" && $rltypeopr2 != "2") {
  98. $opereussie = false;
  99. $erreurid = "typeopr";
  100. break;
  101. }
  102. // Validation de la date de création
  103. $rldatecreation = antiInjection($ldatecreation);
  104. if (strtotime($rldatecreation) == false) {
  105. $opereussie = false;
  106. $erreurid = "datecreation";
  107. break;
  108. }
  109. // La référence est le numéro de l'employé dans la bd
  110. $rlreference = antiInjection($lreference);
  111. unset($sqlparam, $result);
  112. $sqlparam["table"][] = "employes";
  113. $sqlparam["champs"][] = "CONCAT(nomfamille,\", \",prenom) as nomemploye";
  114. $sqlparam["where"][] = sprintf("refemploye = %d", $rlreference);
  115. $result = executerRequeteSql($sqlparam);
  116. if (!(isset($result) && is_array($result) && count($result) > 0)) {
  117. $msg = sprintf("L'employé «%s» n'est pas un membre connu.", $nomemploye);
  118. $opereussie = false;
  119. $erreurid = "choixemp";
  120. }
  121. // Conditions de base remplies
  122. // Le type d'opération
  123. // L'employé
  124. // La date de création du document
  125. // Toujours pas d'erreur, nous continuons.
  126. if ($opereussie) {
  127. //Lecture du numéro d'employé
  128. $nomemploye = $result[0]["nomemploye"];
  129. // Les différents tableaux de données
  130. $rdatelib = $datelib;
  131. $rlarticle = $larticle;
  132. $rcommentaire = $commentaire;
  133. $rlduree = $lduree;
  134. $rlieu = $lieu;
  135. $rlassumerpar = $lassumerpar;
  136. if ($action == "Modifier" || $action == "Modifier et imprimer") {
  137. $rlpaiement = $lpaiement;
  138. $rldatepaiement = $datepaiement;
  139. $rligneliberation = $ligneliberation;
  140. }
  141. //Calcul du nombre de ligne ;à insérer
  142. $nombreligne = sizeof($rdatelib);
  143. $nombreligne2 = $nombreligne;
  144. // Tableau des requêtes SQL à effectuer
  145. $tableausql = array();
  146. //Ajout du détail de la libération pour chaque ligne
  147. for ($x = 0; $x < $nombreligne; $x++) {
  148. // Validation sur la date
  149. $rdatelib2 = antiInjection($rdatelib[$x]);
  150. if (strtotime($rdatelib2) == false) {
  151. $opereussie = false;
  152. $erreurid = "dateliberation";
  153. break;
  154. }
  155. // Validation sur l'article
  156. $rlarticle2 = antiInjection($rlarticle[$x]);
  157. unset($sqlparam, $result1);
  158. $sqlparam["table"][] = "articles";
  159. $sqlparam["champs"][] = "refarticle";
  160. $sqlparam["where"][] = sprintf("refarticle='%s'", $rlarticle2);
  161. $result1 = executerRequeteSql($sqlparam);
  162. if (isset($result1) && is_array($result1) && sizeof($result1) > 0) {
  163. $refarticle = $result1[0]["refarticle"];
  164. } else {
  165. $opereussie = false;
  166. $erreurid = "numeroart";
  167. break;
  168. }
  169. //Validation sur le commentaire
  170. $rcommentaire2 = antiInjection($rcommentaire[$x]);
  171. if (empty($rcommentaire2)) {
  172. $opereussie = false;
  173. $erreurid = "commentairevide";
  174. break;
  175. }
  176. // Validation sur la durée
  177. $rlduree2 = antiInjection($rlduree[$x]);
  178. unset($sqlparam, $result2);
  179. $sqlparam["table"][] = "duree";
  180. $sqlparam["champs"][] = "refduree";
  181. $sqlparam["champs"][] = "duree";
  182. $sqlparam["where"][] = sprintf("refduree=%d", $rlduree2);
  183. $result2 = executerRequeteSql($sqlparam);
  184. if (isset($result2) && is_array($result2) && sizeof($result2) > 0) {
  185. $refduree = $result2[0]["refduree"];
  186. } else {
  187. $opereussie = false;
  188. $erreurid = "dureevide";
  189. break;
  190. }
  191. // Validation sur le lieu
  192. $rlieu2 = antiInjection($rlieu[$x]);
  193. if (empty($rlieu2)) {
  194. $opereussie = false;
  195. $erreurid = "lieuvide";
  196. break;
  197. }
  198. // Validation sur le payeur
  199. $rlassumerpar2 = antiInjection($rlassumerpar[$x]);
  200. if ($rlassumerpar2 != "Syndicat" && $rlassumerpar2 != "Employeur") {
  201. $opereussie = false;
  202. $erreurid = "quipaye";
  203. break;
  204. }
  205. //Validation sur le paiement
  206. if ($modemodif) {
  207. $rlpaiement2 = antiInjection($rlpaiement[$x]);
  208. $rldatepaiement2 = antiInjection($rldatepaiement[$x]);
  209. }
  210. // Date déjà demandée pour le même employé selon l'article
  211. unset($sqlparam, $result3);
  212. $sqlparam["table"][] = "liberations";
  213. $sqlparam["table"][] = "ligneliberations";
  214. $sqlparam["table"][] = "articles";
  215. $sqlparam["table"][] = "duree";
  216. $sqlparam["join"][] = "ligneliberations.refliberation = liberations.refliberation";
  217. $sqlparam["join"][] = "articles.refarticle=ligneliberations.refarticle";
  218. $sqlparam["join"][] = "duree.refduree=ligneliberations.duree";
  219. $sqlparam["champs"][] = "liberations.refemploye";
  220. $sqlparam["champs"][] = "articles.refarticle";
  221. $sqlparam["champs"][] = "unix_timestamp(ligneliberations.dateliberation) as dateliberation";
  222. $sqlparam["champs"][] = "SUM(If(liberations.typeoperation=1,duree.dureeNombre,0-dureeNombre)) AS calculduree";
  223. $sqlparam["groupe"][] = "liberations.refemploye";
  224. $sqlparam["groupe"][] = "ligneliberations.dateliberation";
  225. $sqlparam["groupe"][] = "articles.refarticle";
  226. $sqlparam["where"][] = sprintf("ligneliberations.refarticle=%d", $rlarticle2);
  227. $sqlparam["where"][] = "DATE_FORMAT(ligneliberations.dateliberation,'%Y-%m-%d')='$rdatelib2'";
  228. $sqlparam["where"][] = "liberations.refemploye=$rlreference";
  229. if ($modemodif) {
  230. $sqlparam["where"][] = sprintf("ligneliberations.refligneliberation<>%d", $rligneliberation[$x]);
  231. }
  232. $result3 = executerRequeteSql($sqlparam);
  233. if (isset($result3) && is_array($result3) && sizeof($result3) > 0) {
  234. if ($result3[0]["calculduree"] > 0 && $ltypeopr == 1) {
  235. $opereussie = false;
  236. $erreurid = "dateoccupee";
  237. $x = $nombreligne + 1;
  238. break;
  239. } elseif ($result3[0]["calculduree"] == 0 && $ltypeopr == 2) {
  240. $opereussie = false;
  241. $erreurid = "annulationimpossible";
  242. $x = $nombreligne + 1;
  243. break;
  244. }
  245. }
  246. if ($opereussie) {
  247. unset($sqlparam);
  248. if (!$modemodif) {
  249. $sqlparam["type"] = "INSERT";
  250. $sqlparam["champs"]["paiement"] = 0;
  251. } else {
  252. $sqlparam["type"] = "UPDATE";
  253. $sqlparam["where"][] = "ligneliberations.refligneliberation = " . sprintf("%d", $rligneliberation[$x]);
  254. $sqlparam["champs"]["paiement"] = sprintf("%d", $rlpaiement2);
  255. if ($rlpaiement2 == 2 && !empty($rldatepaiement2)) {
  256. $sqlparam["champs"]["datepaiement "] = sprintf("'%s'", $rldatepaiement2);
  257. }
  258. }
  259. $sqlparam["table"][] = "ligneliberations";
  260. $sqlparam["champs"]["dateliberation"] = sprintf("'%s'", "$rdatelib2 12:00:00");
  261. $sqlparam["champs"]["refarticle "] = sprintf("%d", $refarticle);
  262. $sqlparam["champs"]["commentaire "] = sprintf("'%s'", $rcommentaire2);
  263. $sqlparam["champs"]["duree "] = sprintf("%d", $refduree);
  264. $sqlparam["champs"]["lieu"] = sprintf("'%s'", $rlieu2);
  265. $sqlparam["champs"]["quipaye"] = sprintf("'%s'", $rlassumerpar2);
  266. $tableausql[] = $sqlparam;
  267. }
  268. }
  269. unset($cpt_opr);
  270. $cpt_opr = 0;
  271. if ($opereussie) {
  272. unset($sqlparam2);
  273. if (!$modemodif) {
  274. // Création de la libération
  275. unset($sqlparam);
  276. $sqlparam["type"] = "INSERT";
  277. $sqlparam["table"][] = "liberations";
  278. $sqlparam["champs"]["refemploye"] = sprintf("%d", $rlreference);
  279. $sqlparam["champs"]["datedemande"] = sprintf("'%s'", $rldatecreation . " 00:00");
  280. $sqlparam["champs"]["typeoperation"] = sprintf("%d", $rltypeopr2);
  281. $result = executerRequeteSql($sqlparam);
  282. $valeurnolib = $result;
  283. $sqlparam2 = $sqlparam;
  284. } else {
  285. $valeurnolib = antiInjection($liberation);
  286. }
  287. //Ajout du détail de la libération pour chaque ligne
  288. $nombreligne2 = sizeof($rdatelib);
  289. for ($x = 0; $x < $nombreligne2; $x++) {
  290. $tableausql[$x]["champs"]["refliberation"] = sprintf('%d', $valeurnolib);
  291. $result = executerRequeteSql($tableausql[$x]);
  292. if (isset($result)) {
  293. $cpt_opr++;
  294. }
  295. }
  296. // Suivi de création (auteur, date, commande sql)
  297. unset($sqlparam);
  298. if (!$modemodif) {
  299. $sqlparam["type"] = "INSERT";
  300. $sqlparam["champs"]["refliberation"] = sprintf("%d", $valeurnolib);
  301. $sqlparam["champs"]["utilisateur"] = sprintf("'%s'", $_SESSION['nomreel']);
  302. } else {
  303. $sqlparam["type"] = "UPDATE";
  304. $sqlparam["where"][] = "refliberation = " . sprintf("%d", $valeurnolib);
  305. }
  306. $sqlparam["champs"]["date"] = "'" . date("Y-m-d H:i:s") . "'"; //sprintf("'%s'", $rldatecreation . " 00:00");
  307. $sqlparam["table"][] = "suivilib";
  308. $result = executerRequeteSql($sqlparam);
  309. }
  310. }
  311. } else {
  312. $opereussie = false;
  313. if ($ltypeopr == "") {
  314. $erreurid = "typeopr";
  315. } elseif ($ldatecreation == "") {
  316. $erreurid = "datecreation";
  317. } elseif ($lreference == "") {
  318. $erreurid = "choixemp";
  319. }
  320. }
  321. unset($lreference);
  322. break;
  323. case "Annuler la demande de libération":
  324. unset($opereussie);
  325. unset($erreurid);
  326. unset($modemodif);
  327. $modemodif = false;
  328. $opereussie = true;
  329. if ($ltypeopr != "" && $noliberation != "") {
  330. if (!checkIfLiberationIsCanceled($noliberation)) {
  331. unset($sqlparam, $result);
  332. $sqlparam["type"] = "INSERT";
  333. $sqlparam["mode"] = "direct";
  334. $sqla = "insert into liberations (refemploye, datedemande, typeoperation, demandeOriginale, archive) ";
  335. $sqlb = sprintf("SELECT refemploye, datedemande, 2, %d, 0 ", $noliberation);
  336. $sqlc = "from liberations ";
  337. $sqld = sprintf("where refliberation = %d", $noliberation);
  338. $sqlparam["sql"] = "$sqla $sqlb $sqlc $sqld";
  339. $result = executerRequeteSql($sqlparam);
  340. unset($sqlparam);
  341. $sqlparam["type"] = "INSERT";
  342. $sqlparam["mode"] = "direct";
  343. $sqle = "insert into ligneliberations (refliberation, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, archive) ";
  344. $sqlf = sprintf("SELECT %d, dateliberation, refarticle, commentaire, duree, lieu, quipaye, datepaiement, paiement, archive ", $result);
  345. $sqlg = "FROM ligneliberations ";
  346. $sqlh = sprintf("where refliberation = %d", $noliberation);
  347. $sqlparam["sql"] = "$sqle $sqlf $sqlg $sqlh";
  348. $result2 = executerRequeteSql($sqlparam);
  349. // Suivi de création (auteur, date, commande sql)
  350. unset($sqlparam);
  351. $sqlparam["type"] = "INSERT";
  352. $sqlparam["table"][] = "suivilib";
  353. $sqlparam["champs"]["refliberation"] = sprintf("%d", $result);
  354. $sqlparam["champs"]["utilisateur"] = sprintf("'%s'", $_SESSION['nomreel']);
  355. $sqlparam["champs"]["date"] = "'" . date("Y-m-d H:i:s") . "'";
  356. $result3 = executerRequeteSql($sqlparam);
  357. $module["msg"]["maj_ok"] = "Annulation de la demande de libération réussie";
  358. $cpt_opr = 1;
  359. $nombreligne = 1;
  360. $opereussie = true;
  361. } else {
  362. //Pour simuler une erreur, requis plus bas
  363. $cpt_opr = 1;
  364. $nombreligne = 2;
  365. $erreurid = "annulationDemandee";
  366. $opereussie = true;
  367. }
  368. }
  369. break;
  370. case "Copier la demande de libération":
  371. unset($opereussie);
  372. unset($erreurid);
  373. unset($modemodif);
  374. $modemodif = false;
  375. $opereussie = true;
  376. if ($ltypeopr != "" && $noliberation != "") {
  377. if (checkIfLiberationIsCanceled($noliberation)) {
  378. unset($sqlparam, $result);
  379. $sqlparam["mode"] = "direct";
  380. $sqlparam["type"] = "INSERT";
  381. $sqla = "insert into liberations (refemploye, datedemande, typeoperation, archive) ";
  382. $sqlb = "SELECT refemploye, datedemande, typeoperation, 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, archive ", $result);
  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, $result3);
  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"] = "Copie de la demande de libération réussie";
  405. $cpt_opr = 1;
  406. $nombreligne = 1;
  407. $opereussie = true;
  408. }
  409. }
  410. break;
  411. }
  412. }
  413. if (isset($opereussie)) {
  414. if ($cpt_opr == $nombreligne) {
  415. $module["resultatSQL"] = true;
  416. if (!$modemodif) {
  417. $module["message"] = $module["msg"]["maj_ok"];
  418. } else {
  419. $module["message"] = $module["msg"]["modif_ok"];
  420. }
  421. } else {
  422. $module["resultatSQL"] = false;
  423. $module["message"] = $module["msg"][$erreurid];
  424. }
  425. }
  426. unset($periode);
  427. unset($datedebut, $datefin);
  428. $datedebut = getPeriodeCourante("début");
  429. $datefin = getPeriodeCourante("fin");
  430. $sqla = "(DATE_FORMAT(ligneliberations.dateliberation,\"%Y-%m-%d\") Between ";
  431. $sqlb = sprintf("\"%s\" And \"%s\") ", $datedebut, $datefin);
  432. $periode = "$sqla$sqlb";
  433. unset($sqlparam);
  434. $sqlparam["compte"] = "liberations.refliberation";
  435. $sqlparam["table"][] = "liberations";
  436. $sqlparam["table"][] = "ligneliberations";
  437. $sqlparam["table"][] = "employes";
  438. $sqlparam["table"][] = "articles";
  439. $sqlparam["table"][] = "duree";
  440. $sqlparam["table"][] = "suivilib";
  441. $sqlparam["join"][] = "ligneliberations.refliberation=liberations.refliberation";
  442. $sqlparam["join"][] = "liberations.refemploye=employes.refemploye";
  443. $sqlparam["join"][] = "ligneliberations.refarticle=articles.refarticle";
  444. $sqlparam["join"][] = "ligneliberations.duree=duree.refduree";
  445. $sqlparam["join"][] = array(0 => "left", 1 => "suivilib.refliberation=liberations.refliberation");
  446. $sqlparam["champs"][] = "employes.refemploye";
  447. $sqlparam["champs"][] = "concat(employes.nomfamille,\" \",employes.prenom) as nomemploye";
  448. $sqlparam["champs"][] = "liberations.typeoperation";
  449. $sqlparam["champs"][] = "unix_timestamp(ligneliberations.dateliberation) as dateliberation";
  450. $sqlparam["champs"][] = "articles.noarticle";
  451. $sqlparam["champs"][] = "ligneliberations.commentaire";
  452. $sqlparam["champs"][] = "duree.duree";
  453. $sqlparam["champs"][] = "ligneliberations.paiement";
  454. $sqlparam["champs"][] = "ligneliberations.quipaye";
  455. $sqlparam["champs"][] = "IF(ISNULL(ligneliberations.datepaiement),'',UNIX_TIMESTAMP(ligneliberations.datepaiement)) as datepaiement";
  456. $sqlparam["champs"][] = "ligneliberations.lieu";
  457. $sqlparam["champs"][] = "suivilib.utilisateur";
  458. $sqlparam["champs"][] = "liberations.refliberation";
  459. if (isset($ListeEmployeurs) && $ListeEmployeurs != "-1") {
  460. $sqlparam["where"][] = sprintf("employes.refemployeur=%d", $ListeEmployeurs);
  461. }
  462. if (isset($ListeEmployes) && $ListeEmployes != -1) {
  463. $sqlparam["where"][] = sprintf("employes.refemploye= %d", $ListeEmployes);
  464. }
  465. $sqlparam["limite"] = ($nombreaffiche * ($nopage - 1)) . "," . $nombreaffiche + 1;
  466. $sqlparam["ordre"][] = $rtri;
  467. if (isset($lreference) && !empty($lreference)) {
  468. $sqlparam["where"][] = "employes.refemploye=" . antiInjection($lreference);
  469. $module["recherche"]["lreference"] = $lreference;
  470. $module["recherchetri"] = $rtri;
  471. } elseif (isset($zonerecherche) && !empty($zonerecherche)) {
  472. $sqlparam["where"][] = "CONCAT(' ',employes.nomfamille, ' ',employes.prenom, articles.noarticle, duree.duree, ligneliberations.commentaire, ligneliberations.lieu, ligneliberations.datepaiement) like '%" . antiInjection($zonerecherche) . "%'";
  473. $module["recherche"]["zonerecherche"] = $zonerecherche;
  474. $module["recherchetri"] = $rtri;
  475. }
  476. //Si l'utilisateur fait partie d'un syndicat local
  477. if ($_SESSION['gestion_site'] < 'Oui') {
  478. $sqlparam["where"][] = sprintf("employes.refemployeur=%d", $_SESSION['employeur']);
  479. }
  480. // Selon la période en cours
  481. $sqlparam["where"][] = $periode;
  482. if (isset($ListeEmployeurs) && $ListeEmployeurs != "-1") {
  483. $module["listeEmployeurs"] = $ListeEmployeurs;
  484. } else {
  485. $module["listeEmployeurs"] = null;
  486. }
  487. if (isset($ListeEmployes) && $ListeEmployes != -1) {
  488. $module["listeEmployes"] = $ListeEmployes;
  489. } else {
  490. $module["listeEmployes"] = null;
  491. }
  492. $result = executerRequeteSql($sqlparam);
  493. if (isset($result) && is_array($result) && count($result) > 0) {
  494. $module["compte"] = $result[0]["compte"];
  495. } else {
  496. $module["compte"] = 0;
  497. }
  498. $i = 1;
  499. //print checkIfLiberationIsCanceled(17675999);
  500. print preparerModule($module);
  501. //Liste principale;
  502. if (isset($result) && is_array($result)) {
  503. if (count($result) > 0) {
  504. $i = ($nopage - 1) * $nombreaffiche + 1;
  505. foreach ($result as $clef => $champs) {
  506. if ($i > ($nopage * $nombreaffiche)) {
  507. continue;
  508. }
  509. $type = ($champs["typeoperation"] == 1) ? "Demande" : "Annulation";
  510. $lieu = $champs["lieu"];
  511. $quipaye = $champs["quipaye"];
  512. if ($quipaye == "0") {
  513. $quipaye = "Indéterminé";
  514. }
  515. $datepaiement = ($champs["datepaiement"] == '0') ? "Non-assign&eacute;" : date("Y-m-d", $champs["datepaiement"]);
  516. $couleur = ($champs["typeoperation"] == 1) ? "" : "color:#ff0000;";
  517. $style = 'border:1px solid #cfcfcf; overflow:hidden; white-space:nowrap;';
  518. print "<tr style='$couleur' $couleur>\n";
  519. print "<td style='$style'>$i</td>\n";
  520. print "<td style='$style'>" . ecrireTexteLimite($champs["utilisateur"], 100) . "</td>\n";
  521. print "<td style='$style'>" . ecrireTexteLimite($champs["nomemploye"], 150) . "</td>\n";
  522. print "<td style='$style' title=\"$type\">$type</td>\n";
  523. print "<td style='$style' title=\"" . date("Y-m-d", $champs["dateliberation"]) . "\">" . date("Y-m-d", $champs["dateliberation"]) . "</td>\n";
  524. print "<td style='$style' title=\"" . $champs["noarticle"] . "\">" . $champs["noarticle"] . "</td>\n";
  525. 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";
  526. print "<td style='$style' title=\"" . $champs["duree"] . "\">" . $champs["duree"] . "</td>\n";
  527. print "<td style='$style'>" . ecrireTexteLimite($lieu, 79) . "</td>\n";
  528. print "<td style='$style' title=\"$quipaye\">$quipaye</td>\n";
  529. //TODO à corriger
  530. if ($_SESSION["gestion_site"] >= "Oui") {
  531. if ($champs["paiement"] == "0") {
  532. print "<td style='$style' title=\"Non-assign&eacute;\">Non-assign&eacute;</td>\n";
  533. print "<td style='$style' title=\"Non-assign&eacute;\">Non-assign&eacute;</td>\n";
  534. } elseif ($champs["paiement"] == "1") {
  535. print "<td style='$style' title=\"Non\">Non</td>\n";
  536. print "<td style='$style' title=\"&Agrave; venir\">&Agrave; venir</td>\n";
  537. } else {
  538. print "<td style='$style' title=\"Oui\">Oui</td>\n";
  539. print "<td style='$style' title=\"$datepaiement\">$datepaiement</td>\n";
  540. }
  541. }
  542. 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";
  543. if ($_SESSION['gestion_site'] >= "Oui") {
  544. print "<td style='$style'>\n";
  545. //if (!checkIfLiberationIsCanceled($champs["refliberation"] )) {
  546. print "<INPUT class='modifier' title='Modifier' id='Modifier' TYPE='button' VALUE='Modifier' onclick=\"modifieLiberation(" . $champs["refemploye"] . "," . $champs["refliberation"] . ",'" . $GLOBALS["jeton"] . "');\">\n";
  547. //}
  548. print "</td>\n";
  549. } else {
  550. print "<td style='$style'>&nbsp;</td>\n";
  551. }
  552. print "</tr>\n";
  553. $i++;
  554. }
  555. } else {
  556. print "<tr><td colspan='12' style='text-align:center;'><h1>Aucune donnée pour la période sélectionnée.</h1></td></tr>";
  557. }
  558. }
  559. print"</table>";
  560. // Pagination
  561. print "<table style='width:1200px; margin:auto;'>";
  562. print "<tr><td style='vertical-align:bottom;'>";
  563. print $seqpage;
  564. print "</td>";
  565. print "<td style='width:320px; text-align:right;'>";
  566. //Haut de page
  567. if ($nombreaffiche > 15) {
  568. print "<a href='#hautpage' title='Aller en haut de la page'>Haut de page</a>";
  569. print "<a name='baspage'>";
  570. }
  571. print "</td></tr>";
  572. print "</table>";
  573. print "<span id='simon'></span>";
  574. print fenetreModaleDebut($module["fenetre"], $SCRIPT_NAME, $jeton);
  575. unset($titretemp);
  576. if (isset($module["actionajoutbouton"])) {
  577. $titretemp = $module["actionajoutbouton"];
  578. }
  579. $titretemp = 'Formulaire de détail';
  580. print fenetreModaleFin($titretemp);
  581. unset($cpt, $vide);
  582. $vide = true;
  583. ?>
  584. <script type="text/javascript">
  585. var nombre = 1;
  586. var reponseBoolDate;
  587. var mode_ajout;
  588. //Aperçu de la libération
  589. function apercuLiberation(noliberation) {
  590. if (verifieinfo()) {
  591. ouvrefenetre("creation_liberation.php?lib=" + noliberation + "&sortie=ecran");
  592. }
  593. }
  594. // Crée la date de paiement
  595. function creeDatePaiement(id, id2) {
  596. if ($("#" + id).val() === "2") {
  597. document.getElementById(id2).removeAttribute("readonly");
  598. var dateactuelle = new Date();
  599. var jour = "";
  600. var mois = "";
  601. if (dateactuelle.getMonth() + 1 < 10)
  602. mois = "0" + (dateactuelle.getMonth() + 1);
  603. else
  604. mois = (dateactuelle.getMonth() + 1);
  605. if (dateactuelle.getDate() + 1 < 10)
  606. jour = "0" + (dateactuelle.getDate());
  607. else
  608. jour = (dateactuelle.getDate());
  609. $("#" + id2).val(dateactuelle.getFullYear() + "-" + mois + "-" + jour);
  610. } else {
  611. document.getElementById(id2).setAttribute("readonly", "readonly");
  612. document.getElementById(id2).value = "";
  613. }
  614. }
  615. //Ajoute la date du jour dans la case Date
  616. function metsDate(id) {
  617. if (verifieinfo()) {
  618. $("#" + id).val("<?php print date("Y-m-d"); ?>");
  619. $("#" + id).focus();
  620. }
  621. }
  622. // Affiche le calendrier et mets la date actuelle par défaut
  623. function calendrier(id) {
  624. if (verifieinfo()) {
  625. if ($("#" + id).val() === "" || $("#" + id).val() === undefined) {
  626. metsDate(id);
  627. } else {
  628. $("#" + id).focus();
  629. }
  630. }
  631. }
  632. //Vérifie si la date est déjà prise.
  633. function verifieDate(idm, id2) {
  634. //Vérification de la date si déjà prise pour la même employée.
  635. if (reponseBoolDate) {
  636. var typeopr;
  637. var notype;
  638. if ($("#opr1").prop('checked') || $("#opr").val() === 1) {
  639. typeopr = "demande";
  640. notype = 1;
  641. } else if ($("#opr2").prop('checked') || $("#opr").val() === 2) {
  642. typeopr = "annulation";
  643. notype = 2;
  644. }
  645. if ($("#lreference").val() !== "" && $("#" + idm).val() !== "") {
  646. var resultat = $.ajax({
  647. url: "obtdatelib.php",
  648. global: false,
  649. type: "POST",
  650. data: {
  651. prm1: escape($("#lreference").val()), // no de employe
  652. prm2: escape($("#" + idm).val()), // date de libération
  653. prm3: escape($("#" + id2).val()), // no article
  654. prm4: notype //1=demande, 2 = annulation
  655. },
  656. dataType: "html",
  657. async: false,
  658. error: function () {
  659. $("#" + id2).datepicker("hide");
  660. },
  661. success: function () {
  662. $("#" + id2).datepicker("hide");
  663. }
  664. }).responseText;
  665. if (resultat === "accepte") {
  666. if (nombre > 1) {
  667. for (x = 0; x < nombre; x++) {
  668. var nombrev = parseInt(id.substring(2));
  669. if (x !== nombrev) {
  670. if ($("#" + id).val() === $("#id" + x).val()) {
  671. resultat = "occupedate_" + typeopr;
  672. }
  673. }
  674. }
  675. }
  676. }
  677. if (resultat.indexOf("occupedatearticle") > -1) {
  678. var tablovide = resultat.split("_");
  679. var typeoprtemp = tablovide[1];
  680. 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?",
  681. function (r) {
  682. if (r) {
  683. window.location.href = "index2.php?page=generateur_rapports&jeton=<?php print $jeton; ?>";
  684. } else {
  685. $("#" + id2).val(0);
  686. $("#" + idm).val("");
  687. $("#" + idm).focus();
  688. }
  689. });
  690. reponseBoolDate = false;
  691. } else if (resultat.indexOf('occupedate') > -1 && resultat.indexOf('article') === -1 && (resultat.indexOf("_demande") > -1 || resultat.indexOf("_annulation") > -1)) {
  692. var typeoprtemp = "";
  693. var tablovide = resultat.split("_");
  694. typeoprtemp = tablovide[1];
  695. 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?",
  696. function (r) {
  697. if (r) {
  698. window.location.href = "index2.php?page=generateur_rapports&jeton=<?php print $jeton; ?>";
  699. } else {
  700. $("#" + idm).val("");
  701. $("#" + idm).focus();
  702. }
  703. });
  704. reponseBoolDate = false;
  705. } else if (resultat.indexOf('refus_annulation') > -1) {
  706. jAlert("Il n'y a pas de demande de libérations à annuler pour ce membre (" + $("#zonerecherche2").val() + ") à cette date!");
  707. $("#" + idm).val("");
  708. $("#" + idm).focus();
  709. reponseBoolDate = false;
  710. }
  711. }
  712. reponseBoolDate = false;
  713. }
  714. }
  715. //Est-ce que l'employé existe?
  716. function verifEmploye() {
  717. var reponseBoolEmp = 0;
  718. var reponseBoolEmp = $.ajax({
  719. url: "obtemploye2.php",
  720. global: false,
  721. type: "POST",
  722. data: {prm1: $("#lreference").val()},
  723. dataType: "html",
  724. async: false
  725. }).responseText;
  726. if (reponseBoolEmp === 0 || reponseBoolEmp === "0") {
  727. return false;
  728. }
  729. return true;
  730. }
  731. //Est-ce que les renseignements primaires sont remplit?
  732. function verifieinfo() {
  733. var idemp = $("#zonerecherche2").val();
  734. var idlref = $("#lreference").val();
  735. var iddat = $("#datecreation").val();
  736. if ($("input[type='radio'][name=ltypeopr]:checked", '#frmModif').val() == undefined
  737. && ($("#opr").val() === "" || $("#opr").val() == undefined)) {
  738. jAlert("Veuillez choisir le type d'opération désirée.");
  739. $("#opr1").focus();
  740. return false;
  741. } else if (idemp === '' || idemp === "Recherche" || idlref === '') {
  742. jAlert("Veuillez choisir l'employé parmi les membres");
  743. $("#zonerecherche2").focus();
  744. return false;
  745. } else if (!isDateValide(iddat)) {
  746. jAlert("Veuillez choisir la date de création du document (Format : AAAA-MM-JJ)!");
  747. $("#datecreation").focus();
  748. return false;
  749. }
  750. return true;
  751. }
  752. //Vérifie si la touche Esc a été enfoncée.
  753. function verifieTouche(e) {
  754. if (e === null) { // ie
  755. keycode = event.keyCode;
  756. } else { // mozilla
  757. keycode = e.which;
  758. }
  759. if (keycode === 27) {
  760. setInvisible2('zonerecherche');
  761. }
  762. }
  763. //Vérifie la présente ligne de saisie
  764. function verifieLigne(nombre) {
  765. var nombre2 = nombre - 1;
  766. if ($("#id" + nombre2).val() === '') {
  767. jAlert("La date de libération est vide.");
  768. $("#id" + nombre2).focus();
  769. return false;
  770. } else if ($("#lart" + nombre2).val() === '0') {
  771. jAlert("Aucun article n'a été choisit.");
  772. $("#lart" + nombre2).focus();
  773. return false;
  774. } else if ($("#com" + nombre2).val() === '') {
  775. jAlert("Le commentaire2 est vide.");
  776. $("#com" + nombre2).focus();
  777. return false;
  778. } else if ($("#ldur" + nombre2).val() === '0') {
  779. jAlert("La durée n'a pas été choisie.");
  780. $("#ldur" + nombre2).focus();
  781. return false;
  782. } else if ($("#lie" + nombre2).val() === '') {
  783. jAlert("Le lieu est vide.");
  784. $("#lie" + nombre2).focus();
  785. return false;
  786. } else if ($("#las" + nombre2).val() === '0') {
  787. jAlert("Aucun item de la liste «Assumer par» n'a été choisit.");
  788. $("#las" + nombre2).focus();
  789. return false;
  790. } else
  791. return true;
  792. }
  793. function MapValeur(idname) {
  794. var valeur = "";
  795. var x;
  796. for (x = 0; x < nombre; x++) {
  797. var obj = document.getElementById(idname + x);
  798. if (obj && obj.value !== null && obj.value !== undefined) {
  799. valeur = valeur + obj.value;
  800. if (x < nombre - 1) {
  801. valeur = valeur + "**";
  802. }
  803. }
  804. }
  805. return encodeURI(valeur);
  806. }
  807. //Si le formulaire est valide, on accepte et renvoie le résultat pour traitement.
  808. function ValidationFormulaire(boutontxt) {
  809. var result = true;
  810. if (!verifieinfo()) {
  811. result = false;
  812. }
  813. if (result) {
  814. for (x = 1; x <= nombre; x++) {
  815. if (!verifieLigne(x)) {
  816. result = false;
  817. x = nombre + 1;
  818. }
  819. }
  820. }
  821. if (result) {
  822. var reponseVerif;
  823. var notype;
  824. if ($("#opr1").prop('checked') || $("#opr").val() === 1) {
  825. notype = 1;
  826. } else if ($("#opr2").prop('checked') || $("#opr").val() === 2) {
  827. notype = 2;
  828. } else {
  829. notype = $("#opr").val();
  830. }
  831. var reponseVerif = $.trim($.ajax({
  832. url: "verifliberations.php",
  833. global: false,
  834. type: "POST",
  835. data: {
  836. bouton: "verification",
  837. noliberation: document.frmModif.noliberation.value,
  838. lreference: $("#lreference").val(),
  839. ldatecreation: $("#datecreation").val(),
  840. ltypeopr: notype,
  841. datelib: MapValeur('id'),
  842. lart: MapValeur('lart'),
  843. lcomm: MapValeur('com'),
  844. ldur: MapValeur('ldur'),
  845. lieu: MapValeur('lie'),
  846. lassume: MapValeur('las'),
  847. ldetail: MapValeur('ligneliberation')
  848. },
  849. dataType: "html",
  850. async: false
  851. }).responseText);
  852. if (reponseVerif !== "ok") {
  853. //jAlert(reponseVerif, "Erreur");
  854. alert(reponseVerif);
  855. result = false;
  856. }
  857. }
  858. if (result) {
  859. document.frmModif.action.value = boutontxt;
  860. document.frmModif.lreference.value = document.frmRecherche.lreference.value;
  861. document.frmModif.submit();
  862. }
  863. }
  864. //Si le formulaire est valide, on accepte et renvoie le résultat pour traitement.
  865. function AnnuleLiberation(boutontxt, noliberation) {
  866. var anonymousDeleteFunction = function (choice) {
  867. if (choice) {
  868. document.frmModif.action.value = boutontxt;
  869. document.frmModif.noliberation.value = noliberation;
  870. document.frmModif.lreference.value = document.frmRecherche.lreference.value;
  871. document.frmModif.submit();
  872. }
  873. };
  874. notif_confirm({
  875. 'message': "Voulez-vous vraiment annuler cette libération complètement?",
  876. 'textaccept': "Annulation de la demande de libération",
  877. 'textcancel': "Annuler l'opération",
  878. 'callback': anonymousDeleteFunction
  879. });
  880. }
  881. //Si le formulaire est valide, on accepte et renvoie le résultat pour traitement.
  882. function CopierLiberation(boutontxt, noliberation) {
  883. var anonymousCopyFunction = function (choice) {
  884. if (choice) {
  885. document.frmModif.action.value = boutontxt;
  886. document.frmModif.noliberation.value = noliberation;
  887. document.frmModif.lreference.value = document.frmRecherche.lreference.value;
  888. document.frmModif.submit();
  889. }
  890. };
  891. notif_confirm({
  892. 'message': "Voulez-vous vraiment copier cette demande libération?",
  893. 'textaccept': "Copie de la demande de libération",
  894. 'textcancel': "Annuler l'opération",
  895. 'callback': anonymousCopyFunction
  896. });
  897. }
  898. // Ajoute une ligne à la table
  899. function addRow(id) {
  900. var thisnombre = nombre;
  901. var v1 = verifieinfo();
  902. var v2 = verifieLigne(thisnombre);
  903. if (v1 && v2) {
  904. var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
  905. var col1 = "<input name=\"datelib[]\" style='min-width:80px;' value=\"\" id=\"id" + thisnombre + "\" onfocus=\"verifieinfo();\" onblur=\"verifieDate('id" + thisnombre + "','lart" + thisnombre + "');\" >";
  906. var col1b = "<img alt=\"Calendrier\" src=\"images/calendar.gif\" class=\"calendrier\" id=\"butdate" + thisnombre + "\" onclick =\"calendrier('id" + thisnombre + "');\">";
  907. var col3 = "<input name=\"commentaire[]\" id=\"com" + thisnombre + "\" value=\"\">";
  908. var col5 = "<input name=\"lieu[]\" id=\"lie" + thisnombre + "\" value=\"\">";
  909. var col6 = "<select NAME=\"lassumerpar[]\" id=\"las" + thisnombre + "\"><option>--------</option><option>Syndicat</option><option>Employeur</option></select>";
  910. var row = document.createElement("TR");
  911. row.id = "ligne" + thisnombre + "";
  912. var td1 = document.createElement("TD");
  913. td1.className = "liberationsdetail";
  914. td1.innerHTML = col1 + col1b; //+col1c;
  915. var td2 = document.createElement("TD");
  916. td2.className = "liberationsdetail";
  917. var obj2 = document.getElementById("lart0").cloneNode(true);
  918. obj2.id = "lart" + thisnombre + "";
  919. td2.appendChild(obj2);
  920. var td3 = document.createElement("TD");
  921. td3.className = "liberationsdetail";
  922. td3.innerHTML = col3;
  923. var td4 = document.createElement("TD");
  924. td4.className = "liberationsdetail";
  925. var obj4 = document.getElementById("ldur0").cloneNode(true);
  926. obj4.id = "ldur" + thisnombre + "";
  927. td4.appendChild(obj4);
  928. var td5 = document.createElement("TD");
  929. td5.className = "liberationsdetail";
  930. td5.innerHTML = col5;
  931. var td6 = document.createElement("TD");
  932. td6.className = "liberationsdetail";
  933. td6.innerHTML = col6;
  934. var td7 = document.createElement("TD");
  935. td7.className = "liberationsdetail";
  936. var obj7 = document.getElementById("0").cloneNode(true);
  937. obj7.id = nombre;
  938. td7.appendChild(obj7);
  939. row.appendChild(td1);
  940. row.appendChild(td2);
  941. row.appendChild(td3);
  942. row.appendChild(td4);
  943. row.appendChild(td5);
  944. row.appendChild(td6);
  945. <?php
  946. if ($_SESSION["gestion_site"] == "Oui") {
  947. ?>
  948. if (mode_ajout === 0) {
  949. var col8 = "<select NAME=\"lpaiement[]\" id=\"lpa" + thisnombre + "\" onchange=\"creeDatePaiement('lpa'+nombre,'datepaiement" + thisnombre + "');\">";
  950. var col8a = "<option value=\"0\">--------</option><option value=\"1\">Non</option><option value=\"2\">Oui</option>";
  951. var col9 = "<input name=\"datepaiement[]\" id=\"datepaiement" + thisnombre + "\" size=\"10\" maxlength=\"10\" type=\"text\" readonly=\"readonly\" value=\"\">";
  952. var td8 = document.createElement("TD");
  953. td8.className = "liberationsdetail";
  954. td8.innerHTML = col8 + col8a;
  955. var td9 = document.createElement("TD");
  956. td9.innerHTML = col9;
  957. td9.className = "liberationsdetail";
  958. row.appendChild(td8);
  959. row.appendChild(td9);
  960. }
  961. <?php
  962. }
  963. ?>
  964. row.appendChild(td7);
  965. tbody.appendChild(row);
  966. $(document).ready(function () {
  967. $("#id" + thisnombre).datepicker({
  968. autoSize: true,
  969. onSelect: function () {
  970. reponseBoolDate = true;
  971. verifieDate('id' + thisnombre, 'lart' + thisnombre);
  972. }
  973. });
  974. $("#id" + thisnombre).datepicker("hide");
  975. nombre++;
  976. });
  977. }
  978. }
  979. function copieLigne(id) {
  980. var thisnombre = nombre;
  981. var v1 = verifieinfo();
  982. var v2 = verifieLigne(thisnombre);
  983. if (v1 && v2) {
  984. var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
  985. var col1 = "<input name=\"datelib[]\" style='min-width:80px;' value=\"\" id=\"id" + thisnombre + "\" onfocus=\"verifieinfo();\" onblur=\"verifieDate('id" + thisnombre + "','lart" + thisnombre + "');\" >";
  986. var col1b = "<img alt=\"Calendrier\" src=\"images/calendar.gif\" class=\"calendrier\" id=\"butdate" + thisnombre + "\" onclick =\"calendrier('id" + thisnombre + "');\">";
  987. var col3 = "<input name=\"commentaire[]\" id=\"com" + thisnombre + "\" value=\"\">";
  988. var col5 = "<input name=\"lieu[]\" id=\"lie" + thisnombre + "\" value=\"\">";
  989. var col6 = "<select NAME=\"lassumerpar[]\" id=\"las" + thisnombre + "\"><option>--------</option><option>Syndicat</option><option>Employeur</option></select>";
  990. var row = document.createElement("TR");
  991. row.id = "ligne" + thisnombre + "";
  992. var td1 = document.createElement("TD");
  993. td1.className = "liberationsdetail";
  994. td1.innerHTML = col1 + col1b;
  995. var td2 = document.createElement("TD");
  996. td2.className = "liberationsdetail";
  997. var obj2 = document.getElementById("lart0").cloneNode(true);
  998. obj2.id = "lart" + thisnombre + "";
  999. td2.appendChild(obj2);
  1000. var td3 = document.createElement("TD");
  1001. td3.className = "liberationsdetail";
  1002. td3.innerHTML = col3;
  1003. var td4 = document.createElement("TD");
  1004. td4.className = "liberationsdetail";
  1005. var obj4 = document.getElementById("ldur0").cloneNode(true);
  1006. obj4.id = "ldur" + thisnombre + "";
  1007. td4.appendChild(obj4);
  1008. var td5 = document.createElement("TD");
  1009. td5.className = "liberationsdetail";
  1010. td5.innerHTML = col5;
  1011. var td6 = document.createElement("TD");
  1012. td6.className = "liberationsdetail";
  1013. td6.innerHTML = col6;
  1014. var td7 = document.createElement("TD");
  1015. td7.className = "liberationsdetail";
  1016. var obj7 = document.getElementById("0").cloneNode(true);
  1017. obj7.id = nombre;
  1018. td7.appendChild(obj7);
  1019. row.appendChild(td1);
  1020. row.appendChild(td2);
  1021. row.appendChild(td3);
  1022. row.appendChild(td4);
  1023. row.appendChild(td5);
  1024. row.appendChild(td6);
  1025. <?php
  1026. if ($_SESSION["gestion_site"] == "Oui") {
  1027. ?>
  1028. if (mode_ajout === 0) {
  1029. var col8 = "<select NAME=\"lpaiement[]\" id=\"lpa" + thisnombre + "\" onchange=\"creeDatePaiement('lpa'+nombre,'datepaiement" + thisnombre + "');\">";
  1030. var col8a = "<option value=\"0\">--------</option><option value=\"1\">Non</option><option value=\"2\">Oui</option>";
  1031. var col9 = "<input name=\"datepaiement[]\" id=\"datepaiement" + thisnombre + "\" size=\"10\" maxlength=\"10\" type=\"text\" readonly=\"readonly\" value=\"\">";
  1032. var td8 = document.createElement("TD");
  1033. td8.className = "liberationsdetail";
  1034. td8.innerHTML = col8 + col8a;
  1035. var td9 = document.createElement("TD");
  1036. td9.innerHTML = col9;
  1037. td9.className = "liberationsdetail";
  1038. row.appendChild(td8);
  1039. row.appendChild(td9);
  1040. }
  1041. <?php
  1042. }
  1043. ?>
  1044. row.appendChild(td7);
  1045. tbody.appendChild(row);
  1046. $(document).ready(function () {
  1047. $("#id" + thisnombre).datepicker({
  1048. autoSize: true,
  1049. onSelect: function () {
  1050. reponseBoolDate = true;
  1051. verifieDate('id' + thisnombre, 'lart' + thisnombre);
  1052. }
  1053. });
  1054. $("#id" + thisnombre).datepicker("hide");
  1055. nombre++;
  1056. });
  1057. }
  1058. }
  1059. //Supprime une ligne à la table.
  1060. function supprimeLigne(r) {
  1061. var i = r.parentNode.parentNode.rowIndex;
  1062. if (i > 1) {
  1063. document.getElementById('liberations').deleteRow(i);
  1064. nombre--;
  1065. } else {
  1066. $('#id0').val("");
  1067. $('#lart0').val(0);
  1068. $('#com0').val("");
  1069. $('#ldur0').val(0);
  1070. $('#lie0').val("");
  1071. $('#las0').val(0);
  1072. }
  1073. }
  1074. //On efface tout le formulaire
  1075. function recommencer() {
  1076. $("#zoneresultats2").slideUp();
  1077. $("#voirsolde").slideUp();
  1078. $("#datecreation").datepicker("hide");
  1079. $("#id0").datepicker("hide");
  1080. var frmModif = document.frmModif;
  1081. frmModif.reset();
  1082. var nbl = document.getElementById('liberations').rows.length;
  1083. for (x = 1; x < nbl - 2; x++) {
  1084. var nbl2 = document.getElementById('liberations').rows.length;
  1085. document.getElementById('liberations').deleteRow(nbl2);
  1086. }
  1087. }
  1088. function voirsolde() {
  1089. var idemp = $("#zonerecherche2").val();
  1090. var idlref = $('#lreference').val();
  1091. if (idemp === '' || idemp === "Recherche" || idlref === '') {
  1092. $("#zonerecherche2").focus();
  1093. jAlert("Veuillez choisir l'employé parmi les membres");
  1094. return false;
  1095. } else {
  1096. var reponseVerif = $.trim($.ajax({
  1097. url: "obtsolde.php",
  1098. global: false,
  1099. type: "GET",
  1100. data: {
  1101. prm1: idlref,
  1102. jeton: "<?php print $GLOBALS["jeton"]; ?>"
  1103. },
  1104. dataType: "html",
  1105. async: false
  1106. }).responseText);
  1107. console.log(reponseVerif);
  1108. $("#voirsolde").html(reponseVerif).slideDown();
  1109. }
  1110. }
  1111. function fermersolde() {
  1112. $("#voirsolde").slideUp();
  1113. }
  1114. //Traiter toutes les lignes modifiées pour sauvegarde
  1115. function traiter(id) {
  1116. if (typeof (document.fermeture.crochet) !== "undefined") {
  1117. var source = document.getElementById("Crochet" + id + "");
  1118. if (source.checked) {
  1119. var champs2 = document.getElementById("TRCrochet" + id + "");
  1120. var prm2 = obtientValeurs(champs2);
  1121. traiterlignePaiement(id, prm2);
  1122. }
  1123. }
  1124. }
  1125. function selectedB(choice, choice2) {
  1126. var cible = document.getElementById("lemploye");
  1127. cible.value = choice;
  1128. var cible2 = document.getElementById('lreference');
  1129. cible2.value = choice2;
  1130. }
  1131. // Charger le formulaire de modification Ajax
  1132. function modifieLiberation(noemploye, nolib, jeton) {
  1133. $(document).ready(function () {
  1134. changetitre(2);
  1135. $("#lreference").val(noemploye);
  1136. mode_ajout = 0;
  1137. var reponseVerif = $.trim($.ajax({
  1138. url: "obtformlib.php",
  1139. global: false,
  1140. type: "POST",
  1141. data: {
  1142. prm1: nolib,
  1143. jeton: jeton
  1144. },
  1145. dataType: "html",
  1146. async: false
  1147. }).responseText);
  1148. $("#fenetremodale").html(reponseVerif);
  1149. var oRows = document.getElementById('liberations').getElementsByTagName('tr');
  1150. nombre = oRows.length - 1;
  1151. overlay();
  1152. });
  1153. }
  1154. $(document).ready(function () {
  1155. //Charger le formulaire Ajax avant tout le monde
  1156. $("#fenetremodale").load("obtformlib.php?prm1=-1");
  1157. // Sur le clic du bouton d'ajout d'une libération,
  1158. // réinitialisation de tous les champs du formulaire.
  1159. $("#action_ajout").click(function () {
  1160. mode_ajout = 1;
  1161. $("#fenetremodale").load("obtformlib.php", {prm1: -1, jeton: "<?php print $GLOBALS["jeton"]; ?>"});
  1162. //recommencer();
  1163. });
  1164. $("#frmModif").validate();
  1165. $("voirsolde").blur(function () {
  1166. $("#voirsolde").slideUp();
  1167. });
  1168. });</script>
  1169. <?PHP
  1170. if (isset($action2) && $action2 == "Afficher") {
  1171. ?>
  1172. <script type="text/javascript">
  1173. $(document).ready(function () {
  1174. changetitre(2);
  1175. overlay();
  1176. });
  1177. </script>
  1178. <?php
  1179. }