/[openfoncier]/trunk/obj/dossier_autorisation.class.php
ViewVC logotype

Contents of /trunk/obj/dossier_autorisation.class.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4678 - (show annotations)
Thu Jun 30 11:23:04 2016 UTC (8 years, 7 months ago) by softime
File size: 126671 byte(s)
* Correction des valeurs retournées pour les shon 10 à 20 du champ de
  fusion du tableau des surfaces.
* Le second tableau des surfaces est maintenant pris en compte pour
  mention aux surfaces dans l'application.
1 <?php
2 //$Id: dossier_autorisation.class.php 6139 2016-03-09 10:59:18Z stimezouaght $
3 //gen openMairie le 14/11/2012 12:54
4
5 require_once ("../gen/obj/dossier_autorisation.class.php");
6
7 class dossier_autorisation extends dossier_autorisation_gen {
8
9
10 var $valIdDemandeur = array("petitionnaire_principal" => "",
11 "delegataire" => "",
12 "petitionnaire" => array());
13
14 /** @var boolean Les nouvelles actions sont activées sur cet objet */
15 var $activate_class_action;
16
17 function dossier_autorisation($id,&$db,$debug) {
18 //On active les nouvelles actions
19 $this->activate_class_action = true;
20 //
21 $this->constructeur($id,$db,$debug);
22 }// fin constructeur
23
24 /**
25 * Définition des actions disponibles sur la classe.
26 *
27 * @return void
28 */
29 function init_class_actions() {
30
31 parent::init_class_actions();
32
33 // ACTION - 003 - view_consulter
34 // Interface spécifique du formulaire de consultation
35 $this->class_actions[3] = array(
36 "identifier" => "view_consulter",
37 "view" => "view_consulter",
38 "permission_suffix" => "consulter",
39 );
40
41 // ACTION - 004 - view_document_numerise
42 // Interface spécifique du tableau des pièces
43 $this->class_actions[4] = array(
44 "identifier" => "view_document_numerise",
45 "view" => "view_document_numerise",
46 "permission_suffix" => "document_numerise",
47 );
48 }
49
50 /**
51 * VIEW - view_document_numerise.
52 *
53 * Vue du tableau des pièces du dossier d'autorisation.
54 *
55 * Cette vue permet de gérer le contenu de l'onglet "Pièce(s)" sur un
56 * dossier d'autorisation. Cette vue spécifique est nécessaire car
57 * l'ergonomie standard du framework ne prend pas en charge ce cas.
58 * C'est ici la vue spécifique des pièces liées au dossier qui est
59 * affichée directement au clic de l'onglet au lieu du soustab.
60 *
61 * L'idée est donc de simuler l'ergonomie standard en créant un container
62 * et d'appeler la méthode javascript 'ajaxit' pour charger le contenu
63 * de la vue visualisation de l'objet lié.
64 *
65 * @return void
66 */
67 function view_document_numerise() {
68 // Vérification de l'accessibilité sur l'élément
69 $this->checkAccessibility();
70 // Récupération des variables GET
71 ($this->f->get_submitted_get_value('idxformulaire')!==null ? $idxformulaire =
72 $this->f->get_submitted_get_value('idxformulaire') : $idxformulaire = "");
73 ($this->f->get_submitted_get_value('retourformulaire')!==null ? $retourformulaire =
74 $this->f->get_submitted_get_value('retourformulaire') : $retourformulaire = "");
75 // Objet à charger
76 $obj = "document_numerise";
77 // Construction de l'url de sousformulaire à appeler
78 $url = "../scr/sousform.php?obj=".$obj;
79 $url .= "&idx=".$idxformulaire;
80 $url .= "&action=4";
81 $url .= "&retourformulaire=".$retourformulaire;
82 $url .= "&idxformulaire=".$idxformulaire;
83 $url .= "&retour=form";
84 // Affichage du container permettant le reffraichissement du contenu
85 // dans le cas des action-direct.
86 printf('
87 <div id="sousform-href" data-href="%s">
88 </div>',
89 $url
90 );
91 // Affichage du container permettant de charger le retour de la requête
92 // ajax récupérant le sous formulaire.
93 printf('
94 <div id="sousform-%s">
95 </div>
96 <script>
97 ajaxIt(\'%s\', \'%s\');
98 </script>',
99 $obj,
100 $obj,
101 $url
102 );
103 }
104
105
106 /**
107 * Affiche la fiche du dossier d'autorisation passé en paramètre.
108 *
109 * @param string $idx Identifiant du DA.
110 * @param mixed $bouton_retour Affiche ou non le bouton retour.
111 * @param boolean $display_cerfa Affiche ou non l'overlay sur le CERFA.
112 *
113 * @return void
114 */
115 protected function display_dossier_autorisation_data($idx, $bouton_retour, $display_cerfa = true) {
116 //Récupération des données
117 //Données du dossier d'autorisation
118 $sqlDonneesDA = "SELECT dossier_autorisation_libelle,
119 CASE WHEN etat_dernier_dossier_instruction_accepte IS NULL
120 THEN eda.libelle
121 ELSE edda.libelle
122 END as etat,
123 CASE WHEN demandeur.qualite='particulier' THEN
124 TRIM(CONCAT(civilite.code, ' ', demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
125 ELSE
126 TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
127 END as \"demandeur\",
128 CONCAT(
129 CASE WHEN terrain_references_cadastrales IS NULL THEN
130 ''
131 ELSE
132 TRIM(CONCAT(replace(terrain_references_cadastrales,';',' '), '<br/>')) END,
133 CASE WHEN terrain_adresse_voie_numero IS NULL AND
134 terrain_adresse_voie IS NULL THEN
135 ''
136 ELSE
137 TRIM(CONCAT(terrain_adresse_voie_numero, ' ', terrain_adresse_voie, '<br/>')) END,
138 CASE WHEN terrain_adresse_code_postal IS NULL AND
139 terrain_adresse_localite IS NULL THEN
140 ''
141 ELSE
142 TRIM(CONCAT(terrain_adresse_code_postal, ' ', terrain_adresse_localite, '<br/>')) END
143 ) as \"infos_localisation_terrain\",
144 to_char(depot_initial ,'DD/MM/YYYY') as \"depot_initial\",
145 to_char(date_decision ,'DD/MM/YYYY') as \"date_decision\",
146 to_char(date_validite ,'DD/MM/YYYY') as \"date_validite\",
147 to_char(date_chantier ,'DD/MM/YYYY') as \"date_chantier\",
148 to_char(date_achevement ,'DD/MM/YYYY') as \"date_achevement\",
149 dossier_autorisation_type_detaille.libelle as \"type_detaille\"
150 FROM
151 ".DB_PREFIXE."dossier_autorisation
152 LEFT JOIN
153 ".DB_PREFIXE."etat_dossier_autorisation as eda
154 ON
155 dossier_autorisation.etat_dossier_autorisation = eda.etat_dossier_autorisation
156 LEFT JOIN
157 ".DB_PREFIXE."etat_dossier_autorisation as edda
158 ON
159 dossier_autorisation.etat_dernier_dossier_instruction_accepte = edda.etat_dossier_autorisation
160 LEFT JOIN
161 ".DB_PREFIXE."lien_dossier_autorisation_demandeur
162 ON
163 dossier_autorisation.dossier_autorisation = lien_dossier_autorisation_demandeur.dossier_autorisation
164 LEFT JOIN
165 ".DB_PREFIXE."demandeur
166 ON
167 lien_dossier_autorisation_demandeur.demandeur = demandeur.demandeur AND
168 lien_dossier_autorisation_demandeur.petitionnaire_principal IS TRUE
169 LEFT JOIN
170 ".DB_PREFIXE."civilite
171 ON
172 civilite.civilite = demandeur.particulier_civilite OR civilite.civilite = demandeur.personne_morale_civilite
173 LEFT JOIN
174 ".DB_PREFIXE."dossier_autorisation_type_detaille
175 ON
176 dossier_autorisation_type_detaille.dossier_autorisation_type_detaille
177 = dossier_autorisation.dossier_autorisation_type_detaille
178 WHERE
179 dossier_autorisation.dossier_autorisation = '".$idx."'";
180 $resDonneesDA = $this->f->db->query($sqlDonneesDA);
181 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDonneesDA."\")", VERBOSE_MODE);
182 $this->f->isDatabaseError($resDonneesDA);
183 $rowDonneesDA = &$resDonneesDA->fetchRow(DB_FETCHMODE_ASSOC);
184
185 // Date du DAACT et DOC
186 $sqlDonneesDateDossiersDA = "SELECT
187 dossier_instruction_type.code as \"code\",
188 to_char(dossier.date_depot ,'DD/MM/YYYY') as \"date_depot\"
189 FROM ".DB_PREFIXE."dossier
190 LEFT JOIN
191 ".DB_PREFIXE."dossier_instruction_type
192 ON
193 dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
194 WHERE
195 dossier.dossier_autorisation='".$idx."' AND
196 (
197 dossier_instruction_type.code='DAACT' OR
198 dossier_instruction_type.code='DOC'
199 )
200 ORDER BY code desc;";
201 $resDonneesDateDossiersDA = $this->f->db->query($sqlDonneesDateDossiersDA);
202 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDonneesDateDossiersDA."\")", VERBOSE_MODE);
203 $this->f->isDatabaseError($resDonneesDateDossiersDA);
204
205 //Récupération des données principales des données techniques rattachées au DA
206 $sqlPrincDonneesTechniques = "SELECT
207 donnees_techniques as \"donnees_techniques\" ,
208 CONCAT_WS(
209 '<br/>',
210 CASE WHEN co_projet_desc = '' THEN
211 NULL
212 ELSE
213 TRIM(co_projet_desc)
214 END,
215 CASE WHEN ope_proj_desc = '' THEN
216 NULL
217 ELSE
218 TRIM(ope_proj_desc)
219 END,
220 CASE WHEN am_projet_desc = '' THEN
221 NULL
222 ELSE
223 TRIM(am_projet_desc)
224 END,
225 CASE WHEN dm_projet_desc = '' THEN
226 NULL
227 ELSE
228 TRIM(dm_projet_desc)
229 END
230 ) as \"description_projet\",
231 -- Si une valeur est saisie dans la deuxième version du tableau des
232 -- surfaces alors on récupère seulement ses valeurs
233 CASE WHEN su2_avt_shon1 IS NOT NULL
234 OR su2_avt_shon2 IS NOT NULL
235 OR su2_avt_shon3 IS NOT NULL
236 OR su2_avt_shon4 IS NOT NULL
237 OR su2_avt_shon5 IS NOT NULL
238 OR su2_avt_shon6 IS NOT NULL
239 OR su2_avt_shon7 IS NOT NULL
240 OR su2_avt_shon8 IS NOT NULL
241 OR su2_avt_shon9 IS NOT NULL
242 OR su2_avt_shon10 IS NOT NULL
243 OR su2_avt_shon11 IS NOT NULL
244 OR su2_avt_shon12 IS NOT NULL
245 OR su2_avt_shon13 IS NOT NULL
246 OR su2_avt_shon14 IS NOT NULL
247 OR su2_avt_shon15 IS NOT NULL
248 OR su2_avt_shon16 IS NOT NULL
249 OR su2_avt_shon17 IS NOT NULL
250 OR su2_avt_shon18 IS NOT NULL
251 OR su2_avt_shon19 IS NOT NULL
252 OR su2_avt_shon20 IS NOT NULL
253 OR su2_cstr_shon1 IS NOT NULL
254 OR su2_cstr_shon2 IS NOT NULL
255 OR su2_cstr_shon3 IS NOT NULL
256 OR su2_cstr_shon4 IS NOT NULL
257 OR su2_cstr_shon5 IS NOT NULL
258 OR su2_cstr_shon6 IS NOT NULL
259 OR su2_cstr_shon7 IS NOT NULL
260 OR su2_cstr_shon8 IS NOT NULL
261 OR su2_cstr_shon9 IS NOT NULL
262 OR su2_cstr_shon10 IS NOT NULL
263 OR su2_cstr_shon11 IS NOT NULL
264 OR su2_cstr_shon12 IS NOT NULL
265 OR su2_cstr_shon13 IS NOT NULL
266 OR su2_cstr_shon14 IS NOT NULL
267 OR su2_cstr_shon15 IS NOT NULL
268 OR su2_cstr_shon16 IS NOT NULL
269 OR su2_cstr_shon17 IS NOT NULL
270 OR su2_cstr_shon18 IS NOT NULL
271 OR su2_cstr_shon19 IS NOT NULL
272 OR su2_cstr_shon20 IS NOT NULL
273 OR su2_chge_shon1 IS NOT NULL
274 OR su2_chge_shon2 IS NOT NULL
275 OR su2_chge_shon3 IS NOT NULL
276 OR su2_chge_shon4 IS NOT NULL
277 OR su2_chge_shon5 IS NOT NULL
278 OR su2_chge_shon6 IS NOT NULL
279 OR su2_chge_shon7 IS NOT NULL
280 OR su2_chge_shon8 IS NOT NULL
281 OR su2_chge_shon9 IS NOT NULL
282 OR su2_chge_shon10 IS NOT NULL
283 OR su2_chge_shon11 IS NOT NULL
284 OR su2_chge_shon12 IS NOT NULL
285 OR su2_chge_shon13 IS NOT NULL
286 OR su2_chge_shon14 IS NOT NULL
287 OR su2_chge_shon15 IS NOT NULL
288 OR su2_chge_shon16 IS NOT NULL
289 OR su2_chge_shon17 IS NOT NULL
290 OR su2_chge_shon18 IS NOT NULL
291 OR su2_chge_shon19 IS NOT NULL
292 OR su2_chge_shon20 IS NOT NULL
293 OR su2_demo_shon1 IS NOT NULL
294 OR su2_demo_shon2 IS NOT NULL
295 OR su2_demo_shon3 IS NOT NULL
296 OR su2_demo_shon4 IS NOT NULL
297 OR su2_demo_shon5 IS NOT NULL
298 OR su2_demo_shon6 IS NOT NULL
299 OR su2_demo_shon7 IS NOT NULL
300 OR su2_demo_shon8 IS NOT NULL
301 OR su2_demo_shon9 IS NOT NULL
302 OR su2_demo_shon10 IS NOT NULL
303 OR su2_demo_shon11 IS NOT NULL
304 OR su2_demo_shon12 IS NOT NULL
305 OR su2_demo_shon13 IS NOT NULL
306 OR su2_demo_shon14 IS NOT NULL
307 OR su2_demo_shon15 IS NOT NULL
308 OR su2_demo_shon16 IS NOT NULL
309 OR su2_demo_shon17 IS NOT NULL
310 OR su2_demo_shon18 IS NOT NULL
311 OR su2_demo_shon19 IS NOT NULL
312 OR su2_demo_shon20 IS NOT NULL
313 OR su2_sup_shon1 IS NOT NULL
314 OR su2_sup_shon2 IS NOT NULL
315 OR su2_sup_shon3 IS NOT NULL
316 OR su2_sup_shon4 IS NOT NULL
317 OR su2_sup_shon5 IS NOT NULL
318 OR su2_sup_shon6 IS NOT NULL
319 OR su2_sup_shon7 IS NOT NULL
320 OR su2_sup_shon8 IS NOT NULL
321 OR su2_sup_shon9 IS NOT NULL
322 OR su2_sup_shon10 IS NOT NULL
323 OR su2_sup_shon11 IS NOT NULL
324 OR su2_sup_shon12 IS NOT NULL
325 OR su2_sup_shon13 IS NOT NULL
326 OR su2_sup_shon14 IS NOT NULL
327 OR su2_sup_shon15 IS NOT NULL
328 OR su2_sup_shon16 IS NOT NULL
329 OR su2_sup_shon17 IS NOT NULL
330 OR su2_sup_shon18 IS NOT NULL
331 OR su2_sup_shon19 IS NOT NULL
332 OR su2_sup_shon20 IS NOT NULL
333 THEN
334 REGEXP_REPLACE(CONCAT(
335 CASE WHEN donnees_techniques.su2_cstr_shon1 IS NULL
336 THEN ''
337 ELSE CONCAT ('Exploitation agricole - ', donnees_techniques.su2_cstr_shon1, ' m² <br/>')
338 END,
339 CASE WHEN donnees_techniques.su2_cstr_shon2 IS NULL
340 THEN ''
341 ELSE CONCAT ('Exploitation forestière - ', donnees_techniques.su2_cstr_shon2, ' m² <br/>')
342 END,
343 CASE WHEN donnees_techniques.su2_cstr_shon3 IS NULL
344 THEN ''
345 ELSE CONCAT ('Logement - ', donnees_techniques.su2_cstr_shon3, ' m² <br/>')
346 END,
347 CASE WHEN donnees_techniques.su2_cstr_shon4 IS NULL
348 THEN ''
349 ELSE CONCAT ('Hébergement - ', donnees_techniques.su2_cstr_shon4, ' m² <br/>')
350 END,
351 CASE WHEN donnees_techniques.su2_cstr_shon5 IS NULL
352 THEN ''
353 ELSE CONCAT ('Artisanat et commerce de détail - ', donnees_techniques.su2_cstr_shon5, ' m² <br/>')
354 END,
355 CASE WHEN donnees_techniques.su2_cstr_shon6 IS NULL
356 THEN ''
357 ELSE CONCAT ('Restauration - ', donnees_techniques.su2_cstr_shon6, ' m² <br/>')
358 END,
359 CASE WHEN donnees_techniques.su2_cstr_shon7 IS NULL
360 THEN ''
361 ELSE CONCAT ('Commerce de gros - ', donnees_techniques.su2_cstr_shon7, ' m² <br/>')
362 END,
363 CASE WHEN donnees_techniques.su2_cstr_shon8 IS NULL
364 THEN ''
365 ELSE CONCAT ('Activités de services où s''effectue l''accueil d''une clientèle - ', donnees_techniques.su2_cstr_shon8, ' m² <br/>')
366 END,
367 CASE WHEN donnees_techniques.su2_cstr_shon9 IS NULL
368 THEN ''
369 ELSE CONCAT ('Hébergement hôtelier et touristique - ', donnees_techniques.su2_cstr_shon9, ' m² <br/>')
370 END,
371 CASE WHEN donnees_techniques.su2_cstr_shon10 IS NULL
372 THEN ''
373 ELSE CONCAT ('Cinéma - ', donnees_techniques.su2_cstr_shon10, ' m² <br/>')
374 END,
375 CASE WHEN donnees_techniques.su2_cstr_shon11 IS NULL
376 THEN ''
377 ELSE CONCAT ('Locaux et bureaux accueillant du public des administrations publiques et assimilés - ', donnees_techniques.su2_cstr_shon11, ' m² <br/>')
378 END,
379 CASE WHEN donnees_techniques.su2_cstr_shon12 IS NULL
380 THEN ''
381 ELSE CONCAT ('Locaux techniques et industriels des administrations publiques et assimilés - ', donnees_techniques.su2_cstr_shon12, ' m² <br/>')
382 END,
383 CASE WHEN donnees_techniques.su2_cstr_shon13 IS NULL
384 THEN ''
385 ELSE CONCAT ('Établissements d''enseignement, de santé et d''action sociale - ', donnees_techniques.su2_cstr_shon13, ' m² <br/>')
386 END,
387 CASE WHEN donnees_techniques.su2_cstr_shon14 IS NULL
388 THEN ''
389 ELSE CONCAT ('Salles d''art et de spectacles - ', donnees_techniques.su2_cstr_shon14, ' m² <br/>')
390 END,
391 CASE WHEN donnees_techniques.su2_cstr_shon15 IS NULL
392 THEN ''
393 ELSE CONCAT ('Équipements sportifs - ', donnees_techniques.su2_cstr_shon15, ' m² <br/>')
394 END,
395 CASE WHEN donnees_techniques.su2_cstr_shon16 IS NULL
396 THEN ''
397 ELSE CONCAT ('Autres équipements recevant du public - ', donnees_techniques.su2_cstr_shon16, ' m² <br/>')
398 END,
399 CASE WHEN donnees_techniques.su2_cstr_shon17 IS NULL
400 THEN ''
401 ELSE CONCAT ('Industrie - ', donnees_techniques.su2_cstr_shon17, ' m² <br/>')
402 END,
403 CASE WHEN donnees_techniques.su2_cstr_shon18 IS NULL
404 THEN ''
405 ELSE CONCAT ('Entrepôt - ', donnees_techniques.su2_cstr_shon18, ' m² <br/>')
406 END,
407 CASE WHEN donnees_techniques.su2_cstr_shon19 IS NULL
408 THEN ''
409 ELSE CONCAT ('Bureau - ', donnees_techniques.su2_cstr_shon19, ' m² <br/>')
410 END,
411 CASE WHEN donnees_techniques.su2_cstr_shon20 IS NULL
412 THEN ''
413 ELSE CONCAT ('Centre de congrès et d''exposition - ', donnees_techniques.su2_cstr_shon20, ' m²')
414 END
415 ), ' <br/>$', '')
416 ELSE
417 REGEXP_REPLACE(CONCAT(
418 CASE
419 WHEN donnees_techniques.su_cstr_shon1 IS NULL
420 THEN ''
421 ELSE CONCAT('Habitation - ', donnees_techniques.su_cstr_shon1, ' m² <br/>')
422 END,
423 CASE
424 WHEN donnees_techniques.su_cstr_shon2 IS NULL
425 THEN ''
426 ELSE CONCAT('Hébergement hôtelier - ', donnees_techniques.su_cstr_shon2, ' m² <br/>')
427 END,
428 CASE
429 WHEN donnees_techniques.su_cstr_shon3 IS NULL
430 THEN ''
431 ELSE CONCAT('Bureaux - ', donnees_techniques.su_cstr_shon3, ' m² <br/>')
432 END,
433 CASE
434 WHEN donnees_techniques.su_cstr_shon4 IS NULL
435 THEN ''
436 ELSE CONCAT('Commerce - ', donnees_techniques.su_cstr_shon4, ' m² <br/>')
437 END,
438 CASE
439 WHEN donnees_techniques.su_cstr_shon5 IS NULL
440 THEN ''
441 ELSE CONCAT('Artisanat - ', donnees_techniques.su_cstr_shon5, ' m² <br/>')
442 END,
443 CASE
444 WHEN donnees_techniques.su_cstr_shon6 IS NULL
445 THEN ''
446 ELSE CONCAT('Industrie - ', donnees_techniques.su_cstr_shon6, ' m² <br/>')
447 END,
448 CASE
449 WHEN donnees_techniques.su_cstr_shon7 IS NULL
450 THEN ''
451 ELSE CONCAT('Exploitation agricole ou forestière - ', donnees_techniques.su_cstr_shon7, ' m² <br/>')
452 END,
453 CASE
454 WHEN donnees_techniques.su_cstr_shon8 IS NULL
455 THEN ''
456 ELSE CONCAT('Entrepôt - ', donnees_techniques.su_cstr_shon8, ' m² <br/>')
457 END,
458 CASE
459 WHEN donnees_techniques.su_cstr_shon9 IS NULL
460 THEN ''
461 ELSE CONCAT('Service public ou d''intérêt collectif - ', donnees_techniques.su_cstr_shon9, ' m²')
462 END
463 ), ' <br/>$', '')
464 END as \"surface\",
465 co_tot_ind_nb as \"nombre_logement_crees_individuel\",
466 co_tot_coll_nb as \"nombre_logement_crees_collectif\"
467 FROM
468 ".DB_PREFIXE."donnees_techniques
469 WHERE dossier_autorisation = '".$idx."'";
470 $resPrincDonneesTechniques = $this->f->db->query($sqlPrincDonneesTechniques);
471 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlPrincDonneesTechniques."\")", VERBOSE_MODE);
472 $this->f->isDatabaseError($resPrincDonneesTechniques);
473 $rowPrincDonneesTechniques = &$resPrincDonneesTechniques->fetchRow(DB_FETCHMODE_ASSOC);
474
475 //Historique des décisions du dossier d'autorisation
476 $sqlDonneesDecisionsDA = "SELECT
477 avis_decision.libelle as \"avis_libelle\",
478 dossier_instruction_type.libelle as \"di_libelle\",
479 civilite.code as \"code\",
480 CASE WHEN demandeur.qualite='particulier' THEN
481 TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
482 ELSE
483 TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
484 END as \"demandeur\",
485 to_char(dossier.date_decision ,'DD/MM/YYYY') as \"date_decision\"
486 FROM
487 ".DB_PREFIXE."dossier
488 LEFT JOIN
489 ".DB_PREFIXE."dossier_instruction_type
490 ON
491 dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
492 LEFT JOIN
493 ".DB_PREFIXE."lien_dossier_demandeur
494 ON
495 dossier.dossier = lien_dossier_demandeur.dossier
496 LEFT JOIN
497 ".DB_PREFIXE."demandeur
498 ON
499 lien_dossier_demandeur.demandeur = demandeur.demandeur
500 LEFT JOIN
501 ".DB_PREFIXE."avis_decision
502 ON
503 dossier.avis_decision = avis_decision.avis_decision
504 LEFT JOIN
505 ".DB_PREFIXE."civilite
506 ON
507 civilite.civilite = demandeur.particulier_civilite OR civilite.civilite = demandeur.personne_morale_civilite
508 WHERE
509 dossier.dossier_autorisation = '".$idx."' AND
510 dossier.avis_decision IS NOT NULL AND
511 demandeur.type_demandeur = 'petitionnaire'
512 ORDER BY dossier.date_decision ASC";
513 $resDonneesDecisionsDA = $this->f->db->query($sqlDonneesDecisionsDA);
514 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDonneesDecisionsDA."\")", VERBOSE_MODE);
515 $this->f->isDatabaseError($resDonneesDecisionsDA);
516
517 //Les données des lots des dossiers d'autorisation
518 $sqlDonneesLotsDA = "SELECT
519 lot.libelle as \"libelle\", civilite.code as \"code\",
520 CASE WHEN demandeur.qualite='particulier' THEN
521 TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
522 ELSE
523 TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
524 END as \"demandeur\"
525 FROM ".DB_PREFIXE."lot
526 LEFT JOIN
527 ".DB_PREFIXE."lien_lot_demandeur
528 ON
529 lot.lot = lien_lot_demandeur.lot
530 LEFT JOIN
531 ".DB_PREFIXE."demandeur
532 ON
533 demandeur.demandeur = lien_lot_demandeur.demandeur
534 LEFT JOIN
535 ".DB_PREFIXE."civilite
536 ON
537 civilite.civilite = demandeur.particulier_civilite OR civilite.civilite = demandeur.personne_morale_civilite
538 WHERE lot.dossier_autorisation = '".$idx."' AND lien_lot_demandeur.petitionnaire_principal IS TRUE";
539 $resDonneesLotsDA = $this->f->db->query($sqlDonneesLotsDA);
540 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDonneesLotsDA."\")", VERBOSE_MODE);
541 $this->f->isDatabaseError($resDonneesLotsDA);
542
543 //Données du dossier d'instruction en cours d'instruction
544 // Informations générales du dossier d'instruction
545 $sqlDonneesDI = "SELECT
546 dossier.dossier as \"dossier\", dossier.dossier_libelle as \"dossier_libelle\",
547 dossier_instruction_type.libelle as \"libelle_di\",
548 etat.libelle as \"etat\",
549 CASE WHEN demandeur.qualite='particulier' THEN
550 TRIM(CONCAT(civilite.code, ' ', demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
551 ELSE
552 TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
553 END as \"demandeur\"
554 FROM
555 ".DB_PREFIXE."dossier
556 LEFT JOIN
557 ".DB_PREFIXE."etat
558 ON
559 dossier.etat = etat.etat
560 LEFT JOIN
561 ".DB_PREFIXE."dossier_instruction_type
562 ON
563 dossier.dossier_instruction_type = dossier_instruction_type.dossier_instruction_type
564 LEFT JOIN
565 ".DB_PREFIXE."lien_dossier_demandeur
566 ON
567 dossier.dossier = lien_dossier_demandeur.dossier
568 LEFT JOIN
569 ".DB_PREFIXE."demandeur
570 ON
571 lien_dossier_demandeur.demandeur = demandeur.demandeur AND
572 lien_dossier_demandeur.petitionnaire_principal IS TRUE
573 LEFT JOIN
574 ".DB_PREFIXE."civilite
575 ON
576 civilite.civilite = demandeur.particulier_civilite OR civilite.civilite = demandeur.personne_morale_civilite
577 WHERE
578 dossier.dossier_autorisation = '".$idx."' AND etat.statut = 'encours'";
579 $resDonneesDI = $this->f->db->query($sqlDonneesDI);
580 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDonneesDI."\")", VERBOSE_MODE);
581 $this->f->isDatabaseError($resDonneesDI);
582 $rowDonneesDI = &$resDonneesDI->fetchRow(DB_FETCHMODE_ASSOC);
583
584 //Données techniques du dossier d'instruction en cours d'instruction
585 if ( $rowDonneesDI != NULL ){
586
587 //Date importante du di
588 $sqlDateImpDI = "SELECT
589 etat as \"etat_dossier\",
590 CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE
591 THEN to_char(dossier.date_limite_incompletude ,'DD/MM/YYYY')
592 ELSE to_char(dossier.date_limite ,'DD/MM/YYYY')
593 END as \"date_limite\"
594 FROM
595 ".DB_PREFIXE."dossier
596 WHERE
597 dossier.dossier_autorisation = '".$idx."' AND
598 version = (SELECT max(version) FROM ".DB_PREFIXE."dossier WHERE
599 dossier_autorisation = '".$idx."' )";
600 $resDateImpDI = $this->f->db->query($sqlDateImpDI);
601 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDateImpDI."\")", VERBOSE_MODE);
602 $this->f->isDatabaseError($resDateImpDI);
603 $rowDateImpDI = &$resDateImpDI->fetchRow(DB_FETCHMODE_ASSOC);
604
605 //Récupération des données principales des données techniques rattachées au DI
606 $sqlPrincDonneesTechniquesDI = "SELECT
607 CONCAT_WS(
608 '<br/>',
609 CASE WHEN co_projet_desc = '' THEN
610 NULL
611 ELSE
612 TRIM(co_projet_desc)
613 END,
614 CASE WHEN ope_proj_desc = '' THEN
615 NULL
616 ELSE
617 TRIM(ope_proj_desc)
618 END,
619 CASE WHEN am_projet_desc = '' THEN
620 NULL
621 ELSE
622 TRIM(am_projet_desc)
623 END,
624 CASE WHEN dm_projet_desc = '' THEN
625 NULL
626 ELSE
627 TRIM(dm_projet_desc)
628 END
629 ) as \"description_projet\",
630 -- Si une valeur est saisie dans la deuxième version du tableau
631 -- des surfaces alors on récupère seulement ses valeurs
632 CASE WHEN su2_avt_shon1 IS NOT NULL
633 OR su2_avt_shon2 IS NOT NULL
634 OR su2_avt_shon3 IS NOT NULL
635 OR su2_avt_shon4 IS NOT NULL
636 OR su2_avt_shon5 IS NOT NULL
637 OR su2_avt_shon6 IS NOT NULL
638 OR su2_avt_shon7 IS NOT NULL
639 OR su2_avt_shon8 IS NOT NULL
640 OR su2_avt_shon9 IS NOT NULL
641 OR su2_avt_shon10 IS NOT NULL
642 OR su2_avt_shon11 IS NOT NULL
643 OR su2_avt_shon12 IS NOT NULL
644 OR su2_avt_shon13 IS NOT NULL
645 OR su2_avt_shon14 IS NOT NULL
646 OR su2_avt_shon15 IS NOT NULL
647 OR su2_avt_shon16 IS NOT NULL
648 OR su2_avt_shon17 IS NOT NULL
649 OR su2_avt_shon18 IS NOT NULL
650 OR su2_avt_shon19 IS NOT NULL
651 OR su2_avt_shon20 IS NOT NULL
652 OR su2_cstr_shon1 IS NOT NULL
653 OR su2_cstr_shon2 IS NOT NULL
654 OR su2_cstr_shon3 IS NOT NULL
655 OR su2_cstr_shon4 IS NOT NULL
656 OR su2_cstr_shon5 IS NOT NULL
657 OR su2_cstr_shon6 IS NOT NULL
658 OR su2_cstr_shon7 IS NOT NULL
659 OR su2_cstr_shon8 IS NOT NULL
660 OR su2_cstr_shon9 IS NOT NULL
661 OR su2_cstr_shon10 IS NOT NULL
662 OR su2_cstr_shon11 IS NOT NULL
663 OR su2_cstr_shon12 IS NOT NULL
664 OR su2_cstr_shon13 IS NOT NULL
665 OR su2_cstr_shon14 IS NOT NULL
666 OR su2_cstr_shon15 IS NOT NULL
667 OR su2_cstr_shon16 IS NOT NULL
668 OR su2_cstr_shon17 IS NOT NULL
669 OR su2_cstr_shon18 IS NOT NULL
670 OR su2_cstr_shon19 IS NOT NULL
671 OR su2_cstr_shon20 IS NOT NULL
672 OR su2_chge_shon1 IS NOT NULL
673 OR su2_chge_shon2 IS NOT NULL
674 OR su2_chge_shon3 IS NOT NULL
675 OR su2_chge_shon4 IS NOT NULL
676 OR su2_chge_shon5 IS NOT NULL
677 OR su2_chge_shon6 IS NOT NULL
678 OR su2_chge_shon7 IS NOT NULL
679 OR su2_chge_shon8 IS NOT NULL
680 OR su2_chge_shon9 IS NOT NULL
681 OR su2_chge_shon10 IS NOT NULL
682 OR su2_chge_shon11 IS NOT NULL
683 OR su2_chge_shon12 IS NOT NULL
684 OR su2_chge_shon13 IS NOT NULL
685 OR su2_chge_shon14 IS NOT NULL
686 OR su2_chge_shon15 IS NOT NULL
687 OR su2_chge_shon16 IS NOT NULL
688 OR su2_chge_shon17 IS NOT NULL
689 OR su2_chge_shon18 IS NOT NULL
690 OR su2_chge_shon19 IS NOT NULL
691 OR su2_chge_shon20 IS NOT NULL
692 OR su2_demo_shon1 IS NOT NULL
693 OR su2_demo_shon2 IS NOT NULL
694 OR su2_demo_shon3 IS NOT NULL
695 OR su2_demo_shon4 IS NOT NULL
696 OR su2_demo_shon5 IS NOT NULL
697 OR su2_demo_shon6 IS NOT NULL
698 OR su2_demo_shon7 IS NOT NULL
699 OR su2_demo_shon8 IS NOT NULL
700 OR su2_demo_shon9 IS NOT NULL
701 OR su2_demo_shon10 IS NOT NULL
702 OR su2_demo_shon11 IS NOT NULL
703 OR su2_demo_shon12 IS NOT NULL
704 OR su2_demo_shon13 IS NOT NULL
705 OR su2_demo_shon14 IS NOT NULL
706 OR su2_demo_shon15 IS NOT NULL
707 OR su2_demo_shon16 IS NOT NULL
708 OR su2_demo_shon17 IS NOT NULL
709 OR su2_demo_shon18 IS NOT NULL
710 OR su2_demo_shon19 IS NOT NULL
711 OR su2_demo_shon20 IS NOT NULL
712 OR su2_sup_shon1 IS NOT NULL
713 OR su2_sup_shon2 IS NOT NULL
714 OR su2_sup_shon3 IS NOT NULL
715 OR su2_sup_shon4 IS NOT NULL
716 OR su2_sup_shon5 IS NOT NULL
717 OR su2_sup_shon6 IS NOT NULL
718 OR su2_sup_shon7 IS NOT NULL
719 OR su2_sup_shon8 IS NOT NULL
720 OR su2_sup_shon9 IS NOT NULL
721 OR su2_sup_shon10 IS NOT NULL
722 OR su2_sup_shon11 IS NOT NULL
723 OR su2_sup_shon12 IS NOT NULL
724 OR su2_sup_shon13 IS NOT NULL
725 OR su2_sup_shon14 IS NOT NULL
726 OR su2_sup_shon15 IS NOT NULL
727 OR su2_sup_shon16 IS NOT NULL
728 OR su2_sup_shon17 IS NOT NULL
729 OR su2_sup_shon18 IS NOT NULL
730 OR su2_sup_shon19 IS NOT NULL
731 OR su2_sup_shon20 IS NOT NULL
732 THEN
733 REGEXP_REPLACE(CONCAT(
734 CASE WHEN donnees_techniques.su2_cstr_shon1 IS NULL
735 THEN ''
736 ELSE CONCAT ('Exploitation agricole - ', donnees_techniques.su2_cstr_shon1, ' m² <br/>')
737 END,
738 CASE WHEN donnees_techniques.su2_cstr_shon2 IS NULL
739 THEN ''
740 ELSE CONCAT ('Exploitation forestière - ', donnees_techniques.su2_cstr_shon2, ' m² <br/>')
741 END,
742 CASE WHEN donnees_techniques.su2_cstr_shon3 IS NULL
743 THEN ''
744 ELSE CONCAT ('Logement - ', donnees_techniques.su2_cstr_shon3, ' m² <br/>')
745 END,
746 CASE WHEN donnees_techniques.su2_cstr_shon4 IS NULL
747 THEN ''
748 ELSE CONCAT ('Hébergement - ', donnees_techniques.su2_cstr_shon4, ' m² <br/>')
749 END,
750 CASE WHEN donnees_techniques.su2_cstr_shon5 IS NULL
751 THEN ''
752 ELSE CONCAT ('Artisanat et commerce de détail - ', donnees_techniques.su2_cstr_shon5, ' m² <br/>')
753 END,
754 CASE WHEN donnees_techniques.su2_cstr_shon6 IS NULL
755 THEN ''
756 ELSE CONCAT ('Restauration - ', donnees_techniques.su2_cstr_shon6, ' m² <br/>')
757 END,
758 CASE WHEN donnees_techniques.su2_cstr_shon7 IS NULL
759 THEN ''
760 ELSE CONCAT ('Commerce de gros - ', donnees_techniques.su2_cstr_shon7, ' m² <br/>')
761 END,
762 CASE WHEN donnees_techniques.su2_cstr_shon8 IS NULL
763 THEN ''
764 ELSE CONCAT ('Activités de services où s''effectue l''accueil d''une clientèle - ', donnees_techniques.su2_cstr_shon8, ' m² <br/>')
765 END,
766 CASE WHEN donnees_techniques.su2_cstr_shon9 IS NULL
767 THEN ''
768 ELSE CONCAT ('Hébergement hôtelier et touristique - ', donnees_techniques.su2_cstr_shon9, ' m² <br/>')
769 END,
770 CASE WHEN donnees_techniques.su2_cstr_shon10 IS NULL
771 THEN ''
772 ELSE CONCAT ('Cinéma - ', donnees_techniques.su2_cstr_shon10, ' m² <br/>')
773 END,
774 CASE WHEN donnees_techniques.su2_cstr_shon11 IS NULL
775 THEN ''
776 ELSE CONCAT ('Locaux et bureaux accueillant du public des administrations publiques et assimilés - ', donnees_techniques.su2_cstr_shon11, ' m² <br/>')
777 END,
778 CASE WHEN donnees_techniques.su2_cstr_shon12 IS NULL
779 THEN ''
780 ELSE CONCAT ('Locaux techniques et industriels des administrations publiques et assimilés - ', donnees_techniques.su2_cstr_shon12, ' m² <br/>')
781 END,
782 CASE WHEN donnees_techniques.su2_cstr_shon13 IS NULL
783 THEN ''
784 ELSE CONCAT ('Établissements d''enseignement, de santé et d''action sociale - ', donnees_techniques.su2_cstr_shon13, ' m² <br/>')
785 END,
786 CASE WHEN donnees_techniques.su2_cstr_shon14 IS NULL
787 THEN ''
788 ELSE CONCAT ('Salles d''art et de spectacles - ', donnees_techniques.su2_cstr_shon14, ' m² <br/>')
789 END,
790 CASE WHEN donnees_techniques.su2_cstr_shon15 IS NULL
791 THEN ''
792 ELSE CONCAT ('Équipements sportifs - ', donnees_techniques.su2_cstr_shon15, ' m² <br/>')
793 END,
794 CASE WHEN donnees_techniques.su2_cstr_shon16 IS NULL
795 THEN ''
796 ELSE CONCAT ('Autres équipements recevant du public - ', donnees_techniques.su2_cstr_shon16, ' m² <br/>')
797 END,
798 CASE WHEN donnees_techniques.su2_cstr_shon17 IS NULL
799 THEN ''
800 ELSE CONCAT ('Industrie - ', donnees_techniques.su2_cstr_shon17, ' m² <br/>')
801 END,
802 CASE WHEN donnees_techniques.su2_cstr_shon18 IS NULL
803 THEN ''
804 ELSE CONCAT ('Entrepôt - ', donnees_techniques.su2_cstr_shon18, ' m² <br/>')
805 END,
806 CASE WHEN donnees_techniques.su2_cstr_shon19 IS NULL
807 THEN ''
808 ELSE CONCAT ('Bureau - ', donnees_techniques.su2_cstr_shon19, ' m² <br/>')
809 END,
810 CASE WHEN donnees_techniques.su2_cstr_shon20 IS NULL
811 THEN ''
812 ELSE CONCAT ('Centre de congrès et d''exposition - ', donnees_techniques.su2_cstr_shon20, ' m²')
813 END
814 ), ' <br/>$', '')
815 ELSE
816 REGEXP_REPLACE(CONCAT(
817 CASE
818 WHEN donnees_techniques.su_cstr_shon1 IS NULL
819 THEN ''
820 ELSE CONCAT('Habitation - ', donnees_techniques.su_cstr_shon1, ' m² <br/>')
821 END,
822 CASE
823 WHEN donnees_techniques.su_cstr_shon2 IS NULL
824 THEN ''
825 ELSE CONCAT('Hébergement hôtelier - ', donnees_techniques.su_cstr_shon2, ' m² <br/>')
826 END,
827 CASE
828 WHEN donnees_techniques.su_cstr_shon3 IS NULL
829 THEN ''
830 ELSE CONCAT('Bureaux - ', donnees_techniques.su_cstr_shon3, ' m² <br/>')
831 END,
832 CASE
833 WHEN donnees_techniques.su_cstr_shon4 IS NULL
834 THEN ''
835 ELSE CONCAT('Commerce - ', donnees_techniques.su_cstr_shon4, ' m² <br/>')
836 END,
837 CASE
838 WHEN donnees_techniques.su_cstr_shon5 IS NULL
839 THEN ''
840 ELSE CONCAT('Artisanat - ', donnees_techniques.su_cstr_shon5, ' m² <br/>')
841 END,
842 CASE
843 WHEN donnees_techniques.su_cstr_shon6 IS NULL
844 THEN ''
845 ELSE CONCAT('Industrie - ', donnees_techniques.su_cstr_shon6, ' m² <br/>')
846 END,
847 CASE
848 WHEN donnees_techniques.su_cstr_shon7 IS NULL
849 THEN ''
850 ELSE CONCAT('Exploitation agricole ou forestière - ', donnees_techniques.su_cstr_shon7, ' m² <br/>')
851 END,
852 CASE
853 WHEN donnees_techniques.su_cstr_shon8 IS NULL
854 THEN ''
855 ELSE CONCAT('Entrepôt - ', donnees_techniques.su_cstr_shon8, ' m² <br/>')
856 END,
857 CASE
858 WHEN donnees_techniques.su_cstr_shon9 IS NULL
859 THEN ''
860 ELSE CONCAT('Service public ou d''intérêt collectif - ', donnees_techniques.su_cstr_shon9, ' m²')
861 END
862 ), ' <br/>$', '')
863 END as \"surface\",
864 co_tot_ind_nb as \"nombre_logement_crees_individuel\",
865 co_tot_coll_nb as \"nombre_logement_crees_collectif\"
866 FROM ".DB_PREFIXE."donnees_techniques
867 LEFT JOIN ".DB_PREFIXE."dossier
868 ON donnees_techniques.dossier_instruction = dossier.dossier
869 WHERE dossier.dossier = '".$rowDonneesDI['dossier']."'";
870 $resPrincDonneesTechniquesDI = $this->f->db->query($sqlPrincDonneesTechniquesDI);
871 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlPrincDonneesTechniquesDI."\")", VERBOSE_MODE);
872 $this->f->isDatabaseError($resPrincDonneesTechniquesDI);
873 $rowPrincDonneesTechniquesDI = &$resPrincDonneesTechniquesDI->fetchRow(DB_FETCHMODE_ASSOC);
874
875 //La liste des lots
876 $sqlDonneesLotsDI = "SELECT
877 lot.libelle as \"libelle\", civilite.code as \"code\",
878 CASE WHEN demandeur.qualite='particulier' THEN
879 TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom))
880 ELSE
881 TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination))
882 END as \"demandeur\"
883 FROM ".DB_PREFIXE."lot
884 LEFT JOIN
885 ".DB_PREFIXE."lien_lot_demandeur
886 ON
887 lot.lot = lien_lot_demandeur.lot
888 LEFT JOIN
889 ".DB_PREFIXE."dossier
890 ON
891 lot.dossier = dossier.dossier
892 LEFT JOIN
893 ".DB_PREFIXE."demandeur
894 ON
895 demandeur.demandeur = lien_lot_demandeur.demandeur
896 LEFT JOIN
897 ".DB_PREFIXE."civilite
898 ON
899 civilite.civilite = demandeur.particulier_civilite OR civilite.civilite = demandeur.personne_morale_civilite
900 WHERE dossier.dossier = '".$rowDonneesDI['dossier']."' AND lien_lot_demandeur.petitionnaire_principal IS TRUE";
901 $resDonneesLotsDI = $this->f->db->query($sqlDonneesLotsDI);
902 $this->f->addToLog(__METHOD__."() : db->query(\"".$sqlDonneesLotsDI."\")", VERBOSE_MODE);
903 $this->f->isDatabaseError($resDonneesLotsDI);
904 }
905
906 $da_liste_lots = '';
907 // Liste des lots du dossier d'autorisation
908 if ($resDonneesLotsDA->numrows() > 0 ){
909
910 // Entête de tableau
911 $header = '
912 <table class="tab-tab">
913 <thead>
914 <tr class="ui-tabs-nav ui-accordion ui-state-default tab-title">
915 <th class="title col-0 firstcol">
916 <span class="name">
917 %s
918 </span>
919 </th>
920 <th class="title col-0 firstcol">
921 <span class="name">
922 %s
923 </span>
924 </th>
925 </tr>
926 </thead>
927 ';
928 $da_liste_lots .= sprintf($header, _('Libelle'), _('Demandeur'));
929
930 $da_liste_lots .= '<tbody>';
931
932 while($rowDonneesLotsDA = &$resDonneesLotsDA->fetchRow(DB_FETCHMODE_ASSOC)){
933
934 $content = '
935 <tr class="tab-data odd">
936 <td class="col-1 firstcol">
937 %s
938 </td>
939 <td class="col-1">
940 %s
941 </td>
942 </tr>
943 ';
944 $da_liste_lots .= sprintf($content, $rowDonneesLotsDA["libelle"], $rowDonneesLotsDA["code"]." ".$rowDonneesLotsDA["demandeur"]);
945 }
946
947 $da_liste_lots .= '</tbody></table>';
948 }
949 else {
950 $da_liste_lots .= _("Aucun lot lie a ce dossier d'autorisation.");
951 }
952
953 //Historique des décisions
954 $histo_decisions = '';
955 if ($resDonneesDecisionsDA->numrows() > 0 ){
956
957 // Entête de tableau
958 $header = '
959 <table class="tab-tab">
960 <thead>
961 <tr class="ui-tabs-nav ui-accordion ui-state-default tab-title">
962 <th class="title col-0 firstcol">
963 <span class="name">
964 %s
965 </span>
966 </th>
967 <th class="title col-0 firstcol">
968 <span class="name">
969 %s
970 </span>
971 </th>
972 <th class="title col-0 firstcol">
973 <span class="name">
974 %s
975 </span>
976 </th>
977 <th class="title col-0 firstcol">
978 <span class="name">
979 %s
980 </span>
981 </th>
982 </tr>
983 </thead>
984 ';
985 $histo_decisions .= sprintf($header, _('Decision'), _('Type de dossier'),
986 _('Demandeur'), _('date_decision'));
987
988 $histo_decisions .= '<tbody>';
989
990 while($rowDonneesDecisionsDA = &$resDonneesDecisionsDA->fetchRow(DB_FETCHMODE_ASSOC)){
991
992 $content = '
993 <tr class="tab-data odd">
994 <td class="col-1 firstcol">
995 %s
996 </td>
997 <td class="col-1 firstcol">
998 %s
999 </td>
1000 <td class="col-1">
1001 %s
1002 </td>
1003 <td class="col-1">
1004 %s
1005 </td>
1006 </tr>
1007 ';
1008 $histo_decisions .= sprintf($content, $rowDonneesDecisionsDA["avis_libelle"],
1009 $rowDonneesDecisionsDA["di_libelle"],
1010 $rowDonneesDecisionsDA["code"]." ".$rowDonneesDecisionsDA["demandeur"],
1011 $rowDonneesDecisionsDA["date_decision"]);
1012 }
1013
1014 $histo_decisions .= '</tbody></table>';
1015 }
1016 else {
1017 $histo_decisions .= _("Aucune decision liee a ce dossier d'autorisation.");
1018 }
1019
1020 // Affiche le bouton des données technique
1021 $donnees_techniques = '';
1022 if ($rowPrincDonneesTechniques['donnees_techniques'] != ''
1023 && $display_cerfa === true
1024 && $this->f->isAccredited(array('donnees_techniques', 'donnees_techniques_consulter'), 'OR') === true) {
1025
1026 // Toutes les données du cerfa
1027 $donnees_techniques = sprintf ("<a><span id=\"donnees_techniques_da\" class=\"om-prev-icon om-icon-16 om-form-button\"
1028 onclick=\"popupIt('donnees_techniques',
1029 '../scr/sousform.php?obj=donnees_techniques&action=3&idx=".$rowPrincDonneesTechniques['donnees_techniques']."'+
1030 '&idxformulaire=".$idx."&retourformulaire=dossier_autorisation', 860, 'auto',
1031 '', '');\"".
1032 ">%s</span></a>", _("Cliquez pour voir les donnees techniques"));
1033 }
1034
1035 // Si un DI est en cours d'instruction
1036 if ($resDonneesDI->numrows() > 0 ) {
1037
1038 // Liste des lots du dossier d'instruction en cours
1039 $liste_lots = '';
1040 if ($resDonneesLotsDI->numrows() > 0 ){
1041
1042 // Entête de tableau
1043 $header = '
1044 <table class="tab-tab">
1045 <thead>
1046 <tr class="ui-tabs-nav ui-accordion ui-state-default tab-title">
1047 <th class="title col-0 firstcol">
1048 <span class="name">
1049 %s
1050 </span>
1051 </th>
1052 <th class="title col-0 firstcol">
1053 <span class="name">
1054 %s
1055 </span>
1056 </th>
1057 </tr>
1058 </thead>
1059 ';
1060 $liste_lots .= sprintf($header, _('Libelle'), _('Demandeur'));
1061
1062 $liste_lots .= '<tbody>';
1063
1064 while($rowDonneesLotsDI = &$resDonneesLotsDI->fetchRow(DB_FETCHMODE_ASSOC)){
1065
1066 $content = '
1067 <tr class="tab-data odd">
1068 <td class="col-1 firstcol">
1069 %s
1070 </td>
1071 <td class="col-1">
1072 %s
1073 </td>
1074 </tr>
1075 ';
1076 $liste_lots .= sprintf($content, $rowDonneesLotsDI["libelle"], $rowDonneesLotsDI["code"]." ".$rowDonneesLotsDI["demandeur"]);
1077 }
1078
1079 $liste_lots .= '</tbody></table>';
1080 }
1081 else {
1082 $liste_lots .= _("Aucun lot lie a ce dossier d'instruction.");
1083 }
1084 }
1085
1086 //
1087 if ($bouton_retour !== false) {
1088 //
1089 printf("<div class=\"formControls\">%s</div>", $bouton_retour);
1090 } else {
1091 //
1092 printf("<h3>%s</h3>", $rowDonneesDA["dossier_autorisation_libelle"]);
1093 }
1094
1095 printf("<div class=\"formulaire\"><form method=\"post\" id=\"dossier_autorisation\" action=\"#\" class=\"formEntete ui-corner-all\">");
1096
1097 //Le formualaire n'a pas été validé
1098 $validation = 1;
1099 //
1100 $champs = array("dossier_autorisation","dossier_autorisation_libelle",
1101 "type_detaille", "da_etat", "da_demandeur", "infos_localisation_terrain",
1102 "depot_initial", "date_decision", "date_validite",
1103 "date_depot_DAACT", "date_depot_DOC", "da_description_projet",
1104 "surface", "da_nombre_logement_crees_individuel",
1105 "da_nombre_logement_crees_collectif", "da_liste_lots", "histo_decisions", "donnees_techniques");
1106
1107 // Si un DI est en cours d'instruction
1108 if ($resDonneesDI->numrows() > 0 ) {
1109 //
1110 $champs[] = "dossier";
1111 $champs[] = "dossier_libelle";
1112 $champs[] = "libelle_di";
1113 $champs[] = "etat";
1114 $champs[] = "demandeur";
1115 $champs[] = "date_limite";
1116 $champs[] = "description_projet";
1117 $champs[] = "surface";
1118 $champs[] = "nombre_logement_crees_individuel";
1119 $champs[] = "nombre_logement_crees_collectif";
1120 $champs[] = "liste_lots";
1121 }
1122
1123 //Création d'un nouvel objet de type formulaire
1124 $form = new formulaire(null, $validation, 3, $champs);
1125
1126 //Configuration des types de champs
1127 foreach ($champs as $key) {
1128 $form->setType($key, 'static');
1129 }
1130
1131 //Le numéro de dossier d'instruction est caché, on affiche celui
1132 //qui est formatté
1133 $form->setType('dossier_autorisation', 'hidden');
1134
1135 //
1136 $form->setType('da_liste_lots', 'htmlstatic');
1137 $form->setType('histo_decisions', 'htmlstatic');
1138 $form->setType('donnees_techniques', 'htmlstatic');
1139
1140 //Configuration des libellés
1141 $form->setLib("dossier_autorisation", _("dossier_autorisation"));
1142 $form->setLib("dossier_autorisation_libelle", _("No dossier autorisation"));
1143 $form->setLib("type_detaille", _("Type d'autorisation"));
1144 $form->setLib("da_etat", _("etat"));
1145 $form->setLib("da_demandeur", _("Demandeur principal"));
1146 $form->setLib("infos_localisation_terrain", _("infos_localisation_terrain"));
1147 $form->setLib("depot_initial", _("Depot initial"));
1148 $form->setLib("date_decision", _("Decision initiale"));
1149 $form->setLib("date_validite", _("Date de validite"));
1150 $form->setLib("date_depot_DAACT", _("Date de depot de la DAACT"));
1151 $form->setLib("date_depot_DOC", _("Date de depot de la DOC"));
1152 $form->setLib("da_description_projet", _("description_projet"));
1153 $form->setLib("surface", _("Surface creee"));
1154 $form->setLib("da_nombre_logement_crees_individuel", _("nombre_logement_crees_individuel"));
1155 $form->setLib("da_nombre_logement_crees_collectif", _("nombre_logement_crees_collectif"));
1156 $form->setLib("da_liste_lots", "");
1157 $form->setLib("histo_decisions", "");
1158 $form->setLib("donnees_techniques", "");
1159
1160 //Configuration des données
1161 $form->setVal("dossier_autorisation", $idx);
1162 $form->setVal("dossier_autorisation_libelle", $rowDonneesDA["dossier_autorisation_libelle"]);
1163 $form->setVal("type_detaille", $rowDonneesDA["type_detaille"]);
1164 $form->setVal("da_etat", $rowDonneesDA["etat"]);
1165 $form->setVal("da_demandeur", $rowDonneesDA["demandeur"]);
1166 $form->setVal("infos_localisation_terrain", ($rowDonneesDA["infos_localisation_terrain"]!=="")?$rowDonneesDA["infos_localisation_terrain"]:"-");
1167 $form->setVal("depot_initial", ($rowDonneesDA["depot_initial"]!=="")?$rowDonneesDA["depot_initial"]:"-");
1168 $form->setVal("date_decision", ($rowDonneesDA["date_decision"]!=="")?$rowDonneesDA["date_decision"]:"-");
1169 //On met des valeurs par défaut dans ces deux champs
1170 $form->setVal("date_depot_DAACT", ($rowDonneesDA["date_achevement"]!=="")?$rowDonneesDA["date_achevement"]:"-");
1171 $form->setVal("date_depot_DOC", ($rowDonneesDA["date_chantier"]!=="")?$rowDonneesDA["date_chantier"]:"-");
1172 $form->setVal("da_description_projet", ($rowPrincDonneesTechniques["description_projet"]!=="")?$rowPrincDonneesTechniques["description_projet"]:"-");
1173 $form->setVal("surface",($rowPrincDonneesTechniques["surface"]!=="")?$rowPrincDonneesTechniques["surface"]:"-");
1174 $form->setVal("da_nombre_logement_crees_individuel", ($rowPrincDonneesTechniques["nombre_logement_crees_individuel"]!=="")?$rowPrincDonneesTechniques["nombre_logement_crees_individuel"]:"-");
1175 $form->setVal("da_nombre_logement_crees_collectif", ($rowPrincDonneesTechniques["nombre_logement_crees_collectif"]!=="")?$rowPrincDonneesTechniques["nombre_logement_crees_collectif"]:"-");
1176 //On met les bonnes valeurs dans les champs s'il y en a
1177 $val = "";
1178 while ($rowDonneesDateDossiersDA = &$resDonneesDateDossiersDA->fetchRow(DB_FETCHMODE_ASSOC)){
1179 $val = ($rowDonneesDateDossiersDA["date_depot"]!=="")?$rowDonneesDateDossiersDA["date_depot"]:"-";
1180 if ( strcmp($rowDonneesDateDossiersDA['code'], 'DOC') == 0 ){
1181 $form->setVal("date_depot_DOC", $val);
1182 }
1183 elseif(strcmp($rowDonneesDateDossiersDA['code'], 'DAACT') == 0){
1184 $form->setVal("date_depot_DAACT", $val);
1185 }
1186 }
1187 $form->setVal("date_validite", ($rowDonneesDA["date_validite"]!=="")?$rowDonneesDA["date_validite"]:"-");
1188 $form->setVal("da_liste_lots", $da_liste_lots);
1189 $form->setVal("histo_decisions", $histo_decisions);
1190 $form->setVal("donnees_techniques", $donnees_techniques);
1191
1192 // Si un DI est en cours d'instruction
1193 if ($resDonneesDI->numrows() > 0 ) {
1194 //Le numéro de dossier d'instruction est caché, on affiche
1195 //celui qui est formatté
1196 $form->setType('dossier', 'hidden');
1197
1198 //
1199 $form->setType('liste_lots', 'htmlstatic');
1200
1201 //Configuration des libellés
1202 $form->setLib("dossier", _("dossier"));
1203 $form->setLib("dossier_libelle", _("dossier_libelle"));
1204 $form->setLib("libelle_di", _("libelle_di"));
1205 $form->setLib("etat", _("etat"));
1206 $form->setLib("demandeur", _("Demandeur principal"));
1207 $form->setLib("date_limite", _("Date limite"));
1208 $form->setLib("description_projet", _("description_projet"));
1209 $form->setLib("surface", _("Surface creee"));
1210 $form->setLib("nombre_logement_crees_individuel", _("nombre_logement_crees_individuel"));
1211 $form->setLib("nombre_logement_crees_collectif", _("nombre_logement_crees_collectif"));
1212 $form->setLib("liste_lots", "");
1213
1214 //Configuration des données
1215 $form->setVal("dossier", $rowDonneesDI["dossier"]);
1216 $form->setVal("dossier_libelle", $rowDonneesDI["dossier_libelle"]);
1217 $form->setVal("libelle_di", $rowDonneesDI["libelle_di"]);
1218 $form->setVal("etat", $rowDonneesDI["etat"]);
1219 $form->setVal("demandeur", $rowDonneesDI["demandeur"]);
1220 $form->setVal("date_limite", $rowDateImpDI["date_limite"]);
1221 $form->setVal("description_projet", ($rowPrincDonneesTechniquesDI["description_projet"]!=="")?$rowPrincDonneesTechniquesDI["description_projet"]:"-");
1222 $form->setVal("surface",($rowPrincDonneesTechniquesDI["surface"]!=="")?$rowPrincDonneesTechniquesDI["surface"]:"-");
1223 $form->setVal("nombre_logement_crees_individuel", ($rowPrincDonneesTechniquesDI["nombre_logement_crees_individuel"]!=="")?$rowPrincDonneesTechniquesDI["nombre_logement_crees_individuel"]:"-");
1224 $form->setVal("nombre_logement_crees_collectif", ($rowPrincDonneesTechniquesDI["nombre_logement_crees_collectif"]!=="")?$rowPrincDonneesTechniquesDI["nombre_logement_crees_collectif"]:"-");
1225 $form->setVal("liste_lots", $liste_lots);
1226 }
1227
1228 //
1229 $form->setBloc("dossier_autorisation", "D", "", "col_6");
1230
1231 // Fieldset des dossiers en cours de validité
1232 $form->setFieldset("dossier_autorisation", "D", _("En cours de validite"), "");
1233
1234 //Données générales
1235 $form->setBloc("dossier_autorisation", "D", _("Donnees generales"), "col_12");;
1236 $form->setBloc("infos_localisation_terrain", "F");
1237
1238 //Dates importantes
1239 $form->setBloc("depot_initial", "D", _("Dates importantes"), "col_12");
1240 $form->setBloc("date_depot_DOC", "F");
1241
1242 //Principales données techniques
1243 $form->setBloc("da_description_projet", "D", _("Principales donnees techniques"), "col_12");
1244 $form->setBloc("da_nombre_logement_crees_collectif", "F");
1245
1246 //
1247 $form->setBloc("da_liste_lots", "DF", _("Liste des lots"), "col_12");
1248
1249 //
1250 $form->setBloc("histo_decisions", "DF", _("Historique des decisions"), "col_12");
1251
1252 if ($rowPrincDonneesTechniques['donnees_techniques'] != ''
1253 && $display_cerfa === true
1254 && $this->f->isAccredited(array('donnees_techniques', 'donnees_techniques_consulter'), 'OR') === true) {
1255 //
1256 $form->setBloc("donnees_techniques", "DF", _("Toutes les donnees du CERFA"), "col_12");
1257 // Ferme le fieldset sur ce champ
1258 $form->setFieldset("donnees_techniques", "F", "");
1259 //
1260 $form->setBloc("donnees_techniques", "F");
1261 } else {
1262 // Sinon ferme le fieldset sur le champ précédent
1263 $form->setFieldset("histo_decisions", "F", "");
1264 //
1265 $form->setBloc("histo_decisions", "F");
1266 }
1267
1268 // Si un DI est en cours d'instruction
1269 if ($resDonneesDI->numrows() > 0 ) {
1270
1271 //
1272 $form->setBloc("dossier", "D", "", "col_6");
1273
1274 //
1275 $form->setFieldset("dossier", "D", _("En cours d'instruction"), " ");
1276
1277 //Données générales
1278 $form->setBloc("dossier", "D", _("Donnees generales"), "col_12");
1279 $form->setBloc("demandeur", "F");
1280
1281 //Si statut dossier différent d'incomplet
1282 if ($rowDateImpDI["etat_dossier"] != 'incomplet'
1283 && $rowDateImpDI["etat_dossier"] != 'incomplet_notifie') {
1284
1285 //Dates importantes
1286 $form->setBloc("date_limite", "D", _("Dates importantes"), "col_12");
1287 $form->setBloc("date_limite", "F");
1288 }
1289
1290 //Principales données techniques
1291 $form->setBloc("description_projet", "D", _("Principales données techniques"), "col_12");
1292 $form->setBloc("nombre_logement_crees_collectif", "F");
1293
1294 //
1295 $form->setBloc("liste_lots", "DF", _("Liste des lots"), "col_12");
1296
1297 //
1298 $form->setFieldset("liste_lots", "F", "");
1299
1300 //
1301 $form->setBloc("liste_lots", "F");
1302 }
1303
1304 //
1305 $form->afficher($champs, $validation, false, false);
1306
1307 printf("</form>");
1308
1309 if ($bouton_retour !== false) {
1310 //
1311 printf("%s</div>",$bouton_retour);
1312 }
1313 }
1314
1315
1316 /**
1317 * VIEW - view_consulter
1318 *
1319 * Cette vue permet d'afficher l'interface spécifique de consultation
1320 * des dossiers d'autorisation.
1321 *
1322 * @return void
1323 */
1324 function view_consulter() {
1325 // Vérification de l'accessibilité sur l'élément
1326 $this->checkAccessibility();
1327 //
1328 $idx = $this->f->get_submitted_get_value('idx');
1329 $idz = $this->f->get_submitted_get_value('idz');
1330 $retour = $this->f->get_submitted_get_value('retour');
1331 $premier = $this->f->get_submitted_get_value('premier');
1332 $advs_id = $this->f->get_submitted_get_value('advs_id');
1333 $recherche = $this->f->get_submitted_get_value('recherche');
1334 $tricol = $this->f->get_submitted_get_value('tricol');
1335 $selectioncol = $this->f->get_submitted_get_value('selectioncol');
1336 $valide = $this->f->get_submitted_get_value('valide');
1337 $retourformulaire = $this->f->get_submitted_get_value('retourformulaire');
1338 $retourtab = $this->f->get_submitted_get_value('retourtab');
1339 // Permet de composer le bouton retour avec le tableau depuis lequel la page a été ouverte
1340 if ($retourtab == "") {
1341 $retourtab = "dossier_autorisation";
1342 }
1343 // Si l'identifiant du dossier d'autorisation a été fourni
1344 if (!is_null($idx)) {
1345
1346 // Configuration du bouton retour
1347 if($retour != "" AND $retour != "tab") {
1348 $bouton_retour = "<a class=\"retour\"".
1349 " href=\"../scr/form.php?obj=dossier_instruction&idx=".$retour."&action=3".
1350 "&premier=".$premier."&tricol=".$tricol."&recherche=".$recherche.
1351 "&selectioncol=".$selectioncol."&retourformulaire=".$retourformulaire."\">".
1352 _("Retour")."</a>";
1353 } else {
1354 $bouton_retour = "<a class=\"retour\"
1355 href=\"../scr/tab.php?obj=".$retourtab."&premier=".$premier."&tricol=".$tricol.
1356 "&recherche=".$recherche."&selectioncol=".$selectioncol."&retourformulaire=".$retourformulaire.
1357 "&advs_id=".$advs_id."\">"._("Retour")."</a>";
1358 }
1359
1360 // Affiche la fiche complète du dossier d'autorisation
1361 $this->display_dossier_autorisation_data($idx, $bouton_retour);
1362 }
1363 }
1364
1365
1366 /**
1367 * Affiche la fiche du dossier d'autorisation pour les utilisateurs anonymes.
1368 *
1369 * @param boolean $content_only Affiche le contenu seulement.
1370 *
1371 * @return void
1372 */
1373 public function view_consulter_anonym($content_only = false) {
1374
1375 // Par défaut on considère qu'on va afficher le formulaire
1376 $idx = 0;
1377 // Flag d'erreur
1378 $error = false;
1379 // Message d'erreur
1380 $message = '';
1381
1382 // Paramètres POST
1383 $validation = $this->f->get_submitted_post_value('validation');
1384 //
1385 $dossier = $this->f->get_submitted_post_value('dossier');
1386 $dossier = $this->f->db->escapeSimple($dossier);
1387 $dossier = preg_replace('/\s+/', '', $dossier);
1388 //
1389 $cle_acces_citoyen = $this->f->get_submitted_post_value('cle_acces_citoyen_complete');
1390 $cle_acces_citoyen = $this->f->db->escapeSimple($cle_acces_citoyen);
1391 //
1392 $timestamp_generation_formulaire = $this->f->get_submitted_post_value('timestamp_generation_formulaire');
1393
1394 // Si au moins un des champs n'est pas renseignés
1395 if ($error !== true
1396 && $validation !== null
1397 && (($dossier === null || $dossier == '')
1398 || ($cle_acces_citoyen === null || $cle_acces_citoyen == ''))) {
1399 //
1400 $message = _("Tous les champs doivent etre remplis.");
1401 $error = true;
1402 }
1403
1404 // Si le formulaire est expiré
1405 if ($error !== true
1406 && $validation !== null
1407 && time() >= strtotime('+5 minutes', $timestamp_generation_formulaire)) {
1408 //
1409 $message = _("Le formulaire a expire. Veuillez recharger la page.");
1410 $error = true;
1411 }
1412
1413 // Si les valeurs renseignées semblent correctes
1414 if ($error !== true
1415 && $validation !== null
1416 && (strlen($dossier) < 15 || strlen($cle_acces_citoyen) != 19)) {
1417 //
1418 $message = _("Le numero de dossier ou la cle d'acces n'est pas valide.");
1419 $error = true;
1420 }
1421
1422 // S'il n'y a pas eu d'erreur
1423 if ($error !== true
1424 && $validation !== null) {
1425 // Vérifie le couple numéro de dossier et clé d'accès citoyen
1426 $idx = $this->verify_citizen_access_portal_credentials($dossier, $cle_acces_citoyen);
1427
1428 // Si le couple n'est pas correct
1429 if ($idx === false) {
1430 //
1431 $message = _("Le numero de dossier ou la cle d'acces n'est pas valide.");
1432 $error = true;
1433 }
1434 }
1435
1436 // S'il n'y a pas d'erreur et que le formulaire a été validé
1437 if ($error !== true && $validation !== null) {
1438 // On affiche la fiche d'information du dossier d'autorisation
1439 $this->display_dossier_autorisation_data($idx, false, false);
1440 } else {
1441 // Sinon on affiche le formulaire d'accès au portail citoyen
1442 $this->display_citizen_access_portal_form($message, $content_only);
1443 }
1444 }
1445
1446
1447 /**
1448 * Vérifie le couple dossier/clé d'accès dans la base de données.
1449 *
1450 * @param string $dossier Le numéro du DI ou DA, sans espaces.
1451 * @param string $citizen_access_key La clé d'accès.
1452 *
1453 * @return string Identifiant du DA sinon 0.
1454 */
1455 public function verify_citizen_access_portal_credentials($dossier, $citizen_access_key) {
1456
1457 //
1458 $numero_da = "SELECT dossier_autorisation.dossier_autorisation
1459 FROM ".DB_PREFIXE."dossier LEFT JOIN ".DB_PREFIXE."dossier_autorisation ON dossier.dossier_autorisation = dossier_autorisation.dossier_autorisation
1460 WHERE (dossier.dossier = '".$dossier."' OR
1461 dossier_autorisation.dossier_autorisation = '".$dossier."') AND
1462 dossier_autorisation.cle_acces_citoyen = '".$citizen_access_key."'";
1463 $resDossier = $this->f->db->getOne($numero_da);
1464 $this->f->addToLog(__METHOD__."() : db->query(\"".$numero_da."\")", VERBOSE_MODE);
1465 $this->f->isDatabaseError($resDossier);
1466
1467 // Si aucun dossier n'existe avec la clé fournie, on renvoie faux
1468 if ($resDossier == null) {
1469 return false;
1470 }
1471 //
1472 return $resDossier;
1473 }
1474
1475
1476 /**
1477 * Affiche le formulaire d'accès au portail citoyen.
1478 *
1479 * @param string $message Message d'erreur.
1480 * @param boolean $content_only Affiche le contenu seulement.
1481 *
1482 * @return void
1483 */
1484 public function display_citizen_access_portal_form($message, $content_only) {
1485
1486 // Ajoute le paramètre content_only à l'url permettant de ne pas afficher
1487 // le header et le footer
1488 $param_get_content_only = '';
1489 if ($content_only === true) {
1490 $param_get_content_only = '?content_only=true';
1491 }
1492
1493 // Affichage du message d'erreur
1494 if (isset($message) && $message != "") {
1495 printf('<div class="alert alert-danger" role="alert">%s</div>', $message);
1496 }
1497
1498 // Ouverture du formulaire
1499 printf("<div class=\"formulaire\"><form class=\"form-signin\" method=\"POST\" id=\"acces_portail_citoyen\" action=\"citizen.php%s\">", $param_get_content_only);
1500
1501 $champs = array('dossier', 'cle_acces_citoyen_split', 'timestamp_generation_formulaire', 'cle_acces_citoyen_complete');
1502
1503 //
1504 require_once "../obj/om_formulaire.class.php";
1505 $form = new om_formulaire(null, 0, 0, $champs);
1506 $form->setType('dossier', 'text');
1507 $form->setType('cle_acces_citoyen_split', 'citizen_access_key');
1508 $form->setType('cle_acces_citoyen_complete', 'hidden');
1509 $form->setType('timestamp_generation_formulaire', 'hidden');
1510
1511 $form->setTaille("dossier", 30);
1512 $form->setTaille('cle_acces_citoyen_complete', 19);
1513 $form->setTaille('timestamp_generation_formulaire', 20);
1514
1515 $form->setMax("dossier", 30);
1516 $form->setMax('cle_acces_citoyen_complete', 19);
1517 $form->setMax('timestamp_generation_formulaire', 20);
1518
1519 $form->setLib('dossier', _('N° de dossier'));
1520 $form->setLib('cle_acces_citoyen_split', _('cle_acces'));
1521 $form->setLib('cle_acces_citoyen_complete', '');
1522 $form->setLib('timestamp_generation_formulaire', '');
1523
1524 $form->setVal('timestamp_generation_formulaire', time());
1525
1526 $form->setBloc("dossier", "D", "", "group");
1527 $form->setBloc("cle_acces_citoyen_split", "F");
1528 $form->afficher($champs, 0, false, false);
1529
1530 // Bouton de validation
1531 echo "<div class=\"formControls\">";
1532 echo "<input type=\"submit\" class=\"btn btn-lg btn-primary btn-block\" value=\""._("Valider")."\" name=\"validation\" />";
1533 echo "</div>";
1534 printf("</form>");
1535
1536 // Fermeture du div formulaire
1537 printf("</div>");
1538
1539 }
1540
1541
1542 /**
1543 * Assure que la date passee par reference soit en
1544 * format attendu par la fonction dateDB du fichier
1545 * core/om_dbform.class.php. Change le format de la
1546 * date si necessaire.
1547 * @param $string $field Le date dans format DB, ou
1548 * celui attendu par setvalF
1549 */
1550 private function changeDateFormat(&$field) {
1551 if (preg_match('/([0-9]{4})-([0-9]{2})-([0-9]{2})/',
1552 $field, $matches)) {
1553 $field = $matches[3].'/'.$matches[2].'/'.$matches[1];
1554 }
1555 }
1556
1557 function setvalF($val) {
1558 // verifie que les dates envoyes au parent::setvalF sont ont
1559 // bon format, et change le format si necessaire
1560 $this->changeDateFormat($val['erp_date_ouverture']);
1561 $this->changeDateFormat($val['erp_date_arrete_decision']);
1562
1563 parent::setvalF($val);
1564
1565 // si la valeur d'erp_arrete_decision n'etait pas set, laisse elle a null
1566 if ($val['erp_arrete_decision'] == null) {
1567 $this->valF['erp_arrete_decision'] = null;
1568 }
1569 // si la valeur d'erp_ouvert n'etait pas set, laisse elle a null
1570 if ($val['erp_ouvert'] == null) {
1571 $this->valF['erp_ouvert'] = null;
1572 }
1573 }
1574
1575 /**
1576 * Méthode permettant de définir des valeurs à envoyer en base après
1577 * validation du formulaire d'ajout.
1578 * @param array $val tableau des valeurs retournées par le formulaire
1579 */
1580 function setValFAjout($val) {
1581
1582 // On récupère les paramètres de la collectivité concernée
1583 // par la demande.
1584 $collectivite_parameters = $this->f->getCollectivite($this->valF['om_collectivite']);
1585
1586 // Le paramètre 'departement' est obligatoire si il n'est pas présent
1587 // dans le tableau des paramètres alors on stoppe le traitement.
1588 if (!isset($collectivite_parameters['departement'])) {
1589 $this->f->addToLog(
1590 __METHOD__."(): ERROR om_parametre 'departement' inexistant.",
1591 DEBUG_MODE
1592 );
1593 return false;
1594 }
1595 $departement = $collectivite_parameters['departement'];
1596
1597 // Le paramètre 'commune' est obligatoire si il n'est pas présent
1598 // dans le tableau des paramètres alors on stoppe le traitement.
1599 if (!isset($collectivite_parameters['commune'])) {
1600 $this->f->addToLog(
1601 __METHOD__."(): ERROR om_parametre 'commune' inexistant.",
1602 DEBUG_MODE
1603 );
1604 return false;
1605 }
1606 $commune = $collectivite_parameters['commune'];
1607
1608 // Récupération du type de dossier ou série
1609 $sql = "SELECT da_t.code
1610 FROM ".DB_PREFIXE."dossier_autorisation_type as da_t
1611 INNER JOIN ".DB_PREFIXE."dossier_autorisation_type_detaille as da_t_d
1612 ON da_t.dossier_autorisation_type=da_t_d.dossier_autorisation_type
1613 WHERE da_t_d.dossier_autorisation_type_detaille=".
1614 $val['dossier_autorisation_type_detaille'].";";
1615 //
1616 $da_type_code = $this->db->getone($sql);
1617 $this->addToLog("setValFAjout(): db->getone(\"".$sql."\")", VERBOSE_MODE);
1618 database::isError($da_type_code);
1619
1620 //
1621 $annee = date('y', strtotime($this->valF["depot_initial"]));
1622
1623 // Récupération de la division de l'instructeur
1624 $division_instructeur = $this->get_instructeur_division_for_numero_dossier();
1625 // Récupération du numéro du dossier
1626 $numero_dossier = $this->createNumeroDossier(
1627 $da_type_code,
1628 $annee,
1629 $departement,
1630 $commune
1631 );
1632 if($numero_dossier === false) {
1633 return false;
1634 }
1635
1636 /// IDENTIFIANT DU DOSSIER
1637 // PC 013 055 12 00001
1638 $this->valF[$this->clePrimaire] =
1639 $da_type_code.$departement.$commune.$annee.$division_instructeur.$numero_dossier;
1640
1641 // Identifiant du dossier d'autorisation lisible
1642 // Ex : DP 013055 13 00002
1643 $this->valF["dossier_autorisation_libelle"] =
1644 $da_type_code." ".$departement.$commune." ".$annee." ".$division_instructeur.$numero_dossier;
1645
1646 }
1647
1648 /**
1649 * Récupère le code de la division pour le numéro du dossier.
1650 * Par défaut retourne 0.
1651 *
1652 * @return mixed Division de l'instructeur ou 0
1653 */
1654 function get_instructeur_division_for_numero_dossier() {
1655
1656 // Récupère le paramètre numero_dossier_division_instructeur
1657 $option = $this->f->getParameter("option_instructeur_division_numero_dossier");
1658
1659 // Si l'option n'est pas activée
1660 if ($option != 'true') {
1661
1662 // Retourne la valeur par défaut 0
1663 return 0;
1664 }
1665
1666 // Instancie la classe dossier pour utiliser les fonctions de
1667 // récupération de l'instructeur automatiquement
1668 require_once '../obj/dossier.class.php';
1669 $dossier = new dossier(0, $this->db, false);
1670
1671 // Récupère le quartier et l'arrondissement depuis les ref cadastrales
1672 $quartierArrondissement = $dossier->getQuartierArrondissement($this->valF['terrain_references_cadastrales']);
1673 //
1674 $quartier = null;
1675 $arrondissement = null;
1676 if ($quartierArrondissement != NULL) {
1677 //
1678 $quartier = $quartierArrondissement['quartier'];
1679 $arrondissement = $quartierArrondissement['arrondissement'];
1680 }
1681 // Récupère la section depuis les ref cadastrales
1682 $section = $dossier->getSection($this->valF['terrain_references_cadastrales']);
1683
1684 // Récupère l'instructeur et la division qui seront affectés
1685 // automatiquement
1686 $instructeurDivision = $dossier->getInstructeurDivision($quartier, $arrondissement, $section, $this->valF['dossier_autorisation_type_detaille'], $this->valF['om_collectivite']);
1687
1688 // Si aucun instructeur est affecté automatiquement
1689 if ($instructeurDivision == null) {
1690
1691 // Retourne la valeur par défaut 0
1692 return 0;
1693 }
1694
1695 // Récupère la division
1696 $division = $instructeurDivision['division'];
1697
1698 // Récupère le code de la division
1699 require_once '../obj/division.class.php';
1700 $division_instance = new division($division, $this->db, false);
1701 $division_code = $division_instance->getVal("code");
1702
1703 // Retourne le libellé de la division
1704 return $division_code;
1705 }
1706
1707 // {{{
1708 // getter
1709 function getValIdDemandeur() {
1710 return $this->valIdDemandeur;
1711 }
1712 // setter
1713 function setValIdDemandeur($valIdDemandeur) {
1714 $this->valIdDemandeur = $valIdDemandeur;
1715 }
1716 // }}}
1717
1718 /**
1719 * Retourne le numéro suivant de la séquence des DA identifiées par les
1720 * quatre paramètres (PC, 15, 013, 055).
1721 *
1722 *
1723 * @param string $datc Code du type de dossier d'autorisation.
1724 * @param string $annee Année de la date de dépôt initial.
1725 * @param string $dep Code département.
1726 * @param string $com Code commune.
1727 *
1728 * @return string numéro de dossier ou false.
1729 */
1730 function createNumeroDossier($datc, $annee, $dep, $com) {
1731 /**
1732 * On vérifie la validité des trois paramètres.
1733 */
1734 // Vérification du code du type de dossier d'autorisation.
1735 if (!is_string($datc)) {
1736 // Logger
1737 $this->addToLog(
1738 __METHOD__.'(): parametre datc = '.var_export($datc, true),
1739 DEBUG_MODE
1740 );
1741 // Stop le traitement
1742 return false;
1743 }
1744 // Vérification du code département.
1745 if ($dep == null
1746 || !is_numeric($dep)
1747 || intval($dep) == 0
1748 || count($dep) > 3) {
1749 // Logger
1750 $this->addToLog(
1751 __METHOD__.'(): om_parametre departement = '.var_export($dep, true),
1752 DEBUG_MODE
1753 );
1754 // Stop le traitement
1755 return false;
1756 }
1757 // Vérification du code commune.
1758 if ($com == null
1759 || !is_numeric($com)
1760 || intval($com) == 0
1761 || count($com) > 3) {
1762 // Logger
1763 $this->addToLog(
1764 __METHOD__.'(): om_parametre commune = '.var_export($com, true),
1765 DEBUG_MODE
1766 );
1767 // Stop le traitement
1768 return false;
1769 }
1770
1771 /**
1772 * On compose les identifiants qui composent la séquence.
1773 */
1774 // Clé unique.
1775 // Exemple : pc_15_013_055
1776 $unique_key = sprintf('%s_%s_%s_%s', strtolower($datc), $annee, $dep, $com);
1777 // Nom de la table représentant la séquence pour appel via la méthode
1778 // database::nextId() qui prend un nom de séquence sans son suffixe
1779 // '_seq'.
1780 // Exemple : openads.dossier_pc_15_013_055
1781 $table_name = sprintf('%sdossier_%s', DB_PREFIXE, $unique_key);
1782 // Nom de la séquence avec son suffixe 'seq'.
1783 // Exemple : openads.dossier_pc_15_013_055_seq
1784 $sequence_name = sprintf('%s_seq', $table_name);
1785
1786 /**
1787 * On interroge la base de données pour vérifier si la séquence existe
1788 * ou non. Si il y a un retour à l'exécution de la requête alors la
1789 * séquence existe et si il n'y en a pas alors la séquence n'existe
1790 * pas.
1791 */
1792 $query_sequence_exists = sprintf(
1793 'SELECT
1794 *
1795 FROM
1796 pg_class
1797 WHERE
1798 relkind = \'S\'
1799 AND oid::regclass::text = \'%s\'
1800 ;',
1801 $sequence_name
1802 );
1803 $res_sequence_exists = $this->f->db->getone($query_sequence_exists);
1804 $this->addToLog(
1805 __METHOD__.'(): db->getone("'.$res_sequence_exists.'");',
1806 VERBOSE_MODE
1807 );
1808 if ($this->f->isDatabaseError($res_sequence_exists, true) === true) {
1809 // Appel de la methode de recuperation des erreurs
1810 $this->erreur_db(
1811 $res_sequence_exists->getDebugInfo(),
1812 $res_sequence_exists->getMessage(),
1813 'dossier_autorisation'
1814 );
1815 // Stop le traitement
1816 return false;
1817 }
1818
1819 /**
1820 * Si la séquence n'existe pas, alors on la cré. Puis si des DA
1821 * existent déjà avec cette clé unique alors on initialise cette
1822 * séquence avec le numéro du dernier DA correcspondant.
1823 */
1824 if ($res_sequence_exists === null) {
1825
1826 // Création de la sequence si elle n'existe pas
1827 $res = $this->db->createSequence($table_name);
1828 $this->f->addToLog(
1829 __METHOD__.'(): db->createSequence("'.$table_name.'");',
1830 VERBOSE_MODE
1831 );
1832 if ($this->f->isDatabaseError($res, true) === true) {
1833 // Appel de la methode de recuperation des erreurs
1834 $this->erreur_db(
1835 $res->getDebugInfo(),
1836 $res->getMessage(),
1837 'dossier_autorisation'
1838 );
1839 // Stop le traitement
1840 return false;
1841 }
1842
1843 // Récupération du dernier DA du typeDA passé en paramètre de
1844 // l'année de dépôt
1845 $sql_max_DA = sprintf(
1846 'SELECT
1847 dossier_autorisation
1848 FROM
1849 %sdossier_autorisation
1850 WHERE
1851 dossier_autorisation ILIKE \'%s%%\'
1852 ORDER BY
1853 dossier_autorisation DESC
1854 ;',
1855 DB_PREFIXE,
1856 $datc.$dep.$com.$annee
1857 );
1858 $last_DA = $this->db->getone($sql_max_DA);
1859 $this->f->addToLog(
1860 __METHOD__.'(): db->getone("'.$sql_max_DA.'");',
1861 VERBOSE_MODE
1862 );
1863 // Si une erreur est levé pour la création.
1864 if ($this->f->isDatabaseError($last_DA, true) === true) {
1865 // Appel de la methode de recuperation des erreurs
1866 $this->erreur_db(
1867 $nb_DA->getDebugInfo(),
1868 $nb_DA->getMessage(),
1869 'dossier_autorisation'
1870 );
1871 // Stop le traitement
1872 return false;
1873 }
1874
1875 // Si au moins un dossier on récupère son id
1876 if ($last_DA != "") {
1877 //
1878 $id = intval(substr($last_DA, -4));
1879 // Mise à jour de la sequence avec l'id recalculé
1880 $sql_maj_seq = sprintf(
1881 'SELECT setval(\'%s\',%s);',
1882 $sequence_name,
1883 $id
1884 );
1885 $res_seq = $this->db->query($sql_maj_seq);
1886 $this->f->addToLog(
1887 __METHOD__.'(): db->query("'.$sql_maj_seq.'");',
1888 VERBOSE_MODE
1889 );
1890 if ($this->f->isDatabaseError($res_seq, true) === true) {
1891 // Appel de la methode de recuperation des erreurs
1892 $this->erreur_db(
1893 $res_seq->getDebugInfo(),
1894 $res_seq->getMessage(),
1895 'dossier_autorisation'
1896 );
1897 // Stop le traitement
1898 return false;
1899 }
1900 }
1901
1902 }
1903
1904 /**
1905 * On récupère le prochain numéro de la séquence fraichement créée ou
1906 * créée de longue date.
1907 */
1908 $nextID = $this->db->nextId($table_name, false);
1909 $this->addToLog(
1910 __METHOD__.'(): db->nextId("'.$table_name.'", false);',
1911 VERBOSE_MODE
1912 );
1913 if ($this->f->isDatabaseError($nextID, true) === true) {
1914 // Appel de la methode de recuperation des erreurs
1915 $this->erreur_db(
1916 $res_seq->getDebugInfo(),
1917 $res_seq->getMessage(),
1918 'dossier_autorisation'
1919 );
1920 // Stop le traitement
1921 return false;
1922 }
1923
1924 /**
1925 * On retourne le numéro du dossier sur quatre caractères complétés
1926 * par des zéros. Exemple : '0012'
1927 */
1928 $numero_dossier = str_pad($nextID, 4, "0", STR_PAD_LEFT);
1929 return $numero_dossier;
1930 }
1931
1932 /**
1933 * Méthode permettant de récupérer les id des demandeur liés à la demande ou
1934 * liés au dossier d'autorisation
1935 **/
1936 function listeDemandeur($from, $id) {
1937 // Récupération des demandeurs de la base
1938 $sql = "SELECT demandeur.demandeur,
1939 demandeur.type_demandeur,
1940 lien_".$from."_demandeur.petitionnaire_principal
1941 FROM ".DB_PREFIXE."lien_".$from."_demandeur
1942 INNER JOIN ".DB_PREFIXE."demandeur
1943 ON demandeur.demandeur=lien_".$from."_demandeur.demandeur
1944 WHERE ".$from." = '".$id."'";
1945 $res = $this->f->db->query($sql);
1946 $this->f->addToLog("listeDemandeur() : db->query(\"".$sql."\")", VERBOSE_MODE);
1947 if ( database::isError($res)){
1948 die();
1949 }
1950 // Stoquage du résultat dans un tableau
1951 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
1952 if ($row['petitionnaire_principal'] == 't' AND
1953 $row['type_demandeur']=="petitionnaire") {
1954 $this->valIdDemandeur['petitionnaire_principal']=$row['demandeur'];
1955 } elseif ($row['petitionnaire_principal'] == 'f' AND
1956 $row['type_demandeur']=="petitionnaire"){
1957 $this->valIdDemandeur['petitionnaire'][]=$row['demandeur'];
1958 } elseif ($row['type_demandeur']=="delegataire"){
1959 $this->valIdDemandeur['delegataire']=$row['demandeur'];
1960 }
1961 }
1962 }
1963
1964 /**
1965 * Ajout de la liste des demandeurs
1966 */
1967 function formSpecificContent($maj) {
1968 if(!$this->correct AND $maj != 0) {
1969 $this->listeDemandeur("dossier_autorisation", $this->val[array_search('dossier_autorisation', $this->champs)]);
1970 }
1971 if($maj < 2 AND !$this->correct) {
1972 $linkable = true;
1973 } else {
1974 $linkable = false;
1975 }
1976
1977 // Conteneur de la listes des demandeurs
1978 echo "<div id=\"liste_demandeur\" class=\"demande_hidden_bloc col_12\">";
1979 echo "<fieldset class=\"cadre ui-corner-all ui-widget-content\">";
1980 echo " <legend class=\"ui-corner-all ui-widget-content ui-state-active\">"
1981 ._("Petitionnaire")."</legend>";
1982 // Si des demandeurs sont liés à la demande
1983 require_once "../obj/petitionnaire.class.php";
1984 require_once "../obj/delegataire.class.php";
1985
1986 // Affichage du bloc pétitionnaire principal / délégataire
1987 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
1988 echo "<div id=\"petitionnaire_principal_delegataire\">";
1989 // Affichage de la synthèse
1990 if (isset ($this->valIdDemandeur["petitionnaire_principal"]) AND
1991 !empty($this->valIdDemandeur["petitionnaire_principal"])) {
1992 $demandeur = new petitionnaire(
1993 $this->valIdDemandeur["petitionnaire_principal"],
1994 $this->f->db,false);
1995 $demandeur -> afficherSynthese("petitionnaire_principal", $linkable);
1996 $demandeur -> __destruct();
1997 }
1998 // Si en édition de formulaire
1999 if($maj < 2) {
2000 // Bouton d'ajout du pétitionnaire principal
2001 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2002 echo "<span id=\"add_petitionnaire_principal\"
2003 class=\"om-form-button add-16\">".
2004 _("Saisir le petitionnaire principal").
2005 "</span>";
2006 }
2007 // Bouton d'ajout du delegataire
2008 // L'ID DU DIV ET DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2009 echo "<div id=\"delegataire\">";
2010 if ($maj < 2 OR ($maj == 3 AND !empty($this->valIdDemandeur["delegataire"]))) {
2011 echo " <span class=\"om-icon om-icon-16 om-icon-fix arrow-right-16\">
2012 <!-- -->
2013 </span> ";
2014 }
2015 // Affichage de la synthèse
2016 if (isset ($this->valIdDemandeur["delegataire"]) AND
2017 !empty($this->valIdDemandeur["delegataire"])) {
2018 $demandeur = new delegataire($this->valIdDemandeur["delegataire"],
2019 $this->f->db,false);
2020 $demandeur -> afficherSynthese("delegataire", $linkable);
2021 $demandeur -> __destruct();
2022 }
2023 if($maj < 2) {
2024 echo "<span id=\"add_delegataire\"
2025 class=\"om-form-button add-16\">".
2026 _("Saisir un autre correspondant").
2027 "</span>";
2028 }
2029 echo "</div>";
2030
2031 echo "</div>";
2032 // Bloc des pétitionnaires secondaires
2033 // L'ID DU DIV SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2034 echo "<div id=\"listePetitionnaires\">";
2035
2036 // Affichage de la synthèse
2037 if (isset ($this->valIdDemandeur["petitionnaire"]) AND
2038 !empty($this->valIdDemandeur["petitionnaire"])) {
2039
2040 foreach ($this->valIdDemandeur["petitionnaire"] as $petitionnaire) {
2041 $demandeur = new petitionnaire($petitionnaire,
2042 $this->f->db,false);
2043 $demandeur -> afficherSynthese("petitionnaire", $linkable);
2044 $demandeur -> __destruct();
2045 }
2046
2047 }
2048 if ($maj < 2) {
2049 // L'ID DE L'INPUT SUIVANT EST NECESSAIRE AU BON FONCTIONNEMENT DU JS
2050 echo "<span id=\"add_petitionnaire\"
2051 class=\"om-form-button add-16\">".
2052 _("Ajouter un petitionnaire")
2053 ."</span>";
2054 }
2055 echo "</div>";
2056 echo "</fieldset>";
2057 echo "</div>";
2058 }
2059
2060
2061 /**
2062 * Méthode permettant de recalculer à tout moment les données en cours de
2063 * validité d'un dossier d'autorisation
2064 */
2065 function majDossierAutorisation() {
2066
2067 /*
2068 * Mise à jour des données (terrain, ref. cadastrales, demandeurs, lots)
2069 * si au moins un dossier a été accepté
2070 */
2071 // Initialisation des requêtes
2072 $sql_terrain = "SELECT dossier.terrain_references_cadastrales,
2073 dossier.terrain_adresse_voie_numero,
2074 dossier.terrain_adresse_voie,
2075 dossier.terrain_adresse_lieu_dit,
2076 dossier.terrain_adresse_localite,
2077 dossier.terrain_adresse_code_postal,
2078 dossier.terrain_adresse_bp,
2079 dossier.terrain_adresse_cedex,
2080 dossier.terrain_superficie
2081 FROM ".DB_PREFIXE."dossier";
2082
2083 $sql_lots = "SELECT lot.lot
2084 FROM ".DB_PREFIXE."lot
2085 JOIN ".DB_PREFIXE."dossier ON dossier.dossier = lot.dossier";
2086
2087 $sql_demandeurs = "SELECT lien_dossier_demandeur.demandeur, lien_dossier_demandeur.petitionnaire_principal,
2088 lien_dossier_demandeur.lien_dossier_demandeur, lien_dossier_demandeur.dossier
2089 FROM ".DB_PREFIXE."lien_dossier_demandeur
2090 LEFT JOIN ".DB_PREFIXE."dossier ON
2091 lien_dossier_demandeur.dossier = dossier.dossier";
2092 $sql_etat = "SELECT avis_decision.typeavis, avis_decision.avis_decision
2093 FROM ".DB_PREFIXE."dossier
2094 LEFT JOIN ".DB_PREFIXE."avis_decision ON
2095 dossier.avis_decision = avis_decision.avis_decision";
2096 // Récupération du nombre de dossiers d'instruction liés au dossier d'autorisation
2097 $sql_count_di = "SELECT count(*) FROM ".DB_PREFIXE."dossier as di
2098 LEFT JOIN ".DB_PREFIXE."avis_decision
2099 ON di.avis_decision = avis_decision.avis_decision
2100 WHERE di.dossier_autorisation = '".$this->getVal("dossier_autorisation")."'
2101 AND (di.version = 0
2102 OR (di.date_decision IS NOT NULL
2103 AND (avis_decision.typeavis='F'
2104 OR avis_decision.typeavis='A'
2105 )
2106 ))";
2107
2108 $count_di = $this->db->getOne($sql_count_di);
2109 $this->addToLog("majDossierAutorisation(): db->getone(\"".$sql_count_di."\")", VERBOSE_MODE);
2110 if(database::isError($count_di)) {
2111 // Appel de la methode de recuperation des erreurs
2112 $this->erreur_db($count_di->getDebugInfo(), $count_di->getMessage(), '');
2113 $this->addToLog('', 'majDossierAutorisation() : '.$count_di->getMessage(), __FUNCTION__);
2114 return false;
2115 }
2116 // Si pas de dossier : erreur
2117 if ($count_di == 0) {
2118 return false;
2119 } elseif ($count_di == 1) { // Cas P0 (en cours ou non) ou de plusieurs DI en cours
2120 $sql_where = " WHERE dossier.dossier_autorisation = '".$this->getVal("dossier_autorisation")."' AND version = 0";
2121 } else { // Cas ou un dossier d'instruction est soumis à arrété
2122 $sql_where = " WHERE dossier.dossier = (
2123 SELECT dossier.dossier
2124 FROM ".DB_PREFIXE."dossier
2125 JOIN ".DB_PREFIXE."avis_decision
2126 ON dossier.avis_decision = avis_decision.avis_decision
2127 WHERE dossier.dossier_autorisation = '".$this->getVal("dossier_autorisation")."'
2128 AND date_decision IS NOT NULL
2129 AND (avis_decision.typeavis='F'
2130 OR avis_decision.typeavis='A')
2131 ORDER BY version DESC
2132 LIMIT 1
2133 )";
2134 }
2135
2136 //terrain
2137 $res_terrain = $this->db->query($sql_terrain.$sql_where);
2138 $this->addToLog("majDossierAutorisation(): db->query(\"".$sql_terrain.$sql_where."\")", VERBOSE_MODE);
2139 if(database::isError($res_terrain)) {
2140 // Appel de la methode de recuperation des erreurs
2141 $this->erreur_db($res_terrain->getDebugInfo(), $res_terrain->getMessage(), '');
2142 $this->addToLog('', 'majDossierAutorisation() : '.$res_terrain->getMessage(), __FUNCTION__);
2143 return false;
2144 }
2145 $row_terrain = $res_terrain->fetchRow(DB_FETCHMODE_ASSOC);
2146 if($row_terrain != null) {
2147
2148 //On récupère l'arrondissement, si le code postal est renseigné dans
2149 //le dossier d'instruction
2150 if (isset($row_terrain['terrain_adresse_code_postal']) &&
2151 $row_terrain['terrain_adresse_code_postal'] !== "") {
2152
2153 $sql_arrondissement = "SELECT arrondissement
2154 FROM ".DB_PREFIXE."arrondissement
2155 WHERE code_postal = '".$row_terrain['terrain_adresse_code_postal']."'";
2156 $row_arrondissement = $this->db->getOne($sql_arrondissement);
2157 $this->addToLog("majDossierAutorisation(): db->getone(\"".$sql_arrondissement."\")", VERBOSE_MODE);
2158 $this->f->isDatabaseError($row_arrondissement);
2159
2160 $row_terrain['arrondissement'] = $row_arrondissement;
2161 }
2162
2163 // Tous les champs vides sont mis à NULL pour éviter les erreurs de base lors de l'update
2164 foreach ($row_terrain as $key => $champ) {
2165 if ($champ == "") {
2166 $row_terrain[$key] = NULL;
2167 }
2168 }
2169 $res_update_terrain = $this->db->autoExecute(DB_PREFIXE."dossier_autorisation",
2170 $row_terrain,
2171 DB_AUTOQUERY_UPDATE,
2172 "dossier_autorisation = '".$this->getVal("dossier_autorisation")."'");
2173 if(database::isError($res_update_terrain)) {
2174 // Appel de la methode de recuperation des erreurs
2175 $this->erreur_db($res_update_terrain->getDebugInfo(), $res_update_terrain->getMessage(), '');
2176 $this->addToLog('', 'majDossierAutorisation() : '.$res_update_terrain->getMessage(), __FUNCTION__);
2177 return false;
2178 }
2179 }
2180
2181 // Lots / demandeur
2182 // Suppression des anciens liens entre les lots et le DA
2183 $valLot['dossier_autorisation'] = NULL;
2184 $res_update_lots = $this->db->autoExecute(DB_PREFIXE."lot",
2185 $valLot,
2186 DB_AUTOQUERY_UPDATE,
2187 "dossier_autorisation='".$this->getVal("dossier_autorisation")."'");
2188 $sql = "SELECT count(*) FROM ".DB_PREFIXE."lot WHERE dossier_autorisation='".$this->getVal("dossier_autorisation")."'";
2189 if(database::isError($res_update_lots)) {
2190 // Appel de la methode de recuperation des erreurs
2191 $this->erreur_db($res_update_terrain->getDebugInfo(), $res_update_terrain->getMessage(), '');
2192 $this->addToLog('', 'majDossierAutorisation() : '.$res_update_terrain->getMessage(), __FUNCTION__);
2193 return false;
2194 }
2195 // Suppression des anciens liens dossier_autorisation/demandeurs
2196 $sql_delete_liens_da_demandeur = "DELETE FROM ".DB_PREFIXE."lien_dossier_autorisation_demandeur
2197 WHERE dossier_autorisation='".$this->getVal("dossier_autorisation")."'";
2198 $res_delete_liens_da_demandeur = $this->db->query($sql_delete_liens_da_demandeur);
2199 $this->addToLog("majDossierAutorisation(): db->query(\"".$sql_delete_liens_da_demandeur."\")", VERBOSE_MODE);
2200 if(database::isError($res_delete_liens_da_demandeur)) {
2201 // Appel de la methode de recuperation des erreurs
2202 $this->erreur_db($res_delete_liens_da_demandeur->getDebugInfo(), $res_delete_liens_da_demandeur->getMessage(), '');
2203 $this->addToLog('', 'majDossierAutorisation() : '.$res_delete_liens_da_demandeur->getMessage(), __FUNCTION__);
2204 return false;
2205 }
2206 // Si il ya des lots liés on les remonte au DA et on omet les demandeurs
2207 // car ils sont liés aux lots
2208 $res_lots = $this->db->query($sql_lots.$sql_where);
2209 $this->addToLog("majDossierAutorisation(): db->query(\"".$sql_lots.$sql_where."\")", VERBOSE_MODE);
2210 if(database::isError($res_lots)) {
2211 // Appel de la methode de recuperation des erreurs
2212 $this->erreur_db($res_lots->getDebugInfo(), $res_lots->getMessage(), '');
2213 $this->addToLog('', 'majDossierAutorisation() : '.$res_lots->getMessage(), __FUNCTION__);
2214 return false;
2215 }
2216
2217 // XXX Si il existe des lots (auxquels les demandeurs sont lié) faut-il recupérer la liste des demandeurs liés au DI ?
2218 //if ($res_lots->numRows() > 0) {
2219 // Définition du lien entre lot et dossier_autorisation pour chaque lot
2220 $valLotUpdate['dossier_autorisation'] = $this->getVal("dossier_autorisation");
2221 // XXX Sauvegarde des id des lots pour traitement ultérieur
2222 // les lots ne devraient pas être liés au DA mais une copie de ces lots
2223 // devraient l'être.
2224 $liste_lots = array();
2225 // On lie chaque lot en définissant l'id du dossier d'autorisation
2226 while ($rowlot = $res_lots->fetchRow(DB_FETCHMODE_ASSOC)) {
2227 $res_lots_update = $this->db->autoExecute(DB_PREFIXE."lot",
2228 $valLotUpdate,
2229 DB_AUTOQUERY_UPDATE,
2230 "lot=".$rowlot['lot']);
2231 $liste_lots[] = $rowlot['lot'];
2232 if(database::isError($res_lots_update)) {
2233 // Appel de la methode de recuperation des erreurs
2234 $this->erreur_db($res_lots_update->getDebugInfo(), $res_lots_update->getMessage(), '');
2235 $this->addToLog('', 'majDossierAutorisation() : '.$res_lots_update->getMessage(), __FUNCTION__);
2236 return false;
2237 }
2238 }
2239 //} else { // Si pas de lot liaison avec les demandeurs
2240 // Récupération de la liste des demandeurs
2241 $res_demandeurs = $this->db->query($sql_demandeurs.$sql_where);
2242 $this->addToLog("majDossierAutorisation(): db->query(\"".$sql_demandeurs.$sql_where."\")", VERBOSE_MODE);
2243 if(database::isError($res_demandeurs)) {
2244 // Appel de la methode de recuperation des erreurs
2245 $this->erreur_db($res_demandeurs->getDebugInfo(), $res_demandeurs->getMessage(), '');
2246 $this->addToLog('', 'majDossierAutorisation() : '.$res_demandeurs->getMessage(), __FUNCTION__);
2247 return false;
2248 }
2249 // Définition de l'id du DA
2250 $valDemandeurUpdate["lien_dossier_autorisation_demandeur"] = NULL;
2251 $valDemandeurUpdate['dossier_autorisation'] = $this->getVal("dossier_autorisation");
2252 // Pour chaque demandeur on créer un lien avec le DA
2253 while ($rowDemandeur = $res_demandeurs->fetchRow(DB_FETCHMODE_ASSOC)) {
2254 // Ajout de l'id du demandeur et du flag petitionnaire_principal
2255 // aux données à insérer
2256 $valDemandeurUpdate["demandeur"] = $rowDemandeur["demandeur"];
2257 $valDemandeurUpdate["petitionnaire_principal"] =
2258 $rowDemandeur["petitionnaire_principal"];
2259 // Instanciation d'un lien dossier_autorisation/demandeur en ajout
2260 require_once "../obj/lien_dossier_autorisation_demandeur.class.php";
2261 $ldad = new lien_dossier_autorisation_demandeur("]", $this->db, DEBUG);
2262 // Ajout d'un enregistrement avec les données des liens
2263 $ldad->ajouter($valDemandeurUpdate, $this->db, DEBUG);
2264 }
2265 //}
2266
2267
2268 /**
2269 * Mise à jour des dates
2270 */
2271 // Requêtes permettant de les recupérer
2272 $sql_date_depot_decision_validite =
2273 "SELECT
2274 MIN(dossier.date_depot) as date_depot,
2275 MIN(dossier.date_decision) as date_decision,
2276 MAX(dossier.date_validite) as date_validite
2277 FROM ".DB_PREFIXE."dossier
2278 WHERE dossier.dossier_autorisation='".
2279 $this->getVal("dossier_autorisation")."'";
2280
2281 $sql_date_doc_daact =
2282 "SELECT
2283 MAX(dossier.date_chantier) as date_chantier,
2284 MAX(dossier.date_achevement) as date_achevement
2285 FROM ".DB_PREFIXE."dossier
2286 LEFT OUTER JOIN ".DB_PREFIXE."avis_decision ON
2287 dossier.avis_decision = avis_decision.avis_decision
2288 WHERE dossier.dossier_autorisation = '".
2289 $this->getVal("dossier_autorisation")."'
2290 AND date_decision IS NOT NULL
2291 AND (avis_decision.typeavis='F'
2292 OR avis_decision.typeavis='A')";
2293 // Récupération des infos avec la 1ere requête
2294 $res_date_depot_decision_validite =
2295 $this->db->query($sql_date_depot_decision_validite);
2296 $this->addToLog("majDossierAutorisation(): db->query(\"".
2297 $sql_date_depot_decision_validite."\")", VERBOSE_MODE);
2298 if(database::isError($res_date_depot_decision_validite)) {
2299 // Appel de la methode de recuperation des erreurs
2300 $this->erreur_db(
2301 $res_date_depot_decision_validite->getDebugInfo(),
2302 $res_date_depot_decision_validite->getMessage(),
2303 ''
2304 );
2305 $this->addToLog('', 'majDossierAutorisation() : '.$res_date_depot_decision_validite->getMessage(), __FUNCTION__);
2306 return false;
2307 }
2308 $row_date_depot_decision_validite =
2309 $res_date_depot_decision_validite->fetchRow(DB_FETCHMODE_ASSOC);
2310 // Récupération des infos avec la 2nd requête
2311 $res_date_doc_daact = $this->db->query($sql_date_doc_daact);
2312 $this->addToLog("majDossierAutorisation(): db->query(\"".
2313 $sql_date_doc_daact."\")", VERBOSE_MODE);
2314 if(database::isError($res_date_doc_daact)) {
2315 // Appel de la methode de recuperation des erreurs
2316 $this->erreur_db($res_date_doc_daact->getDebugInfo(),
2317 $res_date_doc_daact->getMessage(), '');
2318 $this->addToLog('', 'majDossierAutorisation() : '.$res_date_doc_daact->getMessage(), __FUNCTION__);
2319 return false;
2320 }
2321 $row_date_doc_daact = $res_date_doc_daact->fetchRow(DB_FETCHMODE_ASSOC);
2322 // Fusion des 2 résultats
2323 $row_date = array_merge($row_date_depot_decision_validite, $row_date_doc_daact);
2324 // Si pas de date on remplace "" par NULL pour éviter
2325 // les erreurs de base de données
2326 foreach($row_date as $key => $date) {
2327 if($date == "") {
2328 $row_date[$key] = null;
2329 }
2330 }
2331 // Mise à jour du DA avec ces nouvelles dates
2332 $res_update_date = $this->db->autoExecute(
2333 DB_PREFIXE."dossier_autorisation",
2334 $row_date,
2335 DB_AUTOQUERY_UPDATE,
2336 "dossier_autorisation = '".$this->getVal("dossier_autorisation")."'"
2337 );
2338 if(database::isError($res_update_date)) {
2339 // Appel de la methode de recuperation des erreurs
2340 $this->erreur_db(
2341 $res_update_date->getDebugInfo(),
2342 $res_update_date->getMessage(),
2343 ''
2344 );
2345 $this->addToLog('', 'majDossierAutorisation() : '.$res_update_date->getMessage(), __FUNCTION__);
2346 return false;
2347 }
2348
2349 /**
2350 * Mise à jour de l'état
2351 */
2352 $sql_etat .= " ".$sql_where;
2353 $res_etat = $this->db->query($sql_etat);
2354 $this->addToLog(
2355 "majDossierAutorisation(): db->query(\"".$sql_etat."\")",
2356 VERBOSE_MODE
2357 );
2358 if(database::isError($res_etat)) {
2359 // Appel de la methode de recuperation des erreurs
2360 $this->erreur_db($res_etat->getDebugInfo(), $res_etat->getMessage(), '');
2361 $this->addToLog('', 'majDossierAutorisation() : '.$res_etat->getMessage(), __FUNCTION__);
2362 return false;
2363 }
2364
2365 $row_etat = $res_etat->fetchRow(DB_FETCHMODE_ASSOC);
2366 $etatDA = array();
2367
2368 // Cas initial : on défini les trois valeurs par défaut
2369 // (elles seront écrasées si $res_encours->numRows() > 1)
2370
2371 // Correspondance entre typeavis et etat_dossier_autorisation
2372 switch ($row_etat['typeavis']) {
2373 case 'F':
2374 // typeavis F => Accordé
2375 $etatDA['etat_dernier_dossier_instruction_accepte'] = 2;
2376 $etatDA['etat_dossier_autorisation'] = 2;
2377 break;
2378 case 'D':
2379 // typeavis D => Refusé
2380 $etatDA['etat_dernier_dossier_instruction_accepte'] = 4;
2381 $etatDA['etat_dossier_autorisation'] = 4;
2382 break;
2383 case 'A':
2384 // typeavis A => Abandonné
2385 $etatDA['etat_dernier_dossier_instruction_accepte'] = 3;
2386 $etatDA['etat_dossier_autorisation'] = 3;
2387 break;
2388 default:
2389 // typeavis '' => En cours
2390 $etatDA['etat_dernier_dossier_instruction_accepte'] = null;
2391 $etatDA['etat_dossier_autorisation'] = 1;
2392 break;
2393 }
2394 $etatDA['avis_decision'] = $row_etat['avis_decision'];
2395
2396
2397 foreach($etatDA as $key=>$val) {
2398 if($val=="") {
2399 $etatDA[$key] = null;
2400 }
2401 }
2402
2403 // Mise à jour du DA avec ces nouvelles dates
2404 $res_update_etat = $this->db->autoExecute(
2405 DB_PREFIXE."dossier_autorisation",
2406 $etatDA,
2407 DB_AUTOQUERY_UPDATE,
2408 "dossier_autorisation = '".$this->getVal("dossier_autorisation")."'"
2409 );
2410 if(database::isError($res_update_date)) {
2411 // Appel de la methode de recuperation des erreurs
2412 $this->erreur_db(
2413 $res_update_date->getDebugInfo(),
2414 $res_update_date->getMessage(),
2415 ''
2416 );
2417 $this->addToLog('', 'majDossierAutorisation() : '.$res_update_date->getMessage(), __FUNCTION__);
2418 return false;
2419 }
2420
2421 // Si le champ des références cadastrales n'est pas vide
2422 if ($this->getVal('terrain_references_cadastrales')
2423 != $row_terrain['terrain_references_cadastrales']) {
2424
2425 // On supprime toutes les lignes de la table
2426 // dossier_autorisation_parcelle qui font référence au
2427 // dossier d'autorisation en cours de suppression
2428 $this->supprimer_dossier_autorisation_parcelle(
2429 $this->getVal('dossier_autorisation')
2430 );
2431
2432 // Ajout des parcelles dans la table dossier_autorisation_parcelle
2433 $this->ajouter_dossier_autorisation_parcelle(
2434 $this->getVal('dossier_autorisation'),
2435 $row_terrain['terrain_references_cadastrales']
2436 );
2437
2438 }
2439
2440 // Mise à jour des données techniques du dossier d'instruction
2441 $sql_donnees_techniques = "SELECT donnees_techniques
2442 FROM ".DB_PREFIXE."donnees_techniques
2443 INNER JOIN ".DB_PREFIXE."dossier ON
2444 dossier.dossier=donnees_techniques.dossier_instruction ";
2445 if ($count_di == 1) {
2446 $sql_donnees_techniques .= $sql_where;
2447 } else { // Cas ou un dossier d'instruction est soumis à arrété
2448 $sql_donnees_techniques .= " WHERE dossier.dossier = (
2449 SELECT dossier.dossier
2450 FROM ".DB_PREFIXE."dossier
2451 JOIN ".DB_PREFIXE."avis_decision
2452 ON dossier.avis_decision = avis_decision.avis_decision
2453 JOIN ".DB_PREFIXE."donnees_techniques
2454 ON donnees_techniques.dossier_instruction = dossier.dossier
2455 WHERE dossier.dossier_autorisation = '".$this->getVal("dossier_autorisation")."'
2456 AND (date_decision IS NOT NULL
2457 AND (avis_decision.typeavis='F'
2458 OR avis_decision.typeavis='A')
2459 OR version=0)
2460 ORDER BY version DESC
2461 LIMIT 1
2462 )";
2463 }
2464
2465 $donnees_techniques = $this->db->getOne($sql_donnees_techniques);
2466 $this->addToLog(
2467 "majDossierAutorisation(): db->query(\"".$sql_donnees_techniques."\")",
2468 VERBOSE_MODE
2469 );
2470 if(database::isError($donnees_techniques)) {
2471 // Appel de la methode de recuperation des erreurs
2472 $this->erreur_db(
2473 $donnees_techniques->getDebugInfo(),
2474 $donnees_techniques->getMessage(),
2475 ''
2476 );
2477 $this->addToLog('', 'majDossierAutorisation() : '.$donnees_techniques->getMessage(), __FUNCTION__);
2478 return false;
2479 }
2480 // Liaison des nouvelles données données techniques au DA
2481 require_once "../obj/donnees_techniques.class.php";
2482 if($donnees_techniques === null) {
2483 $donnees_techniques = "]";
2484 }
2485 $dti = new donnees_techniques($donnees_techniques, $this->db, DEBUG);
2486
2487 // Création du tableau de valeurs pour report des DT sur le DA
2488 $dti->setValFFromVal();
2489 unset($dti->valF["tab_surface"]);
2490 unset($dti->valF["tab_tax_su_princ"]);
2491 unset($dti->valF["tab_tax_su_heber"]);
2492 unset($dti->valF["tab_tax_su_secon"]);
2493 unset($dti->valF["tab_tax_su_tot"]);
2494 unset($dti->valF["tab_tax_su_non_habit_surf"]);
2495 unset($dti->valF["tab_tax_su_parc_statio_expl_comm"]);
2496 unset($dti->valF["tab_tax_am"]);
2497 unset($dti->valF["tab_erp_eff"]);
2498 // On récupère l'instance des DT du DA
2499 $sql = "SELECT donnees_techniques FROM ".DB_PREFIXE."donnees_techniques
2500 WHERE dossier_autorisation='".$this->getVal($this->clePrimaire)."'";
2501
2502 $dt_id = $this->db->getOne($sql);
2503 $this->addToLog(
2504 "get_da_dt(): db->query(\"".$sql."\")",
2505 VERBOSE_MODE
2506 );
2507 if($this->f->isDatabaseError($dt_id, true)) {
2508 return false;
2509 }
2510 if($dt_id === null) {
2511 $dt_id = "]";
2512 }
2513 // On instancie les données techniques
2514 $dta = new donnees_techniques($dt_id, $this->db, DEBUG);
2515 // On lie se tableau de DT au DA
2516 $dti->valF["dossier_autorisation"] = $this->getVal($this->clePrimaire);
2517 // On délie les données du DI et lots
2518 $dti->valF["dossier_instruction"] = null;
2519 $dti->valF["lot"] = null;
2520 $dti->valF["donnees_techniques"] = $dta->getVal("donnees_techniques");
2521 if($dt_id != "]") {
2522 // On met à jour
2523 $dta->setParameter('maj',1);
2524 if($dta->modifier($dti->valF, $this->db, DEBUG) === false) {
2525 return false;
2526 }
2527 } else {
2528 // On ajoute
2529 $dta->setParameter('maj',0);
2530 if($dta->ajouter($dti->valF, $this->db, DEBUG) === false) {
2531 return false;
2532 }
2533 }
2534
2535 return true;
2536 }
2537
2538
2539 /**
2540 * Ajoute les parcelles du dossier d'autorisation passé en paramètre.
2541 *
2542 * @param string $dossier_autorisation Identifiant du dossier
2543 * @param string $terrain_references_cadastrales Références cadastrales du
2544 * dossier
2545 */
2546 function ajouter_dossier_autorisation_parcelle(
2547 $dossier_autorisation,
2548 $terrain_references_cadastrales
2549 ) {
2550
2551 // Parse les parcelles
2552 $list_parcelles = $this->f->parseParcelles($terrain_references_cadastrales, $this->getVal('om_collectivite'));
2553
2554 // Fichier requis
2555 require_once "../obj/dossier_autorisation_parcelle.class.php";
2556
2557 // A chaque parcelle une nouvelle ligne est créée dans la table
2558 // dossier_parcelle
2559 foreach ($list_parcelles as $parcelle) {
2560
2561 // Instance de la classe dossier_parcelle
2562 $dossier_autorisation_parcelle =
2563 new dossier_autorisation_parcelle("]", $this->db, DEBUG);
2564
2565 // Valeurs à sauvegarder
2566 $value = array(
2567 'dossier_autorisation_parcelle' => '',
2568 'dossier_autorisation' => $dossier_autorisation,
2569 'parcelle' => '',
2570 'libelle' => $parcelle['quartier']
2571 .$parcelle['section']
2572 .$parcelle['parcelle']
2573 );
2574
2575 // Ajout de la ligne
2576 $dossier_autorisation_parcelle->ajouter($value, $this->db, DEBUG);
2577 }
2578
2579 }
2580
2581 /**
2582 * Supprime les parcelles du dossier d'autorisation passé en paramètre
2583 * @param string $dossier_autorisation Identifiant du dossier
2584 */
2585 function supprimer_dossier_autorisation_parcelle($dossier_autorisation) {
2586
2587 // Suppression des parcelles du dossier d'autorisation
2588 $sql = "DELETE FROM ".DB_PREFIXE."dossier_autorisation_parcelle
2589 WHERE dossier_autorisation='".$dossier_autorisation."'";
2590 $res = $this->db->query($sql);
2591 $this->addToLog("supprimer_dossier_autorisation_parcelle() db->query(\"".$sql."\");", VERBOSE_MODE);
2592 database::isError($res);
2593
2594 }
2595
2596 /**
2597 * Permet d’effectuer des actions après l’insertion des données dans la base
2598 */
2599 function triggerajouterapres($id, &$db, $val, $DEBUG) {
2600
2601 // Si le champ des références cadastrales n'est pas vide
2602 if ($this->valF['terrain_references_cadastrales'] != '') {
2603
2604 // Ajout des parcelles dans la table dossier_autorisation_parcelle
2605 $this->ajouter_dossier_autorisation_parcelle($this->valF['dossier_autorisation'],
2606 $this->valF['terrain_references_cadastrales']);
2607
2608 }
2609
2610 }
2611
2612 /**
2613 * Surcharge du fil d'ariane en contexte formulaire.
2614 *
2615 * @param string $ent Chaîne initiale
2616 *
2617 * @return chaîne de sortie
2618 */
2619 function getFormTitle($ent) {
2620 //
2621 if (intval($this->getParameter("maj")) === 4) {
2622 // XXX - Manque demandeur
2623 $ent = _("Autorisation")." -> "._("Dossier d'autorisation")." -> ".$this->getVal('dossier_autorisation_libelle');
2624 }
2625 //
2626 return $ent;
2627 }
2628
2629 /**
2630 * Surcharge du fil d'ariane en contexte sous-formulaire.
2631 *
2632 * @param string $subent Chaîne initiale
2633 *
2634 * @return chaîne de sortie
2635 */
2636 function getSubFormTitle($subent) {
2637 //
2638 if (intval($this->getParameter("maj")) === 4) {
2639 // XXX - Manque demandeur
2640 $subent = _("Autorisation")." -> "._("Dossier d'autorisation")." -> ".$this->getVal('dossier_autorisation_libelle');
2641 }
2642 //
2643 return $subent;
2644 }
2645
2646
2647 /**
2648 * Permet de générer une clé 4*4 chiffres, séparés par des "-".
2649 * Cette clé permet au citoyen de se connecter au portail pour consulter son
2650 * autorisation.
2651 * Exemple de clé générée : 0000-1111-2222-3333.
2652 *
2653 * @return string
2654 */
2655 public function generate_citizen_access_key() {
2656 // Initialisation d'un tableau
2657 $number_list = array();
2658
2659 // Génération aléatoire d'un nombre sur 4 caractères, 4 fois
2660 for ($i = 0; $i < 4; $i++) {
2661 $number_list[] = str_pad(mt_rand(0, 9999), 4, 0, STR_PAD_LEFT);
2662 }
2663
2664 // Transformation en chaîne tout en séparant les nombres par un "-"
2665 $result = implode('-', $number_list);
2666
2667 //
2668 return $result;
2669 }
2670
2671
2672 /**
2673 * Permet de modifier le dossier d'autorisation pour mettre à jour la clé
2674 * d'accès au portail citoyen, si celle-ci n'existe pas déjà.
2675 * Il est possible de forcer sa génération.
2676 *
2677 * @param boolean $force Force la génération de la clé.
2678 *
2679 * @return boolean
2680 */
2681 public function update_citizen_access_key($force = false) {
2682 // Si une clé d'accès citoyen existe déjà et que la génération n'est pas
2683 // forcée
2684 if ($force == false &&
2685 ($this->getVal('cle_acces_citoyen') != ""
2686 || $this->getVal('cle_acces_citoyen') != null)) {
2687 //
2688 return true;
2689 }
2690
2691 // Génération de la clé d'accès au portail citoyen
2692 $citizen_access_key = $this->generate_citizen_access_key();
2693
2694 // Valeurs à mettre à jour
2695 $valF = array();
2696 // Récupération la valeur des champs
2697 foreach($this->champs as $key => $champ) {
2698 //
2699 $valF[$champ] = $this->val[$key];
2700 }
2701 $valF["cle_acces_citoyen"] = $citizen_access_key;
2702
2703 // Modification
2704 $update = $this->modifier($valF);
2705
2706 // Si la modification échoue
2707 if ($update !== true) {
2708 //
2709 return false;
2710 }
2711
2712 //
2713 return true;
2714 }
2715
2716
2717 }// fin classe
2718
2719 ?>

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26