/[openfoncier]/branches/3.14.x/app/consultation_multiple.php
ViewVC logotype

Annotation of /branches/3.14.x/app/consultation_multiple.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1515 - (hide annotations)
Tue Mar 19 18:53:12 2013 UTC (11 years, 10 months ago) by fmichon
Original Path: trunk/app/consultation_multiple.php
File size: 27300 byte(s)
Mise au carré des entêtes de fichier

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

Properties

Name Value
svn:keywords Id

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26