1 |
<?php |
2 |
/** |
3 |
* |
4 |
* @package openfoncier |
5 |
* @version SVN : $Id: dossier_instruction.inc.php 6128 2016-03-08 15:43:42Z jymadier $ |
6 |
*/ |
7 |
|
8 |
/*Etend la classe dossier*/ |
9 |
include('../sql/pgsql/dossier.inc.php'); |
10 |
include "../sql/pgsql/app_om_tab_common_select.inc.php"; |
11 |
|
12 |
/*Titre de la page*/ |
13 |
$ent = _("instruction")." -> "._("dossiers d'instruction"); |
14 |
|
15 |
$tab_title = _("DI"); |
16 |
|
17 |
// Pour le formulaire de géocodage par lot |
18 |
// Change le nom de l'onglet principal et cache les autres onglets |
19 |
if ($f->get_submitted_get_value('action') === '126'){ |
20 |
$tab_title = _("Géolocalisation des dossiers"); |
21 |
$sousformulaire = array(); |
22 |
} |
23 |
|
24 |
/* Test SQL pour récupérer les bons champs selon la qualité du demandeur : |
25 |
* particulier ou personne morale*/ |
26 |
$case_demandeur = "CASE WHEN demandeur.qualite='particulier' |
27 |
THEN TRIM(CONCAT(demandeur.particulier_nom, ' ', demandeur.particulier_prenom)) |
28 |
ELSE TRIM(CONCAT(demandeur.personne_morale_raison_sociale, ' ', demandeur.personne_morale_denomination)) |
29 |
END"; |
30 |
|
31 |
/*Formatage de l'adresse du terrain, concatenantion de plusieurs champs pour les |
32 |
* mettrent dans une seule colonne*/ |
33 |
$trim_concat_terrain = ' |
34 |
TRIM( |
35 |
CASE |
36 |
WHEN dossier.adresse_normalisee IS NULL |
37 |
OR TRIM(dossier.adresse_normalisee) = \'\' |
38 |
THEN |
39 |
'.DB_PREFIXE.'adresse( |
40 |
dossier.terrain_adresse_voie_numero::text, |
41 |
dossier.terrain_adresse_voie::text, |
42 |
\'\'::text, |
43 |
dossier.terrain_adresse_lieu_dit::text, |
44 |
dossier.terrain_adresse_bp::text, |
45 |
dossier.terrain_adresse_code_postal::text, |
46 |
dossier.terrain_adresse_localite::text, |
47 |
dossier.terrain_adresse_cedex::text, |
48 |
\'\'::text, |
49 |
\' \'::text |
50 |
) |
51 |
ELSE |
52 |
dossier.adresse_normalisee |
53 |
END |
54 |
) as "'.__("localisation").'"'; |
55 |
|
56 |
/*Tables sur lesquels la requête va s'effectuer*/ |
57 |
$table = sprintf( |
58 |
'%1$sdossier |
59 |
-- Recherche le pétitionnaire principal du dossier (unique !) |
60 |
LEFT JOIN ( |
61 |
SELECT |
62 |
* |
63 |
FROM |
64 |
%1$slien_dossier_demandeur |
65 |
INNER JOIN %1$sdemandeur |
66 |
ON demandeur.demandeur = lien_dossier_demandeur.demandeur |
67 |
WHERE |
68 |
lien_dossier_demandeur.petitionnaire_principal IS TRUE |
69 |
AND LOWER(demandeur.type_demandeur) = LOWER(\'petitionnaire\') |
70 |
) as demandeur |
71 |
ON demandeur.dossier = dossier.dossier |
72 |
-- Recherche le type de DATD |
73 |
LEFT JOIN %1$sdossier_instruction_type |
74 |
ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type |
75 |
LEFT JOIN %1$sdossier_autorisation_type_detaille |
76 |
ON dossier_autorisation_type_detaille.dossier_autorisation_type_detaille = dossier_instruction_type.dossier_autorisation_type_detaille |
77 |
-- Recherche l instructeur du dossier |
78 |
LEFT JOIN %1$sinstructeur |
79 |
ON dossier.instructeur = instructeur.instructeur |
80 |
LEFT JOIN %1$som_utilisateur |
81 |
ON instructeur.om_utilisateur = om_utilisateur.om_utilisateur |
82 |
-- Recherche l instructeur 2 du dossier |
83 |
LEFT JOIN %1$sinstructeur as instructeur_secondaire |
84 |
ON dossier.instructeur_2 = instructeur_secondaire.instructeur |
85 |
LEFT JOIN %1$som_utilisateur as utilisateur_2 |
86 |
ON instructeur_secondaire.om_utilisateur = utilisateur_2.om_utilisateur |
87 |
-- Recherche l etat du dossier |
88 |
LEFT JOIN %1$setat |
89 |
ON dossier.etat = etat.etat |
90 |
-- Recherche la division de rattachement du dossier (différente de celle de l instructeur) |
91 |
LEFT JOIN %1$sdivision |
92 |
ON dossier.division = division.division |
93 |
-- Recherche l avis de décision |
94 |
LEFT JOIN %1$savis_decision |
95 |
ON avis_decision.avis_decision=dossier.avis_decision |
96 |
-- Recherche la collectivite de rattachement du dossier |
97 |
LEFT JOIN %1$som_collectivite |
98 |
ON dossier.om_collectivite=om_collectivite.om_collectivite |
99 |
-- Recherche l arrondissement du dossier |
100 |
LEFT JOIN %1$sarrondissement |
101 |
ON arrondissement.code_postal = dossier.terrain_adresse_code_postal |
102 |
-- Récupère la demande qui a créé le type dossier du dossier |
103 |
LEFT JOIN (%1$sdemande |
104 |
JOIN %1$sdemande_type |
105 |
ON demande.demande_type = demande_type.demande_type |
106 |
) |
107 |
ON demande.dossier_instruction = dossier.dossier |
108 |
AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type |
109 |
', |
110 |
DB_PREFIXE |
111 |
); |
112 |
if ($f->is_option_dossier_commune_enabled()) { |
113 |
$table .= " |
114 |
LEFT OUTER JOIN ".DB_PREFIXE."commune |
115 |
ON commune.commune = dossier.commune |
116 |
"; |
117 |
} |
118 |
|
119 |
$nature_travaux_from = "LEFT JOIN ( |
120 |
SELECT ntc.dossier, string_agg(ntc.libelle::text, '\n' order by ntc.libelle) as libelle |
121 |
FROM |
122 |
(SELECT DISTINCT |
123 |
dossier, |
124 |
famille_travaux.libelle as famille_travaux, |
125 |
CONCAT(famille_travaux.libelle, ' / ', nature_travaux.libelle) as libelle |
126 |
FROM |
127 |
".DB_PREFIXE."lien_dossier_nature_travaux |
128 |
INNER JOIN |
129 |
".DB_PREFIXE."nature_travaux |
130 |
ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux |
131 |
INNER JOIN |
132 |
".DB_PREFIXE."famille_travaux |
133 |
ON nature_travaux.famille_travaux = famille_travaux.famille_travaux ORDER BY famille_travaux.libelle) as ntc |
134 |
GROUP BY dossier ORDER BY libelle) as nature_travaux ON nature_travaux.dossier = dossier.dossier |
135 |
"; |
136 |
// Ajout des colonnes concernant la demat |
137 |
if ($f->get_submitted_get_value('mode') === 'export_csv') { |
138 |
// Jointure permettant d'afficher l'id platau du service consultant et le |
139 |
// libellé du service consultant dans les exports si le mode service consulté est |
140 |
// actif |
141 |
$table .= $f->is_option_mode_service_consulte_enabled() === true ? |
142 |
'LEFT JOIN '.DB_PREFIXE.'consultation_entrante |
143 |
ON dossier.dossier = consultation_entrante.dossier |
144 |
' : |
145 |
''; |
146 |
$table .= |
147 |
"LEFT JOIN |
148 |
(SELECT |
149 |
dossier, |
150 |
external_uid |
151 |
FROM |
152 |
".DB_PREFIXE."lien_id_interne_uid_externe |
153 |
WHERE object = 'dossier' |
154 |
AND category = 'platau' |
155 |
) AS dossier_platau |
156 |
ON |
157 |
dossier_platau.dossier = dossier.dossier |
158 |
LEFT JOIN |
159 |
(SELECT |
160 |
dossier, |
161 |
external_uid |
162 |
FROM |
163 |
".DB_PREFIXE."lien_id_interne_uid_externe |
164 |
WHERE object = 'dossier_consultation' |
165 |
AND category = 'platau' |
166 |
) AS consultation_platau |
167 |
ON |
168 |
consultation_platau.dossier = dossier.dossier |
169 |
LEFT JOIN |
170 |
(SELECT |
171 |
dossier, |
172 |
ARRAY_TO_STRING(ARRAY_AGG(external_uid ORDER BY external_uid ASC), ', ') AS external_uid |
173 |
FROM |
174 |
".DB_PREFIXE."lien_id_interne_uid_externe |
175 |
WHERE |
176 |
object = 'piece' |
177 |
AND category = 'platau' |
178 |
GROUP BY |
179 |
dossier) AS pieces_platau |
180 |
ON |
181 |
pieces_platau.dossier = dossier.dossier |
182 |
LEFT JOIN |
183 |
(SELECT |
184 |
dossier, |
185 |
ARRAY_TO_STRING(ARRAY_AGG(object || ' : ' || external_uid), ', ') AS external_uid |
186 |
FROM |
187 |
".DB_PREFIXE."lien_id_interne_uid_externe |
188 |
WHERE |
189 |
object != 'piece' |
190 |
AND object != 'dossier' |
191 |
AND object != 'dossier_consultation' |
192 |
AND category = 'platau' |
193 |
GROUP BY |
194 |
dossier) AS autres_platau |
195 |
ON |
196 |
autres_platau.dossier = dossier.dossier |
197 |
"; |
198 |
$nature_travaux_from = "LEFT JOIN ( |
199 |
SELECT ftc.dossier, string_agg(ftc.libelle::text, ', ') as famille_travaux_libelle |
200 |
FROM |
201 |
(SELECT DISTINCT |
202 |
dossier, |
203 |
famille_travaux.libelle |
204 |
FROM |
205 |
".DB_PREFIXE."lien_dossier_nature_travaux |
206 |
INNER JOIN |
207 |
".DB_PREFIXE."nature_travaux |
208 |
ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux |
209 |
INNER JOIN |
210 |
".DB_PREFIXE."famille_travaux |
211 |
ON nature_travaux.famille_travaux = famille_travaux.famille_travaux |
212 |
ORDER BY famille_travaux.libelle) as ftc |
213 |
GROUP BY dossier) as famille_travaux ON famille_travaux.dossier = dossier.dossier |
214 |
LEFT JOIN ( |
215 |
SELECT ntc.dossier, string_agg(ntc.libelle::text, ', ') as nature_travaux_libelle |
216 |
FROM |
217 |
(SELECT DISTINCT |
218 |
dossier, |
219 |
nature_travaux.libelle |
220 |
FROM |
221 |
".DB_PREFIXE."lien_dossier_nature_travaux |
222 |
INNER JOIN |
223 |
".DB_PREFIXE."nature_travaux |
224 |
ON lien_dossier_nature_travaux.nature_travaux = nature_travaux.nature_travaux |
225 |
ORDER BY nature_travaux.libelle) as ntc |
226 |
GROUP BY dossier) as nature_travaux ON nature_travaux.dossier = dossier.dossier |
227 |
"; |
228 |
} |
229 |
|
230 |
$champ_date_depot_mairie = 'to_char(dossier.date_depot_mairie ,\'DD/MM/YYYY\') as "'._("date_depot_mairie").'"'; |
231 |
|
232 |
/*Champs du début de la requête*/ |
233 |
$champAffiche_debut_commun = array( |
234 |
'dossier.dossier as "'._("dossier").'"', |
235 |
'dossier.geom as "geom_picto"', |
236 |
'demande.source_depot as "demat_picto"', |
237 |
$select__dossier_libelle__column_as, |
238 |
); |
239 |
if ($f->is_option_dossier_commune_enabled()) { |
240 |
$champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"'; |
241 |
} |
242 |
array_push($champAffiche_debut_commun, |
243 |
$case_demandeur.' as "'._("petitionnaire").'"', |
244 |
$trim_concat_terrain, |
245 |
'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"', |
246 |
'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"', |
247 |
'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"', |
248 |
'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE |
249 |
THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\') |
250 |
ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\') |
251 |
END as "'._("date_limite").'"' |
252 |
); |
253 |
|
254 |
if ($f->is_option_date_depot_mairie_enabled() === true) { |
255 |
$champAffiche_debut_commun[] = $champ_date_depot_mairie; |
256 |
} |
257 |
/** |
258 |
* Colonne "Nature des travaux" (regroupe les descriptions des données |
259 |
* techniques). |
260 |
*/ |
261 |
// Nombre max de caractères à afficher dans la colonne de la nature des travaux |
262 |
// avant de tronquer la valeur et d'ajouter une ellipse "…" |
263 |
$max_chars = 40; |
264 |
// |
265 |
$description_projet_select = " |
266 |
CASE WHEN nature_travaux.libelle IS NULL AND char_length(description_projet) <= ".$max_chars." THEN |
267 |
CONCAT('<span class=\"nature_travaux_cursor\" title=\"', |
268 |
description_projet, |
269 |
'\">', |
270 |
replace(description_projet, '\n', '<br/>'), |
271 |
'</span>') |
272 |
WHEN nature_travaux.libelle IS NULL AND char_length(description_projet) > ".$max_chars." THEN |
273 |
CONCAT('<span class=\"nature_travaux_cursor\" title=\"', |
274 |
description_projet, |
275 |
'\">', |
276 |
replace(left(description_projet, ".$max_chars."), '\n', '<br/>') || '…', |
277 |
'</span>') |
278 |
WHEN nature_travaux.libelle IS NOT NULL AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) = 1 THEN |
279 |
CONCAT('<span class=\"nature_travaux_cursor\" title=\"', |
280 |
nature_travaux.libelle, |
281 |
'\n', |
282 |
description_projet, |
283 |
'\">', |
284 |
replace(nature_travaux.libelle, '\n', '<br/>'), |
285 |
'</span>') |
286 |
WHEN nature_travaux.libelle IS NOT NULL AND ARRAY_LENGTH(STRING_TO_ARRAY(nature_travaux.libelle, '\n'), 1) > 1 THEN |
287 |
CONCAT('<span class=\"nature_travaux_cursor\" title=\"', |
288 |
nature_travaux.libelle, |
289 |
'\n', |
290 |
description_projet, |
291 |
'\">', |
292 |
split_part(nature_travaux.libelle, '\n', 1), '<br/>', '[...]', |
293 |
'</span>') |
294 |
END as \""._("nature des travaux").'"'; |
295 |
// description/nature des travaux. En cas de modif, bloc de code aussi présent dans |
296 |
// dossier.form.inc.php (le formulaire du DI)', 'om_requete' et 'stats à la demande' |
297 |
$description_projet_from = " |
298 |
INNER JOIN ( |
299 |
SELECT |
300 |
CONCAT_WS( |
301 |
'\n', |
302 |
CASE WHEN co_projet_desc = '' THEN |
303 |
NULL |
304 |
ELSE |
305 |
TRIM(co_projet_desc) |
306 |
END, |
307 |
CASE WHEN ope_proj_desc = '' THEN |
308 |
NULL |
309 |
ELSE |
310 |
TRIM(ope_proj_desc) |
311 |
END, |
312 |
CASE WHEN am_projet_desc = '' THEN |
313 |
NULL |
314 |
ELSE |
315 |
TRIM(am_projet_desc) |
316 |
END, |
317 |
CASE WHEN dm_projet_desc = '' THEN |
318 |
NULL |
319 |
ELSE |
320 |
TRIM(dm_projet_desc) |
321 |
END, |
322 |
CASE WHEN donnees_techniques.erp_cstr_neuve IS TRUE |
323 |
THEN '".str_replace("'", "''", _('erp_cstr_neuve'))."' END, |
324 |
CASE WHEN donnees_techniques.erp_trvx_acc IS TRUE |
325 |
THEN '".str_replace("'", "''", _('erp_trvx_acc'))."' END, |
326 |
CASE WHEN donnees_techniques.erp_extension IS TRUE |
327 |
THEN '".str_replace("'", "''", _('erp_extension'))."' END, |
328 |
CASE WHEN donnees_techniques.erp_rehab IS TRUE |
329 |
THEN '".str_replace("'", "''", _('erp_rehab'))."' END, |
330 |
CASE WHEN donnees_techniques.erp_trvx_am IS TRUE |
331 |
THEN '".str_replace("'", "''", _('erp_trvx_am'))."' END, |
332 |
CASE WHEN donnees_techniques.erp_vol_nouv_exist IS TRUE |
333 |
THEN '".str_replace("'", "''", _('erp_vol_nouv_exist'))."' END |
334 |
) as description_projet, |
335 |
dossier_instruction |
336 |
FROM ".DB_PREFIXE."donnees_techniques |
337 |
) as description_projet |
338 |
ON description_projet.dossier_instruction = dossier.dossier |
339 |
"; |
340 |
// On ne veut cette colonne que dans les trois listings "Recherche", |
341 |
// "Mes encours" et "Tous les encours" |
342 |
$listings = array("dossier_instruction", |
343 |
"dossier_instruction_mes_encours", |
344 |
"dossier_instruction_tous_encours"); |
345 |
// |
346 |
$is_in_obj_whitelist = in_array($obj, $listings); |
347 |
// La variable $retourformulaire permet de s'assurer que l'on est pas dans un |
348 |
// sous-tableau |
349 |
if ($is_in_obj_whitelist === true && $retourformulaire === '') { |
350 |
// Modifie les colonnes à afficher en début du tableau |
351 |
$champAffiche_debut_commun = array( |
352 |
'dossier.dossier as "'._("dossier").'"', |
353 |
'dossier.geom as "geom_picto"', |
354 |
'demande.source_depot as "demat_picto"', |
355 |
$select__dossier_libelle__column_as, |
356 |
); |
357 |
if ($f->is_option_dossier_commune_enabled()) { |
358 |
$champAffiche_debut_commun[] = 'commune.libelle as "'.__("commune").'"'; |
359 |
} |
360 |
array_push($champAffiche_debut_commun, |
361 |
$case_demandeur.' as "'._("petitionnaire").'"', |
362 |
$trim_concat_terrain, |
363 |
'dossier_autorisation_type_detaille.libelle as "'._("nature_dossier").'"', |
364 |
$description_projet_select, |
365 |
'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"', |
366 |
'to_char(dossier.date_complet ,\'DD/MM/YYYY\') as "'._("date_complet").'"', |
367 |
'CASE WHEN dossier.incomplet_notifie IS TRUE AND dossier.incompletude IS TRUE |
368 |
THEN to_char(dossier.date_limite_incompletude ,\'DD/MM/YYYY\') |
369 |
ELSE to_char(dossier.date_limite ,\'DD/MM/YYYY\') |
370 |
END as "'._("date_limite").'"' |
371 |
); |
372 |
if ($f->is_option_date_depot_mairie_enabled() === true) { |
373 |
$champAffiche_debut_commun[] = $champ_date_depot_mairie; |
374 |
} |
375 |
// Modifie également le from |
376 |
$table .= $description_projet_from.' '.$nature_travaux_from; |
377 |
} |
378 |
|
379 |
/*Champs de la fin de la requête*/ |
380 |
$champAffiche_fin_commun = array( |
381 |
'etat.libelle as "'._("etat").'"', |
382 |
'CASE WHEN dossier.enjeu_urba is TRUE |
383 |
THEN \'<span class="om-icon om-icon-16 om-icon-fix enjeu_urba-16" title="'._("Enjeu URBA").'">URBA</span>\' |
384 |
ELSE \'\' |
385 |
END || |
386 |
CASE WHEN dossier.enjeu_erp is TRUE |
387 |
THEN \'<span class="om-icon om-icon-16 om-icon-fix enjeu_erp-16" title="'._("Enjeu ERP").'">ERP</span>\' |
388 |
ELSE \'\' |
389 |
END |
390 |
as "'._("enjeu").'"', |
391 |
); |
392 |
|
393 |
// |
394 |
if ($_SESSION['niveau'] == '2') { |
395 |
array_push($champAffiche_fin_commun, "om_collectivite.libelle as \""._("collectivite")."\""); |
396 |
} |
397 |
|
398 |
// Identifie s'il y a déjà un WHERE dans la requête |
399 |
if (stripos($selection, "WHERE") === false) { |
400 |
$selection .= " WHERE "; |
401 |
} else { |
402 |
$selection .= " AND "; |
403 |
} |
404 |
// Les dossiers des contentieux sont gérés dans un autre listing, il ne doivent |
405 |
// pas apparaître dans la liste des dossiers d'instruction de l'onglet instruction -> recherche |
406 |
// /!\ l'opérateur != exclus les valeurs null. Il faut donc préciser que les groupe ayant un |
407 |
// code NULL doivent bien être récupérés. |
408 |
$selection .= " (groupe.code IS NULL OR groupe.code != 'CTX')"; |
409 |
|
410 |
/*Liste des champs affichés dans le tableau de résultat*/ |
411 |
$champAffiche = array_merge( |
412 |
$champAffiche_debut_commun, |
413 |
array('instructeur.nom as "'._("instructeur").'"', |
414 |
'division.code as "'._("division").'"', |
415 |
), |
416 |
$champAffiche_fin_commun |
417 |
); |
418 |
|
419 |
// Suppression du bouton d'ajout, qui n'est pas affiché par défaut dans les listings de |
420 |
// dossiers d'instruction |
421 |
$tab_actions['corner']['ajouter'] = NULL; |
422 |
|
423 |
if (isset($_GET['message_help']) |
424 |
&& ! is_null($_GET['message_help']) |
425 |
&& $_GET['message_help'] != "" |
426 |
&& $_GET['module'] == 'tab') { |
427 |
|
428 |
$tab_actions['left']["consulter"]['id'] .= '&message_help='.urlencode($_GET['message_help']); |
429 |
$tab_actions['content'] = $tab_actions['left']["consulter"]; |
430 |
} |
431 |
|
432 |
// Liste des autres dossiers d'instructions |
433 |
if ($retourformulaire== 'dossier_instruction'){ |
434 |
$champAffiche = array( |
435 |
'dossier.dossier as "'._("dossier_instruction").'"', |
436 |
'dossier.geom as "geom_picto"', |
437 |
'demande.source_depot as "demat_picto"', |
438 |
$select__dossier_libelle__column_as, |
439 |
); |
440 |
if ($f->is_option_dossier_commune_enabled()) { |
441 |
$champAffiche[] = 'c.libelle as "'._("commune").'"'; |
442 |
} |
443 |
array_push($champAffiche, |
444 |
'dossier_instruction_type.libelle as "'._("demande_type").'"', |
445 |
'to_char(dossier.date_depot ,\'DD/MM/YYYY\') as "'._("date_depot").'"', |
446 |
'dossier.etat as "'._("etat").'"' |
447 |
); |
448 |
|
449 |
$table =DB_PREFIXE.'dossier as a |
450 |
JOIN '.DB_PREFIXE.'dossier_autorisation |
451 |
ON a.dossier_autorisation=dossier_autorisation.dossier_autorisation |
452 |
JOIN '.DB_PREFIXE.'dossier as dossier |
453 |
ON dossier.dossier_autorisation=dossier_autorisation.dossier_autorisation |
454 |
JOIN '.DB_PREFIXE.'dossier_instruction_type |
455 |
ON dossier_instruction_type.dossier_instruction_type = dossier.dossier_instruction_type'; |
456 |
if ($f->is_option_dossier_commune_enabled()) { |
457 |
$table .= ' |
458 |
JOIN '.DB_PREFIXE.'commune as c |
459 |
ON c.commune = dossier.commune'; |
460 |
} |
461 |
$selection = 'WHERE a.dossier=\''.$f->db->escapeSimple($idxformulaire).'\''; |
462 |
$tri= "order by dossier.date_depot ASC"; |
463 |
|
464 |
// |
465 |
$tab_actions['left']["consulter"] = |
466 |
array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&action=3'.'&idx=', |
467 |
'id' => '&retourformulaire='.$retourformulaire.'&retour=', |
468 |
'lib' => '<span class="om-icon om-icon-16 om-icon-fix consult-16" title="'._('Consulter').'">'._('Consulter').'</span>', |
469 |
'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'), |
470 |
'ordre' => 10, |
471 |
'ajax' => false); |
472 |
|
473 |
$tab_actions['content'] = $tab_actions['left']["consulter"]; |
474 |
$options[] = array( |
475 |
"type"=>"pagination_select", |
476 |
"display"=>false, |
477 |
); |
478 |
} |
479 |
|
480 |
|
481 |
if ( $retourformulaire == "dossier_autorisation") { |
482 |
|
483 |
// |
484 |
$tab_actions['left']["consulter"] = |
485 |
array('lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&action=3&idx=', |
486 |
'id' => '&retourformulaire='.$retourformulaire, |
487 |
'lib' => '<span class="om-icon om-icon-16 om-icon-fix consult-16" title="'._('Consulter').'">'._('Consulter').'</span>', |
488 |
'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'), |
489 |
'ordre' => 10, |
490 |
'ajax' => false); |
491 |
|
492 |
$tab_actions['content'] = $tab_actions['left']["consulter"] ; |
493 |
} |
494 |
|
495 |
|
496 |
// Affichage du bouton de redirection vers le SIG externe si configuré |
497 |
// XXX Ajouter filtre pour afficher l'icone géolocalisation en fonction de la conf SIG du dossier |
498 |
if($f->getParameter('option_sig') == 'sig_externe') { |
499 |
$tab_actions['left']["localiser-sig-externe"] = array( |
500 |
'lien' => ''.OM_ROUTE_FORM.'&obj=dossier_instruction&action=140&idx=', |
501 |
'id' => '', |
502 |
'lib' => '<span class="om-icon om-icon-16 om-icon-fix sig-16" title="'._('Localiser').'">'._('Localiser').'</span>', |
503 |
'rights' => array('list' => array('dossier_instruction', 'dossier_instruction_consulter'), 'operator' => 'OR'), |
504 |
'ordre' => 20, |
505 |
'target' => "_SIG", |
506 |
'ajax' => false); |
507 |
} |
508 |
|
509 |
// Si filtre DI auxquels on peut proposer une autre décision |
510 |
// /!\ Requête lié à celles permettant de savoir si l'instructeur peut changer la |
511 |
// décision et à l'affichage du widgets des dossiers éligibles au changement : |
512 |
// * instruction.class.php : isInstrCanChangeDecision() |
513 |
// * dossier_instruction.class.php : view_widget_dossiers_evenement_retour_finalise() |
514 |
// TODO ; faire évoluer cette affichage pour reprendre celui des DI (avec la recherche avancée) |
515 |
if (isset($extra_parameters["filtre_decision"]) |
516 |
&& $extra_parameters["filtre_decision"] == true) { |
517 |
|
518 |
// Augmentation de la limite |
519 |
$serie = 50; |
520 |
// Réinitialisation des options |
521 |
$options = array(); |
522 |
// Suppression de la recherche avancée |
523 |
$options[] = array( |
524 |
'type' => 'search', |
525 |
'display' => false); |
526 |
// Suppression du sélecteur de pages |
527 |
$options[] = array( |
528 |
'type' => 'pagination_select', |
529 |
'display' => false); |
530 |
// Ajout jointure |
531 |
$table = sprintf( |
532 |
'%1$sdossier |
533 |
JOIN %1$setat |
534 |
ON dossier.etat = etat.etat AND etat.statut = \'encours\' |
535 |
JOIN %1$slien_dossier_demandeur |
536 |
ON dossier.dossier = lien_dossier_demandeur.dossier AND lien_dossier_demandeur.petitionnaire_principal IS TRUE |
537 |
JOIN %1$sdossier_instruction_type |
538 |
ON dossier.dossier_instruction_type=dossier_instruction_type.dossier_instruction_type |
539 |
JOIN %1$sdossier_autorisation_type_detaille |
540 |
ON dossier_instruction_type.dossier_autorisation_type_detaille = dossier_autorisation_type_detaille.dossier_autorisation_type_detaille |
541 |
-- Récupère la demande qui a créé le type dossier du dossier |
542 |
LEFT JOIN (%1$sdemande |
543 |
JOIN %1$sdemande_type |
544 |
ON demande.demande_type = demande_type.demande_type |
545 |
) |
546 |
ON demande.dossier_instruction = dossier.dossier |
547 |
AND demande_type.dossier_instruction_type = dossier.dossier_instruction_type |
548 |
JOIN %1$sinstruction |
549 |
-- Recherche de la dernière instruction qui ne soit pas liée à un événement retour |
550 |
ON instruction.instruction = ( |
551 |
SELECT instruction |
552 |
FROM %1$sinstruction |
553 |
JOIN %1$sevenement ON instruction.evenement=evenement.evenement |
554 |
AND evenement.retour IS FALSE |
555 |
WHERE instruction.dossier = dossier.dossier |
556 |
ORDER BY date_evenement DESC, instruction DESC |
557 |
LIMIT 1 |
558 |
) |
559 |
-- On ne garde que les dossiers pour lesquels la dernière instruction est finalisée |
560 |
-- ou alors pour laquelle l instruction a été ajouté par la commune et est |
561 |
-- non signée, non notifié, etc. |
562 |
AND (instruction.om_final_instruction IS TRUE |
563 |
OR instruction.created_by_commune IS TRUE) |
564 |
AND instruction.date_retour_signature IS NULL |
565 |
AND instruction.date_envoi_rar IS NULL |
566 |
AND instruction.date_retour_rar IS NULL |
567 |
AND instruction.date_envoi_controle_legalite IS NULL |
568 |
AND instruction.date_retour_controle_legalite IS NULL |
569 |
-- On vérifie que l instruction soit un arrêté ou un changement de décision |
570 |
JOIN %1$sevenement |
571 |
ON instruction.evenement=evenement.evenement |
572 |
AND (evenement.type = \'arrete\' |
573 |
OR evenement.type = \'changement_decision\') |
574 |
-- Recherche les informations du pétitionnaire principal pour l affichage |
575 |
JOIN %1$sdemandeur |
576 |
ON lien_dossier_demandeur.demandeur = demandeur.demandeur |
577 |
-- Recherche la collectivité rattachée à l instructeur |
578 |
JOIN %1$sinstructeur |
579 |
ON dossier.instructeur=instructeur.instructeur |
580 |
JOIN %1$sdivision |
581 |
ON instructeur.division=division.division |
582 |
JOIN %1$sdirection |
583 |
ON division.direction=direction.direction |
584 |
JOIN %1$som_collectivite |
585 |
ON direction.om_collectivite=om_collectivite.om_collectivite |
586 |
%2$s |
587 |
', |
588 |
DB_PREFIXE, |
589 |
$description_projet_from.' '.$nature_travaux_from |
590 |
); |
591 |
// Modification sélection |
592 |
$selection = "WHERE dossier_instruction_type.sous_dossier IS NOT TRUE AND |
593 |
om_collectivite.niveau = '2'"; |
594 |
// Si collectivité de l'utilisateur niveau mono alors filtre sur celle-ci |
595 |
if ($f->isCollectiviteMono($_SESSION['collectivite']) === true) { |
596 |
$selection .= " AND dossier.om_collectivite=".$_SESSION['collectivite']; |
597 |
} |
598 |
// Modification tri |
599 |
$tri = " ORDER BY dossier.dossier "; |
600 |
} |
601 |
|
602 |
|
603 |
// Ajout de la gestion des groupes et confidentialité à la requête du listing |
604 |
$sqlFiltreGroup = $this->get_sql_filtre_groupe($table.$selection); |
605 |
$selection .= $sqlFiltreGroup['WHERE']; |
606 |
$table .= $sqlFiltreGroup['FROM']; |
607 |
// Ajout du filtrage des sous dossier à la requête d'affichage du listing |
608 |
$sqlFiltreSD = $this->get_sql_filtre_sous_dossier($table.$selection); |
609 |
$selection .= $sqlFiltreSD['WHERE']; |
610 |
$table .= $sqlFiltreSD['FROM']; |
611 |
?> |