/[openfoncier]/trunk/app/consultation_multiple.php
ViewVC logotype

Contents of /trunk/app/consultation_multiple.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 956 - (show annotations)
Mon Dec 3 01:16:25 2012 UTC (12 years, 2 months ago) by fmichon
File size: 26998 byte(s)
Correction de l'objet appelé sur la création de l'état pour garder la cohérence et obtenir un état en rapport avecla consultation

1 <?php
2 /**
3 * Script personnalisé pour les consultations multiples.
4 *
5 * @package openfoncier
6 * @version SVN : $Id$
7 */
8
9 require_once "../obj/utils.class.php";
10
11 // Identifiant de l'objet metier a copier
12 (isset($_GET['idx']) ? $idx = $_GET['idx'] : $idx = "");
13 // Nom de l'objet metier
14 (isset($_GET['obj']) ? $obj = $_GET['obj'] : $obj = "");
15 //formulaire retour
16 (isset($_GET['ret']) ? $retourformulaire = $_GET['ret'] : $retourformulaire = "");
17 (isset($_GET['date_envoi']) ? $date_envoi = $_GET['date_envoi'] : $date_envoi = "");
18
19 $f = new utils("nohtml");
20
21 $liste_gauche = "";
22
23 if ( isset($_GET) && isset($_GET['data']) && !empty($_GET['data']) ){
24 $f->disableLog();
25 /*Récupération des données et formatage.*/
26 $donnees_temp = explode(';', $_GET['data']);
27 for ( $i = 1 ; $i < count($donnees_temp) ; $i++ )
28 $donnees[] = explode('_', $donnees_temp[$i]);
29
30 /* Nombre de consultations papier à générer */
31 $nbConsPap = 0;
32
33 /* Ajout des données en base de données
34 * 0 : l'ID du service
35 * 1 : consultation papier {0,1}
36 * */
37 if ( isset($donnees) && count($donnees) > 0 ){
38
39 require_once "../core/om_dbform.class.php";
40 $om_dbform = new dbForm();
41 require_once "../obj/consultation.class.php";
42 $consultation = new consultation("]",$f->db,DEBUG);
43
44 foreach ($donnees as $value) {
45
46 $sql = "SELECT delai FROM ".DB_PREFIXE."service WHERE service = $value[0]";
47 $res = $f->db->query($sql);
48 $f->isDatabaseError($res);
49 $row=& $res->fetchRow();
50 $delai = $row[0];
51
52 /*Calcul du delai de retour*/
53 $date_envoi_temp = $om_dbform->datePHP($date_envoi);
54 $delai = $om_dbform->dateDB($consultation->moisdate($date_envoi_temp, $delai));
55
56 /*Les données à ajouter*/
57 $arrayVal = array(
58 'consultation' => "]",
59 'dossier' => $idx,
60 'date_envoi' => $date_envoi,
61 'date_retour' => NULL,
62 'date_limite' => $delai,
63 'service' => $value[0],
64 'avis_consultation' => NULL,
65 'date_reception' => NULL,
66 'motivation' => "",
67 'fichier' => NULL,
68 'lu' => TRUE
69 );
70
71 $consultation->ajouter($arrayVal, $f->db, DEBUG);
72
73 /*Comptage du nombre de consultations papier demandées et récupération des ids des PDFs à éditer*/
74 if ($value[1]==1){
75 $idxConsultations[] = $consultation->valF['consultation'];
76 $nbConsPap++;
77 }
78 }
79
80 /*Génération du PDF*/
81 if ( isset($idxConsultations) && count($idxConsultations) > 0 ){
82
83 $textIdsConsultations = "";
84 foreach ($idxConsultations as $value)
85 $textIdsConsultations .= "&idxConsultations[]=$value";
86
87 echo "
88 <script language='javascript' type='text/javascript'>
89 $.download('../app/pdfetat.php','obj=consultation_avec_avis_attendu$textIdsConsultations', 'POST', 'consultation_avec_avis_attendu');
90 </script>
91 ";
92 }
93 /*Affichage du message d'information*/
94 $f->displayMessage("valid", count($donnees)._(' service(s) selectionne(s) dont ').$nbConsPap._(' consultation(s) papier.'));
95 }
96
97 }
98 else {
99 /*Requête qui récupère les services qui sont dans des thématiques*/
100 $sql =
101 "SELECT
102 ser_cat.service_categorie, ser_cat.libelle AS them_lib,
103 ser.service, ser.libelle AS ser_lib, ser.consultation_papier
104 FROM
105 ".DB_PREFIXE."lien_service_service_categorie lie,
106 ".DB_PREFIXE."service_categorie ser_cat,
107 ".DB_PREFIXE."service ser
108 WHERE
109 ser_cat.service_categorie = lie.service_categorie AND
110 ser.service = lie.service AND
111 (
112 (ser.om_validite_debut IS NULL
113 AND (ser.om_validite_fin IS NULL
114 OR ser.om_validite_fin > CURRENT_DATE))
115 OR
116 (ser.om_validite_debut <= CURRENT_DATE
117 AND (ser.om_validite_fin IS NULL
118 OR ser.om_validite_fin > CURRENT_DATE))
119 )
120 ORDER BY them_lib, ser_lib
121 ";
122
123 $res = $f->db->query($sql);
124 $f->addToLog("app/consultation_multiple.php: db->query(\"".$sql."\")", VERBOSE_MODE);
125 $f->isDatabaseError($res);
126
127 $temp_ser_cat = 0;
128 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
129 $name = $row['service_categorie'].'_'.
130 $row['service'].'_'.
131 (($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '0' : '1' ).'_';
132 /*On change de thématique, donc rajoute le nom de la thématique*/
133 if ( $temp_ser_cat != $row['service_categorie'] ){
134
135 $temp_ser_cat = $row['service_categorie'];
136 $liste_gauche .= '
137 <div id="them_'.$row['service_categorie'].'" class="liste_gauche_them" >'.
138 $row['them_lib'].
139 '</div>
140 <div
141 class="liste_gauche_service t'.$name.'"
142 id="t'.$name.'" >
143 '.$row['ser_lib'].'
144 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
145 </div>
146 ';
147 }
148
149 /*On est dans la même thématique*/
150 else {
151
152 $liste_gauche .= '
153 <div
154 class="liste_gauche_service t'.$name.'"
155 id="t'.$name.'" >
156 '.$row['ser_lib'].'
157 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
158 </div>
159 ';
160 }
161
162 }
163
164 /*Requête qui récupère les services qui ne sont pas dans une thématique*/
165 $sql =
166 "SELECT service, libelle, consultation_papier
167 FROM ".DB_PREFIXE."service
168 WHERE service NOT IN
169 (
170 SELECT service
171 FROM ".DB_PREFIXE."lien_service_service_categorie
172 )
173 AND
174 (
175 om_validite_fin <= CURRENT_DATE OR
176 om_validite_fin IS NULL
177 )
178 ";
179
180 $res = $f->db->query($sql);
181 $f->isDatabaseError($res);
182
183 if ( $res->numrows() > 0 )
184 $liste_gauche .= '
185 <div id="them_0" class="liste_gauche_them">Autres</div>';
186
187 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
188
189 /*Ajout de tous les services qui n'ont pas de thématique*/
190 $name = '0_'.
191 $row['service'].'_'.
192 (($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '0' : '1' ).'_';
193 $liste_gauche .= '
194 <div
195 class="liste_gauche_service t'.$name.'"
196 id="t'.$name.'" >
197 '.$row['libelle'].'&nbsp;
198 <input class="t'.$name.'" type="checkbox" '.(($row['consultation_papier'] == '' || $row['consultation_papier'] == 'f' ) ? '' : 'checked="checked"' ).'/>
199 </div>
200 ';
201 }
202
203 /*Affichage du formulaire*/
204 echo '<div class="subtitle">';
205 echo '<h3>';
206 echo _("Application");
207 echo '<span class="om-icon om-icon-16 om-icon-fix arrow-right-16"></span>';
208 echo _("consultation");
209 echo '</h3>';
210 echo '</div>';
211 echo '<div class="sformulaire">';
212 echo '<form onsubmit="ajaxIt(\'consultation\', \'../app/consultation_multiple.php\');return false;"
213 method="get" action="" name="f2" id="form_val">';
214 echo '<div class="formEntete ui-corner-all">';
215 echo "<div>";
216 echo '<div class="bloc">';
217 echo "<fieldset class='cadre ui-corner-all ui-widget-content'>\n";
218 echo "\t<legend class='ui-corner-all ui-widget-content ui-state-active'>".
219 _("Consultation par thematique ")."</legend>";
220 echo "<div class='fieldsetContent' style='width:100%'>";
221 echo '<div class="field-ser-them field-type-hiddenstatic">';
222 echo '<div class="form-libelle">';
223 echo '<label class="libelle-dossier" for="dossier">';
224 echo _('dossier');
225 echo '<span class="not-null-tag">*</span>';
226 echo '</label>';
227 echo '</div>';
228 echo '<div class="form-content">';
229 echo '<input class="champFormulaire" type="hidden" value="'.$idx.'" name="dossier"/>';
230 echo $idx;
231 echo '</div>';
232 echo '</div>';
233 /*Code du nouveau champ*/
234 echo '<div class="field-ser-them ser-them">';
235 echo '<div class="list-ser-them">';
236 echo $liste_gauche;
237 echo '</div>';
238 echo '<div class="button-ser-them">';
239 echo '<ul>';
240 echo '<li>';
241 echo '<input type="button" value="'._("Ajouter").' >>" id="add-ser-them"/>';
242 echo '</li>';
243 echo '<li>';
244 echo '<input type="button" value="<< '._("Supprimer").'" id="del-ser-them"/>';
245 echo '</li>';
246 echo '</ul>';
247 echo '</div>';
248 echo '<div class="list-sel-ser-them">';
249 echo '<div class=\'row\'>';
250 echo '<div class=\'cell1 liste_droite_title list-sel-ser-them-title\'>'._('Service a consulter').'</div>';
251 echo '<div class=\'cell2 liste_droite_title list-sel-ser-them-title\'>'._('Version papier').'</div>';
252 echo '</div>';
253 echo '</div>';
254 echo '</div>';
255 /* -- FIN --*/
256 echo '<div class="field-ser-them field-type-date2">';
257 echo '<div class="form-libelle">';
258 echo '<label class="libelle-date_envoi" for="date_envoi">';
259 echo _('date_envoi');
260 echo '<span class="not-null-tag">*</span>';
261 echo '</label>';
262 echo '</div>';
263 echo '<div class="form-content">';
264 echo '<input id="date_envoi" class="champFormulaire datepicker"
265 type="text" onkeyup="" onchange="fdate(this)"
266 maxlength="10" size="12" value="'.date("d/m/Y").'"
267 name="date_envoi">';
268 echo '</div>';
269 echo '</div>';
270 echo "</div>";
271 echo "</fieldset>";
272 echo '</div>';
273 echo '</div>';
274 echo '</div>';
275 echo '<div class="formControls">';
276 echo '<input class="om-button ui-button ui-widget ui-state-default ui-corner-all"
277 type="button" onclick="if ( $(\'.liste_gauche_service_selected\').length > 0 && $(\'#date_envoi\').val() != \'\' ) { ajaxIt(\'consultation\', \'../app/consultation_multiple.php\'); } else alert(\'Veuillez choisir au moins un service et une date d envoi\');"
278 value="Ajouter le(s) enregistrement(s) de la table : \'Consultation\'"
279 id="button_val">';
280 echo '<a class="retour" onclick="ajaxIt(\'consultation\', \'../scr/soustab.php?obj='.$obj.'&retourformulaire='.$retourformulaire.'&idxformulaire='.$idx.'&premier=0&tricol=\');"
281 href="#">';
282 echo 'Retour';
283 echo '</a>';
284 echo '</div>';
285 echo '</form>';
286 echo '</div>';
287
288 echo "
289 <script language='javascript' type='text/javascript'>
290 $(function(){
291
292 /*
293 Sélectionne tous les services d'un thème au clique sur celui ci.
294 */
295 $('.liste_gauche_them').click(
296 function(){
297
298 var id = $(this).attr('id').split('_')[1];
299 var numSer = 0;
300 var numSerWithClass = 0;
301
302 $('.list-ser-them div').each(
303 function() {
304
305 if ( $(this).attr('id').indexOf('them') == -1 &&
306 $(this).attr('id').indexOf(id) == 1 &&
307 $(this).hasClass('liste_gauche_service_selected') )
308
309 numSerWithClass++;
310
311 if ( $(this).attr('id').indexOf('them') == -1 &&
312 $(this).attr('id').indexOf(id) == 1 )
313
314 numSer++;
315 }
316 );
317
318 if ( numSerWithClass < numSer && numSerWithClass >= 0 ){
319
320 $('.list-ser-them div').each(
321 function() {
322
323 if ( $(this).attr('id').indexOf('them') == -1 &&
324 $(this).attr('id').indexOf(id) == 1 &&
325 !$(this).hasClass('liste_gauche_service_selected') )
326
327 $(this).addClass('liste_gauche_service_selected');
328 }
329 );
330 }
331
332 else {
333
334 $('.list-ser-them div').each(
335 function() {
336
337 if ( $(this).attr('id').indexOf('them') == -1 &&
338 $(this).attr('id').indexOf(id) == 1 &&
339 $(this).hasClass('liste_gauche_service_selected') )
340
341 $(this).removeClass('liste_gauche_service_selected');
342 }
343 );
344 }
345 }
346 );
347
348 /*
349 Change la class CSS d'un service sur lequel on clique dans la liste de gauche.
350 */
351 $('.liste_gauche_service').click(
352 function(){
353 $(this).toggleClass('liste_gauche_service_selected');
354 }
355 );
356
357 /*
358 Change la class CSS d'un service sur lequel on clique dans la liste de droite.
359 */
360 $('.field-ser-them').on(
361 'click',
362 '.cell1',
363 function(){
364 if ( !$(this).hasClass('liste_droite_title') )
365 $(this).parent().toggleClass('liste_droite_service_selected');
366 }
367 );
368
369 $('.liste_droite_service input[type=checkbox]').live(
370 'click',
371 'input[type=checkbox]',
372 function(){
373
374 old_id = $(this).attr('class');
375
376 tab_don = old_id.split('_');
377
378 new_id = tab_don[0] + '_' + tab_don[1] + '_' + ((tab_don[2] == 0 ) ? 1 : 0 ) + '_';
379
380 changeOneData( ';' + tab_don[1] + '_' + tab_don[2], ';' + tab_don[1] + '_' + ((tab_don[2] == 0) ? 1 : 0) );
381 $('div[class=\"' + old_id + '\"]').attr('class', new_id);
382 $(this).attr('class', new_id);
383
384 }
385 );
386
387 $('#date_envoi').change(
388 function (){
389
390 var listServ = new Array();
391 var data = '';
392
393 $('.liste_gauche_service_selected').each(
394 function(i) {
395
396 var name = $(this).attr('name');
397
398 if ( listServ.length > 0 && listServ.indexOf(name.split('_')[1]) != -1 )
399 return;
400 listServ[i] = name.split('_')[1];
401 data += ';' + name.split('_')[1] + '_' + name.split('_')[2] ;
402
403 }
404 );
405
406 changeActionVal(data);
407 }
408 );
409
410 /*
411 Passe les services sélectionnés dans la liste de gauche dans celle de droite.
412 */
413 $('#add-ser-them').click(
414 function() {
415
416 changeDataLeftColumn();
417 }
418 );
419
420 /*
421 Passe les services sélectionnés dans la liste de droite dans celle de gauche.
422 */
423 $('#del-ser-them').click(
424 function() {
425
426 var data = '';
427
428 $('.liste_droite_service_selected').each(
429 function() {
430
431 var name = $('#'+ $(this).attr('id') + ' .cell1 div').attr('name');
432
433 manageListServ('.list-ser-them div', name, 1);
434 data += ';' + name.split('_')[1] + '_' + name.split('_')[2] ;
435
436 $(this).remove();
437 }
438 );
439
440 changeActionVal(data);
441 }
442 );
443 });
444
445 /*
446 Vérifie que l'objet n'est pas une thématique et que son identifiant correspond.
447 */
448 function isNotthemIsOneServ( objet, id ){
449 return ( $(objet).attr('id').indexOf('them') == -1 &&
450 $(objet).attr('id').indexOf('_' + id.split('_')[1] + '_') != -1 );
451 }
452
453 /*
454 Affiche ou cache un élément qui n'est pas une thématique et dont son identifiant correspond.
455 */
456 function manageListServ( objet , name, type){
457
458 $(objet).each(
459 function() {
460
461 if ( isNotthemIsOneServ(this, name) ){
462 if ( type == 0 )
463
464 $(this).hide() ;
465
466 else {
467
468 if ( $(this).hasClass('liste_gauche_service_selected') )
469
470 $(this).toggleClass('liste_gauche_service_selected');
471
472 $(this).show() ;
473
474 }
475 }
476 }
477 );
478 }
479
480 /*
481 Change les actions qui sont réalisées lors de la soumission du formulaire
482 */
483 function changeActionVal(data){
484 date = $('#date_envoi').val();
485
486 $('#form_val').attr(
487 'onsubmit',
488 'if ( $(\'.liste_gauche_service_selected\').length > 0 && $(\'#date_envoi\').val() != \'\' ) { messageIt(\'consultation\', \'../app/consultation_multiple.php?obj=$obj&data='+data+'&idx=$idx&date_envoi='+date+'\',true);return false;' +
489 'messageIt(\'consultation\', \'../scr/soustab.php?obj=$obj&retourformulaire=$retourformulaire&idxformulaire=$idx&premier=0&tricol=\',false);} else alert(\'Veuillez choisir au moins un service et une date d envoi\');'
490
491 );
492 $('#button_val').attr(
493 'onclick',
494 'if ( $(\'.liste_gauche_service_selected\').length > 0 && $(\'#date_envoi\').val() != \'\' ) { messageIt(\'consultation\', \'../app/consultation_multiple.php?obj=$obj&data='+data+'&idx=$idx&date_envoi='+date+'\',true);' +
495 'messageIt(\'consultation\', \'../scr/soustab.php?obj=$obj&retourformulaire=$retourformulaire&idxformulaire=$idx&premier=0&tricol=\',false);} else alert(\'Veuillez choisir au moins un service et une date d envoi\');'
496
497 );
498 }
499
500 /*
501 Change les actions qui sont réalisées lors de la soumission du formulaire
502 */
503 function changeOneData( oldData, newData) {
504
505 date = $('#date_envoi').val();
506
507 $('#form_val').attr(
508 'onsubmit',
509 $('#form_val').attr('onsubmit').replace(oldData,newData)
510 );
511 $('#button_val').attr(
512 'onclick',
513 $('#button_val').attr('onclick').replace(oldData,newData)
514 );
515 }
516
517 function changeDataLeftColumn(){
518
519 $('.list-sel-ser-them').empty();
520 $('.list-sel-ser-them').html(
521 '<div class=\"row\">' +
522 '<div class=\"cell1 liste_droite_title list-sel-ser-them-title\">Service a consulter</div>' +
523 '<div class=\"cell2 liste_droite_title list-sel-ser-them-title\">Version papier</div>' +
524 '</div>'
525 );
526
527 var listServ = new Array();
528 var data = '';
529
530 $('.liste_gauche_service_selected').each(
531 function(i) {
532
533 var id = $(this).attr('id');
534
535 if ( $.inArray(id.split('_')[1], listServ) != -1 )
536 return;
537
538 data += ';' + id.split('_')[1] + '_' + id.split('_')[2] ;
539 listServ[i] = id.split('_')[1];
540
541 $('.list-sel-ser-them').append(
542 '<div id=\'s' + i + '\' class=\'row liste_droite_service\'>'+
543 '<div class=\'cell1\'>'+
544 '<div class=\'' + $(this).attr('id') + '\' name=\'' + $(this).attr('id') + '\'>'+
545 $(this).html().split('<')[0]+
546 '</div>'+
547 '</div>' +
548 '<div class=\'cell2\'>'+
549 '<div>'+
550 '<input class=\'' + $(this).attr('id') + '\''+$(this).html().split('<input')[1]+
551 '</div>'+
552 '</div>'+
553 '</div>'
554 );
555
556 $(this).hide();
557
558 manageListServ('.list-ser-them div', id, 0);
559
560 }
561 );
562 changeActionVal(data);
563 }
564 </script>";
565 }
566 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26