/[openfoncier]/branches/old-trunk/obj/demande_avis.class.php
ViewVC logotype

Contents of /branches/old-trunk/obj/demande_avis.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3728 - (show annotations)
Fri Mar 18 11:41:22 2016 UTC (8 years, 10 months ago) by mbroquet
File size: 25344 byte(s)
Prépare l'actualisation du trunk
1 <?php
2 //$Id: demande_avis.class.php 4418 2015-02-24 17:30:28Z tbenita $
3 //gen openMairie le 17/10/2012 18:01
4
5 require_once ("../obj/consultation.class.php");
6
7 class demande_avis extends consultation {
8
9 var $retourformulaire;
10
11 var $required_field=array(
12 "avis_consultation",
13 );
14
15 function __construct($id) {
16 parent::__construct($id, $this->db, null);
17 $this->setParameter("retourformulaire", "consultation");
18 }
19
20 /**
21 * Définition des actions disponibles sur la classe.
22 *
23 * @return void
24 */
25 function init_class_actions() {
26
27 $this->class_actions[3]["view"] = "view_synthese_demande_avis";
28 $this->class_actions[3]["condition"] = array("is_from_good_service");
29
30 // ACTION - 080 - consulter_pdf
31 // Pour qu'un cadre valide l'analyse
32 $this->class_actions[80] = array(
33 "identifier" => "consulter_pdf",
34 "portlet" => array(
35 "type" => "action-blank",
36 "libelle" => _("Edition"),
37 "order" => 50,
38 "class" => "pdf-16",
39 ),
40 "view" => "view_consulter_pdf",
41 "condition" => array("is_from_good_service"),
42 "permission_suffix" => "consulter",
43 );
44
45 // ACTION - 090 - rendre_avis
46 // Pour qu'un service rende l'avis
47 $this->class_actions[90] = array(
48 "identifier" => "rendre_avis",
49 "portlet" => array(
50 "type" => "action-self",
51 "libelle" => _("Rendre un avis"),
52 "order" => 40,
53 "class" => "edit-16",
54 ),
55 "view" => "formulaire",
56 "method" => "modifier",
57 "permission_suffix" => "modifier",
58 "condition" => array("is_consultation_retour_avis_service", "is_avis_encours"),
59 "button" => _("Modifier"),
60 );
61 }
62
63 /**
64 * Défini si l'utilisateur est de service interne.
65 *
66 * @return boolean true si correspond false sinon
67 */
68 function is_consultation_retour_avis_service() {
69
70 return $this->f->isAccredited("consultation_retour_avis_service");
71 }
72
73 /**
74 * VIEW - view_document_numerise.
75 *
76 * Vue du tableau des pièces du dossier d'autorisation.
77 *
78 * Cette vue permet de gérer le contenu de l'onglet "Pièce(s)" sur un
79 * dossier d'autorisation. Cette vue spécifique est nécessaire car
80 * l'ergonomie standard du framework ne prend pas en charge ce cas.
81 * C'est ici la vue spécifique des pièces liées au dossier qui est
82 * affichée directement au clic de l'onglet au lieu du soustab.
83 *
84 * L'idée est donc de simuler l'ergonomie standard en créant un container
85 * et d'appeler la méthode javascript 'ajaxit' pour charger le contenu
86 * de la vue visualisation de l'objet lié.
87 *
88 * @return void
89 */
90 function view_document_numerise() {
91 // Vérification de l'accessibilité sur l'élément
92 $this->checkAccessibility();
93 // Récupération des variables GET
94 ($this->f->get_submitted_get_value('idxformulaire')!==null ? $idxformulaire =
95 $this->f->get_submitted_get_value('idxformulaire') : $idxformulaire = "");
96 ($this->f->get_submitted_get_value('retourformulaire')!==null ? $retourformulaire =
97 $this->f->get_submitted_get_value('retourformulaire') : $retourformulaire = "");
98 // Objet à charger
99 $obj = "document_numerise";
100 // Construction de l'url de sousformulaire à appeler
101 $url = "../scr/sousform.php?obj=".$obj;
102 $url .= "&idx=".$idxformulaire;
103 $url .= "&action=4";
104 $url .= "&retourformulaire=".$retourformulaire;
105 $url .= "&idxformulaire=".$idxformulaire;
106 $url .= "&retour=form";
107 // Affichage du container permettant le reffraichissement du contenu
108 // dans le cas des action-direct.
109 printf('
110 <div id="sousform-href" data-href="%s">
111 </div>',
112 $url
113 );
114 // Affichage du container permettant de charger le retour de la requête
115 // ajax récupérant le sous formulaire.
116 printf('
117 <div id="sousform-%s">
118 </div>
119 <script>
120 ajaxIt(\'%s\', \'%s\');
121 </script>',
122 $obj,
123 $obj,
124 $url
125 );
126 }
127
128 function view_synthese_demande_avis() {
129 if(file_exists ("../sql/".OM_DB_PHPTYPE."/demande_avis.form.inc.php"))
130 include ("../sql/".OM_DB_PHPTYPE."/demande_avis.form.inc.php");
131 // Concatenation des champs pour constitution de la clause select
132 $listeChamp = implode(", ", $champs);
133
134 // Concatenation de la requete de selection
135 $sql = " select ".$listeChamp." from ".$tableSelect." ";
136 //
137 $sql .= "where consultation.consultation=".$this->getParameter("idx");
138
139 // Execution de la requete
140 $res = $this->f->db->limitquery($sql, 0, 1);
141 // Logger
142 $this->addToLog(__METHOD__."(): db->limitquery(\"".str_replace(",",", ",$sql)."\", 0, 1);", VERBOSE_MODE);
143 // Si une erreur survient
144 if (database::isError($res, true)) {
145 // Appel de la methode de recuperation des erreurs
146 $this->erreur_db($res->getDebugInfo(), $res->getMessage(), $tableSelect);
147 return false;
148 } else {
149 $info = $res->tableInfo();
150 // Initialisation de la cle a 0
151 $i = 0;
152 // Recuperation du nom de chaque champ dans l'attribut 'champs'
153 foreach ($info as $elem) {
154 $this->champs[$i++] = $elem['name'];
155 }
156 // Recuperation de l'enregistrement resultat de la requete
157 while ($row =& $res->fetchRow()) {
158 // Initialisation de la cle a 0
159 $i = 0;
160 // Recuperation de la valeur de chaque champ dans l'attribut 'val'
161 foreach ($row as $elem) {
162 $this->val[$i++] = $elem;
163 }
164 }
165
166 $this->formulaire();
167 }
168 }
169
170 function is_from_good_service() {
171 // Si l'utilisateur est un utilisateur de service externe
172 // on vérifie qu'il peut accéder à la consultation
173 if ($this->f->isUserService()) {
174 // On compare l'id du service de la consultation
175 // aux id des services de utilisateur connecté
176 foreach($this->f->om_utilisateur['service'] as $service) {
177
178 if($this->val[array_search("service",$this->champs)]===$service['service']) {
179
180 return true;
181 }
182 }
183 //
184 $this->f->addToLog("is_from_good_service(): utilisateur de service sur une consultation d'un autre service", EXTRA_VERBOSE_MODE);
185 }
186 return false;
187 }
188
189 function is_avis_encours() {
190 if($this->getVal('avis_consultation') != '') {
191 return false;
192 }
193 return true;
194 }
195
196 //==========================
197 // Formulaire [form]
198 //==========================
199
200 function setType(&$form, $maj) {
201 parent::setType($form, $maj);
202
203 if($this->getParameter("maj") == 3) {
204 $form->setType('consultation', 'hidden');
205 $form->setType('service', 'hidden');
206 $form->setType('dossier', 'hidden');
207 $form->setType('autorite_competente', 'selectstatic');
208 $form->setType('date_depot', 'datestatic');
209 $form->setType('date_envoi', 'datestatic');
210 $form->setType('date_limite', 'datestatic');
211 $form->setType('zonages', 'datestatic');
212 $form->setType('commune_quartier', 'hidden');
213 $form->setType('autres_dispo', 'hidden');
214 $form->setType('travaux', 'hidden');
215 $form->setType('shon_total', 'hidden');
216 $form->setType('terrain_surface', 'hidden');
217 $form->setType('cu_operation', 'hidden');
218 $form->setType('avis_consultation', 'hidden');
219 }
220 }
221
222 function setLib(&$form, $maj) {
223 parent::setLib($form, $maj);
224
225 if($this->getParameter("maj") == 3) {
226 //libelle des champs
227 $form->setLib('consultation', _('consultation'));
228 $form->setLib('dossier', _('dossier'));
229 $form->setLib('date_retour', _('date_retour'));
230 $form->setLib('service', _('service'));
231 $form->setLib('avis_consultation', _('avis_consultation'));
232 $form->setLib('date_reception', _('date_reception'));
233 $form->setLib('motivation', _('motivation'));
234 $form->setLib('fichier', _('fichier'));
235 $form->setLib('lu', _('lu'));
236 $form->setLib('dossier_libelle', _('dossier_libelle'));
237 $form->setLib('responsable', _('responsable'));
238 $form->setLib('etat', _('etat'));
239 $form->setLib('division', _('division'));
240 $form->setLib('instructeur', _('instructeur'));
241 $form->setLib('date_depot', _('date_depot'));
242 $form->setLib('date_dernier_depot', _('date_dernier_depot'));
243 $form->setLib('dossier_date_limite', _("date limite d'instruction"));
244 $form->setLib('autorite_competente', _('autorite_competente'));
245 $form->setLib('petitionnaire', _('demandeur'));
246 $form->setLib('adresse_petitionnaire', _('adresse_demandeur'));
247 $form->setLib('parcelle', _('parcelle'));
248 $form->setLib('terrain', _('terrain'));
249 $form->setLib('geom', _('geolocalisaion'));
250 $form->setLib('date_envoi', _('date_envoi'));
251 $form->setLib('delai', _('delai de reponse'));
252 $form->setLib('date_limite', _('date limite de reponse'));
253 $form->setLib('description_projet', _('description_projet'));
254 $form->setLib('surface_total_projet', _('surface_total_projet'));
255 $form->setLib('surface', _('surface creee par destination'));
256 $form->setLib('nombre_logement_crees_collectif', _('nombre_logement_crees_collectif'));
257 $form->setLib('nombre_logement_crees_individuel', _('nombre_logement_crees_individuel'));
258 $form->setLib('nombre_places_parking', _('nombre_places_parking'));
259 }
260 }
261
262 function setSelect(&$form, $maj, &$db, $debug) {
263 parent::setSelect($form, $maj, $db, $debug);
264
265 if($this->getParameter("maj") == 3) {
266 if(file_exists ("../sql/".OM_DB_PHPTYPE."/demande_avis.form.inc.php"))
267 include ("../sql/".OM_DB_PHPTYPE."/demande_avis.form.inc.php");
268
269 // avis_consultation
270 $this->init_select($form, $db, $maj, $debug, "avis_consultation",
271 $sql_avis_consultation, $sql_avis_consultation_by_id, true);
272
273 // dossier
274 $this->init_select($form, $db, $maj, $debug, "dossier",
275 $sql_dossier, $sql_dossier_by_id, false);
276
277 // service
278 $this->init_select($form, $db, $maj, $debug, "service",
279 $sql_service, $sql_service_by_id, true);
280 // autorite_competente
281 $this->init_select($form, $db, $maj, $debug, "autorite_competente",
282 $sql_autorite_competente, $sql_autorite_competente_by_id, false);
283 }
284 }// fin select
285
286 /**
287 * Permet de définir les valeurs des champs.
288 * @param object &$form Instance om_formulaire
289 * @param integer $maj Mode du formulaire
290 * @param integer $validation État de la validation du formulaire
291 */
292 function setVal(&$form,$maj,$validation) {
293 parent::setVal($form, $maj, $validation);
294
295 if($this->getParameter("maj") == 3) {
296 //
297 if($this->getVal('geom') != ""
298 && $this->f->getParameter('option_sig') == 'sig_externe'
299 && $this->f->issetSIGParameter() === true) {
300 $form->setVal('geom',
301 "<a id='action-form-localiser'".
302 " target='_SIG' href='../app/redirect_plan_sig.php?idx=".$this->getVal("dossier")."'>".
303 "<span class='om-icon om-icon-16 om-icon-fix sig-16' title='Localiser'>Localiser</span> ".
304 $this->getVal('geom').
305 " </a>");
306 }
307 }
308 }
309
310 /**
311 * Mise en page du formulaire
312 * @param om_formulaire $form
313 * @param integer $maj
314 */
315 function setLayout(&$form, $maj){
316 parent::setLayout($form, $maj);
317
318 if($this->getParameter("maj") == 3) {
319 // Fieldset 'Informations generales'
320 $form->setFieldset('dossier', 'D', _('Informations generales'));
321
322 // Fieldset 'Dossier'
323 $form->setFieldset('dossier_libelle', 'D', _('Dossier'));
324
325 // 1ere ligne
326 $form->setBloc('dossier_libelle', 'D', '', 'col_12');
327 // 1ere colonne
328 $form->setBloc('dossier_libelle', 'D', '', 'col_5');
329 $form->setBloc('etat', 'F');
330 // 2eme colonne
331 $form->setBloc('division', 'D', '', 'col_7');
332 $form->setBloc('instructeur', 'F');
333 $form->setBloc('instructeur', 'F');
334
335 // 2eme ligne
336 $form->setBloc('date_depot', 'D', '', 'col_12');
337 $form->setBloc('date_depot', 'D');
338 $form->setBloc('date_depot', 'D', '', 'col_4');
339 $form->setBloc('date_depot', 'F');
340
341 $form->setBloc('date_dernier_depot', 'D', '', 'col_4');
342 $form->setBloc('date_dernier_depot', 'F');
343
344 $form->setBloc('dossier_date_limite', 'D', '', 'col_4');
345 $form->setBloc('dossier_date_limite', 'F');
346
347 $form->setBloc('dossier_date_limite', 'F');
348 $form->setBloc('dossier_date_limite', 'F');
349
350 // 3eme ligne
351 $form->setBloc('autorite_competente', 'DF', '', 'col_12');
352
353 // 4eme ligne
354 $form->setBloc('petitionnaire', 'D', '', 'col_12');
355 $form->setBloc('geom', 'F');
356
357 // Fermeture fieldset 'Dossier'
358 $form->setFieldset('geom', 'F', '');
359
360 // Fieldset 'Demande d'avis'
361 $form->setFieldset('date_envoi', 'D', _("Demande d'avis"));
362
363 // 1ere ligne
364 $form->setBloc('date_envoi', 'D', '', 'col_12');
365 $form->setBloc('date_envoi', 'D', '', 'col_4');
366 $form->setBloc('date_envoi', 'F');
367 $form->setBloc('delai', 'D', '', 'col_4');
368 $form->setBloc('delai', 'F');
369 $form->setBloc('date_limite', 'D', '', 'col_4');
370 $form->setBloc('date_limite', 'F');
371 $form->setBloc('date_limite', 'F');
372
373 // Fermeture fieldset 'Demande d'avis'
374 $form->setFieldset('date_limite', 'F', '');
375
376 // Fermeture fieldset 'Informations generales'
377 $form->setFieldset('date_limite', 'F', '');
378
379 // Fieldset 'Principales caracteristiques du projet'
380 $form->setFieldset('description_projet', 'D', _('Principales caracteristiques du projet'));
381 $form->setBloc('description_projet', 'D', '', 'col_12');
382 $form->setBloc('nombre_places_parking', 'F');
383 // Fermeture fieldset 'Principales caracteristiques du projet'
384 $form->setFieldset('nombre_places_parking', 'F');
385 }
386 }
387
388 /**
389 * Récupère la liste des contraintes d'un dossier.
390 * @param string $dossier Identifiant du dossier
391 *
392 * @return object Résultat de la requête
393 */
394 function getListContrainte($dossier) {
395
396 // Construction de la requête SQL
397 $select = "SELECT dossier_contrainte.dossier_contrainte as dossier_contrainte_id,
398 dossier_contrainte.texte_complete as dossier_contrainte_texte,
399 dossier_contrainte.reference as dossier_contrainte_reference,
400 contrainte.libelle as contrainte_libelle,
401 contrainte.nature as contrainte_nature,
402 contrainte.texte as contrainte_texte,
403 contrainte.reference as contrainte_reference,
404 lower(contrainte.groupe) as contrainte_groupe,
405 lower(contrainte.sousgroupe) as contrainte_sousgroupe ";
406
407 $from = " FROM ".DB_PREFIXE."contrainte
408 LEFT JOIN ".DB_PREFIXE."dossier_contrainte
409 ON dossier_contrainte.contrainte = contrainte.contrainte ";
410
411 // Filtrage sur les contraintes présentées aux services consultés
412 $where = " WHERE contrainte.service_consulte = 't'
413 AND dossier_contrainte.dossier = '".$dossier."' ";
414
415 // Si le paramètre "option_contrainte_di" est définit
416 if ($this->f->getParameter('option_contrainte_di') != 'aucun') {
417 // Ajoute la condition
418 $where .= $this->f->traitement_condition_contrainte(
419 $this->f->getParameter('option_contrainte_di'));
420 }
421
422 $tri = " ORDER BY contrainte_groupe DESC, contrainte_sousgroupe,
423 contrainte.no_ordre, contrainte.libelle ";
424
425 $sql = $select.$from.$where.$tri;
426
427 // Exécution de la requête SQL
428 $res = $this->f->db->query($sql);
429 $this->f->addToLog("listContrainte(): db->query(\"".$sql."\");", VERBOSE_MODE);
430 $this->f->isDatabaseError($res);
431
432 // Retourne le résultat
433 return $res;
434 }
435
436 /**
437 * Ajout de la liste des contraintes présentées aux services consultés
438 */
439 function formSpecificContent($maj) {
440
441 $listContrainte = $this->getListContrainte($this->getVal('dossier'));
442
443 // Si le dossier possède des contraintes
444 if ($listContrainte->numRows() != 0) {
445
446 // Affiche du fieldset
447 printf("<div id=\"liste_contrainte\" class=\"demande_hidden_bloc\">");
448 printf("<fieldset class=\"cadre ui-corner-all ui-widget-content col_12 startClosed\">");
449 printf(" <legend class=\"ui-corner-all ui-widget-content ui-state-active\"
450 id =\"fieldset_contraintes_liees\">"
451 ._('Caracteristiques principales du reglement en vigueur')."</legend>");
452 printf("<div class=\"fieldsetContent\" style=\"display: none;\">");
453
454 // Entête pour le groupe
455 $groupeHeader = "
456 <div class='dossier_contrainte_groupe'>
457 <div class='dossier_contrainte_groupe_header'>
458 <span class='name'>
459 %s
460 </span>
461 </div>
462 ";
463
464 // Entête pour le sous-groupe
465 $sousgroupeHeader = "
466 <div class='dossier_contrainte_sousgroupe'>
467 <div class='dossier_contrainte_sousgroupe_header'>
468 <span class='name'>
469 %s
470 </span>
471 </div>
472 ";
473
474 // Titres des colonnes
475 $tableHeader = "
476 <thead>
477 <tr class='ui-tabs-nav ui-accordion ui-state-default tab-title'>
478 <th class='title col-0 firstcol contrainte_th_texte_complete'>
479 <span class='name'>
480 "._('texte_complete')."
481 </span>
482 </th>
483 <th class='title col-1 contrainte_th_reference'>
484 <span class='name'>
485 "._('reference')."
486 </span>
487 </th>
488 <th class='title col-2 contrainte_th_nature'>
489 <span class='name'>
490 "._('nature')."
491 </span>
492 </th>
493 </tr>
494 </thead>
495 ";
496
497 // Ligne de données
498 $line = "
499 <tr class='tab-data %s'>
500 <td class='col-0 firstcol contrainte_th_texte_complete'>
501 %s
502 </td>
503 <td class='col-1 contrainte_th_reference'>
504 %s
505 </td>
506 <td class='col-2 contrainte_th_nature'>
507 %s
508 </td>
509 ";
510
511 // Sauvegarde des données pour les comparer
512 $lastRow = array();
513 $lastRow['contrainte_groupe'] = 'empty';
514 $lastRow['contrainte_sousgroupe'] = 'empty';
515
516 // Tant qu'il y a des résultats
517 while($row = &$listContrainte->fetchRow(DB_FETCHMODE_ASSOC)) {
518 // Si l'identifiant du groupe de la contrainte présente et
519 // celle d'avant est différent
520 if ($row['contrainte_groupe'] != $lastRow['contrainte_groupe']) {
521
522 // Si l'identifiant du groupe d'avant est vide
523 if ($lastRow['contrainte_groupe'] != 'empty') {
524 // Ferme le tableau
525 printf("</table>");
526 // Ferme le div
527 printf("</div>");
528 // Ferme le div
529 printf("</div>");
530 }
531
532 // Affiche le header du groupe
533 printf($groupeHeader, $row['contrainte_groupe']);
534 }
535
536 // Si l'identifiant du sous-groupe de la contrainte présente et
537 // celle d'avant est différent
538 // Ou qu'ils soient identique mais n'appartiennent pas au même groupe
539 if ($row['contrainte_sousgroupe'] != $lastRow['contrainte_sousgroupe']
540 || ($row['contrainte_sousgroupe'] == $lastRow['contrainte_sousgroupe']
541 && $row['contrainte_groupe'] != $lastRow['contrainte_groupe'])) {
542
543 //
544 if($row['contrainte_groupe'] == $lastRow['contrainte_groupe']) {
545 // Si l'identifiant de la sous-groupe d'avant est vide
546 if ($lastRow['contrainte_sousgroupe'] != 'empty') {
547 // Ferme le tableau
548 printf("</table>");
549 // Ferme le div
550 printf("</div>");
551 }
552 }
553
554 // Affiche le header du sous-groupe
555 printf($sousgroupeHeader, $row['contrainte_sousgroupe']);
556
557 // Ouvre le tableau
558 printf("<table id='sousgroupe_".$row['contrainte_sousgroupe']."' class='tab-tab dossier_contrainte_view'>");
559
560 // Affiche le header des données
561 printf($tableHeader);
562
563 // Définis le style des lignes
564 $style = 'odd';
565 }
566
567 // Si toujours dans la même groupe et même sous-groupe,
568 // on change le style de la ligne
569 if ($row['contrainte_groupe'] == $lastRow['contrainte_groupe']
570 && $row['contrainte_sousgroupe'] == $lastRow['contrainte_sousgroupe']) {
571 // Définis le style
572 $style = ($style=='even')?'odd':'even';
573 }
574
575 // Affiche "Oui" ou "Non" pour le bouléen
576 if ($row['dossier_contrainte_reference'] == 1
577 || $row['dossier_contrainte_reference'] == "t"
578 || $row['dossier_contrainte_reference'] == "Oui") {
579 //
580 $contrainte_reference = "Oui";
581 } else {
582 //
583 $contrainte_reference = "Non";
584 }
585
586 // Affiche les données
587 printf($line, $style,
588 $row['dossier_contrainte_texte'],
589 $contrainte_reference,
590 $row['contrainte_nature']
591 );
592
593 // Sauvegarde les données
594 $lastRow['contrainte_groupe'] = $row['contrainte_groupe'];
595 $lastRow['contrainte_sousgroupe'] = $row['contrainte_sousgroupe'];
596
597 }
598 // Ferme le tableau
599 printf("</table>");
600 // Ferme le sous-groupe
601 printf("</div>");
602 // Ferme le groupe
603 printf("</div>");
604
605 printf("</div>");
606
607 printf("<div class=\"visualClear\"></div>");
608 // Ferme le fieldset content
609 printf("</div>");
610 printf("</fieldset>");
611 }
612 }
613 }// fin classe
614 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26